{{ page.title }}
{% if page.description %} -{{ page.description }}
+{{ page.description }}
{% endif %}
- {{ site.data.locales[lang].post.posted }}
- {% include datetime.html date=page.date tooltip=true lang=lang %}
+ {{ site.data.locales[lang].post.posted }} {% include datetime.html
+ date=page.date tooltip=true lang=lang %}
{% if page.last_modified_at and page.last_modified_at != page.date %}
-
- {{ site.data.locales[lang].post.updated }}
- {% include datetime.html date=page.last_modified_at tooltip=true lang=lang %}
-
- {% endif %}
-
- {% if page.image %}
- {% capture src %}src="{{ page.image.path | default: page.image }}"{% endcapture %}
- {% capture class %}class="preview-img{% if page.image.no_bg %}{{ ' no-bg' }}{% endif %}"{% endcapture %}
- {% capture alt %}alt="{{ page.image.alt | xml_escape | default: "Preview Image" }}"{% endcapture %}
-
- {% if page.image.lqip %}
- {%- capture lqip -%}lqip="{{ page.image.lqip }}"{%- endcapture -%}
- {% endif %}
-
-
-
- {%- if page.image.alt -%}
- {{ page.image.alt }}
- {%- endif -%}
-
+
+ {{ site.data.locales[lang].post.updated }} {% include datetime.html
+ date=page.last_modified_at tooltip=true lang=lang %}
+
+ {% endif %} {% if page.image %} {% capture src %}src="{{ page.image.path |
+ default: page.image }}"{% endcapture %} {% capture class
+ %}class="preview-img{% if page.image.no_bg %}{{ ' no-bg' }}{% endif %}"{%
+ endcapture %} {% capture alt %}alt="{{ page.image.alt | xml_escape |
+ default: "Preview Image" }}"{% endcapture %} {% if page.image.lqip %} {%-
+ capture lqip -%}lqip="{{ page.image.lqip }}"{%- endcapture -%} {% endif %}
+
+
+
+ {%- if page.image.alt -%}
+
+ {{ page.image.alt }}
+
+ {%- endif -%}
+
{% endif %}
- {% if page.author %}
- {% assign authors = page.author %}
- {% elsif page.authors %}
- {% assign authors = page.authors %}
- {% endif %}
-
- {{ site.data.locales[lang].post.written_by }}
+ {% if page.author %} {% assign authors = page.author %} {% elsif
+ page.authors %} {% assign authors = page.authors %} {% endif %} {{
+ site.data.locales[lang].post.written_by }}
- {% if authors %}
- {% for author in authors %}
- {% if site.data.authors[author].url -%}
- {{ site.data.authors[author].name }}
- {%- else -%}
- {{ site.data.authors[author].name }}
- {%- endif %}
- {% unless forloop.last %}{{ ', ' }}{% endunless %}
- {% endfor %}
- {% else %}
- {{ site.social.name }}
+ {% if authors %} {% for author in authors %} {% if
+ site.data.authors[author].url -%}
+ {{ site.data.authors[author].name }}
+ {%- else -%} {{ site.data.authors[author].name }} {%- endif %} {%
+ unless forloop.last %}{{ ',
+ ' }}{% endunless %} {% endfor %} {% else %}
+ {{ site.social.name }}
{% endif %}
- {% if site.pageviews.provider and site.analytics[site.pageviews.provider].id %}
-
-
-
-
- {{ site.data.locales[lang].post.pageview_measure }}
-
+ {% if site.pageviews.provider and
+ site.analytics[site.pageviews.provider].id %}
+
+
+
+
+ {{ site.data.locales[lang].post.pageview_measure }}
+
{% endif %}
@@ -99,82 +92,89 @@
- {{- site.data.locales[lang].panel.toc -}}
-
+
+ {{- site.data.locales[lang].panel.toc -}}
+
+
+
+
{% endif %}
-
{{ page.title }}
{% if enable_toc %} -
- {{ page.title }}
-
-
-
-
-
-
+ {{ page.title }}
+
+
+
-
+
- {{ content }}
-
+ {{ content }}
{% if page.categories.size > 0 %}
+ from onnx import mapping
+ImportError: cannot import name 'mapping' from 'onnx' (/home/ruihan/miniconda3/envs/deploy/lib/python3.10/site-packages/onnx/__init__.py)
+```
+
+这样同时还需要修改其他 py 文件中有 mapping 的地方;一一修改完成
+但最终还是同样的问题:`BackendIsNotSupposedToImplementIt: ReduceMean version 18 is not implemented.`
+
+因为这个问题是出在 `tf_ref.export_graph` 语句,对应的是 onnx-tf 后端。于是,接下来的任务就是
++ 将 onnx-tf 升级,使其支持reducemean 18 算子;
+
+或者
+
++ 修改 torch2onnx 的模型转化流程,使其不包含 reducemean 18 操作
+
+目前的环境如下:
+```
+Python 3.10.18
+---
+Name: torch
+Version: 2.8.0
+---
+Name: tensorflow
+Version: 2.20.0
+---
+Name: onnx
+Version: 1.19.0
+---
+Name: onnx-tf
+Version: 1.10.0
+---
+Name: keras
+Version: 3.11.3
+---
+Name: tf_keras
+Version: 2.20.1
+```
+这样之后先遇到 `ImportError: cannot import name 'mapping' from 'onnx' (/home/ruihan/miniconda3/envs/deploy/lib/python3.10/site-packages/onnx/__init__.py)` 问题
+
+这是由于 mapping 文件在新的 onnx 版本中 deprecated。解决方案:改用 helper 中的 api
+
+这样之后会遇到 `ModuleNotFoundError: No module named 'tensorflow_probability'` 问题;解决方案:pip install tensorflow_probability,会下载 tensorflow_probability-0.25.0
+
+这样之后会遇到 `ModuleNotFoundError: No module named 'tf_keras'` 这是因为 tfprob 依赖 tf_keras;解决方案:pip install tf_keras。会下载 tf_keras-2.20.1
+
+这样之后会遇到
+```bash
+File "/home/ruihan/miniconda3/envs/deploy/lib/python3.10/site-packages/tensorflow_addons/utils/types.py", line 29, in
+ from keras.src.engine import keras_tensor
+ModuleNotFoundError: No module named 'keras.src.engine'
+```
+解决方案:将该语句改成 `from tensorflow.python.keras.engine import keras_tensor`
+
+这样之后会遇到
+```bash
+ File "/home/ruihan/miniconda3/envs/deploy/lib/python3.10/site-packages/tensorflow_addons/optimizers/__init__.py", line 34, in
+ from tensorflow_addons.optimizers.lazy_adam import LazyAdam
+ File "/home/ruihan/miniconda3/envs/deploy/lib/python3.10/site-packages/tensorflow_addons/optimizers/lazy_adam.py", line 38, in
+ class LazyAdam(adam_optimizer_class):
+ File "/home/ruihan/miniconda3/envs/deploy/lib/python3.10/site-packages/keras/src/saving/object_registration.py", line 146, in decorator
+ raise ValueError(
+ValueError: Cannot register a class that does not have a get_config() method.
+```
+在 class LazyAdam 中添加
+```python
+def get_config(self):
+ return super().get_config()
+```
+这是在 github 原仓库 [https://github.com/tensorflow/addons/blob/master/tensorflow_addons/optimizers/lazy_adam.py#L153] 找到的
+
+
+这样之后遇到
+```bash
+File "/home/ruihan/miniconda3/envs/deploy/lib/python3.10/site-packages/tensorflow_addons/rnn/nas_cell.py", line 30, in
+ class NASCell(keras.layers.AbstractRNNCell):
+AttributeError: module 'keras._tf_keras.keras.layers' has no attribute 'AbstractRNNCell'
+```
+
+## torch2tf directly (Failed)
+尝试直接从 torch 转 tflite,遇到报错 undefined symbol error,不想管了
+
+```bash
+ImportError: /home/ruihan/miniconda3/envs/deploy/lib/python3.10/site-packages/tensorflow/lite/python/metrics/_pywrap_tensorflow_lite_metrics_wrapper.so:
+undefined symbol: Wrapped_PyInit__pywrap_tensorflow_lite_metrics_wrapper
+```
+
+## Summary
+最大的问题在于,onnx 到 tensorflow 的转换库 onnx-tf 已经停止维护了。所以后续 onnx 库的更新添加更多算子时,很多就不能与旧版本的 tensorflow converter 兼容
+
+
+## Manually design tensorflow model
+### fbnet-a arch
+```python
+FBNet(
+ (backbone): FBNetBackbone(
+ (stages): Sequential(
+ (xif0_0): ConvBNRelu(
+ (conv): Conv2d(3, 16, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1))
+ (bn): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (xif1_0): Identity()
+ (xif2_0): IRFBlock(
+ (pw): ConvBNRelu(
+ (conv): Conv2d(16, 48, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (dw): ConvBNRelu(
+ (conv): Conv2d(48, 48, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), groups=48)
+ (bn): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (pwl): ConvBNRelu(
+ (conv): Conv2d(48, 24, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(24, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ )
+ )
+ (xif2_1): IRFBlock(
+ (dw): ConvBNRelu(
+ (conv): Conv2d(24, 24, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=24)
+ (bn): BatchNorm2d(24, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (pwl): ConvBNRelu(
+ (conv): Conv2d(24, 24, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(24, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ )
+ (res_conn): TorchAdd(
+ (add_func): FloatFunctional(
+ (activation_post_process): Identity()
+ )
+ )
+ )
+ (xif2_2): Identity()
+ (xif2_3): Identity()
+ (xif3_0): IRFBlock(
+ (pw): ConvBNRelu(
+ (conv): Conv2d(24, 144, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(144, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (dw): ConvBNRelu(
+ (conv): Conv2d(144, 144, kernel_size=(5, 5), stride=(2, 2), padding=(2, 2), groups=144)
+ (bn): BatchNorm2d(144, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (pwl): ConvBNRelu(
+ (conv): Conv2d(144, 32, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ )
+ )
+ (xif3_1): IRFBlock(
+ (pw): ConvBNRelu(
+ (conv): Conv2d(32, 96, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(96, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (dw): ConvBNRelu(
+ (conv): Conv2d(96, 96, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=96)
+ (bn): BatchNorm2d(96, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (pwl): ConvBNRelu(
+ (conv): Conv2d(96, 32, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ )
+ (res_conn): TorchAdd(
+ (add_func): FloatFunctional(
+ (activation_post_process): Identity()
+ )
+ )
+ )
+ (xif3_2): IRFBlock(
+ (dw): ConvBNRelu(
+ (conv): Conv2d(32, 32, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=32)
+ (bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (pwl): ConvBNRelu(
+ (conv): Conv2d(32, 32, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ )
+ (res_conn): TorchAdd(
+ (add_func): FloatFunctional(
+ (activation_post_process): Identity()
+ )
+ )
+ )
+ (xif3_3): IRFBlock(
+ (pw): ConvBNRelu(
+ (conv): Conv2d(32, 96, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(96, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (dw): ConvBNRelu(
+ (conv): Conv2d(96, 96, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=96)
+ (bn): BatchNorm2d(96, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (pwl): ConvBNRelu(
+ (conv): Conv2d(96, 32, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ )
+ (res_conn): TorchAdd(
+ (add_func): FloatFunctional(
+ (activation_post_process): Identity()
+ )
+ )
+ )
+ (xif4_0): IRFBlock(
+ (pw): ConvBNRelu(
+ (conv): Conv2d(32, 192, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(192, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (dw): ConvBNRelu(
+ (conv): Conv2d(192, 192, kernel_size=(5, 5), stride=(2, 2), padding=(2, 2), groups=192)
+ (bn): BatchNorm2d(192, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (pwl): ConvBNRelu(
+ (conv): Conv2d(192, 64, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ )
+ )
+ (xif4_1): IRFBlock(
+ (pw): ConvBNRelu(
+ (conv): Conv2d(64, 192, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(192, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (dw): ConvBNRelu(
+ (conv): Conv2d(192, 192, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=192)
+ (bn): BatchNorm2d(192, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (pwl): ConvBNRelu(
+ (conv): Conv2d(192, 64, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ )
+ (res_conn): TorchAdd(
+ (add_func): FloatFunctional(
+ (activation_post_process): Identity()
+ )
+ )
+ )
+ (xif4_2): IRFBlock(
+ (shuffle): ChannelShuffle()
+ (dw): ConvBNRelu(
+ (conv): Conv2d(64, 64, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=64)
+ (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (pwl): ConvBNRelu(
+ (conv): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), groups=2)
+ (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ )
+ (res_conn): TorchAdd(
+ (add_func): FloatFunctional(
+ (activation_post_process): Identity()
+ )
+ )
+ )
+ (xif4_3): IRFBlock(
+ (pw): ConvBNRelu(
+ (conv): Conv2d(64, 384, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(384, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (dw): ConvBNRelu(
+ (conv): Conv2d(384, 384, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=384)
+ (bn): BatchNorm2d(384, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (pwl): ConvBNRelu(
+ (conv): Conv2d(384, 64, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ )
+ (res_conn): TorchAdd(
+ (add_func): FloatFunctional(
+ (activation_post_process): Identity()
+ )
+ )
+ )
+ (xif4_4): IRFBlock(
+ (pw): ConvBNRelu(
+ (conv): Conv2d(64, 384, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(384, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (dw): ConvBNRelu(
+ (conv): Conv2d(384, 384, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=384)
+ (bn): BatchNorm2d(384, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (pwl): ConvBNRelu(
+ (conv): Conv2d(384, 112, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(112, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ )
+ )
+ (xif4_5): IRFBlock(
+ (shuffle): ChannelShuffle()
+ (dw): ConvBNRelu(
+ (conv): Conv2d(112, 112, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=112)
+ (bn): BatchNorm2d(112, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (pwl): ConvBNRelu(
+ (conv): Conv2d(112, 112, kernel_size=(1, 1), stride=(1, 1), groups=2)
+ (bn): BatchNorm2d(112, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ )
+ (res_conn): TorchAdd(
+ (add_func): FloatFunctional(
+ (activation_post_process): Identity()
+ )
+ )
+ )
+ (xif4_6): IRFBlock(
+ (pw): ConvBNRelu(
+ (conv): Conv2d(112, 336, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(336, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (dw): ConvBNRelu(
+ (conv): Conv2d(336, 336, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=336)
+ (bn): BatchNorm2d(336, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (pwl): ConvBNRelu(
+ (conv): Conv2d(336, 112, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(112, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ )
+ (res_conn): TorchAdd(
+ (add_func): FloatFunctional(
+ (activation_post_process): Identity()
+ )
+ )
+ )
+ (xif4_7): IRFBlock(
+ (shuffle): ChannelShuffle()
+ (dw): ConvBNRelu(
+ (conv): Conv2d(112, 112, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=112)
+ (bn): BatchNorm2d(112, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (pwl): ConvBNRelu(
+ (conv): Conv2d(112, 112, kernel_size=(1, 1), stride=(1, 1), groups=2)
+ (bn): BatchNorm2d(112, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ )
+ (res_conn): TorchAdd(
+ (add_func): FloatFunctional(
+ (activation_post_process): Identity()
+ )
+ )
+ )
+ (xif5_0): IRFBlock(
+ (pw): ConvBNRelu(
+ (conv): Conv2d(112, 672, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(672, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (dw): ConvBNRelu(
+ (conv): Conv2d(672, 672, kernel_size=(5, 5), stride=(2, 2), padding=(2, 2), groups=672)
+ (bn): BatchNorm2d(672, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (pwl): ConvBNRelu(
+ (conv): Conv2d(672, 184, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(184, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ )
+ )
+ (xif5_1): IRFBlock(
+ (pw): ConvBNRelu(
+ (conv): Conv2d(184, 1104, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(1104, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (dw): ConvBNRelu(
+ (conv): Conv2d(1104, 1104, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=1104)
+ (bn): BatchNorm2d(1104, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (pwl): ConvBNRelu(
+ (conv): Conv2d(1104, 184, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(184, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ )
+ (res_conn): TorchAdd(
+ (add_func): FloatFunctional(
+ (activation_post_process): Identity()
+ )
+ )
+ )
+ (xif5_2): IRFBlock(
+ (pw): ConvBNRelu(
+ (conv): Conv2d(184, 552, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(552, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (dw): ConvBNRelu(
+ (conv): Conv2d(552, 552, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=552)
+ (bn): BatchNorm2d(552, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (pwl): ConvBNRelu(
+ (conv): Conv2d(552, 184, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(184, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ )
+ (res_conn): TorchAdd(
+ (add_func): FloatFunctional(
+ (activation_post_process): Identity()
+ )
+ )
+ )
+ (xif5_3): IRFBlock(
+ (pw): ConvBNRelu(
+ (conv): Conv2d(184, 1104, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(1104, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (dw): ConvBNRelu(
+ (conv): Conv2d(1104, 1104, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=1104)
+ (bn): BatchNorm2d(1104, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (pwl): ConvBNRelu(
+ (conv): Conv2d(1104, 184, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(184, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ )
+ (res_conn): TorchAdd(
+ (add_func): FloatFunctional(
+ (activation_post_process): Identity()
+ )
+ )
+ )
+ (xif5_4): IRFBlock(
+ (pw): ConvBNRelu(
+ (conv): Conv2d(184, 1104, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(1104, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (dw): ConvBNRelu(
+ (conv): Conv2d(1104, 1104, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=1104)
+ (bn): BatchNorm2d(1104, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (pwl): ConvBNRelu(
+ (conv): Conv2d(1104, 352, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(352, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ )
+ )
+ (xif6_0): ConvBNRelu(
+ (conv): Conv2d(352, 1504, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(1504, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ )
+ )
+ (head): ClsConvHead(
+ (avg_pool): AdaptiveAvgPool2d(output_size=(1, 1))
+ (conv): Conv2d(1504, 1000, kernel_size=(1, 1), stride=(1, 1))
+ )
+)
+
+```
+
+### fbnet-b arch
+```python
+FBNet(
+ (backbone): FBNetBackbone(
+ (stages): Sequential(
+ (xif0_0): ConvBNRelu(
+ (conv): Conv2d(3, 16, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1))
+ (bn): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (xif1_0): IRFBlock(
+ (dw): ConvBNRelu(
+ (conv): Conv2d(16, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=16)
+ (bn): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (pwl): ConvBNRelu(
+ (conv): Conv2d(16, 16, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ )
+ (res_conn): TorchAdd(
+ (add_func): FloatFunctional(
+ (activation_post_process): Identity()
+ )
+ )
+ )
+ (xif2_0): IRFBlock(
+ (pw): ConvBNRelu(
+ (conv): Conv2d(16, 96, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(96, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (dw): ConvBNRelu(
+ (conv): Conv2d(96, 96, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), groups=96)
+ (bn): BatchNorm2d(96, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (pwl): ConvBNRelu(
+ (conv): Conv2d(96, 24, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(24, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ )
+ )
+ (xif2_1): IRFBlock(
+ (dw): ConvBNRelu(
+ (conv): Conv2d(24, 24, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=24)
+ (bn): BatchNorm2d(24, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (pwl): ConvBNRelu(
+ (conv): Conv2d(24, 24, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(24, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ )
+ (res_conn): TorchAdd(
+ (add_func): FloatFunctional(
+ (activation_post_process): Identity()
+ )
+ )
+ )
+ (xif2_2): IRFBlock(
+ (dw): ConvBNRelu(
+ (conv): Conv2d(24, 24, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=24)
+ (bn): BatchNorm2d(24, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (pwl): ConvBNRelu(
+ (conv): Conv2d(24, 24, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(24, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ )
+ (res_conn): TorchAdd(
+ (add_func): FloatFunctional(
+ (activation_post_process): Identity()
+ )
+ )
+ )
+ (xif2_3): IRFBlock(
+ (dw): ConvBNRelu(
+ (conv): Conv2d(24, 24, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=24)
+ (bn): BatchNorm2d(24, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (pwl): ConvBNRelu(
+ (conv): Conv2d(24, 24, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(24, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ )
+ (res_conn): TorchAdd(
+ (add_func): FloatFunctional(
+ (activation_post_process): Identity()
+ )
+ )
+ )
+ (xif3_0): IRFBlock(
+ (pw): ConvBNRelu(
+ (conv): Conv2d(24, 144, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(144, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (dw): ConvBNRelu(
+ (conv): Conv2d(144, 144, kernel_size=(5, 5), stride=(2, 2), padding=(2, 2), groups=144)
+ (bn): BatchNorm2d(144, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (pwl): ConvBNRelu(
+ (conv): Conv2d(144, 32, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ )
+ )
+ (xif3_1): IRFBlock(
+ (pw): ConvBNRelu(
+ (conv): Conv2d(32, 96, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(96, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (dw): ConvBNRelu(
+ (conv): Conv2d(96, 96, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=96)
+ (bn): BatchNorm2d(96, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (pwl): ConvBNRelu(
+ (conv): Conv2d(96, 32, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ )
+ (res_conn): TorchAdd(
+ (add_func): FloatFunctional(
+ (activation_post_process): Identity()
+ )
+ )
+ )
+ (xif3_2): IRFBlock(
+ (pw): ConvBNRelu(
+ (conv): Conv2d(32, 192, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(192, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (dw): ConvBNRelu(
+ (conv): Conv2d(192, 192, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=192)
+ (bn): BatchNorm2d(192, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (pwl): ConvBNRelu(
+ (conv): Conv2d(192, 32, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ )
+ (res_conn): TorchAdd(
+ (add_func): FloatFunctional(
+ (activation_post_process): Identity()
+ )
+ )
+ )
+ (xif3_3): IRFBlock(
+ (pw): ConvBNRelu(
+ (conv): Conv2d(32, 192, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(192, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (dw): ConvBNRelu(
+ (conv): Conv2d(192, 192, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=192)
+ (bn): BatchNorm2d(192, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (pwl): ConvBNRelu(
+ (conv): Conv2d(192, 32, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ )
+ (res_conn): TorchAdd(
+ (add_func): FloatFunctional(
+ (activation_post_process): Identity()
+ )
+ )
+ )
+ (xif4_0): IRFBlock(
+ (pw): ConvBNRelu(
+ (conv): Conv2d(32, 192, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(192, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (dw): ConvBNRelu(
+ (conv): Conv2d(192, 192, kernel_size=(5, 5), stride=(2, 2), padding=(2, 2), groups=192)
+ (bn): BatchNorm2d(192, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (pwl): ConvBNRelu(
+ (conv): Conv2d(192, 64, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ )
+ )
+ (xif4_1): IRFBlock(
+ (pw): ConvBNRelu(
+ (conv): Conv2d(64, 384, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(384, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (dw): ConvBNRelu(
+ (conv): Conv2d(384, 384, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=384)
+ (bn): BatchNorm2d(384, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (pwl): ConvBNRelu(
+ (conv): Conv2d(384, 64, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ )
+ (res_conn): TorchAdd(
+ (add_func): FloatFunctional(
+ (activation_post_process): Identity()
+ )
+ )
+ )
+ (xif4_2): Identity()
+ (xif4_3): IRFBlock(
+ (pw): ConvBNRelu(
+ (conv): Conv2d(64, 192, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(192, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (dw): ConvBNRelu(
+ (conv): Conv2d(192, 192, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=192)
+ (bn): BatchNorm2d(192, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (pwl): ConvBNRelu(
+ (conv): Conv2d(192, 64, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ )
+ (res_conn): TorchAdd(
+ (add_func): FloatFunctional(
+ (activation_post_process): Identity()
+ )
+ )
+ )
+ (xif4_4): IRFBlock(
+ (pw): ConvBNRelu(
+ (conv): Conv2d(64, 384, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(384, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (dw): ConvBNRelu(
+ (conv): Conv2d(384, 384, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=384)
+ (bn): BatchNorm2d(384, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (pwl): ConvBNRelu(
+ (conv): Conv2d(384, 112, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(112, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ )
+ )
+ (xif4_5): IRFBlock(
+ (dw): ConvBNRelu(
+ (conv): Conv2d(112, 112, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=112)
+ (bn): BatchNorm2d(112, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (pwl): ConvBNRelu(
+ (conv): Conv2d(112, 112, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(112, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ )
+ (res_conn): TorchAdd(
+ (add_func): FloatFunctional(
+ (activation_post_process): Identity()
+ )
+ )
+ )
+ (xif4_6): IRFBlock(
+ (dw): ConvBNRelu(
+ (conv): Conv2d(112, 112, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=112)
+ (bn): BatchNorm2d(112, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (pwl): ConvBNRelu(
+ (conv): Conv2d(112, 112, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(112, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ )
+ (res_conn): TorchAdd(
+ (add_func): FloatFunctional(
+ (activation_post_process): Identity()
+ )
+ )
+ )
+ (xif4_7): IRFBlock(
+ (pw): ConvBNRelu(
+ (conv): Conv2d(112, 336, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(336, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (dw): ConvBNRelu(
+ (conv): Conv2d(336, 336, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=336)
+ (bn): BatchNorm2d(336, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (pwl): ConvBNRelu(
+ (conv): Conv2d(336, 112, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(112, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ )
+ (res_conn): TorchAdd(
+ (add_func): FloatFunctional(
+ (activation_post_process): Identity()
+ )
+ )
+ )
+ (xif5_0): IRFBlock(
+ (pw): ConvBNRelu(
+ (conv): Conv2d(112, 672, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(672, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (dw): ConvBNRelu(
+ (conv): Conv2d(672, 672, kernel_size=(5, 5), stride=(2, 2), padding=(2, 2), groups=672)
+ (bn): BatchNorm2d(672, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (pwl): ConvBNRelu(
+ (conv): Conv2d(672, 184, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(184, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ )
+ )
+ (xif5_1): IRFBlock(
+ (dw): ConvBNRelu(
+ (conv): Conv2d(184, 184, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=184)
+ (bn): BatchNorm2d(184, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (pwl): ConvBNRelu(
+ (conv): Conv2d(184, 184, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(184, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ )
+ (res_conn): TorchAdd(
+ (add_func): FloatFunctional(
+ (activation_post_process): Identity()
+ )
+ )
+ )
+ (xif5_2): IRFBlock(
+ (pw): ConvBNRelu(
+ (conv): Conv2d(184, 1104, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(1104, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (dw): ConvBNRelu(
+ (conv): Conv2d(1104, 1104, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=1104)
+ (bn): BatchNorm2d(1104, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (pwl): ConvBNRelu(
+ (conv): Conv2d(1104, 184, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(184, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ )
+ (res_conn): TorchAdd(
+ (add_func): FloatFunctional(
+ (activation_post_process): Identity()
+ )
+ )
+ )
+ (xif5_3): IRFBlock(
+ (pw): ConvBNRelu(
+ (conv): Conv2d(184, 1104, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(1104, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (dw): ConvBNRelu(
+ (conv): Conv2d(1104, 1104, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=1104)
+ (bn): BatchNorm2d(1104, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (pwl): ConvBNRelu(
+ (conv): Conv2d(1104, 184, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(184, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ )
+ (res_conn): TorchAdd(
+ (add_func): FloatFunctional(
+ (activation_post_process): Identity()
+ )
+ )
+ )
+ (xif5_4): IRFBlock(
+ (pw): ConvBNRelu(
+ (conv): Conv2d(184, 1104, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(1104, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (dw): ConvBNRelu(
+ (conv): Conv2d(1104, 1104, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=1104)
+ (bn): BatchNorm2d(1104, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ (pwl): ConvBNRelu(
+ (conv): Conv2d(1104, 352, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(352, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ )
+ )
+ (xif6_0): ConvBNRelu(
+ (conv): Conv2d(352, 1984, kernel_size=(1, 1), stride=(1, 1))
+ (bn): BatchNorm2d(1984, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
+ (relu): ReLU(inplace=True)
+ )
+ )
+ )
+ (head): ClsConvHead(
+ (avg_pool): AdaptiveAvgPool2d(output_size=(1, 1))
+ (conv): Conv2d(1984, 1000, kernel_size=(1, 1), stride=(1, 1))
+ )
+)
+```
+
+## Depth-wise Separable Conv net
+步骤 A: Depthwise Convolution (深度卷积)
+
+ 操作: 针对输入的每个通道,独立地使用一个单通道的滤波器 (K×K×1) 进行空间卷积。
+
+ 作用: 只负责提取空间特征,如边缘、纹理等,但不会在通道之间混合信息。
+
+ 结果: 保持通道数不变。如果输入有 Cin 个通道,输出也有 Cin 个通道。
+
+ 参数量: 极少,仅为 K×K×Cin。
+
+步骤 B: Pointwise Convolution (逐点卷积)
+
+ 操作: 使用 1×1 的卷积核。这个 1×1×Cin 的卷积核会在空间上滑动,对深度卷积的输出进行跨通道加权求和。
+
+ 作用: 只负责通道融合和通道数调整。它将深度卷积中分离的特征图进行线性组合,生成新的 Cout 个输出通道。
+
+ 参数量:1×1×Cin×Cout。
+
+
+```
+Keras 推理完成。总耗时: 132.9528 秒
+Keras 吞吐量 (FPS): 7.39 样本/秒
+
+TFLite 推理中: 100%|██████████████████████████████████████████████████████| 982/982 [00:05<00:00, 183.37it/s]
+TFLite 推理完成。总耗时: 5.3581 秒
+TFLite 吞吐量 (FPS): 183.27 样本/秒
+
+PyTorch 推理完成。总耗时: 4.8217 秒
+PyTorch 吞吐量 (FPS): 203.66 样本/秒
+
+--- 精度验证报告 ---
+样本总数: 982
+1. 预测一致性 (INT8 TFLite vs Float32 Keras): (84.62%)
+ (Float32 TFLite vs Float32 Keras): (100.00%)
+
+2. 平均输出 L2 差异 (越小越好): 0.000001(tflite)/0.152170(quantized_tflite)
+3. Keras (Float32) Top-1 精度: 0.0010
+4. TFLite (INT8) Top-1 精度: 0.0010
+4. TFLite (Float32) Top-1 精度: 0.0010
+5. PyTorch (Float32) Top-1 精度: 0.0010
+量化损失 (Float32 - INT8): 0.00%
+```
\ No newline at end of file
diff --git a/_posts/2025-10-31-sync-primitive.md b/_posts/2025-10-31-sync-primitive.md
new file mode 100644
index 00000000000..3a9decb2b88
--- /dev/null
+++ b/_posts/2025-10-31-sync-primitive.md
@@ -0,0 +1,132 @@
+---
+title: C++通信原语
+description: C++通信原语
+author: cybotiger
+date: 2025-10-30 12:00:00 +0800
+categories: [计算机系统, 通信]
+tags: []
+math: true
+mermaid: true
+---
+
+## std::mutex
+最普通的锁,用来保护一个资源只有一个线程可以操作。
+
++ 缺点1:不安全,控制僵硬
+ + 不能进行 recursive_lock(同个线程多次 lock 该锁)
+ + 需要手动 lock 和 unlock;如果在持有锁的中途出现异常,可能会死锁;如果线程结束但仍然持有锁,会出现异常
+ + 不支持 deferred lock,即先声明,后续通过 `lock()` 显式获取锁
+
++ 缺点2:效率低
+ + 被其他线程占用时,`lock()` 会阻塞,该线程会进行 busy_waiting,导致 CPU 空转
+ + 为了避免 CPU 资源的浪费,可以配合 `std::condition_variable` 使用
+
+## std::unique_lock
+mutex 的 RAII (Resource Acquisition Is Initialization) wrapper,支持 recursive_lock、deferred lock
+
+## std::condition_variable
+通过 wait 和 notify 机制,让等待锁的线程进入休眠状态,不占用计算资源,在 waiting_queue 中等待锁的释放
+
+```cpp
+/*
+ * Wrapper class around a counter, a condition variable, and a mutex.
+ */
+class ThreadState {
+ public:
+ std::condition_variable* condition_variable_;
+ std::mutex* mutex_;
+ int counter_;
+ int num_waiting_threads_;
+ ThreadState(int num_waiting_threads) {
+ condition_variable_ = new std::condition_variable();
+ mutex_ = new std::mutex();
+ counter_ = 0;
+ num_waiting_threads_ = num_waiting_threads;
+ }
+ ~ThreadState() {
+ delete condition_variable_;
+ delete mutex_;
+ }
+};
+
+void signal_fn(ThreadState* thread_state) {
+ // Acquire mutex to make sure the shared counter is read in a
+ // consistent state.
+ thread_state->mutex_->lock();
+ while (thread_state->counter_ < thread_state->num_waiting_threads_) {
+ thread_state->mutex_->unlock();
+ // Release the mutex before calling `notify_all()` to make sure
+ // waiting threads have a chance to make progress.
+ thread_state->condition_variable_->notify_all();
+ // Re-acquire the mutex to read the shared counter again.
+ thread_state->mutex_->lock();
+ }
+ thread_state->mutex_->unlock();
+}
+
+void wait_fn(ThreadState* thread_state) {
+ // A lock must be held in order to wait on a condition variable.
+ // This lock is atomically released before the thread goes to sleep
+ // when `wait()` is called. The lock is atomically re-acquired when
+ // the thread is woken up using `notify_all()`.
+ std::unique_lock lk(*thread_state->mutex_);
+ thread_state->condition_variable_->wait(lk);
+ // Increment the shared counter with the lock re-acquired to inform the
+ // signaling thread that this waiting thread has successfully been
+ // woken up.
+ thread_state->counter_++;
+ printf("Lock re-acquired after wait()...\n");
+ lk.unlock();
+}
+
+/*
+ * Signaling thread spins until each waiting thread increments a shared
+ * counter after being woken up from the `wait()` method.
+ */
+void condition_variable_example() {
+ int num_threads = 3;
+
+ printf("==============================================================\n");
+ printf("Starting %d threads for signal-and-waiting...\n", num_threads);
+ std::thread* threads = new std::thread[num_threads];
+ ThreadState* thread_state = new ThreadState(num_threads-1);
+ threads[0] = std::thread(signal_fn, thread_state);
+ for (int i = 1; i < num_threads; i++) {
+ threads[i] = std::thread(wait_fn, thread_state);
+ }
+ for (int i = 0; i < num_threads; i++) {
+ threads[i].join();
+ }
+ printf("==============================================================\n");
+
+ delete thread_state;
+ delete[] threads;
+}
+```
+
+## std::atomic
+
+如果需要保护的资源是一个简单的变量,可以使用更为简洁的 `std::atomic`,通常比 mutex 更快
+
+```cpp
+#include
+#include
+#include
+
+std::atomic counter(0);
+
+void incrementCounter() {
+ for (int i = 0; i < 1000; ++i) {
+ ++counter; // Atomic increment
+ }
+}
+
+int main() {
+ std::thread t1(incrementCounter);
+ std::thread t2(incrementCounter);
+ t1.join();
+ t2.join();
+ std::cout << "Final counter value: " << counter << std::endl;
+ return 0;
+}
+```
\ No newline at end of file
diff --git a/_posts/2025-11-04-mar.md b/_posts/2025-11-04-mar.md
new file mode 100644
index 00000000000..3ce1dec15c3
--- /dev/null
+++ b/_posts/2025-11-04-mar.md
@@ -0,0 +1,351 @@
+---
+title: visual generative Masked AR model
+description: Masked AR model with small diffusion network for Image generation
+author: cybotiger
+date: 2025-11-04 12:00:00 +0800
+categories: [AI, Vision]
+tags: []
+math: true
+mermaid: true
+---
+
+原文位于 [Autoregressive Image Generation without Vector Quantization](https://arxiv.org/pdf/2406.11838)
+
+## VAE
+```python
+AutoencoderKL(
+ (encoder): Encoder(
+ (conv_in): Conv2d(3, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
+ (down): ModuleList(
+ (0-1): 2 x Module(
+ (block): ModuleList(
+ (0-1): 2 x ResnetBlock(
+ (norm1): GroupNorm(32, 128, eps=1e-06, affine=True)
+ (conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
+ (norm2): GroupNorm(32, 128, eps=1e-06, affine=True)
+ (dropout): Dropout(p=0.0, inplace=False)
+ (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
+ )
+ )
+ (attn): ModuleList()
+ (downsample): Downsample(
+ (conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(2, 2))
+ )
+ )
+ (2): Module(
+ (block): ModuleList(
+ (0): ResnetBlock(
+ (norm1): GroupNorm(32, 128, eps=1e-06, affine=True)
+ (conv1): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
+ (norm2): GroupNorm(32, 256, eps=1e-06, affine=True)
+ (dropout): Dropout(p=0.0, inplace=False)
+ (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
+ (nin_shortcut): Conv2d(128, 256, kernel_size=(1, 1), stride=(1, 1))
+ )
+ (1): ResnetBlock(
+ (norm1): GroupNorm(32, 256, eps=1e-06, affine=True)
+ (conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
+ (norm2): GroupNorm(32, 256, eps=1e-06, affine=True)
+ (dropout): Dropout(p=0.0, inplace=False)
+ (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
+ )
+ )
+ (attn): ModuleList()
+ (downsample): Downsample(
+ (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(2, 2))
+ )
+ )
+ (3): Module(
+ (block): ModuleList(
+ (0-1): 2 x ResnetBlock(
+ (norm1): GroupNorm(32, 256, eps=1e-06, affine=True)
+ (conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
+ (norm2): GroupNorm(32, 256, eps=1e-06, affine=True)
+ (dropout): Dropout(p=0.0, inplace=False)
+ (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
+ )
+ )
+ (attn): ModuleList()
+ (downsample): Downsample(
+ (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(2, 2))
+ )
+ )
+ (4): Module(
+ (block): ModuleList(
+ (0): ResnetBlock(
+ (norm1): GroupNorm(32, 256, eps=1e-06, affine=True)
+ (conv1): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
+ (norm2): GroupNorm(32, 512, eps=1e-06, affine=True)
+ (dropout): Dropout(p=0.0, inplace=False)
+ (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
+ (nin_shortcut): Conv2d(256, 512, kernel_size=(1, 1), stride=(1, 1))
+ )
+ (1): ResnetBlock(
+ (norm1): GroupNorm(32, 512, eps=1e-06, affine=True)
+ (conv1): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
+ (norm2): GroupNorm(32, 512, eps=1e-06, affine=True)
+ (dropout): Dropout(p=0.0, inplace=False)
+ (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
+ )
+ )
+ (attn): ModuleList(
+ (0-1): 2 x AttnBlock(
+ (norm): GroupNorm(32, 512, eps=1e-06, affine=True)
+ (q): Conv2d(512, 512, kernel_size=(1, 1), stride=(1, 1))
+ (k): Conv2d(512, 512, kernel_size=(1, 1), stride=(1, 1))
+ (v): Conv2d(512, 512, kernel_size=(1, 1), stride=(1, 1))
+ (proj_out): Conv2d(512, 512, kernel_size=(1, 1), stride=(1, 1))
+ )
+ )
+ )
+ )
+ (mid): Module(
+ (block_1): ResnetBlock(
+ (norm1): GroupNorm(32, 512, eps=1e-06, affine=True)
+ (conv1): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
+ (norm2): GroupNorm(32, 512, eps=1e-06, affine=True)
+ (dropout): Dropout(p=0.0, inplace=False)
+ (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
+ )
+ (attn_1): AttnBlock(
+ (norm): GroupNorm(32, 512, eps=1e-06, affine=True)
+ (q): Conv2d(512, 512, kernel_size=(1, 1), stride=(1, 1))
+ (k): Conv2d(512, 512, kernel_size=(1, 1), stride=(1, 1))
+ (v): Conv2d(512, 512, kernel_size=(1, 1), stride=(1, 1))
+ (proj_out): Conv2d(512, 512, kernel_size=(1, 1), stride=(1, 1))
+ )
+ (block_2): ResnetBlock(
+ (norm1): GroupNorm(32, 512, eps=1e-06, affine=True)
+ (conv1): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
+ (norm2): GroupNorm(32, 512, eps=1e-06, affine=True)
+ (dropout): Dropout(p=0.0, inplace=False)
+ (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
+ )
+ )
+ (norm_out): GroupNorm(32, 512, eps=1e-06, affine=True)
+ (conv_out): Conv2d(512, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
+ )
+ (decoder): Decoder(
+ (conv_in): Conv2d(16, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
+ (mid): Module(
+ (block_1): ResnetBlock(
+ (norm1): GroupNorm(32, 512, eps=1e-06, affine=True)
+ (conv1): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
+ (norm2): GroupNorm(32, 512, eps=1e-06, affine=True)
+ (dropout): Dropout(p=0.0, inplace=False)
+ (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
+ )
+ (attn_1): AttnBlock(
+ (norm): GroupNorm(32, 512, eps=1e-06, affine=True)
+ (q): Conv2d(512, 512, kernel_size=(1, 1), stride=(1, 1))
+ (k): Conv2d(512, 512, kernel_size=(1, 1), stride=(1, 1))
+ (v): Conv2d(512, 512, kernel_size=(1, 1), stride=(1, 1))
+ (proj_out): Conv2d(512, 512, kernel_size=(1, 1), stride=(1, 1))
+ )
+ (block_2): ResnetBlock(
+ (norm1): GroupNorm(32, 512, eps=1e-06, affine=True)
+ (conv1): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
+ (norm2): GroupNorm(32, 512, eps=1e-06, affine=True)
+ (dropout): Dropout(p=0.0, inplace=False)
+ (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
+ )
+ )
+ (up): ModuleList(
+ (0): Module(
+ (block): ModuleList(
+ (0-2): 3 x ResnetBlock(
+ (norm1): GroupNorm(32, 128, eps=1e-06, affine=True)
+ (conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
+ (norm2): GroupNorm(32, 128, eps=1e-06, affine=True)
+ (dropout): Dropout(p=0.0, inplace=False)
+ (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
+ )
+ )
+ (attn): ModuleList()
+ )
+ (1): Module(
+ (block): ModuleList(
+ (0): ResnetBlock(
+ (norm1): GroupNorm(32, 256, eps=1e-06, affine=True)
+ (conv1): Conv2d(256, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
+ (norm2): GroupNorm(32, 128, eps=1e-06, affine=True)
+ (dropout): Dropout(p=0.0, inplace=False)
+ (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
+ (nin_shortcut): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1))
+ )
+ (1-2): 2 x ResnetBlock(
+ (norm1): GroupNorm(32, 128, eps=1e-06, affine=True)
+ (conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
+ (norm2): GroupNorm(32, 128, eps=1e-06, affine=True)
+ (dropout): Dropout(p=0.0, inplace=False)
+ (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
+ )
+ )
+ (attn): ModuleList()
+ (upsample): Upsample(
+ (conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
+ )
+ )
+ (2): Module(
+ (block): ModuleList(
+ (0-2): 3 x ResnetBlock(
+ (norm1): GroupNorm(32, 256, eps=1e-06, affine=True)
+ (conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
+ (norm2): GroupNorm(32, 256, eps=1e-06, affine=True)
+ (dropout): Dropout(p=0.0, inplace=False)
+ (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
+ )
+ )
+ (attn): ModuleList()
+ (upsample): Upsample(
+ (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
+ )
+ )
+ (3): Module(
+ (block): ModuleList(
+ (0): ResnetBlock(
+ (norm1): GroupNorm(32, 512, eps=1e-06, affine=True)
+ (conv1): Conv2d(512, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
+ (norm2): GroupNorm(32, 256, eps=1e-06, affine=True)
+ (dropout): Dropout(p=0.0, inplace=False)
+ (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
+ (nin_shortcut): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1))
+ )
+ (1-2): 2 x ResnetBlock(
+ (norm1): GroupNorm(32, 256, eps=1e-06, affine=True)
+ (conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
+ (norm2): GroupNorm(32, 256, eps=1e-06, affine=True)
+ (dropout): Dropout(p=0.0, inplace=False)
+ (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
+ )
+ )
+ (attn): ModuleList()
+ (upsample): Upsample(
+ (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
+ )
+ )
+ (4): Module(
+ (block): ModuleList(
+ (0-2): 3 x ResnetBlock(
+ (norm1): GroupNorm(32, 512, eps=1e-06, affine=True)
+ (conv1): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
+ (norm2): GroupNorm(32, 512, eps=1e-06, affine=True)
+ (dropout): Dropout(p=0.0, inplace=False)
+ (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
+ )
+ )
+ (attn): ModuleList()
+ (upsample): Upsample(
+ (conv): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
+ )
+ )
+ )
+ (norm_out): GroupNorm(32, 128, eps=1e-06, affine=True)
+ (conv_out): Conv2d(128, 3, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
+ )
+ (quant_conv): Conv2d(32, 32, kernel_size=(1, 1), stride=(1, 1))
+ (post_quant_conv): Conv2d(16, 16, kernel_size=(1, 1), stride=(1, 1))
+)
+```
+
+## MAR
+
+```python
+Model = MAR(
+ (class_emb): Embedding(1000, 1024)
+ (z_proj): Linear(in_features=16, out_features=1024, bias=True)
+ (z_proj_ln): LayerNorm((1024,), eps=1e-06, elementwise_affine=True)
+ (encoder_blocks): ModuleList(
+ (0-15): 16 x Block(
+ (norm1): LayerNorm((1024,), eps=1e-06, elementwise_affine=True)
+ (attn): Attention(
+ (qkv): Linear(in_features=1024, out_features=3072, bias=True)
+ (q_norm): Identity()
+ (k_norm): Identity()
+ (attn_drop): Dropout(p=0.1, inplace=False)
+ (norm): Identity()
+ (proj): Linear(in_features=1024, out_features=1024, bias=True)
+ (proj_drop): Dropout(p=0.1, inplace=False)
+ )
+ (ls1): Identity()
+ (drop_path1): Identity()
+ (norm2): LayerNorm((1024,), eps=1e-06, elementwise_affine=True)
+ (mlp): Mlp(
+ (fc1): Linear(in_features=1024, out_features=4096, bias=True)
+ (act): GELU(approximate='none')
+ (drop1): Dropout(p=0.1, inplace=False)
+ (norm): Identity()
+ (fc2): Linear(in_features=4096, out_features=1024, bias=True)
+ (drop2): Dropout(p=0.1, inplace=False)
+ )
+ (ls2): Identity()
+ (drop_path2): Identity()
+ )
+ )
+ (encoder_norm): LayerNorm((1024,), eps=1e-06, elementwise_affine=True)
+ (decoder_embed): Linear(in_features=1024, out_features=1024, bias=True)
+ (decoder_blocks): ModuleList(
+ (0-15): 16 x Block(
+ (norm1): LayerNorm((1024,), eps=1e-06, elementwise_affine=True)
+ (attn): Attention(
+ (qkv): Linear(in_features=1024, out_features=3072, bias=True)
+ (q_norm): Identity()
+ (k_norm): Identity()
+ (attn_drop): Dropout(p=0.1, inplace=False)
+ (norm): Identity()
+ (proj): Linear(in_features=1024, out_features=1024, bias=True)
+ (proj_drop): Dropout(p=0.1, inplace=False)
+ )
+ (ls1): Identity()
+ (drop_path1): Identity()
+ (norm2): LayerNorm((1024,), eps=1e-06, elementwise_affine=True)
+ (mlp): Mlp(
+ (fc1): Linear(in_features=1024, out_features=4096, bias=True)
+ (act): GELU(approximate='none')
+ (drop1): Dropout(p=0.1, inplace=False)
+ (norm): Identity()
+ (fc2): Linear(in_features=4096, out_features=1024, bias=True)
+ (drop2): Dropout(p=0.1, inplace=False)
+ )
+ (ls2): Identity()
+ (drop_path2): Identity()
+ )
+ )
+ (decoder_norm): LayerNorm((1024,), eps=1e-06, elementwise_affine=True)
+ (diffloss): DiffLoss(
+ (net): SimpleMLPAdaLN(
+ (time_embed): TimestepEmbedder(
+ (mlp): Sequential(
+ (0): Linear(in_features=256, out_features=1536, bias=True)
+ (1): SiLU()
+ (2): Linear(in_features=1536, out_features=1536, bias=True)
+ )
+ )
+ (cond_embed): Linear(in_features=1024, out_features=1536, bias=True)
+ (input_proj): Linear(in_features=16, out_features=1536, bias=True)
+ (res_blocks): ModuleList(
+ (0-11): 12 x ResBlock(
+ (in_ln): LayerNorm((1536,), eps=1e-06, elementwise_affine=True)
+ (mlp): Sequential(
+ (0): Linear(in_features=1536, out_features=1536, bias=True)
+ (1): SiLU()
+ (2): Linear(in_features=1536, out_features=1536, bias=True)
+ )
+ (adaLN_modulation): Sequential(
+ (0): SiLU()
+ (1): Linear(in_features=1536, out_features=4608, bias=True)
+ )
+ )
+ )
+ (final_layer): FinalLayer(
+ (norm_final): LayerNorm((1536,), eps=1e-06, elementwise_affine=False)
+ (linear): Linear(in_features=1536, out_features=32, bias=True)
+ (adaLN_modulation): Sequential(
+ (0): SiLU()
+ (1): Linear(in_features=1536, out_features=3072, bias=True)
+ )
+ )
+ )
+ )
+)
+```
\ No newline at end of file
diff --git a/_posts/2025-12-01-github-deploy-key.md b/_posts/2025-12-01-github-deploy-key.md
new file mode 100644
index 00000000000..ca7a95b7691
--- /dev/null
+++ b/_posts/2025-12-01-github-deploy-key.md
@@ -0,0 +1,73 @@
+---
+title: Github deploy key 的使用
+description: 通过 deploy key 在远程服务器安全的管理单个仓库
+author: cybotiger
+date: 2025-12-01 07:00:00 +0800
+categories: [开发, 网络]
+tags: []
+---
+
+## 动机
+在实验室的服务器上 push 项目代码,可以选择 https 协议或 ssh 协议。由于 https 协议在 push 时要求输入莫名其妙的 password,我尝试了账户密码、 patoken(personal access token),都被服务器拒绝了。看了一下 stackoverflow 和 csdn,也是没有标准的解法。索性就全部使用 ssh 连接了。
+
+## 步骤
+而 ssh 连接,需要考虑安全性。我只是实习生,以后离开实验室之后要保护自己的其他无关仓库不被 hack,因此不能直接配置**关联账户**的 ssh key,而应该配置**关联单个仓库**的 deploy key。步骤如下:
+
+首先,打开仓库的 settings,找到 security 下的 deploy key,添加新的 deploy key
+
+然后在 server 端生成新的密钥(或使用已有的密钥)
+
+```bash
+ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
+```
+
+之后 terminal 会询问你密钥对的存储位置,如果你不想覆盖已有的密钥对,需要自定义文件位置。
+
+我们假定文件位于 `~/.ssh/id_rsa`,此时通过 `cat ~/.ssh/id_rsa.pub`,打印公钥,复制粘贴到 github 的 deploy key 中,就添加了新的 deploy key
+
+之后尝试在 server 端连接
+
+```bash
+ssh -T git@github.com
+```
+
+初次建立连接,会有询问信息,输入 yes 后,应该会看到以下内容,则配置成功,可以安全的 push 代码!
+
+```
+Hi USERNAME/REPO! You've successfully authenticated, but GitHub does not provide shell access.
+```
+
+最后,将 github 仓库的 remote 改成 ssh 连接
+
+```bash
+git remote set-url origin git@github.com:USERNAME/REPO.git
+```
+## 多个仓库
+多个仓库无法共享同一个 deploy key!需要为每一个仓库生成新的密钥对。
+
+同时,为了确保 ssh 连接 github 时,不同的仓库连接使用不同的密钥对,需要在 `~/.ssh/config` 文件中为不同的仓库域名配置别名,例如下:
+
+```bash
+Host github.com-sglang
+ Hostname github.com
+ IdentityFile=/home/your-username/.ssh/id_rsa
+
+Host github.com-vllm
+ Hostname github.com
+ IdentityFile=/home/your-username/.ssh/id_rsa_1
+```
+
+然后可以测试仓库和对应 deploy key 的连接
+
+```bash
+ssh -T -i ~/.ssh/id_rsa_1 git@github.com-vllm
+```
+
+因为 ssh 连接默认使用 id_rsa 密钥,所以每个仓库的 remote url 应该配置为域名别名
+
+```bash
+git remote set-url origin git@github.com-vllm:USERNAME/VLLM-REPO.git
+
+git remote set-url origin git@github.com-sglang:USERNAME/SGLANG-REPO.git
+```
+
diff --git a/_posts/2025-12-28-python-pkg-manager.md b/_posts/2025-12-28-python-pkg-manager.md
new file mode 100644
index 00000000000..b635553a8c8
--- /dev/null
+++ b/_posts/2025-12-28-python-pkg-manager.md
@@ -0,0 +1,8 @@
+---
+title: Python 虚拟环境管理
+description: conda、uv 等工具的环境管理机制
+author: cybotiger
+date: 2025-12-28 12:00:00 +0800
+categories: [开发, 环境配置]
+tags: []
+---
\ No newline at end of file
diff --git a/_posts/2025-12-30-undergrad-course.md b/_posts/2025-12-30-undergrad-course.md
new file mode 100644
index 00000000000..2a620ff2698
--- /dev/null
+++ b/_posts/2025-12-30-undergrad-course.md
@@ -0,0 +1,32 @@
+---
+title: 本科课程总结
+description: 本科课程总结
+author: cybotiger
+date: 2025-12-30 12:00:00 +0800
+categories: [感想]
+tags: []
+---
+
+今天上完了本科最后一门在教室里听老师讲的课,也算是有一些纪念意义吧。我四年课上下来,有感悟的并不多。不过其实一直以来我也没有对大学课堂抱有什么预期,一开始只是觉得都要认真听,好好学习,毕竟自己也觉得自己是个乖宝宝。
+
+于是数理编程类的基础课程总是抢前排,生怕哪一节课漏听了老师的一句话都会在我完美的知识体系中出现一丝裂缝。
+
+然后逐渐发现这样学习知识很是被动,像是被束缚着,而且很多时候打瞌睡,打瞌睡的时候估计自己能靠着耳边的念叨吸收 10%-30% 的讲课内容,课后也没有复习;至于课后习题,会做就会做,不会就乱写,反正做了就好,基本没有深究过。学线代和数分一的时候,还会偶尔看看答疑群,有些同学的提问是相当有营养的,包括有些玩梗的家伙,感觉玩懂他们的梗都能让自己醍醐灌顶。
+
+学线代和数分二的时候,就基本没有主动性了,事情很多,但又不知道在忙什么,还时常 emo,每次试图复习往往 end up 应付作业完事。那段时间的一段经历,我第一次意识到自己的工程实践能力挺弱的,然而我也并没有做出改变。它留下了一道疤痕,我看到了,却没有痛感。
+
+到了专业课部分更是有很多不理解的地方,即便理解了也不能用代码实现。而且很多时候,并没有意识到这门课的重要性,比如体系结构,其中的分布式计算等等内容在当代的应用;比如数据算法,作为 CS 工程和科研的基石应该熟练掌握。实验能偷懒则偷懒,能不弄懂底层细节绝对不花时间琢磨。
+
+当然这些也没有那么的严重。我们有 csdiy 这样的线上自学模式,优质资源触手可得。然而作为一个内心有些躁动的人,我感觉自己缺失了某种激情。而且我也尚未在 csdiy 的模式中找到那种缺失的激情。
+
+还有很多想在课堂做的事,比如多问助教学长学姐一些问题,包括这门课的意义、未来规划,以及一些实用的 debug 技巧;比如通两个宵把算法优化到班级里的 sota;比如组队认识几个大佬,能一起打比赛或者科研带飞我;比如向给我们讲课的大牛展现一下自己认真学习这门课的态度,并要封推荐信。
+
+这是基础课和专业课。我也曾经上过一门数学课。那个时候,在校园论坛看到一位学长 cs 辅修数学,做 ml theory,从他的字里行间感受到了数学的美妙,于是也想学习一些高等数学。我选的这门数学课,确实是比较纯粹的数学,老师上课手写板书,我和数学专业的同学们对着讲台抄板书,同时理解内容。
+
+我还上过一门英语课。这门课有很多的发言机会,锻炼口头表达和临场发挥。我一度感觉自己回到了初中,拉着同组的同学一起发言。但后来觉得只是自嗨,而且自己的讲话效果也并没有自己想象中那么好。但我至少很主动,不管别人怎么想,我就是要表达。于是它成了我繁忙之余的调剂。
+
+这学期上的最后一门教室里的课,属于一门 ai+bio 的拓展课,对于做 ai 科研的我来说比较新鲜,可以了解 ai4bio 的应用。我也确实学到了一些前沿生物知识。可能因为 ai 前置知识足够,我和助教交流也比较多而顺畅,做实验的时候也比较轻松愉快。
+
+讲完了本科四年的上课,现在,我的主要学习方式是做科研。看论文,读代码,逛 github 找有趣和重要的项目学习。我是挺喜欢这种方式的,尤其是每天逛 github 的时候,都抱着一丝兴奋的心情。但是现在很弱也是真的,人菜瘾大。而且我觉得自己有一种执念,那就是只要有决心,一定能通过搜索引擎或者 AI 提问找到合适的学习资料提升自己,所谓“在舒适区边缘”磨练自己。兴趣也很重要,所幸我对目前的方向是有兴趣的。
+
+扯了这么多,算作一个时间节点上纪念和总结吧。多年以后,当我看到自己写下的这段文字,又会有什么感想呢?总之,希望自己能够保持终身学习的态度,脚踏实地的前进。
\ No newline at end of file
diff --git a/_posts/2026-01-04-cnn-and-linear-are-same.md b/_posts/2026-01-04-cnn-and-linear-are-same.md
new file mode 100644
index 00000000000..b27cf910252
--- /dev/null
+++ b/_posts/2026-01-04-cnn-and-linear-are-same.md
@@ -0,0 +1,86 @@
+---
+title: 卷积网络和线性层的等价性
+description: 卷积网络和线性层的等价性
+author: cybotiger
+date: 2026-01-04 08:00:00 +0800
+categories: [AI, 神经网络]
+tags: []
+---
+
+对于一个非重叠(non-overlapping)的卷积网络,参数为
+
+```python
+nn.Conv2d(
+ input_channel=inc,
+ output_channel=outc,
+ kernel_size=p,
+ stride=p
+)
+```
+
+从 CNN 角度来看,输入为 `[inc, h, w]` 的图片张量,输出为 `[outc, h/p, w/p]` 的张量(p 整除 h,w);按照定义,有 `outc` 组卷积核组,每组有 `inc` 个 `p*p` 大小的卷积核,分别和每个 patch 的对应 channel 卷积后求和,得到 `outc` 个输出 channel,对应 1 个 patch
+
+而如果从线性层的角度来看,可以看作输入为 `[h/p*w/p, inc*p*p]` ,输出为 `[h/p*w/p, outc]`,即将每一个 patch 视为向量,共有 `h/p*w/p` 个向量,向量的输入维度为 `inc*p*p`,输出维度为 `outc*p*p`;于是线性层矩阵的形状为 `[inc*p*p, outc]`
+
+这个矩阵共有 `outc` 列,每列的参数 为 对应组的 `inc` 个卷积核按序展平为一个 `inc*p*p` 的向量
+
+## example
+输入 `[3, 4, 4]` 的图片,输出 `[2, 2, 2]` 的张量,卷积网络和线性矩阵为
+```python
+# inc=3, outc=2, p=2
+[
+ [
+ [1,1,
+ 1,1]
+ , # indim=12, outdim=2
+ [1,1, [
+ 1,1] [1, -1],
+ , [1, -1],
+ [1,1, [1, -1],
+ 1,1] [1, -1],
+ ] [1, -1],
+ , [1, -1],
+ -> [1, -1],
+ [ [1, -1],
+ [-1,-1, [1, -1],
+ -1,-1] [1, -1],
+ , [1, -1],
+ [-1,-1, [1, -1]
+ -1,-1] ]
+ ,
+ [-1,-1,
+ -1,-1]
+ ]
+]
+```
+
+## 实际场景
+由此可以得出一个结论,使用 CNN 对图像进行卷积 等价于 patchify+使用 linear 层进行变换;
+
+在 Kaiming He 的 [JiT](https://arxiv.org/pdf/2511.13720) 工作中,论文中使用 linear transformation 变换图片,而在实际代码中使用的是 Conv2d
+
+
+
+```python
+class BottleneckPatchEmbed(nn.Module):
+ """ Image to Patch Embedding
+ """
+ def __init__(self, img_size=224, patch_size=16, in_chans=3, pca_dim=768, embed_dim=768, bias=True):
+ super().__init__()
+ img_size = (img_size, img_size)
+ patch_size = (patch_size, patch_size)
+ num_patches = (img_size[1] // patch_size[1]) * (img_size[0] // patch_size[0])
+ self.img_size = img_size
+ self.patch_size = patch_size
+ self.num_patches = num_patches
+
+ self.proj1 = nn.Conv2d(in_chans, pca_dim, kernel_size=patch_size, stride=patch_size, bias=False)
+ self.proj2 = nn.Conv2d(pca_dim, embed_dim, kernel_size=1, stride=1, bias=bias)
+
+ def forward(self, x):
+ B, C, H, W = x.shape
+ assert H == self.img_size[0] and W == self.img_size[1], \
+ f"Input image size ({H}*{W}) doesn't match model ({self.img_size[0]}*{self.img_size[1]})."
+ x = self.proj2(self.proj1(x)).flatten(2).transpose(1, 2)
+ return x
+```
\ No newline at end of file
diff --git a/_posts/2026-01-07-as-a-collaborator.md b/_posts/2026-01-07-as-a-collaborator.md
new file mode 100644
index 00000000000..01f65db034f
--- /dev/null
+++ b/_posts/2026-01-07-as-a-collaborator.md
@@ -0,0 +1,51 @@
+---
+title: Why I suck as a collaborator
+description: An attempt to summarize my bad habits and metality during collaboration
+author: cybotiger
+date: 2026-01-07 08:00:00 +0800
+categories: [自我批评]
+tags: [english, life]
+---
+
+From the start of my undergrad, I've been consistently engaged in collaboration across curiculum teamwork, research projects and beyond. However, it's not until recently that I truly and deeply felt that how much I suck as a collaborator, which is because of a severe academic accident.
+
+Here I would like to share some experiences and try to summarize some common issue beneath all the failure, and hopefully learn my lesson and grow up as a good collaborator.
+
+## Paper submission
+Recently our research team summitted a paper to a conference, and my supervisor asked me to complete **my own author form**. I instead resubmit the same paper as a duplication without informing him, or leting him give me instructions on how and where to complete my form. I thought that was my form to complete.
+
+When the sumbission ddl passed, after roughly 3 hours, he reached me in emergency and told me that I ran into big trouble, which could potentially harm all the other collaborators on the author list.
+
+I regret out of question. I regret why I did not ask him about how and where to complete the form, or if I had correctly completed my task as demanded. Even if I know the procedure, I should have double checked it with him about it, let alone me being a newbie to paper submission.
+
+If it's some campus thesis, careless resubmission might be forgiven. But it's a international conference with rigorously specified rules. Any mistakes, whether on purpose or not, will be considered a violation of rule. We might get away this time if we contact the committee timely and honestly, but a green hand should on no occasion do virtually anything without carefullt inquery a senior author.
+
+As I regret, I come to realize that this accident is essentially due to my lack of communication and alignment with my collaborators. As I begin to recall my previous research project experiences, I found this a common pattern across all of them.
+
+## Research intern
+Currently I'm doing intern somewhere mentored by a postdoc. We just had a meeting yesterday, and I talked about how I move inefficiently in this project without asking for help or getting satisfying experimental results. He kind of pointed out some missing ingradients.
+
+First, before this meeting, our last meeting was held ~3 weeks ago. At that time we already had a quite clear to-do list. What I need to do is basically doing experiments and surveying literatures as the list says. But I seemed to be extremely interested in diverging from the conventional path: before I finish the to-dos step by step, I jumped out and change our codebase significantly and tried some new architectures, expecting it to work. When it turns out to be a failure, I just realized that I haven't finished my old jobs, which could provide more guidance on future progress, like excluding or verifying some of our assumptions, serving as powerful proof that XX doesn't work. Like my mentor says, now we don't even have a convincing proof that XX doesn't work, because you changed multiple variables at one time.
+
+By now we haven't laid a solid foundation for analysing root causes, so the solution seems still distant. If I had discussed with him once I found out that XX didn't work, or prepared to try my new notion, he would give proper advice, telling me if it's beneficial for our follow-up research. Of course you can diverge and try out new ideas, but that's based on the fact that I had conducted all the required experiments and make sure they don't work, and find some hint that guide me towards this trial. Of course that might be a tough skill for a undergrad like me to master in a short time, and that's where discussion comes in.
+
+Previously in Hong Kong, I experienced somthing similar. Each time I would report a chunk of things I did without thinking if it's reasonable or not. And then leave it to my my mentor to try to understand what I did and its meaning, and decide what's the next move. Timely report has become somewhat a luxury, either because I dont think there's much to deliver, or I feel reluctant to sort out and come up with the right questions.
+
+Reflecting on that, I think it's really irresponsible behaviors, and consumes my energy and passion quickly.
+
+## Major weaknesses
+As such, I think it necessary to summarize some major weaknesses that exists across these collaborations, and needs to be eliminated.
+
+### Communicate with your collaborators
+Dont be constrained by any factors, and give communication and alignment top priority. It' better to ask redundant questions than not asking necessary questions. Plus, short-interval and constant discussion might be better. Sometimes you dont want waste time on unsubstantial discussions because there really has nothing to discuss. In that case, set a time limit, like 1 week.
+
+Normally, when you finished what's on the to-do list, there will be much to discuss.
+
+### Do planned jobs before unplanned jobs
+After discussion the first execution must be verifying the proposed notions. Based on that you can do some other things before the next meeting/discussion.
+
+### Do solid things, Dont be greedy
+Maybe I am so greedy to produce promising results, that I just didn't treat basic stuffs carefully. And when I deliver it, it seems not convincing enough, either because I'm still unclear about the details, or I just didn't complete the experiments.
+
+## TBD
+I had a intuition that there's gonna be a lot more to learn concerning collaboration. Hopefully I can keep updating and exploring the philosophy/art of collaborations.
\ No newline at end of file
diff --git a/_posts/2026-02-14-missed-diversity.md b/_posts/2026-02-14-missed-diversity.md
new file mode 100644
index 00000000000..819032bcd86
--- /dev/null
+++ b/_posts/2026-02-14-missed-diversity.md
@@ -0,0 +1,42 @@
+---
+title: 我的大学本科
+description: Am I missing the undergrad "buffet"?
+author: cybotiger
+date: 2026-02-14 08:00:00 +0800
+categories: [感想]
+tags: [life]
+---
+
+今天背托福单词的时候看到了这么一句话:
+
+> 大学就像一顿丰盛的自助餐,可是却有一群笨蛋白白饿死。尝试才是找到兴趣的唯一方法。
+
+瞬间破防了。那种遗憾的感觉,紧接着就开始想象他人在大学找到一生热爱的爽文剧情,紧接着那种自己往后余生都将在没有热情、应付世俗中度过的恐惧,一一浮上心头。
+
+确实,我的大学生活并没有什么特别的经历,那种让自己脱颖而出的经历。但是转念一想,我早在大一就开始了自己的尝试。从大一上加入学生会,大一下报名工高班,到大二上亚运会志愿者、选修抽象代数,大二下确实没有什么动作,当时的我也是抑郁到了极点,孤独和压力让我在学业和作息上都非常挣扎。堕入谷底之后,我开始思考了,并有所答案:我想要探索自己的无限可能,想要找到真正的热爱,为此我愿意付出一切的努力。
+
+所以,应该说从那时候开始,我就有意识的在寻找了,暑假期间拍脑袋想试试 MLSys 科研,就联系到了 zbh 老师。随后的大三上,我的课业压力还是比较大,还很自负,认为不用花很多时间学习网络、OS、体系课,还错失了可能是一生唯一一次好好捣鼓交换机的机会,现在想想,这些真的是 MLSys 的基础啊;托福也是应付式的考了一次,果不其然考的不怎么样。沉浸于动漫的世界,我差一点失去了对现实的感知;在科研方面,胡乱而间断的学习让我并没有掌握什么实质性的知识,按说应该开始跟随学长做项目了,却在不知不觉中消磨了时间。我本应该向 z 老师和学长们寻求帮助,但是却憋着不说,心思根本不在科研上。
+
+我没有放弃,也没有任何理由放弃。在寒假,我联系了 lak 学长,努力复现了实验结果,然后开始了我的第一段正式的科研。这段科研,做的很被动,一开始尝试的是 prompt engineering,一度让我觉得没有任何技术含量。后来在和 ak 学长提出了问题后,学长凭借良好的科研直觉指出我们可以做一种新型的思维链。于是我们转向了使用 langchain 框架的思维链引导,充分利用图片数据和对应的 3D 场景数据来指导 VLM 进行探索,提高感知能力。中途我时而很被动、惰怠,导致学长生气了一次,更换了一位合作者。在那之后,我比较迅速的搭出了实验框架,我们在两个数据集上测评了一下,发现确实有一些提升。随后投了一个会,但由于数据集太少、效果不明显,后来撤稿了。
+
+这之后,我开始和 ybh 老师做暑研,还是很惰怠,我觉得自己沟通的太少了,而且只局限于和老师沟通,没有一位比较亲近的学长。因此虽然也有在做实验,但是很挣扎,常常没有正反馈,也不想尝试新方法,懒得动脑子。期间,老师也有些不满,但非常克制、有礼貌,即便如此我还是很焦虑。我在 sparsity 和 KV cache reuse 上的尝试,最终由于缺乏好的 idea 而告终,随后开始了 linear attention 的尝试。我个人感觉刚开始接触 linear attention 比较痛苦,一个人啃 paper,推导数学都很艰难。随后偶然间看到了 sonta 学姐的 tutorial,才感觉醍醐灌顶。然而我也没有系统性的记下笔记,只是在胡乱的看自己不太懂的 fla 代码,并不知道要先学习一下 triton...就这样,我们最终打算开始用几个 linear attention 替换 standard attention 的微调框架开始微调 dllm。我比较快速的开始修改代码运行实验,这个时候,保研的时间点到了。
+
+我有点焦急的问了一下 y 老师,能否给我 phd offer。结果显而易见,得到否定的答复。老师加上了一个条件,给我布置了一个作业,如果能够完成,那么就招我做 gpu virtualization 方向。我当时觉得不熟悉这个方向,也觉得自己和 y 老师合作不顺利,因此就不了了之了。
+
+就这样,我没有 phd offer,也没有参加保研,而推荐信也很难向 y 老师开口要。其实 z 老师的推荐信,我心里也没底。就这样,我用带着这几段没有结果的简历,开始了一段实习套磁,向北美的几个有做 mlsys 的 lab 投递了简历。有三个老师回复了我,我就这样开始了在 ucsd 的新一段实习。
+
+这次,是一个 postdoc 学长带我,他有一个 low hanging 的 idea 想要验证,我看了相关 paper 后就开始了实验。一开始运行修改后的代码,训练代码没有问题,但测评时出现了 NaN 的报错,我找不到原因,学长看了代码也没有找到原因。后来,我 debug 了一下,尝试把 cuda 的 auto mixed precision 关掉,就没有这个问题了,但并不知道所以然,学长也不太明白。这个时候,我和学长之间的进度对齐已经出现了问题,我没有立即的把自己要做的实验,已有的实验结果分享给学长,每次都是他找我才汇报,而且我也逐渐丧失了热情,每天投入科研的时间很少,汇报成了一种应付手段。有一次,我找到了一篇 idea 和我们很相似的 paper,但没有第一时间和他汇报。第二天他得知这篇 paper 之后,觉得我们的 idea 已经被这篇 paper 做掉了。我抱着很多的疑惑,尝试去跑一下我们提出的其他的版本,尽可能避免与这篇 paper 的 idea 有重合,然而都失败了。我记得学长问了很多次,“为什么他们能 work,我们跑的却不能?“
+
+于是我们尝试训练另一个原本冻结的模块,结果还是不理想。这次,还是学长催促我汇报。结束之后,他说这个项目已经没有什么希望了。他告诉我,以我现在的状态,虽然能拿到他们 lab 的推荐信,但是 return offer 是不可能的。他还告诉我,如果我愿意,现在组里有另外一个 phd 在做一个 diffusion attention 相关的项目,预计投nips,我现在参与进来,可以拿一个三作。
+
+我觉得这些经历,我始终没有做到很主动,可能一开始会有些热情,但每次都逐渐丧失,也没有积极的去想 idea。更重要的是,没有积极的沟通,请教学长学姐。没有把自己当成一个新手本科生,想学长学姐请教自己不会不熟悉的问题,也没有按照要求去学习新的知识和材料、执行下一步。在项目上花的时间也越来越少。但奇怪的是,在那些不做项目的时间里,我也没有非常放松的去娱乐和探索新事物,就是这样一种“我应该工作“和“我不想工作“的摇摆中过的很不自在。
+
+回顾到此,已经差不多了。我的结论是,我一直在探索和尝试,但是心态似乎不太稳定,我觉得不管是生活中还是科研上,都应该找到好的伙伴,时常沟通交流,重拾热情。那种破防的感觉,已经逐渐被自己切实留下的脚印消解了,是的,我确实是在好好享用大学这顿“丰盛的自助餐“,只不过尝试的还没有这么坚决,而这就是我接下来该做的。
+
+其实不止于此,我还尝试了其他的事物并感受到了自己内心的声音。我开始了自己的网球之旅,街舞之路,认识了一两个还不错的朋友。我希望自己能够多沟通,像自己中学时那样,放下一切自负的心理,虚心求教,踏实学习。
+
+其实我认为,这句话的主语“大学“,完全可以换成“科研“。科研应当是旷野,你应该不断尝试,找到自己产生原创和影响力的方向,这才是我读 phd 的目的。当然,你应该去实习,掌握现有的理论和技术,发现他们的长处,找到他们的短处,然后总结出来,然后使用新的方法来尝试解决,然后不停的尝试,然后总结,输出博客或者 tutorial,然后再学习新的 cs 和 math 甚至于 physics 知识,然后尝试用新的方法解决,直到你找到 work 的方式。
+
+这真的很浪漫,这真的是独属于 phd 的浪漫。我想拥有这样一份浪漫,也想要书写自己的故事。我希望自己能够有一双灵巧的手帮我写出完善的代码来执行,一个聪明的脑袋来不断吸收、消化已有知识,创造出新的知识。在 AI 和 system 乃至现实世界做出一些有用的东西。
+
+而且你收获的可能不止于此,在这条路上,还可能会有志同道合的研究伙伴、技艺高超的工程师、雄心勃勃的企业家、一起玩耍的好兄弟,还可能会有,最最奢侈的,一份美丽的爱情。
\ No newline at end of file
diff --git a/_posts/2026-02-16-xgboost.md b/_posts/2026-02-16-xgboost.md
new file mode 100644
index 00000000000..6f9b068b486
--- /dev/null
+++ b/_posts/2026-02-16-xgboost.md
@@ -0,0 +1,10 @@
+---
+title: XGBoost学习笔记
+description: Tree boosting 类监督学习范式
+author: cybotiger
+date: 2026-02-16 08:00:00 +0800
+categories: [AI, 神经网络]
+tags: [tbd]
+---
+
+[https://xgboost.readthedocs.io/en/release_3.2.0/tutorials/model.html](https://xgboost.readthedocs.io/en/release_3.2.0/tutorials/model.html)
\ No newline at end of file
diff --git a/_posts/2026-02-20-streamline-as-philosophy.md b/_posts/2026-02-20-streamline-as-philosophy.md
new file mode 100644
index 00000000000..523281bfa8f
--- /dev/null
+++ b/_posts/2026-02-20-streamline-as-philosophy.md
@@ -0,0 +1,20 @@
+---
+title: 流程化的哲学
+description: 流程化蕴含的管理哲学
+author: cybotiger
+date: 2026-02-19 08:00:00 +0800
+categories: [哲学, 效率]
+tags: [tbd]
+---
+
+之前舅妈听妈妈抱怨一个问题,说老爸作为一个老板,却总是亲力亲为,没有把工人给用起来。也不是因为工人不想干或者老爸不好意思派活,但似乎给他派活这件事本身就需要某种稀缺性的精力,不是每次都能有的。接着妈妈又说,每次有临时性的活想让工人干,老爸又不太放心,还是觉得自己做稳妥。
+
+舅妈回答很干脆:你要把每天要工人做的事情流程化,比如每天都要把所有的清单查一遍。这样,工人每天有固定的流程,明确的指标;不需要工人很高的主观能动性,也不需要老板随机应变;最重要的是,可以把随机性的、临时性的任务也囊括进去,这样就都在一个框架里面解决,不会有那么多例外。
+
+舅妈也是有管理小规模团队经验的,我听了之后也觉得很有道理,而且有感触。因为,在科研的过程中,我也发现自己很多时候都需要费劲的动脑,不管是读论文、还是读代码、还是改代码跑实验、还是汇报进度、还是交流请教疑问,都很缺乏一种标准的模式“以不变应万变“,各种意外带来的是情绪的波动、时间安排的不合理、科研探索思路的混乱,最终都会导致科研陷入低谷。
+
+这听起来似乎很像是所谓的“应该克服的惰性“,但我认为并非如此。很多时候反而是需要这种流程化的工作带来的稳定踏实感,能在时间的积累下产生效益;科研的 idea 并非凭空冒出,总是在和最正确的人交流+动手实践+多看 paper 中产生的。
+
+现在对于我的启示,应该是上手新项目时,就要快速找到一套做事的框架,然后多问,微调。需要日日践行。做完一个项目,要进行大的复盘,把正确的习惯、成功的经验提炼出来,形成自己的研究方法论。
+
+完了,我不知道继续写啥了,就先这样吧。但是我觉得这或许是一种管理哲学,也是一种办事原则,有值得研究的地方。希望未来能够填上这个坑。
\ No newline at end of file
diff --git a/_posts/2026-03-01-load-balance-in-transformers.md b/_posts/2026-03-01-load-balance-in-transformers.md
new file mode 100644
index 00000000000..e26087f6138
--- /dev/null
+++ b/_posts/2026-03-01-load-balance-in-transformers.md
@@ -0,0 +1,19 @@
+---
+title: AI workload balance Literature
+description: >-
+ 负载均衡的系统层面优化相关 paper
+author: cybotiger
+date: 2026-03-01 12:00:00 +0800
+categories: [计算机系统, AI]
+tags: [分布式, 论文阅读]
+math: true
+mermaid: true
+---
+## DCP
+原文链接:
+[DCP: Addressing Input Dynamism In Long-Context Training via Dynamic Context Parallelism](https://arxiv.org/pdf/2510.10620)
+
+## WLB-LLM
+原文链接:
+[WLB-LLM: Workload-Balanced 4D Parallelism for Large Language Model Training](https://arxiv.org/pdf/2503.17924)
+
diff --git a/_sass/addon/commons.scss b/_sass/addon/commons.scss
index 7ba57557868..e986f98fdd2 100644
--- a/_sass/addon/commons.scss
+++ b/_sass/addon/commons.scss
@@ -1,3 +1,9 @@
+@use 'sass:math';
+@use 'module';
+@use 'variables';
+@use '../colors/typography-dark';
+@use '../colors/typography-light';
+
/* The common styles */
html {
@@ -6,22 +12,22 @@ html {
@media (prefers-color-scheme: light) {
&:not([data-mode]),
&[data-mode='light'] {
- @include light-scheme;
+ @include typography-light.light-scheme;
}
&[data-mode='dark'] {
- @include dark-scheme;
+ @include typography-dark.dark-scheme;
}
}
@media (prefers-color-scheme: dark) {
&:not([data-mode]),
&[data-mode='dark'] {
- @include dark-scheme;
+ @include typography-dark.dark-scheme;
}
&[data-mode='light'] {
- @include light-scheme;
+ @include typography-light.light-scheme;
}
}
}
@@ -32,17 +38,17 @@ body {
env(safe-area-inset-bottom) env(safe-area-inset-left);
color: var(--text-color);
-webkit-font-smoothing: antialiased;
- font-family: $font-family-base;
+ font-family: variables.$font-family-base;
}
/* --- Typography --- */
@for $i from 1 through 5 {
h#{$i} {
- @extend %heading;
+ @extend %heading !optional;
@if $i > 1 {
- @extend %anchor;
+ @extend %anchor !optional;
}
@if $i < 5 {
@@ -70,7 +76,7 @@ body {
}
a {
- @extend %link-color;
+ @extend %link-color !optional;
text-decoration: none;
}
@@ -115,10 +121,10 @@ blockquote {
padding: 1rem 1rem 1rem 3rem;
color: var(--prompt-text-color);
- @extend %rounded;
+ @extend %rounded !optional;
&::before {
- font-family: "iconfont";
+ font-family: 'iconfont';
text-align: center;
width: 3rem;
position: absolute;
@@ -128,10 +134,10 @@ blockquote {
}
}
- @include prompt('tip', '\e608');
- @include prompt('info', '\e6e8');
- @include prompt('warning', '\e6e8', $rotate: 180);
- @include prompt('danger', '\e6be');
+ @include module.prompt('tip', '\e608');
+ @include module.prompt('info', '\e6e8');
+ @include module.prompt('warning', '\e6e8', $rotate: 180);
+ @include module.prompt('danger', '\e6be');
}
kbd {
@@ -145,7 +151,7 @@ kbd {
padding-top: 0.1rem;
color: var(--kbd-text-color);
background-color: var(--kbd-bg-color);
- border-radius: $radius-sm;
+ border-radius: variables.$radius-sm;
border: solid 1px var(--kbd-wrap-color);
box-shadow: inset 0 -2px 0 var(--kbd-wrap-color);
}
@@ -157,21 +163,21 @@ hr {
footer {
background-color: var(--main-bg);
- height: $footer-height;
+ height: variables.$footer-height;
border-top: 1px solid var(--main-border-color);
- @extend %text-xs;
+ @extend %text-xs !optional;
a {
- @extend %text-highlight;
+ @extend %text-highlight !optional;
&:hover {
- @extend %link-hover;
+ @extend %link-hover !optional;
}
}
em {
- @extend %text-highlight;
+ @extend %text-highlight !optional;
}
p {
@@ -183,7 +189,7 @@ footer {
/* iconfont icons */
i {
&.iconfont {
- @extend %no-cursor;
+ @extend %no-cursor !optional;
}
}
@@ -220,7 +226,7 @@ i {
font-family: inherit;
line-height: inherit;
- @include label(inherit);
+ @include module.label(inherit);
}
.post-tag {
@@ -252,7 +258,7 @@ i {
}
a {
- @extend %no-bottom-border;
+ @extend %no-bottom-border !optional;
color: #6c757d;
}
@@ -268,10 +274,10 @@ i {
color: inherit;
&:hover {
- @extend %link-hover;
+ @extend %link-hover !optional;
}
- @extend %no-bottom-border;
+ @extend %no-bottom-border !optional;
}
}
@@ -284,27 +290,27 @@ i {
margin-bottom: 0.3rem;
}
- @extend %sup-fn-target;
+ @extend %sup-fn-target !optional;
> p {
margin-left: 0.25em;
- @include mt-mb(0);
+ @include module.mt-mb(0);
}
}
}
.footnote {
@at-root a#{&} {
- @include ml-mr(1px);
- @include pl-pr(2px);
+ @include module.ml-mr(1px);
+ @include module.pl-pr(2px);
border-bottom-style: none !important;
}
}
sup {
- @extend %sup-fn-target;
+ @extend %sup-fn-target !optional;
}
.reversefootnote {
@@ -326,7 +332,8 @@ sup {
margin-bottom: 1.5rem;
overflow-x: auto;
border-radius: 0.25rem;
- box-shadow: 0 1px 2px rgba(var(--tb-shade-color), 0.12), 0 3px 10px rgba(var(--tb-shade-color), 0.08);
+ box-shadow: 0 1px 2px rgba(var(--tb-shade-color), 0.12),
+ 0 3px 10px rgba(var(--tb-shade-color), 0.08);
> table {
display: table;
@@ -365,7 +372,7 @@ sup {
}
> td {
- @extend %table-cell;
+ @extend %table-cell !optional;
}
&:last-child > td {
@@ -383,7 +390,7 @@ sup {
height: 100%;
overflow: hidden;
- @extend %rounded;
+ @extend %rounded !optional;
&:not(.no-bg) {
background: var(--img-bg);
@@ -394,7 +401,7 @@ sup {
-o-object-fit: cover;
object-fit: cover;
- @extend %rounded;
+ @extend %rounded !optional;
@at-root #post-list & {
width: 100%;
@@ -403,14 +410,14 @@ sup {
}
.post-preview {
- @extend %rounded;
+ @extend %rounded !optional;
border: 0;
background: var(--card-bg);
box-shadow: var(--card-shadow);
&::before {
- @extend %rounded;
+ @extend %rounded !optional;
content: '';
width: 100%;
@@ -438,7 +445,7 @@ main {
p {
> a.popup {
&:not(.normal):not(.left):not(.right) {
- @include align-center;
+ @include module.align-center;
}
}
}
@@ -447,22 +454,22 @@ main {
#tags,
#archives {
a:not(:hover) {
- @extend %no-bottom-border;
+ @extend %no-bottom-border !optional;
}
}
}
.post-meta {
- @extend %text-sm;
+ @extend %text-sm !optional;
a {
&:not([class]):hover {
- @extend %link-hover;
+ @extend %link-hover !optional;
}
}
em {
- @extend %normal-font-style;
+ @extend %normal-font-style !optional;
}
}
@@ -473,18 +480,18 @@ main {
a {
&.popup {
- @extend %no-cursor;
- @extend %img-caption;
- @include mt-mb(0.5rem);
+ @extend %no-cursor !optional;
+ @extend %img-caption !optional;
+ @include module.mt-mb(0.5rem);
cursor: zoom-in;
}
&:not(.img-link) {
- @extend %link-underline;
+ @extend %link-underline !optional;
&:hover {
- @extend %link-hover;
+ @extend %link-hover !optional;
}
}
}
@@ -551,7 +558,7 @@ main {
} /* .content */
.tag:hover {
- @extend %tag-hover;
+ @extend %tag-hover !optional;
}
.post-tag {
@@ -620,7 +627,7 @@ main {
margin-bottom: 1rem;
aspect-ratio: 16 / 9;
- @extend %rounded;
+ @extend %rounded !optional;
&.twitch {
aspect-ratio: 310 / 189;
@@ -636,14 +643,14 @@ main {
margin-bottom: 0;
}
- @extend %img-caption;
+ @extend %img-caption !optional;
}
.embed-audio {
width: 100%;
display: block;
- @extend %img-caption;
+ @extend %img-caption !optional;
}
/* --- buttons --- */
@@ -675,7 +682,7 @@ main {
/* Overwrite bootstrap tooltip */
.tooltip-inner {
-/* Overrided BS4 Tooltip */
+ /* Overrided BS4 Tooltip */
font-size: 0.7rem;
max-width: 220px;
text-align: left;
@@ -735,14 +742,14 @@ $btn-border-width: 3px;
$btn-mb: 0.5rem;
#sidebar {
- @include pl-pr(0);
+ @include module.pl-pr(0);
position: fixed;
top: 0;
left: 0;
height: 100%;
overflow-y: auto;
- width: $sidebar-width;
+ width: variables.$sidebar-width;
background: var(--sidebar-bg);
border-right: 1px solid var(--sidebar-border-color);
@@ -762,7 +769,7 @@ $btn-mb: 0.5rem;
}
a {
- @extend %sidebar-links;
+ @extend %sidebar-links !optional;
}
#avatar {
@@ -783,16 +790,16 @@ $btn-mb: 0.5rem;
}
.profile-wrapper {
- @include mt-mb(2.5rem);
- @include ml-mr(1.25rem);
- @extend %clickable-transition;
+ @include module.mt-mb(2.5rem);
+ @include module.ml-mr(1.25rem);
+ @extend %clickable-transition !optional;
width: 100%;
}
.site-title {
- @extend %clickable-transition;
- @extend %sidebar-link-hover;
+ @extend %clickable-transition !optional;
+ @extend %sidebar-link-hover !optional;
font-family: inherit;
font-weight: 900;
@@ -822,10 +829,10 @@ $btn-mb: 0.5rem;
opacity: 0.9;
width: 100%;
- @include pl-pr(1.5rem);
+ @include module.pl-pr(1.5rem);
a.nav-link {
- @include pt-pb(0.6rem);
+ @include module.pt-pb(0.6rem);
display: flex;
align-items: center;
@@ -894,12 +901,12 @@ $btn-mb: 0.5rem;
}
a {
- @extend %button;
- @extend %sidebar-link-hover;
- @extend %clickable-transition;
+ @extend %button !optional;
+ @extend %sidebar-link-hover !optional;
+ @extend %clickable-transition !optional;
&:not(:last-child) {
- margin-right: $sb-btn-gap;
+ margin-right: variables.$sb-btn-gap;
}
}
@@ -908,14 +915,16 @@ $btn-mb: 0.5rem;
}
#mode-toggle {
- @extend %button;
- @extend %sidebar-links;
- @extend %sidebar-link-hover;
+ @extend %button !optional;
+ @extend %sidebar-links !optional;
+ @extend %sidebar-link-hover !optional;
}
.icon-border {
- @extend %no-cursor;
- @include ml-mr(calc(($sb-btn-gap - $btn-border-width) / 2));
+ @extend %no-cursor !optional;
+ @include module.ml-mr(
+ calc((variables.$sb-btn-gap - $btn-border-width) / 2)
+ );
background-color: var(--sidebar-btn-color);
content: '';
@@ -955,12 +964,12 @@ $btn-mb: 0.5rem;
/* --- top-bar --- */
#topbar-wrapper {
- height: $topbar-height;
+ height: variables.$topbar-height;
background-color: var(--topbar-bg);
}
#topbar {
- @extend %btn-color;
+ @extend %btn-color !optional;
#breadcrumb {
font-size: 1rem;
@@ -968,7 +977,7 @@ $btn-mb: 0.5rem;
padding-left: 0.5rem;
a:hover {
- @extend %link-hover;
+ @extend %link-hover !optional;
}
span {
@@ -983,43 +992,43 @@ $btn-mb: 0.5rem;
} /* #topbar */
::-webkit-input-placeholder {
- @include placeholder;
+ @include module.placeholder;
}
::-moz-placeholder {
- @include placeholder;
+ @include module.placeholder;
}
:-ms-input-placeholder {
- @include placeholder;
+ @include module.placeholder;
}
::-ms-input-placeholder {
- @include placeholder;
+ @include module.placeholder;
}
::placeholder {
- @include placeholder;
+ @include module.placeholder;
}
:focus::-webkit-input-placeholder {
- @include placeholder-focus;
+ @include module.placeholder-focus;
}
:focus::-moz-placeholder {
- @include placeholder-focus;
+ @include module.placeholder-focus;
}
:focus:-ms-input-placeholder {
- @include placeholder-focus;
+ @include module.placeholder-focus;
}
:focus::-ms-input-placeholder {
- @include placeholder-focus;
+ @include module.placeholder-focus;
}
:focus::placeholder {
- @include placeholder-focus;
+ @include module.placeholder-focus;
}
search {
@@ -1048,7 +1057,7 @@ search {
display: none;
white-space: nowrap;
- @extend %cursor-pointer;
+ @extend %cursor-pointer !optional;
}
#search-input {
@@ -1086,7 +1095,7 @@ search {
padding-right: 0.2rem;
}
- @extend %link-color;
+ @extend %link-color !optional;
}
}
@@ -1098,12 +1107,12 @@ search {
line-height: 1.5rem;
&:hover {
- @extend %link-hover;
+ @extend %link-hover !optional;
}
- @extend %link-color;
- @extend %no-bottom-border;
- @extend %heading;
+ @extend %link-color !optional;
+ @extend %no-bottom-border !optional;
+ @extend %heading !optional;
}
> article {
@@ -1121,7 +1130,7 @@ search {
}
> p {
- @extend %text-ellipsis;
+ @extend %text-ellipsis !optional;
white-space: break-spaces;
display: -webkit-box;
@@ -1151,7 +1160,7 @@ search {
#main-wrapper {
position: relative;
- @include pl-pr(0);
+ @include module.pl-pr(0);
> .container {
min-height: 100vh;
@@ -1161,7 +1170,7 @@ search {
#topbar-wrapper.row,
#main-wrapper > .container > .row,
#search-result-wrapper > .row {
- @include ml-mr(0);
+ @include module.ml-mr(0);
}
#tail-wrapper {
@@ -1181,12 +1190,12 @@ search {
cursor: pointer;
position: fixed;
right: 1rem;
- bottom: calc($footer-height-large - $back2top-size / 2);
+ bottom: calc(variables.$footer-height-large - variables.$back2top-size / 2);
background: var(--button-bg);
color: var(--btn-backtotop-color);
padding: 0;
- width: $back2top-size;
- height: $back2top-size;
+ width: variables.$back2top-size;
+ height: variables.$back2top-size;
border-radius: 50%;
border: 1px solid var(--btn-backtotop-border-color);
transition: opacity 0.5s ease-in-out, transform 0.2s ease-out;
@@ -1197,7 +1206,7 @@ search {
}
i {
- line-height: $back2top-size;
+ line-height: variables.$back2top-size;
position: relative;
bottom: 2px;
}
@@ -1271,7 +1280,7 @@ search {
main {
.content {
> blockquote[class^='prompt-'] {
- @include ml-mr(-1rem);
+ @include module.ml-mr(-1rem);
border-radius: 0;
max-width: none;
@@ -1291,12 +1300,12 @@ search {
}
#topbar {
- @extend %full-width;
+ @extend %full-width !optional;
}
#main-wrapper > .container {
- @extend %full-width;
- @include pl-pr(0);
+ @extend %full-width !optional;
+ @include module.pl-pr(0);
}
}
@@ -1315,7 +1324,7 @@ search {
footer {
@include slide;
- height: $footer-height-large;
+ height: variables.$footer-height-large;
padding: 1.5rem 0;
}
@@ -1325,7 +1334,7 @@ search {
}
#main-wrapper {
- transform: translateX($sidebar-width);
+ transform: translateX(variables.$sidebar-width);
}
#back-to-top {
@@ -1336,8 +1345,8 @@ search {
#sidebar {
@include slide;
- transform: translateX(-$sidebar-width); /* hide */
- -webkit-transform: translateX(-$sidebar-width);
+ transform: translateX(-(variables.$sidebar-width)); /* hide */
+ -webkit-transform: translateX(-(variables.$sidebar-width));
}
#main-wrapper {
@@ -1400,7 +1409,7 @@ search {
}
#main-wrapper {
- margin-left: $sidebar-width;
+ margin-left: variables.$sidebar-width;
}
#sidebar {
@@ -1414,11 +1423,11 @@ search {
}
search {
- max-width: $search-max-width;
+ max-width: variables.$search-max-width;
}
#search-result-wrapper {
- max-width: $main-content-max-width;
+ max-width: variables.$main-content-max-width;
justify-content: start !important;
}
@@ -1435,7 +1444,7 @@ search {
/* button 'back-to-Top' position */
#back-to-top {
right: 5%;
- bottom: calc($footer-height - $back2top-size / 2);
+ bottom: calc(variables.$footer-height - variables.$back2top-size / 2);
}
#topbar-title {
@@ -1512,7 +1521,7 @@ search {
@media all and (min-width: 1400px) {
#back-to-top {
- right: calc((100vw - $sidebar-width - 1140px) / 2 + 3rem);
+ right: calc((100vw - variables.$sidebar-width - 1140px) / 2 + 3rem);
}
}
@@ -1520,23 +1529,24 @@ search {
$icon-gap: 1rem;
#main-wrapper {
- margin-left: $sidebar-width-large;
+ margin-left: variables.$sidebar-width-large;
}
#topbar-wrapper {
- left: $sidebar-width-large;
+ left: variables.$sidebar-width-large;
}
search {
margin-right: calc(
- $main-content-max-width / 4 - $search-max-width - 0.75rem
+ variables.$main-content-max-width / 4 - variables.$search-max-width -
+ 0.75rem
);
}
#main-wrapper > .container {
- max-width: $main-content-max-width;
+ max-width: variables.$main-content-max-width;
- @include pl-pr(1.75rem, true);
+ @include module.pl-pr(1.75rem, true);
}
main.col-12,
@@ -1546,12 +1556,15 @@ search {
#back-to-top {
right: calc(
- (100vw - $sidebar-width-large - $main-content-max-width) / 2 + 2rem
+ (
+ 100vw - variables.$sidebar-width-large -
+ variables.$main-content-max-width
+ ) / 2 + 2rem
);
}
#sidebar {
- width: $sidebar-width-large;
+ width: variables.$sidebar-width-large;
.profile-wrapper {
margin-top: 3.5rem;
@@ -1593,7 +1606,7 @@ search {
ul {
li.nav-item {
- @include pl-pr(2.75rem);
+ @include module.pl-pr(2.75rem);
}
}
@@ -1602,11 +1615,13 @@ search {
margin-bottom: 1.75rem;
a:not(:last-child) {
- margin-right: $sb-btn-gap-lg;
+ margin-right: variables.$sb-btn-gap-lg;
}
.icon-border {
- @include ml-mr(calc(($sb-btn-gap-lg - $btn-border-width) / 2));
+ @include module.ml-mr(
+ calc((variables.$sb-btn-gap-lg - $btn-border-width) / 2)
+ );
}
}
}
@@ -1678,8 +1693,8 @@ details {
}
@function random_range($min, $max) {
- $rand: random();
- $random_range: $min + floor($rand * (($max - $min) + 1));
+ $rand: math.random();
+ $random_range: $min + math.floor($rand * (($max - $min) + 1));
@return $random_range;
}
@@ -1722,7 +1737,12 @@ details {
@for $i from 0 through 50 {
&:nth-child(#{$i}) {
--circle-left: #{random_range(0%, 100%)};
- --circle-background: rgba(#{random_range(0, 255)}, #{random_range(0, 255)}, #{random_range(0, 255)}, 0.06);
+ --circle-background: rgba(
+ #{random_range(0, 255)},
+ #{random_range(0, 255)},
+ #{random_range(0, 255)},
+ 0.06
+ );
--circle-side-length: #{random_range(20px, 200px)};
--circle-time: #{random_range(10s, 45s)};
--circle-delay: #{random_range(0s, 25s)};
@@ -1740,4 +1760,4 @@ details {
.btn-link {
text-decoration: none;
-}
\ No newline at end of file
+}
diff --git a/_sass/addon/module.scss b/_sass/addon/module.scss
index 5be6bfa7e33..6fac84e29d8 100644
--- a/_sass/addon/module.scss
+++ b/_sass/addon/module.scss
@@ -1,3 +1,5 @@
+@use 'variables';
+
/*
* Mainly scss modules, only imported to `assets/css/main.scss`
*/
@@ -7,7 +9,7 @@
%heading {
color: var(--heading-color);
font-weight: 600;
- font-family: $font-family-heading;
+ font-family: variables.$font-family-heading;
scroll-margin-top: 3.5rem;
}
@@ -82,7 +84,7 @@
}
%rounded {
- border-radius: $radius-lg;
+ border-radius: variables.$radius-lg;
}
%img-caption {
diff --git a/_sass/addon/syntax.scss b/_sass/addon/syntax.scss
index b40d90f9b77..edc4c09308f 100644
--- a/_sass/addon/syntax.scss
+++ b/_sass/addon/syntax.scss
@@ -2,29 +2,31 @@
* The syntax highlight.
*/
-@import 'colors/syntax-light';
-@import 'colors/syntax-dark';
+@use '../colors/syntax-light';
+@use '../colors/syntax-dark';
+@use 'module';
+@use 'variables';
html {
@media (prefers-color-scheme: light) {
&:not([data-mode]),
&[data-mode='light'] {
- @include light-syntax;
+ @include syntax-light.light-syntax;
}
&[data-mode='dark'] {
- @include dark-syntax;
+ @include syntax-dark.dark-syntax;
}
}
@media (prefers-color-scheme: dark) {
&:not([data-mode]),
&[data-mode='dark'] {
- @include dark-syntax;
+ @include syntax-dark.dark-syntax;
}
&[data-mode='light'] {
- @include light-syntax;
+ @include syntax-light.light-syntax;
}
}
}
@@ -54,21 +56,21 @@ html {
}
.highlight {
- @extend %rounded;
- @extend %code-snippet-bg;
+ @extend %rounded !optional;
+ @extend %code-snippet-bg !optional;
overflow: auto;
padding-bottom: 0.75rem;
@at-root figure#{&} {
- @extend %code-snippet-bg;
+ @extend %code-snippet-bg !optional;
}
pre {
- font-family: "Fira Code", "Microsoft Yahei", monospace;
+ font-family: 'Microsoft Yahei', monospace;
font-variant-ligatures: normal;
margin-bottom: 0;
- font-size: $code-font-size;
+ font-size: variables.$code-font-size;
line-height: 1.4rem;
word-wrap: normal; /* Fixed Safari overflow-x */
}
@@ -107,7 +109,7 @@ code {
-webkit-hyphens: none;
-ms-hyphens: none;
hyphens: none;
- font-family: "Fira Code", "Microsoft Yahei", monospace;
+ font-family: 'Microsoft Yahei', monospace;
font-variant-ligatures: none;
color: var(--code-color);
@@ -115,7 +117,7 @@ code {
// font-size: $code-font-size;
padding: 3px 5px;
word-break: break-word;
- border-radius: $radius-sm;
+ border-radius: variables.$radius-sm;
background-color: var(--inline-code-bg);
}
@@ -141,7 +143,7 @@ code {
}
td.rouge-code {
- @extend %code-snippet-padding;
+ @extend %code-snippet-padding !optional;
/*
Prevent some browser extends from
@@ -155,13 +157,13 @@ td.rouge-code {
}
div[class^='language-'] {
- @extend %rounded;
- @extend %code-snippet-bg;
+ @extend %rounded !optional;
+ @extend %code-snippet-bg !optional;
box-shadow: var(--language-border-color) 0 0 0 1px;
.content > & {
- @include ml-mr(-1rem);
+ @include module.ml-mr(-1rem);
border-radius: 0;
}
@@ -190,23 +192,23 @@ div {
}
.code-header {
- @extend %no-cursor;
+ @extend %no-cursor !optional;
display: flex;
justify-content: space-between;
align-items: center;
- height: $code-header-height;
+ height: variables.$code-header-height;
margin-left: 0.75rem;
margin-right: 0.25rem;
/* the label block */
span {
- line-height: $code-header-height;
+ line-height: variables.$code-header-height;
/* label icon */
i {
font-size: 1rem;
- width: $code-icon-width;
+ width: variables.$code-icon-width;
color: var(--code-header-icon-color);
&.small {
@@ -230,12 +232,12 @@ div {
/* clipboard */
button {
- @extend %cursor-pointer;
- @extend %rounded;
+ @extend %cursor-pointer !optional;
+ @extend %rounded !optional;
border: 1px solid transparent;
- height: $code-header-height;
- width: $code-header-height;
+ height: variables.$code-header-height;
+ width: variables.$code-header-height;
padding: 0;
background-color: inherit;
@@ -279,13 +281,13 @@ div {
@media all and (min-width: 576px) {
div[class^='language-'] {
.content > & {
- @include ml-mr(0);
+ @include module.ml-mr(0);
- border-radius: $radius-lg;
+ border-radius: variables.$radius-lg;
}
.code-header {
- @include ml-mr(0);
+ @include module.ml-mr(0);
$dot-margin: 1rem;
@@ -293,19 +295,19 @@ div {
content: '';
display: inline-block;
margin-left: $dot-margin;
- width: $code-dot-size;
- height: $code-dot-size;
+ width: variables.$code-dot-size;
+ height: variables.$code-dot-size;
border-radius: 50%;
background-color: var(--code-header-muted-color);
- box-shadow: ($code-dot-size + $code-dot-gap) 0 0
+ box-shadow: (variables.$code-dot-size + variables.$code-dot-gap) 0 0
var(--code-header-muted-color),
- ($code-dot-size + $code-dot-gap) * 2 0 0
+ (variables.$code-dot-size + variables.$code-dot-gap) * 2 0 0
var(--code-header-muted-color);
}
span {
// center the text of label
- margin-left: calc(($dot-margin + $code-dot-size) / 2 * -1);
+ margin-left: calc(($dot-margin + variables.$code-dot-size) / 2 * -1);
}
}
}
diff --git a/_sass/dist/bootstrap.css b/_sass/dist/bootstrap.css
index 700b90407f3..88a5ec9d932 100644
--- a/_sass/dist/bootstrap.css
+++ b/_sass/dist/bootstrap.css
@@ -1,5 +1,1969 @@
-@charset "UTF-8";/*!
+@charset "UTF-8"; /*!
* Bootstrap v5.3.3 (https://getbootstrap.com/)
* Copyright 2011-2024 The Bootstrap Authors
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- */:root{--bs-success:#198754;--bs-danger:#dc3545;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-color-rgb:33,37,41;--bs-body-bg:#fff;--bs-body-bg-rgb:255,255,255;--bs-emphasis-color:#000;--bs-secondary-color:rgba(33, 37, 41, 0.75);--bs-secondary-bg:#e9ecef;--bs-tertiary-bg:#f8f9fa;--bs-heading-color:inherit;--bs-link-color:#0d6efd;--bs-link-color-rgb:13,110,253;--bs-link-hover-color:#0a58ca;--bs-link-hover-color-rgb:10,88,202;--bs-code-color:#d63384;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15)}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:.25}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}.small,small{font-size:.875em}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,1));text-decoration:underline}a:hover{--bs-link-color-rgb:var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button{text-transform:none}[role=button]{cursor:pointer}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[type=button],[type=reset],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.list-unstyled{padding-left:0;list-style:none}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.figure{display:inline-block}.container{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}@media (min-width:1400px){.container{max-width:1320px}}:root{}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-1>*{flex:0 0 auto;width:100%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.g-0{--bs-gutter-x:0}.g-0{--bs-gutter-y:0}.g-4{--bs-gutter-x:1.5rem}.g-4{--bs-gutter-y:1.5rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}}@media (min-width:992px){.col-lg{flex:1 0 0%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333333%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}}.table{--bs-table-color-type:initial;--bs-table-bg-type:initial;--bs-table-color-state:initial;--bs-table-bg-state:initial;--bs-table-color:var(--bs-emphasis-color);--bs-table-bg:var(--bs-body-bg);--bs-table-border-color:var(--bs-border-color);--bs-table-accent-bg:transparent;width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem .5rem;color:var(--bs-table-color-state,var(--bs-table-color-type,var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:var(--bs-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state,var(--bs-table-bg-type,var(--bs-table-accent-bg)))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.col-form-label{padding-top:calc(.375rem + var(--bs-border-width));padding-bottom:calc(.375rem + var(--bs-border-width));margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + var(--bs-border-width));padding-bottom:calc(.5rem + var(--bs-border-width));font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + var(--bs-border-width));padding-bottom:calc(.25rem + var(--bs-border-width));font-size:.875rem}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-body-bg);background-clip:padding-box;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:var(--bs-body-color);background-color:var(--bs-body-bg);border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::-moz-placeholder{color:var(--bs-secondary-color);opacity:1}.form-control::placeholder{color:var(--bs-secondary-color);opacity:1}.form-control:disabled{background-color:var(--bs-secondary-bg);opacity:1}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:var(--bs-secondary-bg)}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--bs-secondary-bg)}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-success);border-radius:var(--bs-border-radius)}.is-valid~.valid-tooltip,.was-validated :valid~.valid-tooltip{display:block}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-danger);border-radius:var(--bs-border-radius)}.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-tooltip{display:block}.btn{--bs-btn-padding-x:0.75rem;--bs-btn-padding-y:0.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight:400;--bs-btn-line-height:1.5;--bs-btn-color:var(--bs-body-color);--bs-btn-bg:transparent;--bs-btn-border-width:var(--bs-border-width);--bs-btn-border-color:transparent;--bs-btn-border-radius:var(--bs-border-radius);--bs-btn-hover-border-color:transparent;--bs-btn-disabled-opacity:0.65;--bs-btn-focus-box-shadow:0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn.active,.btn.show,.btn:first-child:active,:not(.btn-check)+.btn:active{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn.active:focus-visible,.btn.show:focus-visible,.btn:first-child:active:focus-visible,:not(.btn-check)+.btn:active:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn.disabled,.btn:disabled{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color:#fff;--bs-btn-bg:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0b5ed7;--bs-btn-hover-border-color:#0a58ca;--bs-btn-focus-shadow-rgb:49,132,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0a58ca;--bs-btn-active-border-color:#0a53be;--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#0d6efd;--bs-btn-disabled-border-color:#0d6efd}.btn-outline-primary{--bs-btn-color:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0d6efd;--bs-btn-hover-border-color:#0d6efd;--bs-btn-focus-shadow-rgb:13,110,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0d6efd;--bs-btn-active-border-color:#0d6efd;--bs-btn-disabled-color:#0d6efd;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0d6efd}.btn-outline-secondary{--bs-btn-color:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#6c757d;--bs-btn-hover-border-color:#6c757d;--bs-btn-focus-shadow-rgb:108,117,125;--bs-btn-active-color:#fff;--bs-btn-active-bg:#6c757d;--bs-btn-active-border-color:#6c757d;--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#6c757d}.btn-link{--bs-btn-font-weight:400;--bs-btn-color:var(--bs-link-color);--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:var(--bs-link-hover-color);--bs-btn-hover-border-color:transparent;--bs-btn-active-color:var(--bs-link-hover-color);--bs-btn-active-border-color:transparent;--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-border-color:transparent;--bs-btn-focus-shadow-rgb:49,132,253;text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-lg{--bs-btn-padding-y:0.5rem;--bs-btn-padding-x:1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius:var(--bs-border-radius-lg)}.btn-sm{--bs-btn-padding-y:0.25rem;--bs-btn-padding-x:0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius:var(--bs-border-radius-sm)}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.nav{--bs-nav-link-padding-x:1rem;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-link-color);--bs-nav-link-hover-color:var(--bs-link-hover-color);--bs-nav-link-disabled-color:var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;background:0 0;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.card{--bs-card-spacer-y:1rem;--bs-card-spacer-x:1rem;--bs-card-title-spacer-y:0.5rem;--bs-card-title-color: ;--bs-card-border-width:var(--bs-border-width);--bs-card-border-color:var(--bs-border-color-translucent);--bs-card-border-radius:var(--bs-border-radius);--bs-card-inner-border-radius:calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-card-cap-padding-y:0.5rem;--bs-card-cap-padding-x:1rem;--bs-card-cap-bg:rgba(var(--bs-body-color-rgb), 0.03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg:var(--bs-body-bg);position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group{border-top:0}.card-body{flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-text:last-child{margin-bottom:0}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.breadcrumb{--bs-breadcrumb-padding-x:0;--bs-breadcrumb-padding-y:0;--bs-breadcrumb-margin-bottom:1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;display:flex;flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.pagination{--bs-pagination-padding-x:0.75rem;--bs-pagination-padding-y:0.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color:var(--bs-link-color);--bs-pagination-bg:var(--bs-body-bg);--bs-pagination-border-width:var(--bs-border-width);--bs-pagination-border-color:var(--bs-border-color);--bs-pagination-border-radius:var(--bs-border-radius);--bs-pagination-hover-color:var(--bs-link-hover-color);--bs-pagination-hover-bg:var(--bs-tertiary-bg);--bs-pagination-hover-border-color:var(--bs-border-color);--bs-pagination-focus-color:var(--bs-link-hover-color);--bs-pagination-focus-bg:var(--bs-secondary-bg);--bs-pagination-focus-box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-pagination-active-color:#fff;--bs-pagination-active-bg:#0d6efd;--bs-pagination-active-border-color:#0d6efd;--bs-pagination-disabled-color:var(--bs-secondary-color);--bs-pagination-disabled-bg:var(--bs-secondary-bg);--bs-pagination-disabled-border-color:var(--bs-border-color);display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.active>.page-link,.page-link.active{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.disabled>.page-link,.page-link.disabled{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(var(--bs-border-width) * -1)}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.alert{--bs-alert-bg:transparent;--bs-alert-padding-x:1rem;--bs-alert-padding-y:1rem;--bs-alert-margin-bottom:1rem;--bs-alert-color:inherit;--bs-alert-border-color:transparent;--bs-alert-border:var(--bs-border-width) solid var(--bs-alert-border-color);--bs-alert-border-radius:var(--bs-border-radius);position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.list-group{--bs-list-group-color:var(--bs-body-color);--bs-list-group-bg:var(--bs-body-bg);--bs-list-group-border-color:var(--bs-border-color);--bs-list-group-border-width:var(--bs-border-width);--bs-list-group-border-radius:var(--bs-border-radius);--bs-list-group-item-padding-x:1rem;--bs-list-group-item-padding-y:0.5rem;--bs-list-group-disabled-color:var(--bs-secondary-color);--bs-list-group-disabled-bg:var(--bs-body-bg);--bs-list-group-active-color:#fff;--bs-list-group-active-bg:#0d6efd;--bs-list-group-active-border-color:#0d6efd;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.btn-close{--bs-btn-close-color:#000;--bs-btn-close-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");--bs-btn-close-opacity:0.5;--bs-btn-close-hover-opacity:0.75;--bs-btn-close-focus-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-btn-close-focus-opacity:1;--bs-btn-close-disabled-opacity:0.25;box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:var(--bs-btn-close-color);background:transparent var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.toast{--bs-toast-padding-x:0.75rem;--bs-toast-padding-y:0.5rem;--bs-toast-max-width:350px;--bs-toast-font-size:0.875rem;--bs-toast-color: ;--bs-toast-bg:rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-border-width:var(--bs-border-width);--bs-toast-border-color:var(--bs-border-color-translucent);--bs-toast-border-radius:var(--bs-border-radius);--bs-toast-box-shadow:var(--bs-box-shadow);--bs-toast-header-color:var(--bs-secondary-color);--bs-toast-header-bg:rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-header-border-color:var(--bs-border-color-translucent);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast:not(.show){display:none}.toast-header{display:flex;align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-.5 * var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.tooltip{--bs-tooltip-zindex:1080;--bs-tooltip-max-width:200px;--bs-tooltip-padding-x:0.5rem;--bs-tooltip-padding-y:0.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:0.875rem;--bs-tooltip-color:var(--bs-body-bg);--bs-tooltip-bg:var(--bs-emphasis-color);--bs-tooltip-border-radius:var(--bs-border-radius);--bs-tooltip-opacity:0.9;--bs-tooltip-arrow-width:0.8rem;--bs-tooltip-arrow-height:0.4rem;z-index:var(--bs-tooltip-zindex);display:block;margin:var(--bs-tooltip-margin);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.icon-link{display:inline-flex;gap:.375rem;align-items:center;-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,0.5));text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,0.5));text-underline-offset:0.25em;-webkit-backface-visibility:hidden;backface-visibility:hidden}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.align-middle{vertical-align:middle!important}.opacity-75{opacity:.75!important}.overflow-hidden{overflow:hidden!important}.d-block{display:block!important}.d-flex{display:flex!important}.d-none{display:none!important}.shadow{box-shadow:var(--bs-box-shadow)!important}.position-fixed{position:fixed!important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-100{height:100%!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-grow-1{flex-grow:1!important}.flex-wrap{flex-wrap:wrap!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.pt-0{padding-top:0!important}.pt-2{padding-top:.5rem!important}.pe-1{padding-right:.25rem!important}.pe-4{padding-right:1.5rem!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-4{padding-bottom:1.5rem!important}.ps-0{padding-left:0!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-light{font-weight:300!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-nowrap{white-space:nowrap!important}.text-muted{color:var(--bs-secondary-color)!important}.pe-none{pointer-events:none!important}.rounded-circle{border-radius:50%!important}.invisible{visibility:hidden!important}.z-1{z-index:1!important}.z-2{z-index:2!important}@media (min-width:576px){.flex-sm-row{flex-direction:row!important}.me-sm-4{margin-right:1.5rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}}@media (min-width:768px){.flex-md-row-reverse{flex-direction:row-reverse!important}.mt-md-0{margin-top:0!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}}@media (min-width:992px){.flex-lg-row{flex-direction:row!important}.justify-content-lg-between{justify-content:space-between!important}.align-items-lg-center{align-items:center!important}.ms-lg-0{margin-left:0!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.ps-lg-2{padding-left:.5rem!important}}@media (min-width:1200px){.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}}@media (min-width:1400px){.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}}
\ No newline at end of file
+ */
+:root {
+ --bs-success: #198754;
+ --bs-danger: #dc3545;
+ --bs-font-sans-serif: system-ui, -apple-system, 'Segoe UI', Roboto,
+ 'Helvetica Neue', 'Noto Sans', 'Liberation Sans', Arial, sans-serif,
+ 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
+ --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas,
+ 'Liberation Mono', 'Courier New', monospace;
+ --bs-body-font-family: var(--bs-font-sans-serif);
+ --bs-body-font-size: 1rem;
+ --bs-body-font-weight: 400;
+ --bs-body-line-height: 1.5;
+ --bs-body-color: #212529;
+ --bs-body-color-rgb: 33, 37, 41;
+ --bs-body-bg: #fff;
+ --bs-body-bg-rgb: 255, 255, 255;
+ --bs-emphasis-color: #000;
+ --bs-secondary-color: rgba(33, 37, 41, 0.75);
+ --bs-secondary-bg: #e9ecef;
+ --bs-tertiary-bg: #f8f9fa;
+ --bs-heading-color: inherit;
+ --bs-link-color: #0d6efd;
+ --bs-link-color-rgb: 13, 110, 253;
+ --bs-link-hover-color: #0a58ca;
+ --bs-link-hover-color-rgb: 10, 88, 202;
+ --bs-code-color: #d63384;
+ --bs-border-width: 1px;
+ --bs-border-style: solid;
+ --bs-border-color: #dee2e6;
+ --bs-border-color-translucent: rgba(0, 0, 0, 0.175);
+ --bs-border-radius: 0.375rem;
+ --bs-border-radius-sm: 0.25rem;
+ --bs-border-radius-lg: 0.5rem;
+ --bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
+}
+*,
+::after,
+::before {
+ box-sizing: border-box;
+}
+@media (prefers-reduced-motion: no-preference) {
+ :root {
+ scroll-behavior: smooth;
+ }
+}
+body {
+ margin: 0;
+ font-family: var(--bs-body-font-family);
+ font-size: var(--bs-body-font-size);
+ font-weight: var(--bs-body-font-weight);
+ line-height: var(--bs-body-line-height);
+ color: var(--bs-body-color);
+ text-align: var(--bs-body-text-align);
+ background-color: var(--bs-body-bg);
+ -webkit-text-size-adjust: 100%;
+ -webkit-tap-highlight-color: transparent;
+}
+hr {
+ margin: 1rem 0;
+ color: inherit;
+ border: 0;
+ border-top: var(--bs-border-width) solid;
+ opacity: 0.25;
+}
+.h1,
+.h2,
+.h3,
+.h4,
+.h5,
+.h6,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ margin-top: 0;
+ margin-bottom: 0.5rem;
+ font-weight: 500;
+ line-height: 1.2;
+ color: var(--bs-heading-color);
+}
+.h1,
+h1 {
+ font-size: calc(1.375rem + 1.5vw);
+}
+@media (min-width: 1200px) {
+ .h1,
+ h1 {
+ font-size: 2.5rem;
+ }
+}
+.h2,
+h2 {
+ font-size: calc(1.325rem + 0.9vw);
+}
+@media (min-width: 1200px) {
+ .h2,
+ h2 {
+ font-size: 2rem;
+ }
+}
+.h3,
+h3 {
+ font-size: calc(1.3rem + 0.6vw);
+}
+@media (min-width: 1200px) {
+ .h3,
+ h3 {
+ font-size: 1.75rem;
+ }
+}
+.h4,
+h4 {
+ font-size: calc(1.275rem + 0.3vw);
+}
+@media (min-width: 1200px) {
+ .h4,
+ h4 {
+ font-size: 1.5rem;
+ }
+}
+.h5,
+h5 {
+ font-size: 1.25rem;
+}
+.h6,
+h6 {
+ font-size: 1rem;
+}
+p {
+ margin-top: 0;
+ margin-bottom: 1rem;
+}
+address {
+ margin-bottom: 1rem;
+ font-style: normal;
+ line-height: inherit;
+}
+ol,
+ul {
+ padding-left: 2rem;
+}
+dl,
+ol,
+ul {
+ margin-top: 0;
+ margin-bottom: 1rem;
+}
+ol ol,
+ol ul,
+ul ol,
+ul ul {
+ margin-bottom: 0;
+}
+dt {
+ font-weight: 700;
+}
+dd {
+ margin-bottom: 0.5rem;
+ margin-left: 0;
+}
+blockquote {
+ margin: 0 0 1rem;
+}
+.small,
+small {
+ font-size: 0.875em;
+}
+a {
+ color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));
+ text-decoration: underline;
+}
+a:hover {
+ --bs-link-color-rgb: var(--bs-link-hover-color-rgb);
+}
+a:not([href]):not([class]),
+a:not([href]):not([class]):hover {
+ color: inherit;
+ text-decoration: none;
+}
+code,
+kbd,
+pre {
+ font-family: var(--bs-font-monospace);
+ font-size: 1em;
+}
+pre {
+ display: block;
+ margin-top: 0;
+ margin-bottom: 1rem;
+ overflow: auto;
+ font-size: 0.875em;
+}
+pre code {
+ font-size: inherit;
+ color: inherit;
+ word-break: normal;
+}
+code {
+ font-size: 0.875em;
+ color: var(--bs-code-color);
+ word-wrap: break-word;
+}
+a > code {
+ color: inherit;
+}
+kbd {
+ padding: 0.1875rem 0.375rem;
+ font-size: 0.875em;
+ color: var(--bs-body-bg);
+ background-color: var(--bs-body-color);
+ border-radius: 0.25rem;
+}
+kbd kbd {
+ padding: 0;
+ font-size: 1em;
+}
+figure {
+ margin: 0 0 1rem;
+}
+img {
+ vertical-align: middle;
+}
+table {
+ caption-side: bottom;
+ border-collapse: collapse;
+}
+caption {
+ padding-top: 0.5rem;
+ padding-bottom: 0.5rem;
+ color: var(--bs-secondary-color);
+ text-align: left;
+}
+th {
+ text-align: inherit;
+ text-align: -webkit-match-parent;
+}
+tbody,
+td,
+tfoot,
+th,
+thead,
+tr {
+ border-color: inherit;
+ border-style: solid;
+ border-width: 0;
+}
+label {
+ display: inline-block;
+}
+button {
+ border-radius: 0;
+}
+button:focus:not(:focus-visible) {
+ outline: 0;
+}
+button,
+input,
+optgroup {
+ margin: 0;
+ font-family: inherit;
+ font-size: inherit;
+ line-height: inherit;
+}
+button {
+ text-transform: none;
+}
+[role='button'] {
+ cursor: pointer;
+}
+[list]:not([type='date']):not([type='datetime-local']):not([type='month']):not(
+ [type='week']
+ ):not([type='time'])::-webkit-calendar-picker-indicator {
+ display: none !important;
+}
+[type='button'],
+[type='reset'],
+button {
+ -webkit-appearance: button;
+}
+[type='button']:not(:disabled),
+[type='reset']:not(:disabled),
+button:not(:disabled) {
+ cursor: pointer;
+}
+::-moz-focus-inner {
+ padding: 0;
+ border-style: none;
+}
+::-webkit-datetime-edit-day-field,
+::-webkit-datetime-edit-fields-wrapper,
+::-webkit-datetime-edit-hour-field,
+::-webkit-datetime-edit-minute,
+::-webkit-datetime-edit-month-field,
+::-webkit-datetime-edit-text,
+::-webkit-datetime-edit-year-field {
+ padding: 0;
+}
+::-webkit-inner-spin-button {
+ height: auto;
+}
+[type='search'] {
+ -webkit-appearance: textfield;
+ outline-offset: -2px;
+}
+::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+::-webkit-color-swatch-wrapper {
+ padding: 0;
+}
+::-webkit-file-upload-button {
+ font: inherit;
+ -webkit-appearance: button;
+}
+::file-selector-button {
+ font: inherit;
+ -webkit-appearance: button;
+}
+output {
+ display: inline-block;
+}
+iframe {
+ border: 0;
+}
+summary {
+ display: list-item;
+ cursor: pointer;
+}
+[hidden] {
+ display: none !important;
+}
+.lead {
+ font-size: 1.25rem;
+ font-weight: 300;
+}
+.list-unstyled {
+ padding-left: 0;
+ list-style: none;
+}
+.blockquote {
+ margin-bottom: 1rem;
+ font-size: 1.25rem;
+}
+.blockquote > :last-child {
+ margin-bottom: 0;
+}
+.figure {
+ display: inline-block;
+}
+.container {
+ --bs-gutter-x: 1.5rem;
+ --bs-gutter-y: 0;
+ width: 100%;
+ padding-right: calc(var(--bs-gutter-x) * 0.5);
+ padding-left: calc(var(--bs-gutter-x) * 0.5);
+ margin-right: auto;
+ margin-left: auto;
+}
+@media (min-width: 576px) {
+ .container {
+ max-width: 540px;
+ }
+}
+@media (min-width: 768px) {
+ .container {
+ max-width: 720px;
+ }
+}
+@media (min-width: 992px) {
+ .container {
+ max-width: 960px;
+ }
+}
+@media (min-width: 1200px) {
+ .container {
+ max-width: 1140px;
+ }
+}
+@media (min-width: 1400px) {
+ .container {
+ max-width: 1320px;
+ }
+}
+:root {
+}
+.row {
+ --bs-gutter-x: 1.5rem;
+ --bs-gutter-y: 0;
+ display: flex;
+ flex-wrap: wrap;
+ margin-top: calc(-1 * var(--bs-gutter-y));
+ margin-right: calc(-0.5 * var(--bs-gutter-x));
+ margin-left: calc(-0.5 * var(--bs-gutter-x));
+}
+.row > * {
+ flex-shrink: 0;
+ width: 100%;
+ max-width: 100%;
+ padding-right: calc(var(--bs-gutter-x) * 0.5);
+ padding-left: calc(var(--bs-gutter-x) * 0.5);
+ margin-top: var(--bs-gutter-y);
+}
+.col {
+ flex: 1 0 0%;
+}
+.row-cols-1 > * {
+ flex: 0 0 auto;
+ width: 100%;
+}
+.col-auto {
+ flex: 0 0 auto;
+ width: auto;
+}
+.col-1 {
+ flex: 0 0 auto;
+ width: 8.33333333%;
+}
+.col-2 {
+ flex: 0 0 auto;
+ width: 16.66666667%;
+}
+.col-3 {
+ flex: 0 0 auto;
+ width: 25%;
+}
+.col-4 {
+ flex: 0 0 auto;
+ width: 33.33333333%;
+}
+.col-5 {
+ flex: 0 0 auto;
+ width: 41.66666667%;
+}
+.col-6 {
+ flex: 0 0 auto;
+ width: 50%;
+}
+.col-7 {
+ flex: 0 0 auto;
+ width: 58.33333333%;
+}
+.col-8 {
+ flex: 0 0 auto;
+ width: 66.66666667%;
+}
+.col-9 {
+ flex: 0 0 auto;
+ width: 75%;
+}
+.col-10 {
+ flex: 0 0 auto;
+ width: 83.33333333%;
+}
+.col-11 {
+ flex: 0 0 auto;
+ width: 91.66666667%;
+}
+.col-12 {
+ flex: 0 0 auto;
+ width: 100%;
+}
+.g-0 {
+ --bs-gutter-x: 0;
+}
+.g-0 {
+ --bs-gutter-y: 0;
+}
+.g-4 {
+ --bs-gutter-x: 1.5rem;
+}
+.g-4 {
+ --bs-gutter-y: 1.5rem;
+}
+@media (min-width: 576px) {
+ .col-sm {
+ flex: 1 0 0%;
+ }
+ .col-sm-auto {
+ flex: 0 0 auto;
+ width: auto;
+ }
+ .col-sm-1 {
+ flex: 0 0 auto;
+ width: 8.33333333%;
+ }
+ .col-sm-2 {
+ flex: 0 0 auto;
+ width: 16.66666667%;
+ }
+ .col-sm-3 {
+ flex: 0 0 auto;
+ width: 25%;
+ }
+ .col-sm-4 {
+ flex: 0 0 auto;
+ width: 33.33333333%;
+ }
+ .col-sm-5 {
+ flex: 0 0 auto;
+ width: 41.66666667%;
+ }
+ .col-sm-6 {
+ flex: 0 0 auto;
+ width: 50%;
+ }
+ .col-sm-7 {
+ flex: 0 0 auto;
+ width: 58.33333333%;
+ }
+ .col-sm-8 {
+ flex: 0 0 auto;
+ width: 66.66666667%;
+ }
+ .col-sm-9 {
+ flex: 0 0 auto;
+ width: 75%;
+ }
+ .col-sm-10 {
+ flex: 0 0 auto;
+ width: 83.33333333%;
+ }
+ .col-sm-11 {
+ flex: 0 0 auto;
+ width: 91.66666667%;
+ }
+ .col-sm-12 {
+ flex: 0 0 auto;
+ width: 100%;
+ }
+}
+@media (min-width: 768px) {
+ .col-md {
+ flex: 1 0 0%;
+ }
+ .row-cols-md-2 > * {
+ flex: 0 0 auto;
+ width: 50%;
+ }
+ .col-md-auto {
+ flex: 0 0 auto;
+ width: auto;
+ }
+ .col-md-1 {
+ flex: 0 0 auto;
+ width: 8.33333333%;
+ }
+ .col-md-2 {
+ flex: 0 0 auto;
+ width: 16.66666667%;
+ }
+ .col-md-3 {
+ flex: 0 0 auto;
+ width: 25%;
+ }
+ .col-md-4 {
+ flex: 0 0 auto;
+ width: 33.33333333%;
+ }
+ .col-md-5 {
+ flex: 0 0 auto;
+ width: 41.66666667%;
+ }
+ .col-md-6 {
+ flex: 0 0 auto;
+ width: 50%;
+ }
+ .col-md-7 {
+ flex: 0 0 auto;
+ width: 58.33333333%;
+ }
+ .col-md-8 {
+ flex: 0 0 auto;
+ width: 66.66666667%;
+ }
+ .col-md-9 {
+ flex: 0 0 auto;
+ width: 75%;
+ }
+ .col-md-10 {
+ flex: 0 0 auto;
+ width: 83.33333333%;
+ }
+ .col-md-11 {
+ flex: 0 0 auto;
+ width: 91.66666667%;
+ }
+ .col-md-12 {
+ flex: 0 0 auto;
+ width: 100%;
+ }
+}
+@media (min-width: 992px) {
+ .col-lg {
+ flex: 1 0 0%;
+ }
+ .col-lg-auto {
+ flex: 0 0 auto;
+ width: auto;
+ }
+ .col-lg-1 {
+ flex: 0 0 auto;
+ width: 8.33333333%;
+ }
+ .col-lg-2 {
+ flex: 0 0 auto;
+ width: 16.66666667%;
+ }
+ .col-lg-3 {
+ flex: 0 0 auto;
+ width: 25%;
+ }
+ .col-lg-4 {
+ flex: 0 0 auto;
+ width: 33.33333333%;
+ }
+ .col-lg-5 {
+ flex: 0 0 auto;
+ width: 41.66666667%;
+ }
+ .col-lg-6 {
+ flex: 0 0 auto;
+ width: 50%;
+ }
+ .col-lg-7 {
+ flex: 0 0 auto;
+ width: 58.33333333%;
+ }
+ .col-lg-8 {
+ flex: 0 0 auto;
+ width: 66.66666667%;
+ }
+ .col-lg-9 {
+ flex: 0 0 auto;
+ width: 75%;
+ }
+ .col-lg-10 {
+ flex: 0 0 auto;
+ width: 83.33333333%;
+ }
+ .col-lg-11 {
+ flex: 0 0 auto;
+ width: 91.66666667%;
+ }
+ .col-lg-12 {
+ flex: 0 0 auto;
+ width: 100%;
+ }
+}
+@media (min-width: 1200px) {
+ .col-xl {
+ flex: 1 0 0%;
+ }
+ .row-cols-xl-3 > * {
+ flex: 0 0 auto;
+ width: 33.33333333%;
+ }
+ .col-xl-auto {
+ flex: 0 0 auto;
+ width: auto;
+ }
+ .col-xl-1 {
+ flex: 0 0 auto;
+ width: 8.33333333%;
+ }
+ .col-xl-2 {
+ flex: 0 0 auto;
+ width: 16.66666667%;
+ }
+ .col-xl-3 {
+ flex: 0 0 auto;
+ width: 25%;
+ }
+ .col-xl-4 {
+ flex: 0 0 auto;
+ width: 33.33333333%;
+ }
+ .col-xl-5 {
+ flex: 0 0 auto;
+ width: 41.66666667%;
+ }
+ .col-xl-6 {
+ flex: 0 0 auto;
+ width: 50%;
+ }
+ .col-xl-7 {
+ flex: 0 0 auto;
+ width: 58.33333333%;
+ }
+ .col-xl-8 {
+ flex: 0 0 auto;
+ width: 66.66666667%;
+ }
+ .col-xl-9 {
+ flex: 0 0 auto;
+ width: 75%;
+ }
+ .col-xl-10 {
+ flex: 0 0 auto;
+ width: 83.33333333%;
+ }
+ .col-xl-11 {
+ flex: 0 0 auto;
+ width: 91.66666667%;
+ }
+ .col-xl-12 {
+ flex: 0 0 auto;
+ width: 100%;
+ }
+}
+@media (min-width: 1400px) {
+ .col-xxl {
+ flex: 1 0 0%;
+ }
+ .col-xxl-auto {
+ flex: 0 0 auto;
+ width: auto;
+ }
+ .col-xxl-1 {
+ flex: 0 0 auto;
+ width: 8.33333333%;
+ }
+ .col-xxl-2 {
+ flex: 0 0 auto;
+ width: 16.66666667%;
+ }
+ .col-xxl-3 {
+ flex: 0 0 auto;
+ width: 25%;
+ }
+ .col-xxl-4 {
+ flex: 0 0 auto;
+ width: 33.33333333%;
+ }
+ .col-xxl-5 {
+ flex: 0 0 auto;
+ width: 41.66666667%;
+ }
+ .col-xxl-6 {
+ flex: 0 0 auto;
+ width: 50%;
+ }
+ .col-xxl-7 {
+ flex: 0 0 auto;
+ width: 58.33333333%;
+ }
+ .col-xxl-8 {
+ flex: 0 0 auto;
+ width: 66.66666667%;
+ }
+ .col-xxl-9 {
+ flex: 0 0 auto;
+ width: 75%;
+ }
+ .col-xxl-10 {
+ flex: 0 0 auto;
+ width: 83.33333333%;
+ }
+ .col-xxl-11 {
+ flex: 0 0 auto;
+ width: 91.66666667%;
+ }
+ .col-xxl-12 {
+ flex: 0 0 auto;
+ width: 100%;
+ }
+}
+.table {
+ --bs-table-color-type: initial;
+ --bs-table-bg-type: initial;
+ --bs-table-color-state: initial;
+ --bs-table-bg-state: initial;
+ --bs-table-color: var(--bs-emphasis-color);
+ --bs-table-bg: var(--bs-body-bg);
+ --bs-table-border-color: var(--bs-border-color);
+ --bs-table-accent-bg: transparent;
+ width: 100%;
+ margin-bottom: 1rem;
+ vertical-align: top;
+ border-color: var(--bs-table-border-color);
+}
+.table > :not(caption) > * > * {
+ padding: 0.5rem 0.5rem;
+ color: var(
+ --bs-table-color-state,
+ var(--bs-table-color-type, var(--bs-table-color))
+ );
+ background-color: var(--bs-table-bg);
+ border-bottom-width: var(--bs-border-width);
+ box-shadow: inset 0 0 0 9999px
+ var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg)));
+}
+.table > tbody {
+ vertical-align: inherit;
+}
+.table > thead {
+ vertical-align: bottom;
+}
+.col-form-label {
+ padding-top: calc(0.375rem + var(--bs-border-width));
+ padding-bottom: calc(0.375rem + var(--bs-border-width));
+ margin-bottom: 0;
+ font-size: inherit;
+ line-height: 1.5;
+}
+.col-form-label-lg {
+ padding-top: calc(0.5rem + var(--bs-border-width));
+ padding-bottom: calc(0.5rem + var(--bs-border-width));
+ font-size: 1.25rem;
+}
+.col-form-label-sm {
+ padding-top: calc(0.25rem + var(--bs-border-width));
+ padding-bottom: calc(0.25rem + var(--bs-border-width));
+ font-size: 0.875rem;
+}
+.form-control {
+ display: block;
+ width: 100%;
+ padding: 0.375rem 0.75rem;
+ font-size: 1rem;
+ font-weight: 400;
+ line-height: 1.5;
+ color: var(--bs-body-color);
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ background-color: var(--bs-body-bg);
+ background-clip: padding-box;
+ border: var(--bs-border-width) solid var(--bs-border-color);
+ border-radius: var(--bs-border-radius);
+ transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+ .form-control {
+ transition: none;
+ }
+}
+.form-control[type='file'] {
+ overflow: hidden;
+}
+.form-control[type='file']:not(:disabled):not([readonly]) {
+ cursor: pointer;
+}
+.form-control:focus {
+ color: var(--bs-body-color);
+ background-color: var(--bs-body-bg);
+ border-color: #86b7fe;
+ outline: 0;
+ box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
+}
+.form-control::-webkit-date-and-time-value {
+ min-width: 85px;
+ height: 1.5em;
+ margin: 0;
+}
+.form-control::-webkit-datetime-edit {
+ display: block;
+ padding: 0;
+}
+.form-control::-moz-placeholder {
+ color: var(--bs-secondary-color);
+ opacity: 1;
+}
+.form-control::placeholder {
+ color: var(--bs-secondary-color);
+ opacity: 1;
+}
+.form-control:disabled {
+ background-color: var(--bs-secondary-bg);
+ opacity: 1;
+}
+.form-control::-webkit-file-upload-button {
+ padding: 0.375rem 0.75rem;
+ margin: -0.375rem -0.75rem;
+ -webkit-margin-end: 0.75rem;
+ margin-inline-end: 0.75rem;
+ color: var(--bs-body-color);
+ background-color: var(--bs-tertiary-bg);
+ pointer-events: none;
+ border-color: inherit;
+ border-style: solid;
+ border-width: 0;
+ border-inline-end-width: var(--bs-border-width);
+ border-radius: 0;
+ -webkit-transition: color 0.15s ease-in-out,
+ background-color 0.15s ease-in-out, border-color 0.15s ease-in-out,
+ box-shadow 0.15s ease-in-out;
+ transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out,
+ border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
+.form-control::file-selector-button {
+ padding: 0.375rem 0.75rem;
+ margin: -0.375rem -0.75rem;
+ -webkit-margin-end: 0.75rem;
+ margin-inline-end: 0.75rem;
+ color: var(--bs-body-color);
+ background-color: var(--bs-tertiary-bg);
+ pointer-events: none;
+ border-color: inherit;
+ border-style: solid;
+ border-width: 0;
+ border-inline-end-width: var(--bs-border-width);
+ border-radius: 0;
+ transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out,
+ border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+ .form-control::-webkit-file-upload-button {
+ -webkit-transition: none;
+ transition: none;
+ }
+ .form-control::file-selector-button {
+ transition: none;
+ }
+}
+.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button {
+ background-color: var(--bs-secondary-bg);
+}
+.form-control:hover:not(:disabled):not([readonly])::file-selector-button {
+ background-color: var(--bs-secondary-bg);
+}
+.valid-tooltip {
+ position: absolute;
+ top: 100%;
+ z-index: 5;
+ display: none;
+ max-width: 100%;
+ padding: 0.25rem 0.5rem;
+ margin-top: 0.1rem;
+ font-size: 0.875rem;
+ color: #fff;
+ background-color: var(--bs-success);
+ border-radius: var(--bs-border-radius);
+}
+.is-valid ~ .valid-tooltip,
+.was-validated :valid ~ .valid-tooltip {
+ display: block;
+}
+.invalid-tooltip {
+ position: absolute;
+ top: 100%;
+ z-index: 5;
+ display: none;
+ max-width: 100%;
+ padding: 0.25rem 0.5rem;
+ margin-top: 0.1rem;
+ font-size: 0.875rem;
+ color: #fff;
+ background-color: var(--bs-danger);
+ border-radius: var(--bs-border-radius);
+}
+.is-invalid ~ .invalid-tooltip,
+.was-validated :invalid ~ .invalid-tooltip {
+ display: block;
+}
+.btn {
+ --bs-btn-padding-x: 0.75rem;
+ --bs-btn-padding-y: 0.375rem;
+ --bs-btn-font-family: ;
+ --bs-btn-font-size: 1rem;
+ --bs-btn-font-weight: 400;
+ --bs-btn-line-height: 1.5;
+ --bs-btn-color: var(--bs-body-color);
+ --bs-btn-bg: transparent;
+ --bs-btn-border-width: var(--bs-border-width);
+ --bs-btn-border-color: transparent;
+ --bs-btn-border-radius: var(--bs-border-radius);
+ --bs-btn-hover-border-color: transparent;
+ --bs-btn-disabled-opacity: 0.65;
+ --bs-btn-focus-box-shadow: 0 0 0 0.25rem
+ rgba(var(--bs-btn-focus-shadow-rgb), 0.5);
+ display: inline-block;
+ padding: var(--bs-btn-padding-y) var(--bs-btn-padding-x);
+ font-family: var(--bs-btn-font-family);
+ font-size: var(--bs-btn-font-size);
+ font-weight: var(--bs-btn-font-weight);
+ line-height: var(--bs-btn-line-height);
+ color: var(--bs-btn-color);
+ text-align: center;
+ text-decoration: none;
+ vertical-align: middle;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ user-select: none;
+ border: var(--bs-btn-border-width) solid var(--bs-btn-border-color);
+ border-radius: var(--bs-btn-border-radius);
+ background-color: var(--bs-btn-bg);
+ transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out,
+ border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+ .btn {
+ transition: none;
+ }
+}
+.btn:hover {
+ color: var(--bs-btn-hover-color);
+ background-color: var(--bs-btn-hover-bg);
+ border-color: var(--bs-btn-hover-border-color);
+}
+.btn:focus-visible {
+ color: var(--bs-btn-hover-color);
+ background-color: var(--bs-btn-hover-bg);
+ border-color: var(--bs-btn-hover-border-color);
+ outline: 0;
+ box-shadow: var(--bs-btn-focus-box-shadow);
+}
+.btn.active,
+.btn.show,
+.btn:first-child:active,
+:not(.btn-check) + .btn:active {
+ color: var(--bs-btn-active-color);
+ background-color: var(--bs-btn-active-bg);
+ border-color: var(--bs-btn-active-border-color);
+}
+.btn.active:focus-visible,
+.btn.show:focus-visible,
+.btn:first-child:active:focus-visible,
+:not(.btn-check) + .btn:active:focus-visible {
+ box-shadow: var(--bs-btn-focus-box-shadow);
+}
+.btn.disabled,
+.btn:disabled {
+ color: var(--bs-btn-disabled-color);
+ pointer-events: none;
+ background-color: var(--bs-btn-disabled-bg);
+ border-color: var(--bs-btn-disabled-border-color);
+ opacity: var(--bs-btn-disabled-opacity);
+}
+.btn-primary {
+ --bs-btn-color: #fff;
+ --bs-btn-bg: #0d6efd;
+ --bs-btn-border-color: #0d6efd;
+ --bs-btn-hover-color: #fff;
+ --bs-btn-hover-bg: #0b5ed7;
+ --bs-btn-hover-border-color: #0a58ca;
+ --bs-btn-focus-shadow-rgb: 49, 132, 253;
+ --bs-btn-active-color: #fff;
+ --bs-btn-active-bg: #0a58ca;
+ --bs-btn-active-border-color: #0a53be;
+ --bs-btn-disabled-color: #fff;
+ --bs-btn-disabled-bg: #0d6efd;
+ --bs-btn-disabled-border-color: #0d6efd;
+}
+.btn-outline-primary {
+ --bs-btn-color: #0d6efd;
+ --bs-btn-border-color: #0d6efd;
+ --bs-btn-hover-color: #fff;
+ --bs-btn-hover-bg: #0d6efd;
+ --bs-btn-hover-border-color: #0d6efd;
+ --bs-btn-focus-shadow-rgb: 13, 110, 253;
+ --bs-btn-active-color: #fff;
+ --bs-btn-active-bg: #0d6efd;
+ --bs-btn-active-border-color: #0d6efd;
+ --bs-btn-disabled-color: #0d6efd;
+ --bs-btn-disabled-bg: transparent;
+ --bs-btn-disabled-border-color: #0d6efd;
+}
+.btn-outline-secondary {
+ --bs-btn-color: #6c757d;
+ --bs-btn-border-color: #6c757d;
+ --bs-btn-hover-color: #fff;
+ --bs-btn-hover-bg: #6c757d;
+ --bs-btn-hover-border-color: #6c757d;
+ --bs-btn-focus-shadow-rgb: 108, 117, 125;
+ --bs-btn-active-color: #fff;
+ --bs-btn-active-bg: #6c757d;
+ --bs-btn-active-border-color: #6c757d;
+ --bs-btn-disabled-color: #6c757d;
+ --bs-btn-disabled-bg: transparent;
+ --bs-btn-disabled-border-color: #6c757d;
+}
+.btn-link {
+ --bs-btn-font-weight: 400;
+ --bs-btn-color: var(--bs-link-color);
+ --bs-btn-bg: transparent;
+ --bs-btn-border-color: transparent;
+ --bs-btn-hover-color: var(--bs-link-hover-color);
+ --bs-btn-hover-border-color: transparent;
+ --bs-btn-active-color: var(--bs-link-hover-color);
+ --bs-btn-active-border-color: transparent;
+ --bs-btn-disabled-color: #6c757d;
+ --bs-btn-disabled-border-color: transparent;
+ --bs-btn-focus-shadow-rgb: 49, 132, 253;
+ text-decoration: underline;
+}
+.btn-link:focus-visible {
+ color: var(--bs-btn-color);
+}
+.btn-link:hover {
+ color: var(--bs-btn-hover-color);
+}
+.btn-lg {
+ --bs-btn-padding-y: 0.5rem;
+ --bs-btn-padding-x: 1rem;
+ --bs-btn-font-size: 1.25rem;
+ --bs-btn-border-radius: var(--bs-border-radius-lg);
+}
+.btn-sm {
+ --bs-btn-padding-y: 0.25rem;
+ --bs-btn-padding-x: 0.5rem;
+ --bs-btn-font-size: 0.875rem;
+ --bs-btn-border-radius: var(--bs-border-radius-sm);
+}
+.collapse:not(.show) {
+ display: none;
+}
+.collapsing {
+ height: 0;
+ overflow: hidden;
+ transition: height 0.35s ease;
+}
+@media (prefers-reduced-motion: reduce) {
+ .collapsing {
+ transition: none;
+ }
+}
+.collapsing.collapse-horizontal {
+ width: 0;
+ height: auto;
+ transition: width 0.35s ease;
+}
+@media (prefers-reduced-motion: reduce) {
+ .collapsing.collapse-horizontal {
+ transition: none;
+ }
+}
+.nav {
+ --bs-nav-link-padding-x: 1rem;
+ --bs-nav-link-padding-y: 0.5rem;
+ --bs-nav-link-font-weight: ;
+ --bs-nav-link-color: var(--bs-link-color);
+ --bs-nav-link-hover-color: var(--bs-link-hover-color);
+ --bs-nav-link-disabled-color: var(--bs-secondary-color);
+ display: flex;
+ flex-wrap: wrap;
+ padding-left: 0;
+ margin-bottom: 0;
+ list-style: none;
+}
+.nav-link {
+ display: block;
+ padding: var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);
+ font-size: var(--bs-nav-link-font-size);
+ font-weight: var(--bs-nav-link-font-weight);
+ color: var(--bs-nav-link-color);
+ text-decoration: none;
+ background: 0 0;
+ border: 0;
+ transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out,
+ border-color 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+ .nav-link {
+ transition: none;
+ }
+}
+.nav-link:focus,
+.nav-link:hover {
+ color: var(--bs-nav-link-hover-color);
+}
+.nav-link:focus-visible {
+ outline: 0;
+ box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
+}
+.nav-link.disabled,
+.nav-link:disabled {
+ color: var(--bs-nav-link-disabled-color);
+ pointer-events: none;
+ cursor: default;
+}
+.card {
+ --bs-card-spacer-y: 1rem;
+ --bs-card-spacer-x: 1rem;
+ --bs-card-title-spacer-y: 0.5rem;
+ --bs-card-title-color: ;
+ --bs-card-border-width: var(--bs-border-width);
+ --bs-card-border-color: var(--bs-border-color-translucent);
+ --bs-card-border-radius: var(--bs-border-radius);
+ --bs-card-inner-border-radius: calc(
+ var(--bs-border-radius) - (var(--bs-border-width))
+ );
+ --bs-card-cap-padding-y: 0.5rem;
+ --bs-card-cap-padding-x: 1rem;
+ --bs-card-cap-bg: rgba(var(--bs-body-color-rgb), 0.03);
+ --bs-card-cap-color: ;
+ --bs-card-height: ;
+ --bs-card-color: ;
+ --bs-card-bg: var(--bs-body-bg);
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ min-width: 0;
+ height: var(--bs-card-height);
+ color: var(--bs-body-color);
+ word-wrap: break-word;
+ background-color: var(--bs-card-bg);
+ background-clip: border-box;
+ border: var(--bs-card-border-width) solid var(--bs-card-border-color);
+ border-radius: var(--bs-card-border-radius);
+}
+.card > hr {
+ margin-right: 0;
+ margin-left: 0;
+}
+.card > .list-group {
+ border-top: inherit;
+ border-bottom: inherit;
+}
+.card > .list-group:first-child {
+ border-top-width: 0;
+ border-top-left-radius: var(--bs-card-inner-border-radius);
+ border-top-right-radius: var(--bs-card-inner-border-radius);
+}
+.card > .list-group:last-child {
+ border-bottom-width: 0;
+ border-bottom-right-radius: var(--bs-card-inner-border-radius);
+ border-bottom-left-radius: var(--bs-card-inner-border-radius);
+}
+.card > .card-header + .list-group {
+ border-top: 0;
+}
+.card-body {
+ flex: 1 1 auto;
+ padding: var(--bs-card-spacer-y) var(--bs-card-spacer-x);
+ color: var(--bs-card-color);
+}
+.card-title {
+ margin-bottom: var(--bs-card-title-spacer-y);
+ color: var(--bs-card-title-color);
+}
+.card-text:last-child {
+ margin-bottom: 0;
+}
+.card-header {
+ padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);
+ margin-bottom: 0;
+ color: var(--bs-card-cap-color);
+ background-color: var(--bs-card-cap-bg);
+ border-bottom: var(--bs-card-border-width) solid var(--bs-card-border-color);
+}
+.card-header:first-child {
+ border-radius: var(--bs-card-inner-border-radius)
+ var(--bs-card-inner-border-radius) 0 0;
+}
+.breadcrumb {
+ --bs-breadcrumb-padding-x: 0;
+ --bs-breadcrumb-padding-y: 0;
+ --bs-breadcrumb-margin-bottom: 1rem;
+ --bs-breadcrumb-bg: ;
+ --bs-breadcrumb-border-radius: ;
+ display: flex;
+ flex-wrap: wrap;
+ padding: var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);
+ margin-bottom: var(--bs-breadcrumb-margin-bottom);
+ font-size: var(--bs-breadcrumb-font-size);
+ list-style: none;
+ background-color: var(--bs-breadcrumb-bg);
+ border-radius: var(--bs-breadcrumb-border-radius);
+}
+.pagination {
+ --bs-pagination-padding-x: 0.75rem;
+ --bs-pagination-padding-y: 0.375rem;
+ --bs-pagination-font-size: 1rem;
+ --bs-pagination-color: var(--bs-link-color);
+ --bs-pagination-bg: var(--bs-body-bg);
+ --bs-pagination-border-width: var(--bs-border-width);
+ --bs-pagination-border-color: var(--bs-border-color);
+ --bs-pagination-border-radius: var(--bs-border-radius);
+ --bs-pagination-hover-color: var(--bs-link-hover-color);
+ --bs-pagination-hover-bg: var(--bs-tertiary-bg);
+ --bs-pagination-hover-border-color: var(--bs-border-color);
+ --bs-pagination-focus-color: var(--bs-link-hover-color);
+ --bs-pagination-focus-bg: var(--bs-secondary-bg);
+ --bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
+ --bs-pagination-active-color: #fff;
+ --bs-pagination-active-bg: #0d6efd;
+ --bs-pagination-active-border-color: #0d6efd;
+ --bs-pagination-disabled-color: var(--bs-secondary-color);
+ --bs-pagination-disabled-bg: var(--bs-secondary-bg);
+ --bs-pagination-disabled-border-color: var(--bs-border-color);
+ display: flex;
+ padding-left: 0;
+ list-style: none;
+}
+.page-link {
+ position: relative;
+ display: block;
+ padding: var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);
+ font-size: var(--bs-pagination-font-size);
+ color: var(--bs-pagination-color);
+ text-decoration: none;
+ background-color: var(--bs-pagination-bg);
+ border: var(--bs-pagination-border-width) solid
+ var(--bs-pagination-border-color);
+ transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out,
+ border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+ .page-link {
+ transition: none;
+ }
+}
+.page-link:hover {
+ z-index: 2;
+ color: var(--bs-pagination-hover-color);
+ background-color: var(--bs-pagination-hover-bg);
+ border-color: var(--bs-pagination-hover-border-color);
+}
+.page-link:focus {
+ z-index: 3;
+ color: var(--bs-pagination-focus-color);
+ background-color: var(--bs-pagination-focus-bg);
+ outline: 0;
+ box-shadow: var(--bs-pagination-focus-box-shadow);
+}
+.active > .page-link,
+.page-link.active {
+ z-index: 3;
+ color: var(--bs-pagination-active-color);
+ background-color: var(--bs-pagination-active-bg);
+ border-color: var(--bs-pagination-active-border-color);
+}
+.disabled > .page-link,
+.page-link.disabled {
+ color: var(--bs-pagination-disabled-color);
+ pointer-events: none;
+ background-color: var(--bs-pagination-disabled-bg);
+ border-color: var(--bs-pagination-disabled-border-color);
+}
+.page-item:not(:first-child) .page-link {
+ margin-left: calc(var(--bs-border-width) * -1);
+}
+.page-item:first-child .page-link {
+ border-top-left-radius: var(--bs-pagination-border-radius);
+ border-bottom-left-radius: var(--bs-pagination-border-radius);
+}
+.page-item:last-child .page-link {
+ border-top-right-radius: var(--bs-pagination-border-radius);
+ border-bottom-right-radius: var(--bs-pagination-border-radius);
+}
+.alert {
+ --bs-alert-bg: transparent;
+ --bs-alert-padding-x: 1rem;
+ --bs-alert-padding-y: 1rem;
+ --bs-alert-margin-bottom: 1rem;
+ --bs-alert-color: inherit;
+ --bs-alert-border-color: transparent;
+ --bs-alert-border: var(--bs-border-width) solid var(--bs-alert-border-color);
+ --bs-alert-border-radius: var(--bs-border-radius);
+ position: relative;
+ padding: var(--bs-alert-padding-y) var(--bs-alert-padding-x);
+ margin-bottom: var(--bs-alert-margin-bottom);
+ color: var(--bs-alert-color);
+ background-color: var(--bs-alert-bg);
+ border: var(--bs-alert-border);
+ border-radius: var(--bs-alert-border-radius);
+}
+.list-group {
+ --bs-list-group-color: var(--bs-body-color);
+ --bs-list-group-bg: var(--bs-body-bg);
+ --bs-list-group-border-color: var(--bs-border-color);
+ --bs-list-group-border-width: var(--bs-border-width);
+ --bs-list-group-border-radius: var(--bs-border-radius);
+ --bs-list-group-item-padding-x: 1rem;
+ --bs-list-group-item-padding-y: 0.5rem;
+ --bs-list-group-disabled-color: var(--bs-secondary-color);
+ --bs-list-group-disabled-bg: var(--bs-body-bg);
+ --bs-list-group-active-color: #fff;
+ --bs-list-group-active-bg: #0d6efd;
+ --bs-list-group-active-border-color: #0d6efd;
+ display: flex;
+ flex-direction: column;
+ padding-left: 0;
+ margin-bottom: 0;
+ border-radius: var(--bs-list-group-border-radius);
+}
+.list-group-item {
+ position: relative;
+ display: block;
+ padding: var(--bs-list-group-item-padding-y)
+ var(--bs-list-group-item-padding-x);
+ color: var(--bs-list-group-color);
+ text-decoration: none;
+ background-color: var(--bs-list-group-bg);
+ border: var(--bs-list-group-border-width) solid
+ var(--bs-list-group-border-color);
+}
+.list-group-item:first-child {
+ border-top-left-radius: inherit;
+ border-top-right-radius: inherit;
+}
+.list-group-item:last-child {
+ border-bottom-right-radius: inherit;
+ border-bottom-left-radius: inherit;
+}
+.list-group-item.disabled,
+.list-group-item:disabled {
+ color: var(--bs-list-group-disabled-color);
+ pointer-events: none;
+ background-color: var(--bs-list-group-disabled-bg);
+}
+.list-group-item.active {
+ z-index: 2;
+ color: var(--bs-list-group-active-color);
+ background-color: var(--bs-list-group-active-bg);
+ border-color: var(--bs-list-group-active-border-color);
+}
+.list-group-item + .list-group-item {
+ border-top-width: 0;
+}
+.list-group-item + .list-group-item.active {
+ margin-top: calc(-1 * var(--bs-list-group-border-width));
+ border-top-width: var(--bs-list-group-border-width);
+}
+.btn-close {
+ --bs-btn-close-color: #000;
+ --bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");
+ --bs-btn-close-opacity: 0.5;
+ --bs-btn-close-hover-opacity: 0.75;
+ --bs-btn-close-focus-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
+ --bs-btn-close-focus-opacity: 1;
+ --bs-btn-close-disabled-opacity: 0.25;
+ box-sizing: content-box;
+ width: 1em;
+ height: 1em;
+ padding: 0.25em 0.25em;
+ color: var(--bs-btn-close-color);
+ background: transparent var(--bs-btn-close-bg) center/1em auto no-repeat;
+ border: 0;
+ border-radius: 0.375rem;
+ opacity: var(--bs-btn-close-opacity);
+}
+.btn-close:hover {
+ color: var(--bs-btn-close-color);
+ text-decoration: none;
+ opacity: var(--bs-btn-close-hover-opacity);
+}
+.btn-close:focus {
+ outline: 0;
+ box-shadow: var(--bs-btn-close-focus-shadow);
+ opacity: var(--bs-btn-close-focus-opacity);
+}
+.btn-close.disabled,
+.btn-close:disabled {
+ pointer-events: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ user-select: none;
+ opacity: var(--bs-btn-close-disabled-opacity);
+}
+.toast {
+ --bs-toast-padding-x: 0.75rem;
+ --bs-toast-padding-y: 0.5rem;
+ --bs-toast-max-width: 350px;
+ --bs-toast-font-size: 0.875rem;
+ --bs-toast-color: ;
+ --bs-toast-bg: rgba(var(--bs-body-bg-rgb), 0.85);
+ --bs-toast-border-width: var(--bs-border-width);
+ --bs-toast-border-color: var(--bs-border-color-translucent);
+ --bs-toast-border-radius: var(--bs-border-radius);
+ --bs-toast-box-shadow: var(--bs-box-shadow);
+ --bs-toast-header-color: var(--bs-secondary-color);
+ --bs-toast-header-bg: rgba(var(--bs-body-bg-rgb), 0.85);
+ --bs-toast-header-border-color: var(--bs-border-color-translucent);
+ width: var(--bs-toast-max-width);
+ max-width: 100%;
+ font-size: var(--bs-toast-font-size);
+ color: var(--bs-toast-color);
+ pointer-events: auto;
+ background-color: var(--bs-toast-bg);
+ background-clip: padding-box;
+ border: var(--bs-toast-border-width) solid var(--bs-toast-border-color);
+ box-shadow: var(--bs-toast-box-shadow);
+ border-radius: var(--bs-toast-border-radius);
+}
+.toast:not(.show) {
+ display: none;
+}
+.toast-header {
+ display: flex;
+ align-items: center;
+ padding: var(--bs-toast-padding-y) var(--bs-toast-padding-x);
+ color: var(--bs-toast-header-color);
+ background-color: var(--bs-toast-header-bg);
+ background-clip: padding-box;
+ border-bottom: var(--bs-toast-border-width) solid
+ var(--bs-toast-header-border-color);
+ border-top-left-radius: calc(
+ var(--bs-toast-border-radius) - var(--bs-toast-border-width)
+ );
+ border-top-right-radius: calc(
+ var(--bs-toast-border-radius) - var(--bs-toast-border-width)
+ );
+}
+.toast-header .btn-close {
+ margin-right: calc(-0.5 * var(--bs-toast-padding-x));
+ margin-left: var(--bs-toast-padding-x);
+}
+.toast-body {
+ padding: var(--bs-toast-padding-x);
+ word-wrap: break-word;
+}
+.tooltip {
+ --bs-tooltip-zindex: 1080;
+ --bs-tooltip-max-width: 200px;
+ --bs-tooltip-padding-x: 0.5rem;
+ --bs-tooltip-padding-y: 0.25rem;
+ --bs-tooltip-margin: ;
+ --bs-tooltip-font-size: 0.875rem;
+ --bs-tooltip-color: var(--bs-body-bg);
+ --bs-tooltip-bg: var(--bs-emphasis-color);
+ --bs-tooltip-border-radius: var(--bs-border-radius);
+ --bs-tooltip-opacity: 0.9;
+ --bs-tooltip-arrow-width: 0.8rem;
+ --bs-tooltip-arrow-height: 0.4rem;
+ z-index: var(--bs-tooltip-zindex);
+ display: block;
+ margin: var(--bs-tooltip-margin);
+ font-family: var(--bs-font-sans-serif);
+ font-style: normal;
+ font-weight: 400;
+ line-height: 1.5;
+ text-align: left;
+ text-align: start;
+ text-decoration: none;
+ text-shadow: none;
+ text-transform: none;
+ letter-spacing: normal;
+ word-break: normal;
+ white-space: normal;
+ word-spacing: normal;
+ line-break: auto;
+ font-size: var(--bs-tooltip-font-size);
+ word-wrap: break-word;
+ opacity: 0;
+}
+.tooltip.show {
+ opacity: var(--bs-tooltip-opacity);
+}
+.tooltip .tooltip-arrow {
+ display: block;
+ width: var(--bs-tooltip-arrow-width);
+ height: var(--bs-tooltip-arrow-height);
+}
+.tooltip .tooltip-arrow::before {
+ position: absolute;
+ content: '';
+ border-color: transparent;
+ border-style: solid;
+}
+.bs-tooltip-auto[data-popper-placement^='top'] .tooltip-arrow,
+.bs-tooltip-top .tooltip-arrow {
+ bottom: calc(-1 * var(--bs-tooltip-arrow-height));
+}
+.bs-tooltip-auto[data-popper-placement^='top'] .tooltip-arrow::before,
+.bs-tooltip-top .tooltip-arrow::before {
+ top: -1px;
+ border-width: var(--bs-tooltip-arrow-height)
+ calc(var(--bs-tooltip-arrow-width) * 0.5) 0;
+ border-top-color: var(--bs-tooltip-bg);
+}
+.bs-tooltip-auto[data-popper-placement^='right'] .tooltip-arrow,
+.bs-tooltip-end .tooltip-arrow {
+ left: calc(-1 * var(--bs-tooltip-arrow-height));
+ width: var(--bs-tooltip-arrow-height);
+ height: var(--bs-tooltip-arrow-width);
+}
+.bs-tooltip-auto[data-popper-placement^='right'] .tooltip-arrow::before,
+.bs-tooltip-end .tooltip-arrow::before {
+ right: -1px;
+ border-width: calc(var(--bs-tooltip-arrow-width) * 0.5)
+ var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0;
+ border-right-color: var(--bs-tooltip-bg);
+}
+.bs-tooltip-auto[data-popper-placement^='bottom'] .tooltip-arrow,
+.bs-tooltip-bottom .tooltip-arrow {
+ top: calc(-1 * var(--bs-tooltip-arrow-height));
+}
+.bs-tooltip-auto[data-popper-placement^='bottom'] .tooltip-arrow::before,
+.bs-tooltip-bottom .tooltip-arrow::before {
+ bottom: -1px;
+ border-width: 0 calc(var(--bs-tooltip-arrow-width) * 0.5)
+ var(--bs-tooltip-arrow-height);
+ border-bottom-color: var(--bs-tooltip-bg);
+}
+.bs-tooltip-auto[data-popper-placement^='left'] .tooltip-arrow,
+.bs-tooltip-start .tooltip-arrow {
+ right: calc(-1 * var(--bs-tooltip-arrow-height));
+ width: var(--bs-tooltip-arrow-height);
+ height: var(--bs-tooltip-arrow-width);
+}
+.bs-tooltip-auto[data-popper-placement^='left'] .tooltip-arrow::before,
+.bs-tooltip-start .tooltip-arrow::before {
+ left: -1px;
+ border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) 0
+ calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height);
+ border-left-color: var(--bs-tooltip-bg);
+}
+.tooltip-inner {
+ max-width: var(--bs-tooltip-max-width);
+ padding: var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);
+ color: var(--bs-tooltip-color);
+ text-align: center;
+ background-color: var(--bs-tooltip-bg);
+ border-radius: var(--bs-tooltip-border-radius);
+}
+.placeholder {
+ display: inline-block;
+ min-height: 1em;
+ vertical-align: middle;
+ cursor: wait;
+ background-color: currentcolor;
+ opacity: 0.5;
+}
+.placeholder.btn::before {
+ display: inline-block;
+ content: '';
+}
+.icon-link {
+ display: inline-flex;
+ gap: 0.375rem;
+ align-items: center;
+ -webkit-text-decoration-color: rgba(
+ var(--bs-link-color-rgb),
+ var(--bs-link-opacity, 0.5)
+ );
+ text-decoration-color: rgba(
+ var(--bs-link-color-rgb),
+ var(--bs-link-opacity, 0.5)
+ );
+ text-underline-offset: 0.25em;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+}
+.text-truncate {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+.align-middle {
+ vertical-align: middle !important;
+}
+.opacity-75 {
+ opacity: 0.75 !important;
+}
+.overflow-hidden {
+ overflow: hidden !important;
+}
+.d-block {
+ display: block !important;
+}
+.d-flex {
+ display: flex !important;
+}
+.d-none {
+ display: none !important;
+}
+.shadow {
+ box-shadow: var(--bs-box-shadow) !important;
+}
+.position-fixed {
+ position: fixed !important;
+}
+.border {
+ border: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;
+}
+.w-25 {
+ width: 25% !important;
+}
+.w-50 {
+ width: 50% !important;
+}
+.w-75 {
+ width: 75% !important;
+}
+.w-100 {
+ width: 100% !important;
+}
+.w-auto {
+ width: auto !important;
+}
+.h-100 {
+ height: 100% !important;
+}
+.flex-row {
+ flex-direction: row !important;
+}
+.flex-column {
+ flex-direction: column !important;
+}
+.flex-grow-1 {
+ flex-grow: 1 !important;
+}
+.flex-wrap {
+ flex-wrap: wrap !important;
+}
+.justify-content-center {
+ justify-content: center !important;
+}
+.justify-content-between {
+ justify-content: space-between !important;
+}
+.align-items-end {
+ align-items: flex-end !important;
+}
+.align-items-center {
+ align-items: center !important;
+}
+.mx-1 {
+ margin-right: 0.25rem !important;
+ margin-left: 0.25rem !important;
+}
+.mx-2 {
+ margin-right: 0.5rem !important;
+ margin-left: 0.5rem !important;
+}
+.my-1 {
+ margin-top: 0.25rem !important;
+ margin-bottom: 0.25rem !important;
+}
+.my-2 {
+ margin-top: 0.5rem !important;
+ margin-bottom: 0.5rem !important;
+}
+.mt-0 {
+ margin-top: 0 !important;
+}
+.mt-1 {
+ margin-top: 0.25rem !important;
+}
+.mt-2 {
+ margin-top: 0.5rem !important;
+}
+.mt-3 {
+ margin-top: 1rem !important;
+}
+.mt-4 {
+ margin-top: 1.5rem !important;
+}
+.mt-5 {
+ margin-top: 3rem !important;
+}
+.me-1 {
+ margin-right: 0.25rem !important;
+}
+.me-2 {
+ margin-right: 0.5rem !important;
+}
+.me-3 {
+ margin-right: 1rem !important;
+}
+.me-auto {
+ margin-right: auto !important;
+}
+.mb-0 {
+ margin-bottom: 0 !important;
+}
+.mb-1 {
+ margin-bottom: 0.25rem !important;
+}
+.mb-2 {
+ margin-bottom: 0.5rem !important;
+}
+.mb-3 {
+ margin-bottom: 1rem !important;
+}
+.mb-4 {
+ margin-bottom: 1.5rem !important;
+}
+.mb-5 {
+ margin-bottom: 3rem !important;
+}
+.ms-1 {
+ margin-left: 0.25rem !important;
+}
+.ms-2 {
+ margin-left: 0.5rem !important;
+}
+.ms-3 {
+ margin-left: 1rem !important;
+}
+.ms-4 {
+ margin-left: 1.5rem !important;
+}
+.ms-auto {
+ margin-left: auto !important;
+}
+.p-0 {
+ padding: 0 !important;
+}
+.px-1 {
+ padding-right: 0.25rem !important;
+ padding-left: 0.25rem !important;
+}
+.px-2 {
+ padding-right: 0.5rem !important;
+ padding-left: 0.5rem !important;
+}
+.px-4 {
+ padding-right: 1.5rem !important;
+ padding-left: 1.5rem !important;
+}
+.py-2 {
+ padding-top: 0.5rem !important;
+ padding-bottom: 0.5rem !important;
+}
+.py-3 {
+ padding-top: 1rem !important;
+ padding-bottom: 1rem !important;
+}
+.pt-0 {
+ padding-top: 0 !important;
+}
+.pt-2 {
+ padding-top: 0.5rem !important;
+}
+.pe-1 {
+ padding-right: 0.25rem !important;
+}
+.pe-4 {
+ padding-right: 1.5rem !important;
+}
+.pb-1 {
+ padding-bottom: 0.25rem !important;
+}
+.pb-2 {
+ padding-bottom: 0.5rem !important;
+}
+.pb-4 {
+ padding-bottom: 1.5rem !important;
+}
+.ps-0 {
+ padding-left: 0 !important;
+}
+.ps-2 {
+ padding-left: 0.5rem !important;
+}
+.ps-3 {
+ padding-left: 1rem !important;
+}
+.fs-6 {
+ font-size: 1rem !important;
+}
+.fst-italic {
+ font-style: italic !important;
+}
+.fst-normal {
+ font-style: normal !important;
+}
+.fw-light {
+ font-weight: 300 !important;
+}
+.lh-lg {
+ line-height: 2 !important;
+}
+.text-start {
+ text-align: left !important;
+}
+.text-center {
+ text-align: center !important;
+}
+.text-decoration-none {
+ text-decoration: none !important;
+}
+.text-nowrap {
+ white-space: nowrap !important;
+}
+.text-muted {
+ color: var(--bs-secondary-color) !important;
+}
+.pe-none {
+ pointer-events: none !important;
+}
+.rounded-circle {
+ border-radius: 50% !important;
+}
+.invisible {
+ visibility: hidden !important;
+}
+.z-1 {
+ z-index: 1 !important;
+}
+.z-2 {
+ z-index: 2 !important;
+}
+@media (min-width: 576px) {
+ .flex-sm-row {
+ flex-direction: row !important;
+ }
+ .me-sm-4 {
+ margin-right: 1.5rem !important;
+ }
+ .px-sm-2 {
+ padding-right: 0.5rem !important;
+ padding-left: 0.5rem !important;
+ }
+}
+@media (min-width: 768px) {
+ .flex-md-row-reverse {
+ flex-direction: row-reverse !important;
+ }
+ .mt-md-0 {
+ margin-top: 0 !important;
+ }
+ .px-md-3 {
+ padding-right: 1rem !important;
+ padding-left: 1rem !important;
+ }
+ .px-md-4 {
+ padding-right: 1.5rem !important;
+ padding-left: 1.5rem !important;
+ }
+}
+@media (min-width: 992px) {
+ .flex-lg-row {
+ flex-direction: row !important;
+ }
+ .justify-content-lg-between {
+ justify-content: space-between !important;
+ }
+ .align-items-lg-center {
+ align-items: center !important;
+ }
+ .ms-lg-0 {
+ margin-left: 0 !important;
+ }
+ .px-lg-3 {
+ padding-right: 1rem !important;
+ padding-left: 1rem !important;
+ }
+ .px-lg-4 {
+ padding-right: 1.5rem !important;
+ padding-left: 1.5rem !important;
+ }
+ .pb-lg-3 {
+ padding-bottom: 1rem !important;
+ }
+ .ps-lg-2 {
+ padding-left: 0.5rem !important;
+ }
+}
+@media (min-width: 1200px) {
+ .mx-xl-2 {
+ margin-right: 0.5rem !important;
+ margin-left: 0.5rem !important;
+ }
+ .px-xl-0 {
+ padding-right: 0 !important;
+ padding-left: 0 !important;
+ }
+ .px-xl-1 {
+ padding-right: 0.25rem !important;
+ padding-left: 0.25rem !important;
+ }
+}
+@media (min-width: 1400px) {
+ .px-xxl-5 {
+ padding-right: 3rem !important;
+ padding-left: 3rem !important;
+ }
+}
diff --git a/_sass/layout/archives.scss b/_sass/layout/archives.scss
index fd1979b8f91..2edb6f89eb7 100644
--- a/_sass/layout/archives.scss
+++ b/_sass/layout/archives.scss
@@ -23,7 +23,7 @@
margin-left: -$timeline-width;
&::before {
- @extend %timeline;
+ @extend %timeline !optional;
height: 72px;
left: 79px;
@@ -31,7 +31,7 @@
}
&:first-child::before {
- @extend %timeline;
+ @extend %timeline !optional;
height: 32px;
top: 24px;
@@ -59,7 +59,7 @@
font-size: 1.1rem;
line-height: 3rem;
- @extend %text-ellipsis;
+ @extend %text-ellipsis !optional;
&:nth-child(odd) {
background-color: var(--main-bg, #ffffff);
@@ -74,7 +74,7 @@
}
&::before {
- @extend %timeline;
+ @extend %timeline !optional;
top: 0;
left: 77px;
diff --git a/_sass/layout/categories.scss b/_sass/layout/categories.scss
index 8136f9eec0d..fc10fad32e7 100644
--- a/_sass/layout/categories.scss
+++ b/_sass/layout/categories.scss
@@ -1,3 +1,5 @@
+@use '../addon/variables';
+
/*
Style for Tab Categories
*/
@@ -12,11 +14,11 @@
&.card,
.list-group {
- @extend %rounded;
+ @extend %rounded !optional;
}
.card-header {
- $radius: calc($radius-lg - 1px);
+ $radius: calc(variables.$radius-lg - 1px);
padding: 0.75rem;
border-radius: $radius;
@@ -29,7 +31,7 @@
}
i {
- @extend %category-icon-color;
+ @extend %category-icon-color !optional;
}
.list-group-item {
diff --git a/_sass/layout/category-tag.scss b/_sass/layout/category-tag.scss
index fe7d99cec25..2b5fb851bd3 100644
--- a/_sass/layout/category-tag.scss
+++ b/_sass/layout/category-tag.scss
@@ -1,3 +1,5 @@
+@use '../addon/module';
+
/*
Style for page Category and Tag
*/
@@ -28,7 +30,7 @@
/* post's title */
> a {
- @extend %no-bottom-border;
+ @extend %no-bottom-border !optional;
font-size: 1.1rem;
}
@@ -48,7 +50,7 @@
#page-tag,
#access-lastmod {
a:hover {
- @extend %link-hover;
+ @extend %link-hover !optional;
margin-bottom: -1px; /* Avoid jumping */
}
@@ -63,7 +65,7 @@
}
> a {
- @include text-ellipsis;
+ @include module.text-ellipsis;
}
}
}
diff --git a/_sass/layout/home.scss b/_sass/layout/home.scss
index c33d54d3cf5..3a27503a353 100644
--- a/_sass/layout/home.scss
+++ b/_sass/layout/home.scss
@@ -1,3 +1,4 @@
+@use '../addon/variables';
/*
Style for Homepage
*/
@@ -20,14 +21,14 @@
background: none;
%img-radius {
- border-radius: $radius-lg $radius-lg 0 0;
+ border-radius: variables.$radius-lg variables.$radius-lg 0 0;
}
.preview-img {
- @extend %img-radius;
+ @extend %img-radius !optional;
img {
- @extend %img-radius;
+ @extend %img-radius !optional;
}
}
@@ -36,7 +37,7 @@
padding: 1rem;
.card-title {
- @extend %text-clip;
+ @extend %text-clip !optional;
color: var(--heading-color) !important;
font-size: 1.25rem;
@@ -49,10 +50,10 @@
}
.card-text.content {
- @extend %muted;
+ @extend %muted !optional;
p {
- @extend %text-clip;
+ @extend %text-clip !optional;
line-height: 1.5;
margin: 0;
@@ -60,7 +61,7 @@
}
.post-meta {
- @extend %muted;
+ @extend %muted !optional;
i {
&:not(:first-child) {
@@ -69,7 +70,7 @@
}
em {
- @extend %normal-font-style;
+ @extend %normal-font-style !optional;
color: inherit;
}
@@ -77,7 +78,7 @@
> div:first-child {
display: block;
- @extend %text-ellipsis;
+ @extend %text-ellipsis !optional;
}
}
}
@@ -132,7 +133,7 @@
/* Tablet */
@media all and (min-width: 768px) {
%img-radius {
- border-radius: 0 $radius-lg $radius-lg 0;
+ border-radius: 0 variables.$radius-lg variables.$radius-lg 0;
}
#post-list {
diff --git a/_sass/layout/post.scss b/_sass/layout/post.scss
index b09ab824248..4fa355f5259 100644
--- a/_sass/layout/post.scss
+++ b/_sass/layout/post.scss
@@ -1,3 +1,6 @@
+@use '../addon/module';
+@use '../addon/variables';
+
/**
* Post-specific styles
*/
@@ -16,7 +19,7 @@
header {
.post-desc {
- @extend %heading;
+ @extend %heading !optional;
font-size: 1.125rem;
line-height: 1.6;
@@ -29,7 +32,7 @@ header {
em,
time {
- @extend %text-highlight;
+ @extend %text-highlight !optional;
}
em {
@@ -45,7 +48,7 @@ header {
}
.post-tail-wrapper {
- @extend %text-sm;
+ @extend %text-sm !optional;
margin-top: 6rem;
border-bottom: 1px double var(--main-border-color);
@@ -54,20 +57,20 @@ header {
line-height: 1.2rem;
> a {
- @extend %text-highlight;
+ @extend %text-highlight !optional;
&:hover {
- @extend %link-hover;
+ @extend %link-hover !optional;
}
}
span:last-child {
- @extend %text-sm;
+ @extend %text-sm !optional;
}
} /* .license-wrapper */
.post-meta a:not(:hover) {
- @extend %link-underline;
+ @extend %link-underline !optional;
}
.share-wrapper {
@@ -87,17 +90,17 @@ header {
i {
color: var(--btn-share-color);
- @extend %icon-size;
+ @extend %icon-size !optional;
}
> * {
- @extend %icon-size;
+ @extend %icon-size !optional;
margin-left: 0.5rem;
&:hover {
i {
- @extend %btn-share-hover;
+ @extend %btn-share-hover !optional;
}
}
}
@@ -107,7 +110,7 @@ header {
border: none;
line-height: inherit;
- @extend %cursor-pointer;
+ @extend %cursor-pointer !optional;
}
a :hover {
@@ -118,27 +121,27 @@ header {
&.icon-twitter {
color: rgba(29, 161, 242, 1);
}
-
+
&.icon-facebook {
color: rgb(66, 95, 156);
}
-
+
&.icon-telegram {
color: rgb(39, 159, 217);
}
-
+
&.icon-linkedin {
color: rgb(0, 119, 181);
}
-
+
&.icon-weibo {
color: rgb(229, 20, 43);
}
-
+
&.icon-13 {
color: rgb(1, 187, 10);
}
-
+
&.icon-qzone {
color: rgb(255, 218, 5);
}
@@ -165,16 +168,16 @@ header {
.post-tag {
&:hover {
- @extend %link-hover;
- @extend %tag-hover;
- @extend %no-bottom-border;
+ @extend %link-hover !optional;
+ @extend %tag-hover !optional;
+ @extend %no-bottom-border !optional;
}
}
}
.post-navigation {
.btn {
- @extend %btn-post-nav;
+ @extend %btn-post-nav !optional;
&:not(:hover) {
color: var(--link-color);
@@ -187,7 +190,7 @@ header {
}
&.disabled {
- @extend %btn-post-nav;
+ @extend %btn-post-nav !optional;
pointer-events: auto;
cursor: not-allowed;
@@ -207,12 +210,12 @@ header {
}
&:first-child {
- border-radius: $radius-lg 0 0 $radius-lg;
+ border-radius: variables.$radius-lg 0 0 variables.$radius-lg;
left: 0.5px;
}
&:last-child {
- border-radius: 0 $radius-lg $radius-lg 0;
+ border-radius: 0 variables.$radius-lg variables.$radius-lg 0;
right: 0.5px;
}
}
@@ -294,7 +297,7 @@ header {
.toc-link {
display: block;
- @extend %text-ellipsis;
+ @extend %text-ellipsis !optional;
&:hover {
color: var(--toc-highlight);
@@ -333,15 +336,15 @@ header {
top: 0;
z-index: 1;
margin: 0 -1rem;
- height: $topbar-height;
+ height: variables.$topbar-height;
background: var(--main-bg);
border-bottom: 1px solid var(--main-border-color);
transition: all 0.2s ease-in-out;
- @extend %btn-color;
+ @extend %btn-color !optional;
.label {
- @extend %heading;
+ @extend %heading !optional;
margin-left: 0.25rem;
padding: 0 0.75rem;
@@ -349,7 +352,7 @@ header {
}
&.invisible {
- top: -$topbar-height;
+ top: -(variables.$topbar-height);
transition: none;
}
}
@@ -357,11 +360,11 @@ header {
#toc-solo-trigger {
color: var(--text-muted-color);
border-color: var(--btn-border-color);
- border-radius: $radius-lg;
+ border-radius: variables.$radius-lg;
.label {
font-size: 1rem;
- font-family: $font-family-heading;
+ font-family: variables.$font-family-heading;
}
&:hover {
@@ -373,7 +376,7 @@ header {
@mixin slide-in {
from {
opacity: 0.7;
- transform: translateY(-$topbar-height);
+ transform: translateY(-(variables.$topbar-height));
}
to {
@@ -389,7 +392,7 @@ header {
}
100% {
- transform: translateY(-$topbar-height);
+ transform: translateY(-(variables.$topbar-height));
opacity: 0;
}
}
@@ -418,10 +421,10 @@ header {
border-color: var(--toc-popup-border-color);
border-width: 1px;
- border-radius: $radius-lg;
+ border-radius: variables.$radius-lg;
color: var(--text-color);
background: var(--card-bg);
- margin-top: $topbar-height;
+ margin-top: variables.$topbar-height;
min-width: 20rem;
font-size: 1.05rem;
@@ -440,11 +443,11 @@ header {
}
@media all and (min-width: 850px) {
- left: $sidebar-width;
+ left: variables.$sidebar-width;
}
.header {
- @extend %btn-color;
+ @extend %btn-color !optional;
position: -webkit-sticky;
position: sticky;
@@ -453,7 +456,7 @@ header {
border-bottom: 1px solid var(--main-border-color);
.label {
- font-family: $font-family-heading;
+ font-family: variables.$font-family-heading;
}
}
@@ -522,8 +525,8 @@ header {
#toc-popup-content {
overflow: auto;
- max-height: calc(100vh - 4 * $topbar-height);
- font-family: $font-family-heading;
+ max-height: calc(100vh - 4 * variables.$topbar-height);
+ font-family: variables.$font-family-heading;
margin-bottom: -$curtain-height;
}
}
@@ -532,18 +535,18 @@ header {
#related-posts {
> h3 {
- @include label(1.1rem, 600);
+ @include module.label(1.1rem, 600);
}
time {
- @extend %normal-font-style;
- @extend %text-xs;
+ @extend %normal-font-style !optional;
+ @extend %text-xs !optional;
color: var(--text-muted-color);
}
p {
- @extend %text-ellipsis;
+ @extend %text-ellipsis !optional;
font-size: 0.9rem;
margin-bottom: 0.5rem;
@@ -555,7 +558,7 @@ header {
.card {
h4 {
- @extend %text-clip;
+ @extend %text-clip !optional;
}
}
}
@@ -575,7 +578,7 @@ header {
}
.share-label {
- @include label(inherit, 400, inherit);
+ @include module.label(inherit, 400, inherit);
&::after {
content: ':';
@@ -602,8 +605,8 @@ header {
/* Hide SideBar and TOC */
@media all and (max-width: 849px) {
.post-navigation {
- @include pl-pr(0);
- @include ml-mr(-0.5rem);
+ @include module.pl-pr(0);
+ @include module.ml-mr(-0.5rem);
}
}
diff --git a/_sass/main.bundle.scss b/_sass/main.bundle.scss
index 52e893feb36..bc7014bb7ff 100644
--- a/_sass/main.bundle.scss
+++ b/_sass/main.bundle.scss
@@ -1,2 +1,2 @@
-@import 'dist/bootstrap';
-@import 'main';
+@use 'dist/bootstrap';
+@use 'main';
diff --git a/_sass/main.scss b/_sass/main.scss
index 5b0ea596924..e285fdbe3bc 100644
--- a/_sass/main.scss
+++ b/_sass/main.scss
@@ -1,14 +1,13 @@
-@import 'colors/typography-light';
-@import 'colors/typography-dark';
-@import 'addon/variables';
-@import 'variables-hook';
-@import 'addon/module';
-@import 'addon/syntax';
-@import 'addon/commons';
-@import 'layout/home';
-@import 'layout/subdomain';
-@import 'layout/post';
-@import 'layout/tags';
-@import 'layout/archives';
-@import 'layout/categories';
-@import 'layout/category-tag';
+@use 'colors/typography-light';
+@use 'colors/typography-dark';
+@use 'addon/variables';
+@use 'variables-hook';
+@use 'addon/module';
+@use 'addon/syntax';
+@use 'addon/commons';
+@use 'layout/home';
+@use 'layout/post';
+@use 'layout/tags';
+@use 'layout/archives';
+@use 'layout/categories';
+@use 'layout/category-tag';
diff --git a/_tabs/about.md b/_tabs/about.md
index 356d2910b74..0437f1394d8 100644
--- a/_tabs/about.md
+++ b/_tabs/about.md
@@ -1,9 +1,9 @@
---
title: 关于
icon: icon-info
-order: 5
+order: 4
---
## 关于我
-此处填入您想要展示的信息。
+此处填入您想要展示的信息。
\ No newline at end of file
diff --git a/_tabs/archives.md b/_tabs/archives.md
index 7e9393df173..0372c0d5b33 100644
--- a/_tabs/archives.md
+++ b/_tabs/archives.md
@@ -2,5 +2,5 @@
layout: archives
title: 档案
icon: icon-archive
-order: 4
+order: 2
---
diff --git a/_tabs/categories.md b/_tabs/categories.md
index 35ac22f7e20..d6df005183c 100644
--- a/_tabs/categories.md
+++ b/_tabs/categories.md
@@ -2,5 +2,5 @@
layout: categories
title: 分类
icon: icon-stream
-order: 2
+order: 1
---
diff --git a/_tabs/subdomain.md b/_tabs/subdomain.md
deleted file mode 100644
index 3d9db93570c..00000000000
--- a/_tabs/subdomain.md
+++ /dev/null
@@ -1,8 +0,0 @@
----
-layout: subdomain
-title: 子域
-no_title: true
-no_post: true
-icon: icon-buywebhostingstep1domain
-order: 1
----
diff --git a/assets/404.html b/assets/404.html
index 0fa3e3a9574..31c3a206901 100644
--- a/assets/404.html
+++ b/assets/404.html
@@ -4,19 +4,19 @@
permalink: /404.html
redirect_from:
-- /norobots/
-- /assets/
-- /posts/
+ - /norobots/
+ - /assets/
+ - /posts/
no_title: true
---
-
-
-
-
-
-
+
+
+
+
+
+
- {% assign _category_name = "" %}
- {% for category in page.categories %}
- {% if _category_name == "" %}
- {% capture _category_name %}{{ category }}{% endcapture %}
- {% else %}
- {% capture _category_name %}{{ _category_name }}-{{ category }}{% endcapture %}
- {% endif %}
- {{ category }}
- {%- unless forloop.last -%}, {%- endunless -%}
- {% endfor %}
+ {% assign _category_name = "" %} {% for category in page.categories %} {%
+ if _category_name == "" %} {% capture _category_name %}{{ category }}{%
+ endcapture %} {% else %} {% capture _category_name %}{{ _category_name
+ }}-{{ category }}{% endcapture %} {% endif %}
+ {{ category }}
+ {%- unless forloop.last -%}, {%- endunless -%} {% endfor %}
{% endif %}
{% if page.tags.size > 0 %}
-
-
- {% for tag in page.tags %}
-
- {{- tag -}}
-
- {% endfor %}
-
+
+
+ {% for tag in page.tags %}
+
+ {{- tag -}}
+
+ {% endfor %}
+
{% endif %}
- {% if site.data.locales[lang].copyright.license.template %}
- {% capture _replacement %}
+ {% if site.data.locales[lang].copyright.license.template %} {% capture
+ _replacement %}
{{ site.data.locales[lang].copyright.license.name }}
- {% endcapture %}
-
- {{ site.data.locales[lang].copyright.license.template | replace: ':LICENSE_NAME', _replacement }}
- {% endif %}
+ {% endcapture %} {{ site.data.locales[lang].copyright.license.template |
+ replace: ':LICENSE_NAME', _replacement }} {% endif %}
{% include post-sharing.html lang=lang %}
diff --git a/_layouts/subdomain.html b/_layouts/subdomain.html
deleted file mode 100644
index 91edacaf3f0..00000000000
--- a/_layouts/subdomain.html
+++ /dev/null
@@ -1,33 +0,0 @@
----
-layout: page
-# List all subdomains
----
-
-
- {% for subdomain in site.data.subdomain %}
-
-
-
- {% endfor %}
-
\ No newline at end of file
diff --git a/_posts/2022-11-21-please_remove_this.md b/_posts/2022-11-21-please_remove_this.md
deleted file mode 100644
index 21d5c4c3a52..00000000000
--- a/_posts/2022-11-21-please_remove_this.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-title: Please Remove This Post
-date: 2022-11-21 9:42:38 +0800
-categories: [Test, Placeholder]
-tags: [test] # TAG names should always be lowercase
----
-
-## 请移除该帖子
-
-该帖子仅仅只是为了保证 `_posts` 文件夹不被 git 忽略而存在的。
diff --git a/_posts/2025-03-17-PPO.md b/_posts/2025-03-17-PPO.md
new file mode 100644
index 00000000000..235e86e8a7d
--- /dev/null
+++ b/_posts/2025-03-17-PPO.md
@@ -0,0 +1,479 @@
+---
+title: PPO算法
+description: >-
+ RL基础
+author: cybotiger
+date: 2025-03-17 12:00:00 +0800
+categories: [AI]
+tags: []
+pin: false
+math: true
+mermaid: true
+---
+
+## 1. 背景
+策略梯度优化中最常用的 gradient estimator 是
+
+$$
+\hat{g}=\hat{\mathbb{E}}_{t}\Big{[}\nabla_{\theta}\log\pi_{\theta}(a_{t}\,|\,s_{t})\hat{A}_{t}\Big{]}
+$$
+
+因此可以构造最原始的 objective function 如下:
+
+$$
+L^{PG}(\theta)=\hat{\mathbb{E}}_{t}\Big{[}\log\pi_{\theta}(a_{t}\,|\,s_{t})\hat{A}_{t}\Big{]}
+$$
+
+### TRPO算法
+全称 Trust Region Policy Optimization,为了避免更新后的策略偏离原来策略过多,引入 KL 散度限制,在此限制下最大化 objective function 如下:
+
+$$
+\max_\theta\ \ \
+\hat{\mathbb{E}}_{t}\Big{[}\frac{\pi_{\theta}(a_{t}\,|\,s_{t})}{\pi_{\theta_{old}}(a_{t}\,|\,s_{t})}\hat{A}_{t}\Big{]}
+$$
+
+$$
+\text{subject to: }\ \ \
+\hat{\mathbb{E}}_{t}[\text{KL}[\pi_{\theta_{old}}(\cdot\,|\,s_{t}),\pi_{\theta}(\cdot\,|\,s_{t})]] \leq \delta
+$$
+
+实际中,使用共轭梯度方法求解该问题,对 objective 使用一阶近似,对 constraint 使用二阶近似;
+
+TRPO 算法的理论依据是将上述的限制转化为惩罚项,即优化以下目标:
+
+$$
+\hat{\mathbb{E}}_{t}\Big{[}\frac{\pi_{\theta}(a_{t}\,|\,s_{t})}{\pi_{\theta_{old}}(a_{t}\,|\,s_{t})}\hat{A}_{t}-\beta\,\text{KL}[\pi_{\theta_{old}}(\cdot\,|\,s_{t}),\pi_{\theta}(\cdot\,|\,s_{t})]\Big{]}
+$$
+
+但在实际过程中,很难确定惩罚项系数 $\beta$ 的值,一般需要在学习的过程中动态的调整,即 adaptive KL penalty
+
+## 2. PPO算法
+记概率比 $r_t(\theta) = \frac{\pi_\theta(a_t | s_t)}{\pi_{\theta_{\text{old}}}(a_t | s_t)}$(于是有 $r_t(\theta_{\text{old}}) = 1$)。TRPO 的目标函数为:
+
+$$
+L^{CPI}(\theta) = \hat{E}_t \left[ \frac{\pi_\theta(a_t | s_t)}{\pi_{\theta_{\text{old}}}(a_t | s_t)} \hat{A}_t \right] = \hat{E}_t \left[ r_t(\theta) \hat{A}_t \right]
+$$
+
+而 PPO 进行了裁剪(clip),来防止策略偏离过大:
+
+$$
+L^{CLIP}(\theta) = \hat{E}_t \left[ \min\left(r_t(\theta) \hat{A}_t, \text{clip}(r_t(\theta), 1 - \epsilon, 1 + \epsilon) \hat{A}_t\right) \right]
+$$
+
+可以看到 $L^{CLIP}(\theta)$ 是 $L^{PG}(\theta)$ 的下界,只会更差,不会更好
+
+
+
+### 具体算法
+#### 优势函数
+多数优势函数会用到一个可学习的状态-价值函数 $V(s)$ 来估计当前状态下的价值,比如 GAE(Generalized Advantage Estimator)。PPO 使用的是 GAE 的截断版本(从 $\infty$ 截断到 $T$ 时间步),在 rollout 时进行 T 步采样,计算每一步 t 的优势:
+
+$$
+\hat{A}_{t} = \delta_{t} + (\gamma\lambda)\delta_{t+1} + \cdots + (\gamma\lambda)^{T-t-1}\delta_{T-1}
+$$
+
+$$
+\text{where}\ \ \delta_{t} = r_{t} + \gamma V(s_{t+1}) - V(s_{t})
+$$
+
+> 当 $\lambda=1$ 时,该式退化为
+>
+> $$
+> \hat{A}_{t} = -V(s_{t}) + r_{t} + \gamma r_{t+1} + \cdots + \gamma^{T-t-1}r_{T-1} + \gamma^{T-t}V(s_{T})
+> $$
+>
+> 即多步时序差分
+
+PPO 算法的伪代码如下:
+
+
+
+N 个 actor 并行采样生成 T 步轨迹,利用这 NT 个样本,进行 K 个 epoch 的批次优化
+
+#### 加强目标函数
+如果 actor 和 critic(即 value model)共享参数,那么需要同时优化 critic 与目标价值的 loss;此外还可以引入 entropy bonus 来鼓励探索。综合上述,就有如下的加强版 PPO:
+
+$$
+L_{t}^{CLIP+VF+S}(\theta) = \hat{\mathbb{E}}_{t}\left[L_{t}^{CLIP}(\theta) - c_{1}L_{t}^{VF}(\theta) + c_{2}S[\pi_{\theta}](s_{t})\right]
+$$
+
+
+---
+
+## 参考资料
+
+[知乎:从策略梯度开始理解PPO算法](https://zhuanlan.zhihu.com/p/614115887)
+
+### 1. 传统策略梯度算法
+
+#### **1.1 从价值近似到策略近似**
+
+强化学习算法可以分为两大类:基于值函数的强化学习和基于策略的强化学习。
+
+- **基于值函数的强化学习**通过递归地求解贝尔曼方程来维护Q值函数(可以是离散的列表,也可以是神经网络),每次选择动作时会选择该状态下对应Q值最大的动作,使得未来积累的期望奖励值最大。这些算法在学习后的Q值函数不再发生变化,每次做出的策略也是一定的,可以理解为确定性策略。policy 如下:
+
+ $$
+ \pi:s \rightarrow a
+ $$
+
+- **基于策略的强化学习**不再通过价值函数来确定选择动作的策略,而是直接学习策略本身,通过一组参数 $\theta$ 对策略进行参数化,并通过神经网络方法优化。policy 如下:
+
+ $$
+ \pi_\theta(a|s)=P(a|s;\theta)
+ $$
+
+
+#### **1.2 定义目标函数**
+
+$$
+\max_{\theta} J(\theta) = \max_{\theta} \mathbb{E}_{\tau \sim \pi_{\theta}} R(\tau) = \max_{\theta} \sum_{\tau} P(\tau;\theta)R(\tau)
+$$
+
+其中轨迹 $\tau$ 是agent与环境交互产生的状态-动作轨迹 $(s_1,a_1,s_2,a_2,...)$,服从 $\pi_\theta$ 的概率分布
+
+
+
+### [AUX] 术语介绍
+> Generated by Deepseek
+{: .prompt-info }
+
+在强化学习中,**优势函数(A)**、**价值函数(V)** 和 **奖励(R)** 是核心概念,它们共同描述了智能体在环境中的决策依据和长期收益的评估。以下是它们的定义、区别和关系:
+
+---
+
+#### 1. **奖励(R, Reward)**
+ - **定义**:
+ 奖励是环境在智能体执行某个动作后给出的**即时反馈信号**(标量值),表示该动作的短期好坏。
+ - 例如:游戏中得分增加(+1)、碰撞障碍物(-10)。
+ - **数学表示**:
+ $ R_t $ 表示时间步 $ t $ 的即时奖励。
+ - **特点**:
+ - 完全由环境决定,是强化学习中最基础的信号。
+ - 仅反映当前动作的瞬时效果,不包含长期信息。
+
+---
+
+#### 2. **状态价值函数(V, State Value Function)**
+ - **定义**:
+ 状态价值函数 $ V^\pi(s) $ 表示在状态 $ s $ 下,**遵循策略 $ \pi $ 后能获得的预期累积奖励**(考虑未来奖励的折扣)。
+ - 回答:“当前状态 $ s $ 长期来看有多好?”
+ - **数学表示**:
+ $$
+ V^\pi(s) = \mathbb{E}_{\pi} \left[ \sum_{k=0}^\infty \gamma^k R_{t+k} \mid S_t = s \right]
+ $$
+ - $ \gamma \in [0,1] $ 是折扣因子,平衡即时奖励和未来奖励的重要性。
+ - **特点**:
+ - 评价的是**状态**的长期价值,与具体动作无关。
+ - 由策略 $ \pi $ 决定(不同策略下同一状态的价值可能不同)。
+
+---
+
+#### 3. **优势函数(A, Advantage Function)**
+ - **定义**:
+ 优势函数 $ A^\pi(s,a) $ 表示在状态 $ s $ 下执行动作 $ a $ **相比策略 $ \pi $ 的平均水平有多好**。
+ - 回答:“在状态 $ s $ 下选择动作 $ a $ 比默认策略好多少?”
+ - **数学表示**:
+ $$
+ A^\pi(s,a) = Q^\pi(s,a) - V^\pi(s)
+ $$
+ 其中 $ Q^\pi(s,a) $ 是动作价值函数(即状态-动作对的预期累积奖励)。
+ - **特点**:
+ - 若 $ A > 0 $,说明动作 $ a $ 优于策略 $ \pi $ 的平均水平;反之则劣于平均水平。
+ - 用于减少策略梯度的方差(如Actor-Critic方法)。
+
+---
+
+#### 三者的关系
+##### 1. **数学关系**
+ - **动作价值函数 $ Q^\pi(s,a) $** 是核心桥梁:
+
+ $$
+ Q^\pi(s,a) = \mathbb{E}_{\pi} \left[ R_t + \gamma V^\pi(S_{t+1}) \mid S_t=s, A_t=a \right]
+ $$
+
+ - **优势函数 $ A $** 通过 $ Q $ 和 $ V $ 计算:
+
+ $$
+ A^\pi(s,a) = Q^\pi(s,a) - V^\pi(s)
+ $$
+
+ - **价值函数 $ V $** 是 $ Q $ 对动作的期望:
+
+ $$
+ V^\pi(s) = \mathbb{E}_{a \sim \pi} \left[ Q^\pi(s,a) \right]
+ $$
+
+##### 2. **直观理解**
+ - **奖励 $ R $** 是即时反馈,**价值 $ V $** 是长期评价,**优势 $ A $** 是动作的相对优势。
+ - **例子**(游戏场景):
+ - 当前状态 $ s $:玩家面对敌人。
+ - 动作 $ a $:发射子弹。
+ - $ R $:击中敌人(+10),未击中(0)。
+ - $ V(s) $:当前状态的长期预期得分(如+50)。
+ - $ Q(s,a) $:选择“发射子弹”的长期预期得分(如+60)。
+ - $ A(s,a) = Q(s,a) - V(s) = +10 $ → 发射子弹比平均策略更好。
+
+---
+
+#### 关键区别
+
+| 概念 | 评价对象 | 依赖关系 | 用途 |
+|:--------------|:-------------|:----------------|:-----------------------|
+| **奖励 $ R $** | 即时动作的效果 | 由环境直接给出 | 策略优化的原始信号 |
+| **价值 $ V $** | 状态的长期价值 | 依赖策略 $ \pi $ | 评估状态好坏,作为基线 |
+| **优势 $ A $** | 动作的相对优势 | $ A = Q - V $ | 减少方差,指导策略更新方向 |
+
+---
+
+#### 在PPO中的具体应用
+1. **计算优势函数**:
+ PPO 使用广义优势估计(GAE)来平衡偏差和方差:
+
+ $$
+ A_t^{\text{GAE}} = \sum_{k=0}^{T-t} (\gamma \lambda)^k \delta_{t+k}, \quad \delta_t = R_t + \gamma V(S_{t+1}) - V(S_t)
+ $$
+
+ - $ \lambda $ 是GAE的超参数,控制方差与偏差的权衡。
+
+2. **策略更新**:
+ PPO 的损失函数利用优势函数 $ A $ 加权策略更新:
+
+ $$
+ L^{\text{CLIP}} = -\mathbb{E} \left[ \min \left( r_t(\theta) A_t, \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon) A_t \right) \right]
+ $$
+
+ - $ r_t(\theta) $ 是新旧策略的重要性采样比率。
+
+---
+
+#### 总结
+- **奖励 $ R $** 是环境的即时反馈,**价值 $ V $** 是状态的长期评价,**优势 $ A $** 是动作的相对改进潜力。
+- **关系链**:
+
+ $$
+ R \rightarrow Q \rightarrow \begin{cases}
+ V = \mathbb{E}_\pi [Q] \\
+ A = Q - V
+ \end{cases}
+ $$
+
+- 优势函数在策略梯度方法中至关重要,它帮助智能体识别哪些动作值得更多探索或利用。
+
+在强化学习中,**重要性采样比率(Importance Sampling Ratio)** $ r_t(\theta) $ 和 PPO 的**截断(Clipping)**机制是保证策略梯度方法稳定性的核心设计。下面详细解释它们的作用和原理。
+
+---
+
+#### **1. 重要性采样比率 $ r_t(\theta) $ 的作用**
+##### **(1)定义**
+重要性采样比率衡量**新策略**和**旧策略**在相同状态下选择某个动作的概率比:
+$$
+r_t(\theta) = \frac{\pi_\theta(a_t | s_t)}{\pi_{\theta_{\text{old}}}(a_t | s_t)}
+$$
+其中:
+- $ \pi_\theta $ 是**新策略**(待优化的策略)。
+- $ \pi_{\theta_{\text{old}}} $ 是**旧策略**(采样数据时的策略)。
+
+##### **(2)作用**
+1. **修正策略更新的偏差**
+ - PPO 是一种**异策略(Off-Policy)**算法,即用于采样的策略(旧策略)和待优化的策略(新策略)不同。
+ - 由于新策略的参数 $ \theta $ 不断变化,直接用新策略的梯度更新会导致偏差。
+ - **重要性采样比率** $ r_t(\theta) $ 用于调整梯度更新,使其仍然适用于旧策略采样的数据。
+
+2. **计算策略更新的权重**
+ - 在策略梯度法中,我们希望最大化 **优势函数 $ A_t $** 加权后的策略概率:
+
+ $$
+ \mathbb{E}_{a \sim \pi_{\theta_{\text{old}}}} \left[ \frac{\pi_\theta(a|s)}{\pi_{\theta_{\text{old}}}(a|s)} A_t \right]
+ $$
+
+ - 如果 $ r_t(\theta) > 1 $,说明新策略比旧策略更倾向于选择该动作,应该加强该动作的概率。
+ - 如果 $ r_t(\theta) < 1 $,说明新策略不太愿意选择该动作,应该降低其概率。
+
+---
+
+#### **2. 为什么 PPO 的损失函数要截断(Clipping)?**
+##### **(1)问题:重要性采样比率的不稳定性**
+- 如果新策略 $ \pi_\theta $ 和旧策略 $ \pi_{\theta_{\text{old}}} $ 差异太大,$ r_t(\theta) $ 可能会变得**极大或极小**,导致:
+ 1. **梯度爆炸**:如果 $ r_t(\theta) $ 极大,梯度更新可能过大,导致训练不稳定。
+ 2. **策略崩溃**:如果 $ r_t(\theta) $ 极小,某些动作的概率可能被过度压制,导致探索不足。
+
+##### **(2)PPO 的解决方案:Clipped Surrogate Objective**
+PPO 的损失函数通过**截断(Clipping)**限制 $ r_t(\theta) $ 的变化范围,确保策略更新**平滑且稳定**:
+$$
+L^{\text{CLIP}}(\theta) = \mathbb{E}_t \left[ \min \left( r_t(\theta) A_t, \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon) A_t \right) \right]
+$$
+其中:
+- $ \epsilon $ 是一个超参数(通常取 0.1~0.3),控制截断范围。
+- $ \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon) $ 将 $ r_t(\theta) $ 限制在 $ [1-\epsilon, 1+\epsilon] $ 之间。
+
+##### **(3)截断的作用**
+1. **防止策略更新过大**
+ - 如果 $ A_t > 0 $(动作比平均水平好),但 $ r_t(\theta) > 1+\epsilon $,则梯度更新被限制在 $ 1+\epsilon $,避免过度优化。
+ - 如果 $ A_t < 0 $(动作比平均水平差),但 $ r_t(\theta) < 1-\epsilon $,则梯度更新被限制在 $ 1-\epsilon $,避免过度惩罚。
+
+2. **保证训练稳定性**
+ - 通过限制 $ r_t(\theta) $ 的变化范围,PPO 避免了传统策略梯度方法(如TRPO)中复杂的约束优化问题,同时仍能保证策略更新不会剧烈变化。
+
+---
+
+#### **3. 直观理解**
+##### **(1)情况1:$ A_t > 0 $(好动作)**
+- **未截断**:如果 $ r_t(\theta) $ 很大(比如 5),新策略会大幅提高该动作的概率,可能导致过度优化。
+- **截断后**:限制 $ r_t(\theta) \leq 1+\epsilon $,避免策略突变。
+
+##### **(2)情况2:$ A_t < 0 $(坏动作)**
+- **未截断**:如果 $ r_t(\theta) $ 很小(比如 0.1),新策略会大幅降低该动作的概率,可能导致探索不足。
+- **截断后**:限制 $ r_t(\theta) \geq 1-\epsilon $,避免策略过早放弃某些动作。
+
+---
+
+#### **4. 总结**
+
+| **概念** | **作用** | **PPO 的处理方式** |
+|:--------------------------------|:------------------------------------------------------------------------|:----------|:------------------------|
+| **重要性采样比率 $ r_t(\theta) $** | 修正新旧策略差异,计算梯度更新的权重。 | 通过重要性采样调整策略梯度。 |
+| **截断(Clipping)** | 防止 $ r_t(\theta) $ 过大或过小,避免梯度爆炸或策略崩溃。 | 限制 $ r_t(\theta) \in [1-\epsilon, 1+\epsilon] $。 |
+| **优势函数 $ A_t $** | 衡量动作的相对优势,决定更新方向(加强 or 削弱)。 | 用于加权策略更新。 |
+
+PPO 通过**重要性采样比率**修正策略梯度,再通过**截断**机制保证训练稳定性,使其成为目前最流行的强化学习算法之一。
+
+### [MISC] 个人理解
+价值函数的理论计算似乎会无限的往后延伸。因为 t 时刻的价值 V 依赖于该时刻的 Q,而 Q 则依赖于 R 和下一时刻的 V,这样就会形成循环了。
+
+因此,在强化学习(如PPO、RLHF等)中,**Critic模型(价值函数网络)的更新流程**采用近似估计。具体而言,通过最小化预测价值和目标价值的差异来更新Critic模型的参数。近似如下:
+
+
+---
+
+#### **1. Critic的理论优化目标**
+Critic的任务是学习**状态价值函数 $ V^\pi(s) $**,即预测从状态 $ s $ 开始,遵循当前策略 $ \pi $ 能获得的**预期累积奖励**:
+$$
+V^\pi(s) = \mathbb{E}_\pi \left[ \sum_{k=0}^\infty \gamma^k R_{t+k} \mid S_t = s \right]
+$$
+
+---
+
+#### **2. Critic更新的输入数据**
+Critic的更新依赖于从环境中采样(或Actor生成)的轨迹数据,包括:
+- 状态序列 $ s_t $
+- 奖励序列 $ R_t $
+- 下一状态 $ s_{t+1} $
+- 终止标志 $ done_t $(可选)
+
+---
+
+#### **3. Critic更新的具体流程**
+##### **步骤1:计算目标值(Target Value)**
+Critic的目标是让 $ V(s_t) $ 逼近真实的累积奖励。目标值的计算方式有两种:
+- **蒙特卡洛(MC)目标**(适用于完整轨迹):
+ $$
+ V_{\text{target}}(s_t) = \sum_{k=0}^{T-t} \gamma^k R_{t+k}
+ $$
+- **时序差分(TD)目标**(更常用):
+ $$
+ V_{\text{target}}(s_t) = R_t + \gamma (1 - done_t) V_{\text{old}}(s_{t+1})
+ $$
+ 其中:
+ - $ V_{\text{old}}(s_{t+1}) $ 是**旧Critic网络**(或当前Critic在更新前的输出)对下一状态的估计。
+ - $ done_t $ 为1时表示终止状态(无未来奖励)。
+
+##### **步骤2:计算损失函数**
+Critic的更新通过最小化预测值 $ V(s_t) $ 与目标值 $ V_{\text{target}}(s_t) $ 的误差:
+$$
+L_{\text{Critic}} = \mathbb{E}_t \left[ \left( V(s_t) - V_{\text{target}}(s_t) \right)^2 \right]
+$$
+实际实现中通常使用**均方误差(MSE)**或**Huber损失**。
+
+##### **步骤3:梯度下降更新**
+使用优化器(如Adam)对Critic的参数 $ \phi $ 进行梯度下降:
+$$
+\phi \leftarrow \phi - \alpha \nabla_\phi L_{\text{Critic}}
+$$
+其中 $ \alpha $ 是学习率。
+
+---
+
+#### **4. 关键实现细节**
+##### **(1) 目标值的稳定性**
+- **目标网络(Target Network)**:
+ 类似DQN,可以维护一个旧Critic网络(参数定期更新)来计算 $ V_{\text{target}} $,减少训练波动。
+- **GAE(广义优势估计)**:
+ 若使用GAE计算优势函数,Critic的目标值会基于多步TD误差调整(平衡偏差和方差)。
+
+##### **(2) 数据来源**
+- **同策略(On-Policy)**:
+ 在PPO中,Critic和Actor使用**同一批最新数据**更新(数据在每次迭代后丢弃)。
+- **异策略(Off-Policy)**:
+ 某些算法(如SAC)可复用历史数据,但需重要性采样修正。
+
+##### **(3) 与Actor的协同训练**
+- **交替更新**:
+ 通常先更新Critic多次(如10次),再更新Actor,确保价值估计足够准确。
+- **共享网络结构**:
+ 在部分实现中,Actor和Critic共享底层特征提取层(如Transformer的编码器),但输出层独立。
+
+---
+
+#### **5. 伪代码实现(PyTorch示例)**
+```python
+import torch
+import torch.optim as optim
+
+# 定义Critic网络
+class Critic(torch.nn.Module):
+ def __init__(self, state_dim):
+ super().__init__()
+ self.fc = torch.nn.Sequential(
+ torch.nn.Linear(state_dim, 64),
+ torch.nn.ReLU(),
+ torch.nn.Linear(64, 1)
+ )
+
+# 初始化
+critic = Critic(state_dim)
+optimizer = optim.Adam(critic.parameters(), lr=1e-3)
+
+# 更新函数
+def update_critic(states, rewards, next_states, dones, gamma=0.99):
+ # 计算目标值
+ with torch.no_grad():
+ V_next = critic(next_states)
+ V_target = rewards + gamma * (1 - dones) * V_next
+
+ # 计算当前值
+ V_current = critic(states)
+
+ # 计算MSE损失
+ loss = torch.nn.functional.mse_loss(V_current, V_target)
+
+ # 梯度下降
+ optimizer.zero_grad()
+ loss.backward()
+ optimizer.step()
+
+ return loss.item()
+```
+
+---
+
+#### **6. 在RLHF中的特殊考虑**
+当Critic用于大语言模型(LLM)的RLHF训练时:
+1. **输入状态**:
+ Critic的输入是文本序列(如生成的回答),需通过编码器(如Transformer)提取特征。
+2. **奖励归一化**:
+ Reward Model的输出可能需归一化后作为Critic的训练目标。
+3. **KL散度约束**:
+ 可能需在Critic的损失中加入与Reference Model的KL散度项,防止过度偏离初始策略。
+
+---
+
+#### **7. 总结**
+
+| **步骤** | **操作** |
+|------------------------|--------------------------------------------------------------------------|
+| 1. **数据收集** | 通过Actor生成轨迹(状态、动作、奖励、下一状态)。 |
+| 2. **计算目标值** | 使用MC或TD方法(如 $ V_{\text{target}} = r + \gamma V_{\text{old}}(s') $。 |
+| 3. **计算损失** | 最小化 $ \|V(s) - V_{\text{target}}\|^2 $。 |
+| 4. **梯度更新** | 反向传播优化Critic参数。 |
+
+Critic的高效更新是稳定训练的关键,尤其在PPO中,准确的价值估计能显著提升策略优化的效果。
\ No newline at end of file
diff --git a/_posts/2025-04-21-x86_64-sheet.md b/_posts/2025-04-21-x86_64-sheet.md
new file mode 100644
index 00000000000..a8fc4dd2bf4
--- /dev/null
+++ b/_posts/2025-04-21-x86_64-sheet.md
@@ -0,0 +1,12 @@
+---
+title: x86_64 架构介绍
+description:
+author: cybotiger
+date: 2025-04-21 12:00:00 +0800
+categories: [计算机系统, ISA]
+tags: []
+math: true
+mermaid: true
+---
+
+
\ No newline at end of file
diff --git a/_posts/2025-04-22-pytorch.md b/_posts/2025-04-22-pytorch.md
new file mode 100644
index 00000000000..9985856790e
--- /dev/null
+++ b/_posts/2025-04-22-pytorch.md
@@ -0,0 +1,57 @@
+---
+title: PyTorch 学习
+description: >-
+ PyTorch basics, will evolve into intermediary, and finally advanced)
+author: cybotiger
+date: 2025-04-22 12:00:00 +0800
+categories: [编程语言, 深度学习框架]
+tags: []
+math: true
+mermaid: true
+---
+
+## Autograd
+Autograd is a reverse automatic differentiation system. Conceptually, autograd records a graph recording all of the operations that created the data as you execute operations, giving you a directed acyclic graph whose leaves are the input tensors and roots are the output tensors. By tracing this graph from roots to leaves, you can automatically compute the gradients using the chain rule.
+
+Internally, autograd represents this graph as a graph of Function objects (really expressions), which can be apply() ed to compute the result of evaluating the graph. When computing the forward pass, autograd simultaneously performs the requested computations and builds up a graph representing the function that computes the gradient (the .grad_fn attribute of each torch.Tensor is an entry point into this graph). When the forward pass is completed, we evaluate this graph in the backwards pass to compute the gradients.
+
+An important thing to note is that the graph is recreated from scratch at every iteration, and this is exactly what allows for using arbitrary Python control flow statements, that can change the overall shape and size of the graph at every iteration. You don’t have to encode all possible paths before you launch the training - what you run is what you differentiate.
+### Computation Graph
+
+#### 两类tensor/node
++ leaf node
+
+ 即神经网络中的 weight,`nn.Module` 中的参数张量
+
+ 这些 node 没有 `grad_fn`,设置 `requires_grad=True` 时,调用 non-leaf node 的 `.bakcward()` 会积累梯度
+
++ non-leaf node
+
+ 即神经网络中的 activation,每一个 node 都捆绑着计算图中一个 operation
+
+ 这些 node 有 `grad_fn`,调用 `.bakcward()` 时会积累梯度,在 `optimizer.step()` 时可能会用到它们的梯度。它们的梯度作为计算的中间结果,一般是不可见的。
+
+> 冻结权重参数张量可直接调用 `.requires_grad_(False)`
+{: .prompt-tip }
+
+### Grad Mode
++ Default Mode(grad Mode)
+
+ 默认模式,对每个操作都会记录到计算图中。`requires_grad=True` 仅在默认模式下有效
+
++ no-grad Mode
+
+ 操作不记录到计算图。存储计算结果,并记录梯度
+
++ Inference Mode
+
+ 计算结果也不记录
+
++ Evaluation Mode (`nn.Module.eval()`)
+
+ 和上述 3 种 mode 无关。建议 evaluate 时用 `model.eval()`,train 时用 `model.train()`
+
+
+## 改变形状
+torch: permute, view, reshape; squeeze, unsqueeze
+numpy: transpose; squeeze, expand_dims
\ No newline at end of file
diff --git a/_posts/2025-05-21-diffusion.md b/_posts/2025-05-21-diffusion.md
new file mode 100644
index 00000000000..b733691fc42
--- /dev/null
+++ b/_posts/2025-05-21-diffusion.md
@@ -0,0 +1,39 @@
+---
+title: Diffusion model
+description: >-
+ diffusion原理与架构
+author: cybotiger
+date: 2025-05-21 12:00:00 +0800
+categories: [AI, 神经网络]
+tags: []
+math: true
+mermaid: true
+---
+
+## 简介
+diffusion 的思想是通过对一个纯噪声去噪来生成样本(预期的图片)。其过程分为 forward process 和 reverse process,前者将真实数据集中的图像逐步添加噪声,最终生成纯噪声;后者通过对 forward 过程添加噪声的逆过程(即去噪)进行建模,来生成样本。
+
+forward 过程是假想的,实际并不会发生,因此加噪过程的 $q$ 分布是一个理论分布,需要我们建模来进行拟合,也就是去噪过程的 $p_\theta$
+
+## 拟合概率分布 $q$
+加噪过程的概率分布 $q$ 如下计算:
+
+$$
+q(\mathbf{x}_t|\mathbf{x}_{t-1}) = \mathcal{N}(\mathbf{x}_t; \sqrt{1-\beta_t}\mathbf{x}_{t-1}, \beta_t\mathbf{I}) \quad q(\mathbf{x}_{1:T}|\mathbf{x}_0) = \prod_{t=1}^T q(\mathbf{x}_t|\mathbf{x}_{t-1})
+$$
+
+我们的拟合概率分布 $p_\theta$ 希望从 $x_t$ 去噪生成 $x_{t-1}$,然而无法直接进行去噪获得 $q(\mathbf{x}_{t-1}\|\mathbf{x}_t)$ ;此处通过加入 $x_0$ 的 condition 使得逆向过程可解(可建模),即:
+
+$$
+q(\mathbf{x}_{t-1}|\mathbf{x}_t, \mathbf{x}_0) = \mathcal{N}(\mathbf{x}_{t-1}; \color{blue}\tilde{\boldsymbol{\mu}}(\mathbf{x}_t, \mathbf{x}_0), \color{red}\tilde{\beta}_t\mathbf{I})
+$$
+
+经化简,得:
+
+$$
+\tilde{\beta}_t = \color{green}\frac{1-\bar{\alpha}_{t-1}}{1-\bar{\alpha}_t} \cdot \beta_t
+$$
+
+$$
+\tilde{\boldsymbol{\mu}}_t = \frac{1}{\sqrt{\bar{\alpha}_t}}\left(\mathbf{x}_t - \frac{1-\alpha_t}{\sqrt{1-\bar{\alpha}_t}}\boldsymbol{\epsilon}_t\right)
+$$
\ No newline at end of file
diff --git a/_posts/2025-09-23-eic-mesh.md b/_posts/2025-09-23-eic-mesh.md
new file mode 100644
index 00000000000..eea5b45024a
--- /dev/null
+++ b/_posts/2025-09-23-eic-mesh.md
@@ -0,0 +1,43 @@
+---
+title: GaTech EIC Mesh project
+description: 解题过程
+author: cybotiger
+date: 2025-09-23 12:00:00 +0800
+categories: [AI, Vision]
+tags: []
+math: true
+mermaid: true
+---
+
+## step 1
+Find a depth estimation model that takes the RGB image as the input and
+outputs the corresponding depth. Here, let’s use DistDepth, which can provide the
+absolute depth from the origin of the cameras to the surface of the objects in the
+scene.
+
+## step 2
+Merge the depth estimation results from multiple images into one point
+cloud. Please refer to [this script](https://github.com/facebookresearch/DistDepth/blob/main/visualize_pc.py) to learn how to convert the depth estimation to the
+point cloud based on the intrinsic and extrinsic of the camera.
+
+
+
+
+
+发现问题来源:DistDepth 模型是在 SimSIN 合成环境中进行训练的,训练时采用 1.312 的 scale
+
+突然发现 color image 在经过 resize 和 crop 后,intrinsic 矩阵也需要经过相应的调整,调整过后稍微好了一些,但是还是很差s
+
+## step 3
+Convert the point cloud into mesh by first converting the point cloud into a
+3D grid (you can define the resolution of the 3D grid yourself, but we recommend
+256 * 256 * 256), where each item in the 3D grid represents the normalized number
+of points (normalized to the max value of all items), which is in the range of [0, 1].
+Then, we convert such a 3D grid into mesh via a [marching cube](https://scikit-image.org/docs/stable/api/skimage.measure.html#skimage.measure.marching_cubes). The marching
+cube implementation is described in [this script](https://github.com/apchenstu/TensoRF/blob/17deeedae5ab4106b30a3295709ec3a8a654c7b1/utils.py#L161).
+
+## step 4
+Fine-tune the mesh’s vertices positions and colors using [nvdiffrec](https://github.com/NVlabs/nvdiffrec/tree/main) with the
+RGB images as training data. To simplify the fine-tuning process, please just learn
+the RGB color and position for each vertex instead of the combination of PBR
+materials and environment light in the official codebase of [nvdiffrec](https://github.com/NVlabs/nvdiffrec/tree/main).
\ No newline at end of file
diff --git a/_posts/2025-10-04-eic-tflite-project.md b/_posts/2025-10-04-eic-tflite-project.md
new file mode 100644
index 00000000000..d2b191a65b0
--- /dev/null
+++ b/_posts/2025-10-04-eic-tflite-project.md
@@ -0,0 +1,940 @@
+---
+title: GaTech EIC TFLite project
+description: 解题过程
+author: cybotiger
+date: 2025-10-04 12:00:00 +0800
+categories: [编程语言, 深度学习框架]
+tags: []
+math: true
+mermaid: true
+---
+
+onnx 的 nightly version 为 1.19.0;onnx-tf 的 nightly version 为 1.10.0
+
+当 onnx<=1.18.0 时,会报以下错误
+
+```bash
+onnx.backend.test.runner.BackendIsNotSupposedToImplementIt: in user code:
+
+ File "/home/ruihan/miniconda3/envs/deploy/lib/python3.10/site-packages/onnx_tf/backend_tf_module.py", line 99, in __call__ *
+ output_ops = self.backend._onnx_node_to_tensorflow_op(onnx_node,
+ File "/home/ruihan/miniconda3/envs/deploy/lib/python3.10/site-packages/onnx_tf/backend.py", line 347, in _onnx_node_to_tensorflow_op *
+ return handler.handle(node, tensor_dict=tensor_dict, strict=strict)
+ File "/home/ruihan/miniconda3/envs/deploy/lib/python3.10/site-packages/onnx_tf/handlers/handler.py", line 61, in handle *
+ raise BackendIsNotSupposedToImplementIt("{} version {} is not implemented.".format(node.op_type, cls.SINCE_VERSION))
+
+ BackendIsNotSupposedToImplementIt: ReduceMean version 18 is not implemented.
+```
+
+当 onnx==1.19.0 时,会报以下错误
+```bash
+File "/home/ruihan/miniconda3/envs/deploy/lib/python3.10/site-packages/onnx_tf/common/data_type.py", line 4, in
-
- {% if subdomain.icon %}
-
-
-
-
- {% if subdomain.icon %}
-
-
-
- {% endif %}
-
- {{ subdomain.title }}
-
-
-
-
- - {{ subdomain.description }} -
-
- ▶ {{ subdomain.link }}
-
-
-
+
-
+
#da532c
diff --git a/assets/img/favicons/favicon-16x16.png b/assets/img/favicons/favicon-16x16.png
index e5bdb2cc82b..b58643c356e 100644
Binary files a/assets/img/favicons/favicon-16x16.png and b/assets/img/favicons/favicon-16x16.png differ
diff --git a/assets/img/favicons/favicon-32x32.png b/assets/img/favicons/favicon-32x32.png
index 1b64f53b72f..7e26a51b3aa 100644
Binary files a/assets/img/favicons/favicon-32x32.png and b/assets/img/favicons/favicon-32x32.png differ
diff --git a/assets/img/favicons/favicon-96x96.png b/assets/img/favicons/favicon-96x96.png
new file mode 100644
index 00000000000..656880f8146
Binary files /dev/null and b/assets/img/favicons/favicon-96x96.png differ
diff --git a/assets/img/favicons/favicon.ico b/assets/img/favicons/favicon.ico
index 8c537e026a7..c35a2b50a40 100644
Binary files a/assets/img/favicons/favicon.ico and b/assets/img/favicons/favicon.ico differ
diff --git a/assets/img/favicons/mstile-150x150.png b/assets/img/favicons/mstile-150x150.png
index 313e69dbea5..8c2a1aaef05 100644
Binary files a/assets/img/favicons/mstile-150x150.png and b/assets/img/favicons/mstile-150x150.png differ
diff --git a/assets/img/favicons/site.webmanifest b/assets/img/favicons/site.webmanifest
index 03c6113b824..4afbfa1dd4c 100644
--- a/assets/img/favicons/site.webmanifest
+++ b/assets/img/favicons/site.webmanifest
@@ -2,25 +2,29 @@
layout: compress
---
-{% assign favicon_path = "/assets/img/favicons" | relative_url %}
-
{
- "name": "{{ site.title }}",
- "short_name": "{{ site.title }}",
- "description": "{{ site.description }}",
- "icons": [
- {
- "src": "{{ favicon_path }}/android-chrome-192x192.png",
- "sizes": "192x192",
- "type": "image/png"
- },
- {
- "src": "{{ favicon_path }}/android-chrome-512x512.png",
- "sizes": "512x512",
- "type": "image/png"
- }],
- "start_url": "{{ '/index.html' | relative_url }}",
- "theme_color": "#2a1e6b",
- "background_color": "#ffffff",
- "display": "fullscreen"
+ % assign favicon_path = "/assets/img/favicons" | relative_url %
}
+
+
+{
+ "name": "{{ site.title }}",
+ "short_name": "{{ site.title }}",
+ "description": "{{ site.description }}",
+ "icons": [
+ {
+ "src": "{{ favicon_path }}/android-chrome-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ },
+ {
+ "src": "{{ favicon_path }}/android-chrome-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png"
+ }
+ ],
+ "start_url": "{{ '/index.html' | relative_url }}",
+ "theme_color": "#2a1e6b",
+ "background_color": "#ffffff",
+ "display": "fullscreen"
+}
\ No newline at end of file
diff --git a/assets/img/misc/jit-model.png b/assets/img/misc/jit-model.png
new file mode 100644
index 00000000000..c47f6b764a1
Binary files /dev/null and b/assets/img/misc/jit-model.png differ
diff --git a/assets/img/misc/x86_64reg.png b/assets/img/misc/x86_64reg.png
new file mode 100644
index 00000000000..d7f562a51a2
Binary files /dev/null and b/assets/img/misc/x86_64reg.png differ
diff --git a/assets/img/rl/image.png b/assets/img/rl/image.png
new file mode 100644
index 00000000000..c18ebb4909d
Binary files /dev/null and b/assets/img/rl/image.png differ
diff --git a/assets/img/rl/image1.png b/assets/img/rl/image1.png
new file mode 100644
index 00000000000..56f3f9c14bf
Binary files /dev/null and b/assets/img/rl/image1.png differ
diff --git a/assets/js/dist/categories.min.js b/assets/js/dist/categories.min.js
index a923177afee..cd72f828e9f 100644
--- a/assets/js/dist/categories.min.js
+++ b/assets/js/dist/categories.min.js
@@ -1,4 +1,2844 @@
/*!
* jekyll-theme-chirpy v7.1.1 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/
*/
-!function(){"use strict";const e=new Map;var t={set(t,n,i){e.has(t)||e.set(t,new Map);const o=e.get(t);o.has(n)||0===o.size?o.set(n,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(o.keys())[0]}.`)},get:(t,n)=>e.has(t)&&e.get(t).get(n)||null,remove(t,n){if(!e.has(t))return;const i=e.get(t);i.delete(n),0===i.size&&e.delete(t)}};const n="transitionend",i=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,((e,t)=>`#${CSS.escape(t)}`))),e),o=e=>!(!e||"object"!=typeof e)&&(void 0!==e.jquery&&(e=e[0]),void 0!==e.nodeType),r=e=>o(e)?e.jquery?e[0]:e:"string"==typeof e&&e.length>0?document.querySelector(i(e)):null,s=e=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof e.getRootNode){const t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?s(e.parentNode):null},a=()=>{},l=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,c=[],u=()=>"rtl"===document.documentElement.dir,f=e=>{var t;t=()=>{const t=l();if(t){const n=e.NAME,i=t.fn[n];t.fn[n]=e.jQueryInterface,t.fn[n].Constructor=e,t.fn[n].noConflict=()=>(t.fn[n]=i,e.jQueryInterface)}},"loading"===document.readyState?(c.length||document.addEventListener("DOMContentLoaded",(()=>{for(const e of c)e()})),c.push(t)):t()},d=function(e){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e;return"function"==typeof e?e(...arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]):t},p=function(e,t){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void d(e);const i=(e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:n}=window.getComputedStyle(e);const i=Number.parseFloat(t),o=Number.parseFloat(n);return i||o?(t=t.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(t)+Number.parseFloat(n))):0})(t)+5;let o=!1;const r=i=>{let{target:s}=i;s===t&&(o=!0,t.removeEventListener(n,r),d(e))};t.addEventListener(n,r),setTimeout((()=>{o||t.dispatchEvent(new Event(n))}),i)},h=/[^.]*(?=\..*)\.|.*/,m=/\..*/,g=/::\d+$/,v={};let b=1;const y={mouseenter:"mouseover",mouseleave:"mouseout"},_=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function w(e,t){return t&&`${t}::${b++}`||e.uidEvent||b++}function E(e){const t=w(e);return e.uidEvent=t,v[t]=v[t]||{},v[t]}function O(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return Object.values(e).find((e=>e.callable===t&&e.delegationSelector===n))}function x(e,t,n){const i="string"==typeof t,o=i?n:t||n;let r=T(e);return _.has(r)||(r=e),[i,o,r]}function A(e,t,n,i,o){if("string"!=typeof t||!e)return;let[r,s,a]=x(t,n,i);if(t in y){const e=e=>function(t){if(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))return e.call(this,t)};s=e(s)}const l=E(e),c=l[a]||(l[a]={}),u=O(c,s,r?n:null);if(u)return void(u.oneOff=u.oneOff&&o);const f=w(s,t.replace(h,"")),d=r?function(e,t,n){return function i(o){const r=e.querySelectorAll(t);for(let{target:s}=o;s&&s!==this;s=s.parentNode)for(const a of r)if(a===s)return j(o,{delegateTarget:s}),i.oneOff&&S.off(e,o.type,t,n),n.apply(s,[o])}}(e,n,s):function(e,t){return function n(i){return j(i,{delegateTarget:e}),n.oneOff&&S.off(e,i.type,t),t.apply(e,[i])}}(e,s);d.delegationSelector=r?n:null,d.callable=s,d.oneOff=o,d.uidEvent=f,c[f]=d,e.addEventListener(a,d,r)}function C(e,t,n,i,o){const r=O(t[n],i,o);r&&(e.removeEventListener(n,r,Boolean(o)),delete t[n][r.uidEvent])}function L(e,t,n,i){const o=t[n]||{};for(const[r,s]of Object.entries(o))r.includes(i)&&C(e,t,n,s.callable,s.delegationSelector)}function T(e){return e=e.replace(m,""),y[e]||e}const S={on(e,t,n,i){A(e,t,n,i,!1)},one(e,t,n,i){A(e,t,n,i,!0)},off(e,t,n,i){if("string"!=typeof t||!e)return;const[o,r,s]=x(t,n,i),a=s!==t,l=E(e),c=l[s]||{},u=t.startsWith(".");if(void 0===r){if(u)for(const n of Object.keys(l))L(e,l,n,t.slice(1));for(const[n,i]of Object.entries(c)){const o=n.replace(g,"");a&&!t.includes(o)||C(e,l,s,i.callable,i.delegationSelector)}}else{if(!Object.keys(c).length)return;C(e,l,s,r,o?n:null)}},trigger(e,t,n){if("string"!=typeof t||!e)return null;const i=l();let o=null,r=!0,s=!0,a=!1;t!==T(t)&&i&&(o=i.Event(t,n),i(e).trigger(o),r=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());const c=j(new Event(t,{bubbles:r,cancelable:!0}),n);return a&&c.preventDefault(),s&&e.dispatchEvent(c),c.defaultPrevented&&o&&o.preventDefault(),c}};function j(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(const[n,i]of Object.entries(t))try{e[n]=i}catch{Object.defineProperty(e,n,{configurable:!0,get:()=>i})}return e}function k(e){if("true"===e)return!0;if("false"===e)return!1;if(e===Number(e).toString())return Number(e);if(""===e||"null"===e)return null;if("string"!=typeof e)return e;try{return JSON.parse(decodeURIComponent(e))}catch{return e}}function D(e){return e.replace(/[A-Z]/g,(e=>`-${e.toLowerCase()}`))}const P={setDataAttribute(e,t,n){e.setAttribute(`data-bs-${D(t)}`,n)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${D(t)}`)},getDataAttributes(e){if(!e)return{};const t={},n=Object.keys(e.dataset).filter((e=>e.startsWith("bs")&&!e.startsWith("bsConfig")));for(const i of n){let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),t[n]=k(e.dataset[i])}return t},getDataAttribute:(e,t)=>k(e.getAttribute(`data-bs-${D(t)}`))};class N{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(e){return e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e}_mergeConfigObj(e,t){const n=o(t)?P.getDataAttribute(t,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...o(t)?P.getDataAttributes(t):{},..."object"==typeof e?e:{}}}_typeCheckConfig(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[i,r]of Object.entries(t)){const t=e[i],s=o(t)?"element":null==(n=t)?`${n}`:Object.prototype.toString.call(n).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(r).test(s))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${i}" provided type "${s}" but expected type "${r}".`)}var n}}class M extends N{constructor(e,n){super(),(e=r(e))&&(this._element=e,this._config=this._getConfig(n),t.set(this._element,this.constructor.DATA_KEY,this))}dispose(){t.remove(this._element,this.constructor.DATA_KEY),S.off(this._element,this.constructor.EVENT_KEY);for(const e of Object.getOwnPropertyNames(this))this[e]=null}_queueCallback(e,t){p(e,t,!(arguments.length>2&&void 0!==arguments[2])||arguments[2])}_getConfig(e){return e=this._mergeConfigObj(e,this._element),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}static getInstance(e){return t.get(r(e),this.DATA_KEY)}static getOrCreateInstance(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getInstance(e)||new this(e,"object"==typeof t?t:null)}static get VERSION(){return"5.3.3"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(e){return`${e}${this.EVENT_KEY}`}}const B=e=>{let t=e.getAttribute("data-bs-target");if(!t||"#"===t){let n=e.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n=`#${n.split("#")[1]}`),t=n&&"#"!==n?n.trim():null}return t?t.split(",").map((e=>i(e))).join(","):null},I={find(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return[].concat(...Element.prototype.querySelectorAll.call(t,e))},findOne(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return Element.prototype.querySelector.call(t,e)},children:(e,t)=>[].concat(...e.children).filter((e=>e.matches(t))),parents(e,t){const n=[];let i=e.parentNode.closest(t);for(;i;)n.push(i),i=i.parentNode.closest(t);return n},prev(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return[n];n=n.previousElementSibling}return[]},next(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return[n];n=n.nextElementSibling}return[]},focusableChildren(e){const t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((e=>`${e}:not([tabindex^="-"])`)).join(",");return this.find(t,e).filter((e=>!(e=>!e||e.nodeType!==Node.ELEMENT_NODE||!!e.classList.contains("disabled")||(void 0!==e.disabled?e.disabled:e.hasAttribute("disabled")&&"false"!==e.getAttribute("disabled")))(e)&&(e=>{if(!o(e)||0===e.getClientRects().length)return!1;const t="visible"===getComputedStyle(e).getPropertyValue("visibility"),n=e.closest("details:not([open])");if(!n)return t;if(n!==e){const t=e.closest("summary");if(t&&t.parentNode!==n)return!1;if(null===t)return!1}return t})(e)))},getSelectorFromElement(e){const t=B(e);return t&&I.findOne(t)?t:null},getElementFromSelector(e){const t=B(e);return t?I.findOne(t):null},getMultipleElementsFromSelector(e){const t=B(e);return t?I.find(t):[]}},F=".bs.collapse",H=`show${F}`,$=`shown${F}`,z=`hide${F}`,W=`hidden${F}`,q=`click${F}.data-api`,R="show",V="collapse",Y="collapsing",U=`:scope .${V} .${V}`,K='[data-bs-toggle="collapse"]',Q={parent:null,toggle:!0},X={parent:"(null|element)",toggle:"boolean"};class G extends M{constructor(e,t){super(e,t),this._isTransitioning=!1,this._triggerArray=[];const n=I.find(K);for(const e of n){const t=I.getSelectorFromElement(e),n=I.find(t).filter((e=>e===this._element));null!==t&&n.length&&this._triggerArray.push(e)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Q}static get DefaultType(){return X}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let e=[];if(this._config.parent&&(e=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((e=>e!==this._element)).map((e=>G.getOrCreateInstance(e,{toggle:!1})))),e.length&&e[0]._isTransitioning)return;if(S.trigger(this._element,H).defaultPrevented)return;for(const t of e)t.hide();const t=this._getDimension();this._element.classList.remove(V),this._element.classList.add(Y),this._element.style[t]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n=`scroll${t[0].toUpperCase()+t.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Y),this._element.classList.add(V,R),this._element.style[t]="",S.trigger(this._element,$)}),this._element,!0),this._element.style[t]=`${this._element[n]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(S.trigger(this._element,z).defaultPrevented)return;const e=this._getDimension();this._element.style[e]=`${this._element.getBoundingClientRect()[e]}px`,this._element.offsetHeight,this._element.classList.add(Y),this._element.classList.remove(V,R);for(const e of this._triggerArray){const t=I.getElementFromSelector(e);t&&!this._isShown(t)&&this._addAriaAndCollapsedClass([e],!1)}this._isTransitioning=!0;this._element.style[e]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Y),this._element.classList.add(V),S.trigger(this._element,W)}),this._element,!0)}_isShown(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._element).classList.contains(R)}_configAfterMerge(e){return e.toggle=Boolean(e.toggle),e.parent=r(e.parent),e}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const e=this._getFirstLevelChildren(K);for(const t of e){const e=I.getElementFromSelector(t);e&&this._addAriaAndCollapsedClass([t],this._isShown(e))}}_getFirstLevelChildren(e){const t=I.find(U,this._config.parent);return I.find(e,this._config.parent).filter((e=>!t.includes(e)))}_addAriaAndCollapsedClass(e,t){if(e.length)for(const n of e)n.classList.toggle("collapsed",!t),n.setAttribute("aria-expanded",t)}static jQueryInterface(e){const t={};return"string"==typeof e&&/show|hide/.test(e)&&(t.toggle=!1),this.each((function(){const n=G.getOrCreateInstance(this,t);if("string"==typeof e){if(void 0===n[e])throw new TypeError(`No method named "${e}"`);n[e]()}}))}}S.on(document,q,K,(function(e){("A"===e.target.tagName||e.delegateTarget&&"A"===e.delegateTarget.tagName)&&e.preventDefault();for(const e of I.getMultipleElementsFromSelector(this))G.getOrCreateInstance(e,{toggle:!1}).toggle()})),f(G);const J=document.getElementsByClassName("collapse");var Z="top",ee="bottom",te="right",ne="left",ie="auto",oe=[Z,ee,te,ne],re="start",se="end",ae="clippingParents",le="viewport",ce="popper",ue="reference",fe=oe.reduce((function(e,t){return e.concat([t+"-"+re,t+"-"+se])}),[]),de=[].concat(oe,[ie]).reduce((function(e,t){return e.concat([t,t+"-"+re,t+"-"+se])}),[]),pe="beforeRead",he="read",me="afterRead",ge="beforeMain",ve="main",be="afterMain",ye="beforeWrite",_e="write",we="afterWrite",Ee=[pe,he,me,ge,ve,be,ye,_e,we];function Oe(e){return e?(e.nodeName||"").toLowerCase():null}function xe(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function Ae(e){return e instanceof xe(e).Element||e instanceof Element}function Ce(e){return e instanceof xe(e).HTMLElement||e instanceof HTMLElement}function Le(e){return"undefined"!=typeof ShadowRoot&&(e instanceof xe(e).ShadowRoot||e instanceof ShadowRoot)}var Te={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},i=t.attributes[e]||{},o=t.elements[e];Ce(o)&&Oe(o)&&(Object.assign(o.style,n),Object.keys(i).forEach((function(e){var t=i[e];!1===t?o.removeAttribute(e):o.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var i=t.elements[e],o=t.attributes[e]||{},r=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{});Ce(i)&&Oe(i)&&(Object.assign(i.style,r),Object.keys(o).forEach((function(e){i.removeAttribute(e)})))}))}},requires:["computeStyles"]};function Se(e){return e.split("-")[0]}var je=Math.max,ke=Math.min,De=Math.round;function Pe(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map((function(e){return e.brand+"/"+e.version})).join(" "):navigator.userAgent}function Ne(){return!/^((?!chrome|android).)*safari/i.test(Pe())}function Me(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=!1);var i=e.getBoundingClientRect(),o=1,r=1;t&&Ce(e)&&(o=e.offsetWidth>0&&De(i.width)/e.offsetWidth||1,r=e.offsetHeight>0&&De(i.height)/e.offsetHeight||1);var s=(Ae(e)?xe(e):window).visualViewport,a=!Ne()&&n,l=(i.left+(a&&s?s.offsetLeft:0))/o,c=(i.top+(a&&s?s.offsetTop:0))/r,u=i.width/o,f=i.height/r;return{width:u,height:f,top:c,right:l+u,bottom:c+f,left:l,x:l,y:c}}function Be(e){var t=Me(e),n=e.offsetWidth,i=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-i)<=1&&(i=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:i}}function Ie(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&Le(n)){var i=t;do{if(i&&e.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function Fe(e){return xe(e).getComputedStyle(e)}function He(e){return["table","td","th"].indexOf(Oe(e))>=0}function $e(e){return((Ae(e)?e.ownerDocument:e.document)||window.document).documentElement}function ze(e){return"html"===Oe(e)?e:e.assignedSlot||e.parentNode||(Le(e)?e.host:null)||$e(e)}function We(e){return Ce(e)&&"fixed"!==Fe(e).position?e.offsetParent:null}function qe(e){for(var t=xe(e),n=We(e);n&&He(n)&&"static"===Fe(n).position;)n=We(n);return n&&("html"===Oe(n)||"body"===Oe(n)&&"static"===Fe(n).position)?t:n||function(e){var t=/firefox/i.test(Pe());if(/Trident/i.test(Pe())&&Ce(e)&&"fixed"===Fe(e).position)return null;var n=ze(e);for(Le(n)&&(n=n.host);Ce(n)&&["html","body"].indexOf(Oe(n))<0;){var i=Fe(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||t&&"filter"===i.willChange||t&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(e)||t}function Re(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Ve(e,t,n){return je(e,ke(t,n))}function Ye(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function Ue(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}var Ke={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,i=e.name,o=e.options,r=n.elements.arrow,s=n.modifiersData.popperOffsets,a=Se(n.placement),l=Re(a),c=[ne,te].indexOf(a)>=0?"height":"width";if(r&&s){var u=function(e,t){return Ye("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:Ue(e,oe))}(o.padding,n),f=Be(r),d="y"===l?Z:ne,p="y"===l?ee:te,h=n.rects.reference[c]+n.rects.reference[l]-s[l]-n.rects.popper[c],m=s[l]-n.rects.reference[l],g=qe(r),v=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,b=h/2-m/2,y=u[d],_=v-f[c]-u[p],w=v/2-f[c]/2+b,E=Ve(y,w,_),O=l;n.modifiersData[i]=((t={})[O]=E,t.centerOffset=E-w,t)}},effect:function(e){var t=e.state,n=e.options.element,i=void 0===n?"[data-popper-arrow]":n;null!=i&&("string"!=typeof i||(i=t.elements.popper.querySelector(i)))&&Ie(t.elements.popper,i)&&(t.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Qe(e){return e.split("-")[1]}var Xe={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Ge(e){var t,n=e.popper,i=e.popperRect,o=e.placement,r=e.variation,s=e.offsets,a=e.position,l=e.gpuAcceleration,c=e.adaptive,u=e.roundOffsets,f=e.isFixed,d=s.x,p=void 0===d?0:d,h=s.y,m=void 0===h?0:h,g="function"==typeof u?u({x:p,y:m}):{x:p,y:m};p=g.x,m=g.y;var v=s.hasOwnProperty("x"),b=s.hasOwnProperty("y"),y=ne,_=Z,w=window;if(c){var E=qe(n),O="clientHeight",x="clientWidth";if(E===xe(n)&&"static"!==Fe(E=$e(n)).position&&"absolute"===a&&(O="scrollHeight",x="scrollWidth"),o===Z||(o===ne||o===te)&&r===se)_=ee,m-=(f&&E===w&&w.visualViewport?w.visualViewport.height:E[O])-i.height,m*=l?1:-1;if(o===ne||(o===Z||o===ee)&&r===se)y=te,p-=(f&&E===w&&w.visualViewport?w.visualViewport.width:E[x])-i.width,p*=l?1:-1}var A,C=Object.assign({position:a},c&&Xe),L=!0===u?function(e,t){var n=e.x,i=e.y,o=t.devicePixelRatio||1;return{x:De(n*o)/o||0,y:De(i*o)/o||0}}({x:p,y:m},xe(n)):{x:p,y:m};return p=L.x,m=L.y,l?Object.assign({},C,((A={})[_]=b?"0":"",A[y]=v?"0":"",A.transform=(w.devicePixelRatio||1)<=1?"translate("+p+"px, "+m+"px)":"translate3d("+p+"px, "+m+"px, 0)",A)):Object.assign({},C,((t={})[_]=b?m+"px":"",t[y]=v?p+"px":"",t.transform="",t))}var Je={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,i=n.gpuAcceleration,o=void 0===i||i,r=n.adaptive,s=void 0===r||r,a=n.roundOffsets,l=void 0===a||a,c={placement:Se(t.placement),variation:Qe(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,Ge(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:s,roundOffsets:l})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,Ge(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}},Ze={passive:!0};var et={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,i=e.options,o=i.scroll,r=void 0===o||o,s=i.resize,a=void 0===s||s,l=xe(t.elements.popper),c=[].concat(t.scrollParents.reference,t.scrollParents.popper);return r&&c.forEach((function(e){e.addEventListener("scroll",n.update,Ze)})),a&&l.addEventListener("resize",n.update,Ze),function(){r&&c.forEach((function(e){e.removeEventListener("scroll",n.update,Ze)})),a&&l.removeEventListener("resize",n.update,Ze)}},data:{}},tt={left:"right",right:"left",bottom:"top",top:"bottom"};function nt(e){return e.replace(/left|right|bottom|top/g,(function(e){return tt[e]}))}var it={start:"end",end:"start"};function ot(e){return e.replace(/start|end/g,(function(e){return it[e]}))}function rt(e){var t=xe(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function st(e){return Me($e(e)).left+rt(e).scrollLeft}function at(e){var t=Fe(e),n=t.overflow,i=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function lt(e){return["html","body","#document"].indexOf(Oe(e))>=0?e.ownerDocument.body:Ce(e)&&at(e)?e:lt(ze(e))}function ct(e,t){var n;void 0===t&&(t=[]);var i=lt(e),o=i===(null==(n=e.ownerDocument)?void 0:n.body),r=xe(i),s=o?[r].concat(r.visualViewport||[],at(i)?i:[]):i,a=t.concat(s);return o?a:a.concat(ct(ze(s)))}function ut(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function ft(e,t,n){return t===le?ut(function(e,t){var n=xe(e),i=$e(e),o=n.visualViewport,r=i.clientWidth,s=i.clientHeight,a=0,l=0;if(o){r=o.width,s=o.height;var c=Ne();(c||!c&&"fixed"===t)&&(a=o.offsetLeft,l=o.offsetTop)}return{width:r,height:s,x:a+st(e),y:l}}(e,n)):Ae(t)?function(e,t){var n=Me(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(t,n):ut(function(e){var t,n=$e(e),i=rt(e),o=null==(t=e.ownerDocument)?void 0:t.body,r=je(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=je(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-i.scrollLeft+st(e),l=-i.scrollTop;return"rtl"===Fe(o||n).direction&&(a+=je(n.clientWidth,o?o.clientWidth:0)-r),{width:r,height:s,x:a,y:l}}($e(e)))}function dt(e,t,n,i){var o="clippingParents"===t?function(e){var t=ct(ze(e)),n=["absolute","fixed"].indexOf(Fe(e).position)>=0&&Ce(e)?qe(e):e;return Ae(n)?t.filter((function(e){return Ae(e)&&Ie(e,n)&&"body"!==Oe(e)})):[]}(e):[].concat(t),r=[].concat(o,[n]),s=r[0],a=r.reduce((function(t,n){var o=ft(e,n,i);return t.top=je(o.top,t.top),t.right=ke(o.right,t.right),t.bottom=ke(o.bottom,t.bottom),t.left=je(o.left,t.left),t}),ft(e,s,i));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function pt(e){var t,n=e.reference,i=e.element,o=e.placement,r=o?Se(o):null,s=o?Qe(o):null,a=n.x+n.width/2-i.width/2,l=n.y+n.height/2-i.height/2;switch(r){case Z:t={x:a,y:n.y-i.height};break;case ee:t={x:a,y:n.y+n.height};break;case te:t={x:n.x+n.width,y:l};break;case ne:t={x:n.x-i.width,y:l};break;default:t={x:n.x,y:n.y}}var c=r?Re(r):null;if(null!=c){var u="y"===c?"height":"width";switch(s){case re:t[c]=t[c]-(n[u]/2-i[u]/2);break;case se:t[c]=t[c]+(n[u]/2-i[u]/2)}}return t}function ht(e,t){void 0===t&&(t={});var n=t,i=n.placement,o=void 0===i?e.placement:i,r=n.strategy,s=void 0===r?e.strategy:r,a=n.boundary,l=void 0===a?ae:a,c=n.rootBoundary,u=void 0===c?le:c,f=n.elementContext,d=void 0===f?ce:f,p=n.altBoundary,h=void 0!==p&&p,m=n.padding,g=void 0===m?0:m,v=Ye("number"!=typeof g?g:Ue(g,oe)),b=d===ce?ue:ce,y=e.rects.popper,_=e.elements[h?b:d],w=dt(Ae(_)?_:_.contextElement||$e(e.elements.popper),l,u,s),E=Me(e.elements.reference),O=pt({reference:E,element:y,placement:o}),x=ut(Object.assign({},y,O)),A=d===ce?x:E,C={top:w.top-A.top+v.top,bottom:A.bottom-w.bottom+v.bottom,left:w.left-A.left+v.left,right:A.right-w.right+v.right},L=e.modifiersData.offset;if(d===ce&&L){var T=L[o];Object.keys(C).forEach((function(e){var t=[te,ee].indexOf(e)>=0?1:-1,n=[Z,ee].indexOf(e)>=0?"y":"x";C[e]+=T[n]*t}))}return C}function mt(e,t){void 0===t&&(t={});var n=t,i=n.placement,o=n.boundary,r=n.rootBoundary,s=n.padding,a=n.flipVariations,l=n.allowedAutoPlacements,c=void 0===l?de:l,u=Qe(i),f=u?a?fe:fe.filter((function(e){return Qe(e)===u})):oe,d=f.filter((function(e){return c.indexOf(e)>=0}));0===d.length&&(d=f);var p=d.reduce((function(t,n){return t[n]=ht(e,{placement:n,boundary:o,rootBoundary:r,padding:s})[Se(n)],t}),{});return Object.keys(p).sort((function(e,t){return p[e]-p[t]}))}var gt={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,i=e.name;if(!t.modifiersData[i]._skip){for(var o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0===s||s,l=n.fallbackPlacements,c=n.padding,u=n.boundary,f=n.rootBoundary,d=n.altBoundary,p=n.flipVariations,h=void 0===p||p,m=n.allowedAutoPlacements,g=t.options.placement,v=Se(g),b=l||(v===g||!h?[nt(g)]:function(e){if(Se(e)===ie)return[];var t=nt(e);return[ot(e),t,ot(t)]}(g)),y=[g].concat(b).reduce((function(e,n){return e.concat(Se(n)===ie?mt(t,{placement:n,boundary:u,rootBoundary:f,padding:c,flipVariations:h,allowedAutoPlacements:m}):n)}),[]),_=t.rects.reference,w=t.rects.popper,E=new Map,O=!0,x=y[0],A=0;A=0,j=S?"width":"height",k=ht(t,{placement:C,boundary:u,rootBoundary:f,altBoundary:d,padding:c}),D=S?T?te:ne:T?ee:Z;_[j]>w[j]&&(D=nt(D));var P=nt(D),N=[];if(r&&N.push(k[L]<=0),a&&N.push(k[D]<=0,k[P]<=0),N.every((function(e){return e}))){x=C,O=!1;break}E.set(C,N)}if(O)for(var M=function(e){var t=y.find((function(t){var n=E.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return x=t,"break"},B=h?3:1;B>0;B--){if("break"===M(B))break}t.placement!==x&&(t.modifiersData[i]._skip=!0,t.placement=x,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function vt(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function bt(e){return[Z,te,ee,ne].some((function(t){return e[t]>=0}))}var yt={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,i=t.rects.reference,o=t.rects.popper,r=t.modifiersData.preventOverflow,s=ht(t,{elementContext:"reference"}),a=ht(t,{altBoundary:!0}),l=vt(s,i),c=vt(a,o,r),u=bt(l),f=bt(c);t.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:u,hasPopperEscaped:f},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":f})}};var _t={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,i=e.name,o=n.offset,r=void 0===o?[0,0]:o,s=de.reduce((function(e,n){return e[n]=function(e,t,n){var i=Se(e),o=[ne,Z].indexOf(i)>=0?-1:1,r="function"==typeof n?n(Object.assign({},t,{placement:e})):n,s=r[0],a=r[1];return s=s||0,a=(a||0)*o,[ne,te].indexOf(i)>=0?{x:a,y:s}:{x:s,y:a}}(n,t.rects,r),e}),{}),a=s[t.placement],l=a.x,c=a.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=c),t.modifiersData[i]=s}};var wt={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=pt({reference:t.rects.reference,element:t.rects.popper,placement:t.placement})},data:{}};var Et={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,i=e.name,o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0!==s&&s,l=n.boundary,c=n.rootBoundary,u=n.altBoundary,f=n.padding,d=n.tether,p=void 0===d||d,h=n.tetherOffset,m=void 0===h?0:h,g=ht(t,{boundary:l,rootBoundary:c,padding:f,altBoundary:u}),v=Se(t.placement),b=Qe(t.placement),y=!b,_=Re(v),w="x"===_?"y":"x",E=t.modifiersData.popperOffsets,O=t.rects.reference,x=t.rects.popper,A="function"==typeof m?m(Object.assign({},t.rects,{placement:t.placement})):m,C="number"==typeof A?{mainAxis:A,altAxis:A}:Object.assign({mainAxis:0,altAxis:0},A),L=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,T={x:0,y:0};if(E){if(r){var S,j="y"===_?Z:ne,k="y"===_?ee:te,D="y"===_?"height":"width",P=E[_],N=P+g[j],M=P-g[k],B=p?-x[D]/2:0,I=b===re?O[D]:x[D],F=b===re?-x[D]:-O[D],H=t.elements.arrow,$=p&&H?Be(H):{width:0,height:0},z=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},W=z[j],q=z[k],R=Ve(0,O[D],$[D]),V=y?O[D]/2-B-R-W-C.mainAxis:I-R-W-C.mainAxis,Y=y?-O[D]/2+B+R+q+C.mainAxis:F+R+q+C.mainAxis,U=t.elements.arrow&&qe(t.elements.arrow),K=U?"y"===_?U.clientTop||0:U.clientLeft||0:0,Q=null!=(S=null==L?void 0:L[_])?S:0,X=P+Y-Q,G=Ve(p?ke(N,P+V-Q-K):N,P,p?je(M,X):M);E[_]=G,T[_]=G-P}if(a){var J,ie="x"===_?Z:ne,oe="x"===_?ee:te,se=E[w],ae="y"===w?"height":"width",le=se+g[ie],ce=se-g[oe],ue=-1!==[Z,ne].indexOf(v),fe=null!=(J=null==L?void 0:L[w])?J:0,de=ue?le:se-O[ae]-x[ae]-fe+C.altAxis,pe=ue?se+O[ae]+x[ae]-fe-C.altAxis:ce,he=p&&ue?function(e,t,n){var i=Ve(e,t,n);return i>n?n:i}(de,se,pe):Ve(p?de:le,se,p?pe:ce);E[w]=he,T[w]=he-se}t.modifiersData[i]=T}},requiresIfExists:["offset"]};function Ot(e,t,n){void 0===n&&(n=!1);var i,o,r=Ce(t),s=Ce(t)&&function(e){var t=e.getBoundingClientRect(),n=De(t.width)/e.offsetWidth||1,i=De(t.height)/e.offsetHeight||1;return 1!==n||1!==i}(t),a=$e(t),l=Me(e,s,n),c={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(r||!r&&!n)&&(("body"!==Oe(t)||at(a))&&(c=(i=t)!==xe(i)&&Ce(i)?{scrollLeft:(o=i).scrollLeft,scrollTop:o.scrollTop}:rt(i)),Ce(t)?((u=Me(t,!0)).x+=t.clientLeft,u.y+=t.clientTop):a&&(u.x=st(a))),{x:l.left+c.scrollLeft-u.x,y:l.top+c.scrollTop-u.y,width:l.width,height:l.height}}function xt(e){var t=new Map,n=new Set,i=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var i=t.get(e);i&&o(i)}})),i.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),i}var At={placement:"bottom",modifiers:[],strategy:"absolute"};function Ct(){for(var e=arguments.length,t=new Array(e),n=0;n{const n=e.nodeName.toLowerCase();return t.includes(n)?!Pt.has(n)||Boolean(Nt.test(e.nodeValue)):t.filter((e=>e instanceof RegExp)).some((e=>e.test(n)))};const Bt={allowList:Dt,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:""},It={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Ft={entry:"(string|element|function|null)",selector:"(string|element)"};class Ht extends N{constructor(e){super(),this._config=this._getConfig(e)}static get Default(){return Bt}static get DefaultType(){return It}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((e=>this._resolvePossibleFunction(e))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(e){return this._checkContent(e),this._config.content={...this._config.content,...e},this}toHtml(){const e=document.createElement("div");e.innerHTML=this._maybeSanitize(this._config.template);for(const[t,n]of Object.entries(this._config.content))this._setContent(e,n,t);const t=e.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&t.classList.add(...n.split(" ")),t}_typeCheckConfig(e){super._typeCheckConfig(e),this._checkContent(e.content)}_checkContent(e){for(const[t,n]of Object.entries(e))super._typeCheckConfig({selector:t,entry:n},Ft)}_setContent(e,t,n){const i=I.findOne(n,e);i&&((t=this._resolvePossibleFunction(t))?o(t)?this._putElementInTemplate(r(t),i):this._config.html?i.innerHTML=this._maybeSanitize(t):i.textContent=t:i.remove())}_maybeSanitize(e){return this._config.sanitize?function(e,t,n){if(!e.length)return e;if(n&&"function"==typeof n)return n(e);const i=(new window.DOMParser).parseFromString(e,"text/html"),o=[].concat(...i.body.querySelectorAll("*"));for(const e of o){const n=e.nodeName.toLowerCase();if(!Object.keys(t).includes(n)){e.remove();continue}const i=[].concat(...e.attributes),o=[].concat(t["*"]||[],t[n]||[]);for(const t of i)Mt(t,o)||e.removeAttribute(t.nodeName)}return i.body.innerHTML}(e,this._config.allowList,this._config.sanitizeFn):e}_resolvePossibleFunction(e){return d(e,[this])}_putElementInTemplate(e,t){if(this._config.html)return t.innerHTML="",void t.append(e);t.textContent=e.textContent}}const $t=new Set(["sanitize","allowList","sanitizeFn"]),zt="fade",Wt="show",qt=".tooltip-inner",Rt=".modal",Vt="hide.bs.modal",Yt="hover",Ut="focus",Kt={AUTO:"auto",TOP:"top",RIGHT:u()?"left":"right",BOTTOM:"bottom",LEFT:u()?"right":"left"},Qt={allowList:Dt,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'t.right||e.clientYt.bottom)&&this.hidePopup()}static initComponents(){this.initBar(),[...on].forEach((e=>{e.onclick=()=>this.showPopup()})),rn.onclick=e=>this.clickBackdrop(e),sn.onclick=()=>this.hidePopup(),rn.oncancel=e=>{e.preventDefault(),this.hidePopup()}}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}}var un={_:!0},fn={_:48};Zt(cn,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:Jt(en=cn,en,fn)._});Zt(class{static refresh(){tocbot.refresh(this.options)}static init(){document.getElementById("toc-wrapper")&&tocbot.init(this.options)}},"options",{tocSelector:"#toc",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,headingsOffset:32}),matchMedia("(min-width: 1200px)"),Theme.getThemeMapper("default","dark");const dn=document.getElementById("mode-toggle");const pn=document.getElementById("sidebar"),hn=document.getElementById("sidebar-trigger"),mn=document.getElementById("mask");class gn{static toggle(){vn._=Jt(gn,this,!Jt(gn,this,vn)._),document.body.toggleAttribute("sidebar-display",Jt(gn,this,vn)._),pn.classList.toggle("z-2",Jt(gn,this,vn)._),mn.classList.toggle("d-none",!Jt(gn,this,vn)._)}}var vn={_:!1};const bn=document.getElementById("sidebar-trigger"),yn=document.getElementById("search-trigger"),_n=document.getElementById("search-cancel"),wn=document.querySelectorAll("#main-wrapper>.container>.row"),En=document.getElementById("topbar-title"),On=document.getElementById("search"),xn=document.getElementById("search-result-wrapper"),An=document.getElementById("search-results"),Cn=document.getElementById("search-input"),Ln=document.getElementById("search-hints"),Tn="d-block",Sn="d-none",jn="input-focus",kn="d-flex";class Dn{static on(){bn.classList.add(Sn),En.classList.add(Sn),yn.classList.add(Sn),On.classList.add(kn),_n.classList.add(Tn)}static off(){_n.classList.remove(Tn),On.classList.remove(kn),bn.classList.remove(Sn),En.classList.remove(Sn),yn.classList.remove(Sn)}}class Pn{static on(){this.resultVisible||(xn.classList.remove(Sn),wn.forEach((e=>{e.classList.add(Sn)})),this.resultVisible=!0)}static off(){this.resultVisible&&(An.innerHTML="",Ln.classList.contains(Sn)&&Ln.classList.remove(Sn),xn.classList.add(Sn),wn.forEach((e=>{e.classList.remove(Sn)})),Cn.textContent="",this.resultVisible=!1)}}function Nn(){return _n.classList.contains(Tn)}Zt(Pn,"resultVisible",!1),dn&&dn.addEventListener("click",(()=>{Theme.flip()})),function(){const e=document.getElementById("back-to-top");window.addEventListener("scroll",(()=>{window.scrollY>50?e.classList.add("show"):e.classList.remove("show")})),e.addEventListener("click",(()=>{window.scrollTo({top:0})}))}(),[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map((e=>new Gt(e))),hn.onclick=mn.onclick=()=>gn.toggle(),yn.addEventListener("click",(()=>{Dn.on(),Pn.on(),Cn.focus()})),_n.addEventListener("click",(()=>{Dn.off(),Pn.off()})),Cn.addEventListener("focus",(()=>{On.classList.add(jn)})),Cn.addEventListener("focusout",(()=>{On.classList.remove(jn)})),Cn.addEventListener("input",(()=>{""===Cn.value?Nn()?Ln.classList.remove(Sn):Pn.off():(Pn.on(),Nn()&&Ln.classList.add(Sn))})),[...J].forEach((e=>{const t="h_"+e.id.substring(2),n=document.getElementById(t);e.addEventListener("hide.bs.collapse",(()=>{n&&(n.querySelector(".iconfont.icon-FolderOpen-1").className="iconfont icon-folder",n.querySelector(".ifrot").classList.add("rotate"),n.classList.remove("hide-border-bottom"))})),e.addEventListener("show.bs.collapse",(()=>{n&&(n.querySelector(".iconfont.icon-folder").className="iconfont icon-FolderOpen-1",n.querySelector(".ifrot").classList.remove("rotate"),n.classList.add("hide-border-bottom"))}))}))}();
+!(function () {
+ 'use strict';
+ const e = new Map();
+ var t = {
+ set(t, n, i) {
+ e.has(t) || e.set(t, new Map());
+ const o = e.get(t);
+ o.has(n) || 0 === o.size
+ ? o.set(n, i)
+ : console.error(
+ `Bootstrap doesn't allow more than one instance per element. Bound instance: ${
+ Array.from(o.keys())[0]
+ }.`
+ );
+ },
+ get: (t, n) => (e.has(t) && e.get(t).get(n)) || null,
+ remove(t, n) {
+ if (!e.has(t)) return;
+ const i = e.get(t);
+ i.delete(n), 0 === i.size && e.delete(t);
+ }
+ };
+ const n = 'transitionend',
+ i = (e) => (
+ e &&
+ window.CSS &&
+ window.CSS.escape &&
+ (e = e.replace(/#([^\s"#']+)/g, (e, t) => `#${CSS.escape(t)}`)),
+ e
+ ),
+ o = (e) =>
+ !(!e || 'object' != typeof e) &&
+ (void 0 !== e.jquery && (e = e[0]), void 0 !== e.nodeType),
+ r = (e) =>
+ o(e)
+ ? e.jquery
+ ? e[0]
+ : e
+ : 'string' == typeof e && e.length > 0
+ ? document.querySelector(i(e))
+ : null,
+ s = (e) => {
+ if (!document.documentElement.attachShadow) return null;
+ if ('function' == typeof e.getRootNode) {
+ const t = e.getRootNode();
+ return t instanceof ShadowRoot ? t : null;
+ }
+ return e instanceof ShadowRoot
+ ? e
+ : e.parentNode
+ ? s(e.parentNode)
+ : null;
+ },
+ a = () => {},
+ l = () =>
+ window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')
+ ? window.jQuery
+ : null,
+ c = [],
+ u = () => 'rtl' === document.documentElement.dir,
+ f = (e) => {
+ var t;
+ (t = () => {
+ const t = l();
+ if (t) {
+ const n = e.NAME,
+ i = t.fn[n];
+ (t.fn[n] = e.jQueryInterface),
+ (t.fn[n].Constructor = e),
+ (t.fn[n].noConflict = () => ((t.fn[n] = i), e.jQueryInterface));
+ }
+ }),
+ 'loading' === document.readyState
+ ? (c.length ||
+ document.addEventListener('DOMContentLoaded', () => {
+ for (const e of c) e();
+ }),
+ c.push(t))
+ : t();
+ },
+ d = function (e) {
+ let t =
+ arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : e;
+ return 'function' == typeof e
+ ? e(
+ ...(arguments.length > 1 && void 0 !== arguments[1]
+ ? arguments[1]
+ : [])
+ )
+ : t;
+ },
+ p = function (e, t) {
+ if (!(!(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]))
+ return void d(e);
+ const i =
+ ((e) => {
+ if (!e) return 0;
+ let { transitionDuration: t, transitionDelay: n } =
+ window.getComputedStyle(e);
+ const i = Number.parseFloat(t),
+ o = Number.parseFloat(n);
+ return i || o
+ ? ((t = t.split(',')[0]),
+ (n = n.split(',')[0]),
+ 1e3 * (Number.parseFloat(t) + Number.parseFloat(n)))
+ : 0;
+ })(t) + 5;
+ let o = !1;
+ const r = (i) => {
+ let { target: s } = i;
+ s === t && ((o = !0), t.removeEventListener(n, r), d(e));
+ };
+ t.addEventListener(n, r),
+ setTimeout(() => {
+ o || t.dispatchEvent(new Event(n));
+ }, i);
+ },
+ h = /[^.]*(?=\..*)\.|.*/,
+ m = /\..*/,
+ g = /::\d+$/,
+ v = {};
+ let b = 1;
+ const y = { mouseenter: 'mouseover', mouseleave: 'mouseout' },
+ _ = new Set([
+ 'click',
+ 'dblclick',
+ 'mouseup',
+ 'mousedown',
+ 'contextmenu',
+ 'mousewheel',
+ 'DOMMouseScroll',
+ 'mouseover',
+ 'mouseout',
+ 'mousemove',
+ 'selectstart',
+ 'selectend',
+ 'keydown',
+ 'keypress',
+ 'keyup',
+ 'orientationchange',
+ 'touchstart',
+ 'touchmove',
+ 'touchend',
+ 'touchcancel',
+ 'pointerdown',
+ 'pointermove',
+ 'pointerup',
+ 'pointerleave',
+ 'pointercancel',
+ 'gesturestart',
+ 'gesturechange',
+ 'gestureend',
+ 'focus',
+ 'blur',
+ 'change',
+ 'reset',
+ 'select',
+ 'submit',
+ 'focusin',
+ 'focusout',
+ 'load',
+ 'unload',
+ 'beforeunload',
+ 'resize',
+ 'move',
+ 'DOMContentLoaded',
+ 'readystatechange',
+ 'error',
+ 'abort',
+ 'scroll'
+ ]);
+ function w(e, t) {
+ return (t && `${t}::${b++}`) || e.uidEvent || b++;
+ }
+ function E(e) {
+ const t = w(e);
+ return (e.uidEvent = t), (v[t] = v[t] || {}), v[t];
+ }
+ function O(e, t) {
+ let n =
+ arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null;
+ return Object.values(e).find(
+ (e) => e.callable === t && e.delegationSelector === n
+ );
+ }
+ function x(e, t, n) {
+ const i = 'string' == typeof t,
+ o = i ? n : t || n;
+ let r = T(e);
+ return _.has(r) || (r = e), [i, o, r];
+ }
+ function A(e, t, n, i, o) {
+ if ('string' != typeof t || !e) return;
+ let [r, s, a] = x(t, n, i);
+ if (t in y) {
+ const e = (e) =>
+ function (t) {
+ if (
+ !t.relatedTarget ||
+ (t.relatedTarget !== t.delegateTarget &&
+ !t.delegateTarget.contains(t.relatedTarget))
+ )
+ return e.call(this, t);
+ };
+ s = e(s);
+ }
+ const l = E(e),
+ c = l[a] || (l[a] = {}),
+ u = O(c, s, r ? n : null);
+ if (u) return void (u.oneOff = u.oneOff && o);
+ const f = w(s, t.replace(h, '')),
+ d = r
+ ? (function (e, t, n) {
+ return function i(o) {
+ const r = e.querySelectorAll(t);
+ for (let { target: s } = o; s && s !== this; s = s.parentNode)
+ for (const a of r)
+ if (a === s)
+ return (
+ j(o, { delegateTarget: s }),
+ i.oneOff && S.off(e, o.type, t, n),
+ n.apply(s, [o])
+ );
+ };
+ })(e, n, s)
+ : (function (e, t) {
+ return function n(i) {
+ return (
+ j(i, { delegateTarget: e }),
+ n.oneOff && S.off(e, i.type, t),
+ t.apply(e, [i])
+ );
+ };
+ })(e, s);
+ (d.delegationSelector = r ? n : null),
+ (d.callable = s),
+ (d.oneOff = o),
+ (d.uidEvent = f),
+ (c[f] = d),
+ e.addEventListener(a, d, r);
+ }
+ function C(e, t, n, i, o) {
+ const r = O(t[n], i, o);
+ r && (e.removeEventListener(n, r, Boolean(o)), delete t[n][r.uidEvent]);
+ }
+ function L(e, t, n, i) {
+ const o = t[n] || {};
+ for (const [r, s] of Object.entries(o))
+ r.includes(i) && C(e, t, n, s.callable, s.delegationSelector);
+ }
+ function T(e) {
+ return (e = e.replace(m, '')), y[e] || e;
+ }
+ const S = {
+ on(e, t, n, i) {
+ A(e, t, n, i, !1);
+ },
+ one(e, t, n, i) {
+ A(e, t, n, i, !0);
+ },
+ off(e, t, n, i) {
+ if ('string' != typeof t || !e) return;
+ const [o, r, s] = x(t, n, i),
+ a = s !== t,
+ l = E(e),
+ c = l[s] || {},
+ u = t.startsWith('.');
+ if (void 0 === r) {
+ if (u) for (const n of Object.keys(l)) L(e, l, n, t.slice(1));
+ for (const [n, i] of Object.entries(c)) {
+ const o = n.replace(g, '');
+ (a && !t.includes(o)) || C(e, l, s, i.callable, i.delegationSelector);
+ }
+ } else {
+ if (!Object.keys(c).length) return;
+ C(e, l, s, r, o ? n : null);
+ }
+ },
+ trigger(e, t, n) {
+ if ('string' != typeof t || !e) return null;
+ const i = l();
+ let o = null,
+ r = !0,
+ s = !0,
+ a = !1;
+ t !== T(t) &&
+ i &&
+ ((o = i.Event(t, n)),
+ i(e).trigger(o),
+ (r = !o.isPropagationStopped()),
+ (s = !o.isImmediatePropagationStopped()),
+ (a = o.isDefaultPrevented()));
+ const c = j(new Event(t, { bubbles: r, cancelable: !0 }), n);
+ return (
+ a && c.preventDefault(),
+ s && e.dispatchEvent(c),
+ c.defaultPrevented && o && o.preventDefault(),
+ c
+ );
+ }
+ };
+ function j(e) {
+ let t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
+ for (const [n, i] of Object.entries(t))
+ try {
+ e[n] = i;
+ } catch {
+ Object.defineProperty(e, n, { configurable: !0, get: () => i });
+ }
+ return e;
+ }
+ function k(e) {
+ if ('true' === e) return !0;
+ if ('false' === e) return !1;
+ if (e === Number(e).toString()) return Number(e);
+ if ('' === e || 'null' === e) return null;
+ if ('string' != typeof e) return e;
+ try {
+ return JSON.parse(decodeURIComponent(e));
+ } catch {
+ return e;
+ }
+ }
+ function D(e) {
+ return e.replace(/[A-Z]/g, (e) => `-${e.toLowerCase()}`);
+ }
+ const P = {
+ setDataAttribute(e, t, n) {
+ e.setAttribute(`data-bs-${D(t)}`, n);
+ },
+ removeDataAttribute(e, t) {
+ e.removeAttribute(`data-bs-${D(t)}`);
+ },
+ getDataAttributes(e) {
+ if (!e) return {};
+ const t = {},
+ n = Object.keys(e.dataset).filter(
+ (e) => e.startsWith('bs') && !e.startsWith('bsConfig')
+ );
+ for (const i of n) {
+ let n = i.replace(/^bs/, '');
+ (n = n.charAt(0).toLowerCase() + n.slice(1, n.length)),
+ (t[n] = k(e.dataset[i]));
+ }
+ return t;
+ },
+ getDataAttribute: (e, t) => k(e.getAttribute(`data-bs-${D(t)}`))
+ };
+ class N {
+ static get Default() {
+ return {};
+ }
+ static get DefaultType() {
+ return {};
+ }
+ static get NAME() {
+ throw new Error(
+ 'You have to implement the static method "NAME", for each component!'
+ );
+ }
+ _getConfig(e) {
+ return (
+ (e = this._mergeConfigObj(e)),
+ (e = this._configAfterMerge(e)),
+ this._typeCheckConfig(e),
+ e
+ );
+ }
+ _configAfterMerge(e) {
+ return e;
+ }
+ _mergeConfigObj(e, t) {
+ const n = o(t) ? P.getDataAttribute(t, 'config') : {};
+ return {
+ ...this.constructor.Default,
+ ...('object' == typeof n ? n : {}),
+ ...(o(t) ? P.getDataAttributes(t) : {}),
+ ...('object' == typeof e ? e : {})
+ };
+ }
+ _typeCheckConfig(e) {
+ let t =
+ arguments.length > 1 && void 0 !== arguments[1]
+ ? arguments[1]
+ : this.constructor.DefaultType;
+ for (const [i, r] of Object.entries(t)) {
+ const t = e[i],
+ s = o(t)
+ ? 'element'
+ : null == (n = t)
+ ? `${n}`
+ : Object.prototype.toString
+ .call(n)
+ .match(/\s([a-z]+)/i)[1]
+ .toLowerCase();
+ if (!new RegExp(r).test(s))
+ throw new TypeError(
+ `${this.constructor.NAME.toUpperCase()}: Option "${i}" provided type "${s}" but expected type "${r}".`
+ );
+ }
+ var n;
+ }
+ }
+ class M extends N {
+ constructor(e, n) {
+ super(),
+ (e = r(e)) &&
+ ((this._element = e),
+ (this._config = this._getConfig(n)),
+ t.set(this._element, this.constructor.DATA_KEY, this));
+ }
+ dispose() {
+ t.remove(this._element, this.constructor.DATA_KEY),
+ S.off(this._element, this.constructor.EVENT_KEY);
+ for (const e of Object.getOwnPropertyNames(this)) this[e] = null;
+ }
+ _queueCallback(e, t) {
+ p(
+ e,
+ t,
+ !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]
+ );
+ }
+ _getConfig(e) {
+ return (
+ (e = this._mergeConfigObj(e, this._element)),
+ (e = this._configAfterMerge(e)),
+ this._typeCheckConfig(e),
+ e
+ );
+ }
+ static getInstance(e) {
+ return t.get(r(e), this.DATA_KEY);
+ }
+ static getOrCreateInstance(e) {
+ let t =
+ arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
+ return (
+ this.getInstance(e) || new this(e, 'object' == typeof t ? t : null)
+ );
+ }
+ static get VERSION() {
+ return '5.3.3';
+ }
+ static get DATA_KEY() {
+ return `bs.${this.NAME}`;
+ }
+ static get EVENT_KEY() {
+ return `.${this.DATA_KEY}`;
+ }
+ static eventName(e) {
+ return `${e}${this.EVENT_KEY}`;
+ }
+ }
+ const B = (e) => {
+ let t = e.getAttribute('data-bs-target');
+ if (!t || '#' === t) {
+ let n = e.getAttribute('href');
+ if (!n || (!n.includes('#') && !n.startsWith('.'))) return null;
+ n.includes('#') && !n.startsWith('#') && (n = `#${n.split('#')[1]}`),
+ (t = n && '#' !== n ? n.trim() : null);
+ }
+ return t
+ ? t
+ .split(',')
+ .map((e) => i(e))
+ .join(',')
+ : null;
+ },
+ I = {
+ find(e) {
+ let t =
+ arguments.length > 1 && void 0 !== arguments[1]
+ ? arguments[1]
+ : document.documentElement;
+ return [].concat(...Element.prototype.querySelectorAll.call(t, e));
+ },
+ findOne(e) {
+ let t =
+ arguments.length > 1 && void 0 !== arguments[1]
+ ? arguments[1]
+ : document.documentElement;
+ return Element.prototype.querySelector.call(t, e);
+ },
+ children: (e, t) => [].concat(...e.children).filter((e) => e.matches(t)),
+ parents(e, t) {
+ const n = [];
+ let i = e.parentNode.closest(t);
+ for (; i; ) n.push(i), (i = i.parentNode.closest(t));
+ return n;
+ },
+ prev(e, t) {
+ let n = e.previousElementSibling;
+ for (; n; ) {
+ if (n.matches(t)) return [n];
+ n = n.previousElementSibling;
+ }
+ return [];
+ },
+ next(e, t) {
+ let n = e.nextElementSibling;
+ for (; n; ) {
+ if (n.matches(t)) return [n];
+ n = n.nextElementSibling;
+ }
+ return [];
+ },
+ focusableChildren(e) {
+ const t = [
+ 'a',
+ 'button',
+ 'input',
+ 'textarea',
+ 'select',
+ 'details',
+ '[tabindex]',
+ '[contenteditable="true"]'
+ ]
+ .map((e) => `${e}:not([tabindex^="-"])`)
+ .join(',');
+ return this.find(t, e).filter(
+ (e) =>
+ !((e) =>
+ !e ||
+ e.nodeType !== Node.ELEMENT_NODE ||
+ !!e.classList.contains('disabled') ||
+ (void 0 !== e.disabled
+ ? e.disabled
+ : e.hasAttribute('disabled') &&
+ 'false' !== e.getAttribute('disabled')))(e) &&
+ ((e) => {
+ if (!o(e) || 0 === e.getClientRects().length) return !1;
+ const t =
+ 'visible' ===
+ getComputedStyle(e).getPropertyValue('visibility'),
+ n = e.closest('details:not([open])');
+ if (!n) return t;
+ if (n !== e) {
+ const t = e.closest('summary');
+ if (t && t.parentNode !== n) return !1;
+ if (null === t) return !1;
+ }
+ return t;
+ })(e)
+ );
+ },
+ getSelectorFromElement(e) {
+ const t = B(e);
+ return t && I.findOne(t) ? t : null;
+ },
+ getElementFromSelector(e) {
+ const t = B(e);
+ return t ? I.findOne(t) : null;
+ },
+ getMultipleElementsFromSelector(e) {
+ const t = B(e);
+ return t ? I.find(t) : [];
+ }
+ },
+ F = '.bs.collapse',
+ H = `show${F}`,
+ $ = `shown${F}`,
+ z = `hide${F}`,
+ W = `hidden${F}`,
+ q = `click${F}.data-api`,
+ R = 'show',
+ V = 'collapse',
+ Y = 'collapsing',
+ U = `:scope .${V} .${V}`,
+ K = '[data-bs-toggle="collapse"]',
+ Q = { parent: null, toggle: !0 },
+ X = { parent: '(null|element)', toggle: 'boolean' };
+ class G extends M {
+ constructor(e, t) {
+ super(e, t), (this._isTransitioning = !1), (this._triggerArray = []);
+ const n = I.find(K);
+ for (const e of n) {
+ const t = I.getSelectorFromElement(e),
+ n = I.find(t).filter((e) => e === this._element);
+ null !== t && n.length && this._triggerArray.push(e);
+ }
+ this._initializeChildren(),
+ this._config.parent ||
+ this._addAriaAndCollapsedClass(this._triggerArray, this._isShown()),
+ this._config.toggle && this.toggle();
+ }
+ static get Default() {
+ return Q;
+ }
+ static get DefaultType() {
+ return X;
+ }
+ static get NAME() {
+ return 'collapse';
+ }
+ toggle() {
+ this._isShown() ? this.hide() : this.show();
+ }
+ show() {
+ if (this._isTransitioning || this._isShown()) return;
+ let e = [];
+ if (
+ (this._config.parent &&
+ (e = this._getFirstLevelChildren(
+ '.collapse.show, .collapse.collapsing'
+ )
+ .filter((e) => e !== this._element)
+ .map((e) => G.getOrCreateInstance(e, { toggle: !1 }))),
+ e.length && e[0]._isTransitioning)
+ )
+ return;
+ if (S.trigger(this._element, H).defaultPrevented) return;
+ for (const t of e) t.hide();
+ const t = this._getDimension();
+ this._element.classList.remove(V),
+ this._element.classList.add(Y),
+ (this._element.style[t] = 0),
+ this._addAriaAndCollapsedClass(this._triggerArray, !0),
+ (this._isTransitioning = !0);
+ const n = `scroll${t[0].toUpperCase() + t.slice(1)}`;
+ this._queueCallback(
+ () => {
+ (this._isTransitioning = !1),
+ this._element.classList.remove(Y),
+ this._element.classList.add(V, R),
+ (this._element.style[t] = ''),
+ S.trigger(this._element, $);
+ },
+ this._element,
+ !0
+ ),
+ (this._element.style[t] = `${this._element[n]}px`);
+ }
+ hide() {
+ if (this._isTransitioning || !this._isShown()) return;
+ if (S.trigger(this._element, z).defaultPrevented) return;
+ const e = this._getDimension();
+ (this._element.style[e] = `${
+ this._element.getBoundingClientRect()[e]
+ }px`),
+ this._element.offsetHeight,
+ this._element.classList.add(Y),
+ this._element.classList.remove(V, R);
+ for (const e of this._triggerArray) {
+ const t = I.getElementFromSelector(e);
+ t && !this._isShown(t) && this._addAriaAndCollapsedClass([e], !1);
+ }
+ this._isTransitioning = !0;
+ (this._element.style[e] = ''),
+ this._queueCallback(
+ () => {
+ (this._isTransitioning = !1),
+ this._element.classList.remove(Y),
+ this._element.classList.add(V),
+ S.trigger(this._element, W);
+ },
+ this._element,
+ !0
+ );
+ }
+ _isShown() {
+ return (
+ arguments.length > 0 && void 0 !== arguments[0]
+ ? arguments[0]
+ : this._element
+ ).classList.contains(R);
+ }
+ _configAfterMerge(e) {
+ return (e.toggle = Boolean(e.toggle)), (e.parent = r(e.parent)), e;
+ }
+ _getDimension() {
+ return this._element.classList.contains('collapse-horizontal')
+ ? 'width'
+ : 'height';
+ }
+ _initializeChildren() {
+ if (!this._config.parent) return;
+ const e = this._getFirstLevelChildren(K);
+ for (const t of e) {
+ const e = I.getElementFromSelector(t);
+ e && this._addAriaAndCollapsedClass([t], this._isShown(e));
+ }
+ }
+ _getFirstLevelChildren(e) {
+ const t = I.find(U, this._config.parent);
+ return I.find(e, this._config.parent).filter((e) => !t.includes(e));
+ }
+ _addAriaAndCollapsedClass(e, t) {
+ if (e.length)
+ for (const n of e)
+ n.classList.toggle('collapsed', !t),
+ n.setAttribute('aria-expanded', t);
+ }
+ static jQueryInterface(e) {
+ const t = {};
+ return (
+ 'string' == typeof e && /show|hide/.test(e) && (t.toggle = !1),
+ this.each(function () {
+ const n = G.getOrCreateInstance(this, t);
+ if ('string' == typeof e) {
+ if (void 0 === n[e]) throw new TypeError(`No method named "${e}"`);
+ n[e]();
+ }
+ })
+ );
+ }
+ }
+ S.on(document, q, K, function (e) {
+ ('A' === e.target.tagName ||
+ (e.delegateTarget && 'A' === e.delegateTarget.tagName)) &&
+ e.preventDefault();
+ for (const e of I.getMultipleElementsFromSelector(this))
+ G.getOrCreateInstance(e, { toggle: !1 }).toggle();
+ }),
+ f(G);
+ const J = document.getElementsByClassName('collapse');
+ var Z = 'top',
+ ee = 'bottom',
+ te = 'right',
+ ne = 'left',
+ ie = 'auto',
+ oe = [Z, ee, te, ne],
+ re = 'start',
+ se = 'end',
+ ae = 'clippingParents',
+ le = 'viewport',
+ ce = 'popper',
+ ue = 'reference',
+ fe = oe.reduce(function (e, t) {
+ return e.concat([t + '-' + re, t + '-' + se]);
+ }, []),
+ de = [].concat(oe, [ie]).reduce(function (e, t) {
+ return e.concat([t, t + '-' + re, t + '-' + se]);
+ }, []),
+ pe = 'beforeRead',
+ he = 'read',
+ me = 'afterRead',
+ ge = 'beforeMain',
+ ve = 'main',
+ be = 'afterMain',
+ ye = 'beforeWrite',
+ _e = 'write',
+ we = 'afterWrite',
+ Ee = [pe, he, me, ge, ve, be, ye, _e, we];
+ function Oe(e) {
+ return e ? (e.nodeName || '').toLowerCase() : null;
+ }
+ function xe(e) {
+ if (null == e) return window;
+ if ('[object Window]' !== e.toString()) {
+ var t = e.ownerDocument;
+ return (t && t.defaultView) || window;
+ }
+ return e;
+ }
+ function Ae(e) {
+ return e instanceof xe(e).Element || e instanceof Element;
+ }
+ function Ce(e) {
+ return e instanceof xe(e).HTMLElement || e instanceof HTMLElement;
+ }
+ function Le(e) {
+ return (
+ 'undefined' != typeof ShadowRoot &&
+ (e instanceof xe(e).ShadowRoot || e instanceof ShadowRoot)
+ );
+ }
+ var Te = {
+ name: 'applyStyles',
+ enabled: !0,
+ phase: 'write',
+ fn: function (e) {
+ var t = e.state;
+ Object.keys(t.elements).forEach(function (e) {
+ var n = t.styles[e] || {},
+ i = t.attributes[e] || {},
+ o = t.elements[e];
+ Ce(o) &&
+ Oe(o) &&
+ (Object.assign(o.style, n),
+ Object.keys(i).forEach(function (e) {
+ var t = i[e];
+ !1 === t
+ ? o.removeAttribute(e)
+ : o.setAttribute(e, !0 === t ? '' : t);
+ }));
+ });
+ },
+ effect: function (e) {
+ var t = e.state,
+ n = {
+ popper: {
+ position: t.options.strategy,
+ left: '0',
+ top: '0',
+ margin: '0'
+ },
+ arrow: { position: 'absolute' },
+ reference: {}
+ };
+ return (
+ Object.assign(t.elements.popper.style, n.popper),
+ (t.styles = n),
+ t.elements.arrow && Object.assign(t.elements.arrow.style, n.arrow),
+ function () {
+ Object.keys(t.elements).forEach(function (e) {
+ var i = t.elements[e],
+ o = t.attributes[e] || {},
+ r = Object.keys(
+ t.styles.hasOwnProperty(e) ? t.styles[e] : n[e]
+ ).reduce(function (e, t) {
+ return (e[t] = ''), e;
+ }, {});
+ Ce(i) &&
+ Oe(i) &&
+ (Object.assign(i.style, r),
+ Object.keys(o).forEach(function (e) {
+ i.removeAttribute(e);
+ }));
+ });
+ }
+ );
+ },
+ requires: ['computeStyles']
+ };
+ function Se(e) {
+ return e.split('-')[0];
+ }
+ var je = Math.max,
+ ke = Math.min,
+ De = Math.round;
+ function Pe() {
+ var e = navigator.userAgentData;
+ return null != e && e.brands && Array.isArray(e.brands)
+ ? e.brands
+ .map(function (e) {
+ return e.brand + '/' + e.version;
+ })
+ .join(' ')
+ : navigator.userAgent;
+ }
+ function Ne() {
+ return !/^((?!chrome|android).)*safari/i.test(Pe());
+ }
+ function Me(e, t, n) {
+ void 0 === t && (t = !1), void 0 === n && (n = !1);
+ var i = e.getBoundingClientRect(),
+ o = 1,
+ r = 1;
+ t &&
+ Ce(e) &&
+ ((o = (e.offsetWidth > 0 && De(i.width) / e.offsetWidth) || 1),
+ (r = (e.offsetHeight > 0 && De(i.height) / e.offsetHeight) || 1));
+ var s = (Ae(e) ? xe(e) : window).visualViewport,
+ a = !Ne() && n,
+ l = (i.left + (a && s ? s.offsetLeft : 0)) / o,
+ c = (i.top + (a && s ? s.offsetTop : 0)) / r,
+ u = i.width / o,
+ f = i.height / r;
+ return {
+ width: u,
+ height: f,
+ top: c,
+ right: l + u,
+ bottom: c + f,
+ left: l,
+ x: l,
+ y: c
+ };
+ }
+ function Be(e) {
+ var t = Me(e),
+ n = e.offsetWidth,
+ i = e.offsetHeight;
+ return (
+ Math.abs(t.width - n) <= 1 && (n = t.width),
+ Math.abs(t.height - i) <= 1 && (i = t.height),
+ { x: e.offsetLeft, y: e.offsetTop, width: n, height: i }
+ );
+ }
+ function Ie(e, t) {
+ var n = t.getRootNode && t.getRootNode();
+ if (e.contains(t)) return !0;
+ if (n && Le(n)) {
+ var i = t;
+ do {
+ if (i && e.isSameNode(i)) return !0;
+ i = i.parentNode || i.host;
+ } while (i);
+ }
+ return !1;
+ }
+ function Fe(e) {
+ return xe(e).getComputedStyle(e);
+ }
+ function He(e) {
+ return ['table', 'td', 'th'].indexOf(Oe(e)) >= 0;
+ }
+ function $e(e) {
+ return ((Ae(e) ? e.ownerDocument : e.document) || window.document)
+ .documentElement;
+ }
+ function ze(e) {
+ return 'html' === Oe(e)
+ ? e
+ : e.assignedSlot || e.parentNode || (Le(e) ? e.host : null) || $e(e);
+ }
+ function We(e) {
+ return Ce(e) && 'fixed' !== Fe(e).position ? e.offsetParent : null;
+ }
+ function qe(e) {
+ for (var t = xe(e), n = We(e); n && He(n) && 'static' === Fe(n).position; )
+ n = We(n);
+ return n &&
+ ('html' === Oe(n) || ('body' === Oe(n) && 'static' === Fe(n).position))
+ ? t
+ : n ||
+ (function (e) {
+ var t = /firefox/i.test(Pe());
+ if (/Trident/i.test(Pe()) && Ce(e) && 'fixed' === Fe(e).position)
+ return null;
+ var n = ze(e);
+ for (
+ Le(n) && (n = n.host);
+ Ce(n) && ['html', 'body'].indexOf(Oe(n)) < 0;
+
+ ) {
+ var i = Fe(n);
+ if (
+ 'none' !== i.transform ||
+ 'none' !== i.perspective ||
+ 'paint' === i.contain ||
+ -1 !== ['transform', 'perspective'].indexOf(i.willChange) ||
+ (t && 'filter' === i.willChange) ||
+ (t && i.filter && 'none' !== i.filter)
+ )
+ return n;
+ n = n.parentNode;
+ }
+ return null;
+ })(e) ||
+ t;
+ }
+ function Re(e) {
+ return ['top', 'bottom'].indexOf(e) >= 0 ? 'x' : 'y';
+ }
+ function Ve(e, t, n) {
+ return je(e, ke(t, n));
+ }
+ function Ye(e) {
+ return Object.assign({}, { top: 0, right: 0, bottom: 0, left: 0 }, e);
+ }
+ function Ue(e, t) {
+ return t.reduce(function (t, n) {
+ return (t[n] = e), t;
+ }, {});
+ }
+ var Ke = {
+ name: 'arrow',
+ enabled: !0,
+ phase: 'main',
+ fn: function (e) {
+ var t,
+ n = e.state,
+ i = e.name,
+ o = e.options,
+ r = n.elements.arrow,
+ s = n.modifiersData.popperOffsets,
+ a = Se(n.placement),
+ l = Re(a),
+ c = [ne, te].indexOf(a) >= 0 ? 'height' : 'width';
+ if (r && s) {
+ var u = (function (e, t) {
+ return Ye(
+ 'number' !=
+ typeof (e =
+ 'function' == typeof e
+ ? e(Object.assign({}, t.rects, { placement: t.placement }))
+ : e)
+ ? e
+ : Ue(e, oe)
+ );
+ })(o.padding, n),
+ f = Be(r),
+ d = 'y' === l ? Z : ne,
+ p = 'y' === l ? ee : te,
+ h =
+ n.rects.reference[c] +
+ n.rects.reference[l] -
+ s[l] -
+ n.rects.popper[c],
+ m = s[l] - n.rects.reference[l],
+ g = qe(r),
+ v = g ? ('y' === l ? g.clientHeight || 0 : g.clientWidth || 0) : 0,
+ b = h / 2 - m / 2,
+ y = u[d],
+ _ = v - f[c] - u[p],
+ w = v / 2 - f[c] / 2 + b,
+ E = Ve(y, w, _),
+ O = l;
+ n.modifiersData[i] = (((t = {})[O] = E), (t.centerOffset = E - w), t);
+ }
+ },
+ effect: function (e) {
+ var t = e.state,
+ n = e.options.element,
+ i = void 0 === n ? '[data-popper-arrow]' : n;
+ null != i &&
+ ('string' != typeof i || (i = t.elements.popper.querySelector(i))) &&
+ Ie(t.elements.popper, i) &&
+ (t.elements.arrow = i);
+ },
+ requires: ['popperOffsets'],
+ requiresIfExists: ['preventOverflow']
+ };
+ function Qe(e) {
+ return e.split('-')[1];
+ }
+ var Xe = { top: 'auto', right: 'auto', bottom: 'auto', left: 'auto' };
+ function Ge(e) {
+ var t,
+ n = e.popper,
+ i = e.popperRect,
+ o = e.placement,
+ r = e.variation,
+ s = e.offsets,
+ a = e.position,
+ l = e.gpuAcceleration,
+ c = e.adaptive,
+ u = e.roundOffsets,
+ f = e.isFixed,
+ d = s.x,
+ p = void 0 === d ? 0 : d,
+ h = s.y,
+ m = void 0 === h ? 0 : h,
+ g = 'function' == typeof u ? u({ x: p, y: m }) : { x: p, y: m };
+ (p = g.x), (m = g.y);
+ var v = s.hasOwnProperty('x'),
+ b = s.hasOwnProperty('y'),
+ y = ne,
+ _ = Z,
+ w = window;
+ if (c) {
+ var E = qe(n),
+ O = 'clientHeight',
+ x = 'clientWidth';
+ if (
+ (E === xe(n) &&
+ 'static' !== Fe((E = $e(n))).position &&
+ 'absolute' === a &&
+ ((O = 'scrollHeight'), (x = 'scrollWidth')),
+ o === Z || ((o === ne || o === te) && r === se))
+ )
+ (_ = ee),
+ (m -=
+ (f && E === w && w.visualViewport
+ ? w.visualViewport.height
+ : E[O]) - i.height),
+ (m *= l ? 1 : -1);
+ if (o === ne || ((o === Z || o === ee) && r === se))
+ (y = te),
+ (p -=
+ (f && E === w && w.visualViewport ? w.visualViewport.width : E[x]) -
+ i.width),
+ (p *= l ? 1 : -1);
+ }
+ var A,
+ C = Object.assign({ position: a }, c && Xe),
+ L =
+ !0 === u
+ ? (function (e, t) {
+ var n = e.x,
+ i = e.y,
+ o = t.devicePixelRatio || 1;
+ return { x: De(n * o) / o || 0, y: De(i * o) / o || 0 };
+ })({ x: p, y: m }, xe(n))
+ : { x: p, y: m };
+ return (
+ (p = L.x),
+ (m = L.y),
+ l
+ ? Object.assign(
+ {},
+ C,
+ (((A = {})[_] = b ? '0' : ''),
+ (A[y] = v ? '0' : ''),
+ (A.transform =
+ (w.devicePixelRatio || 1) <= 1
+ ? 'translate(' + p + 'px, ' + m + 'px)'
+ : 'translate3d(' + p + 'px, ' + m + 'px, 0)'),
+ A)
+ )
+ : Object.assign(
+ {},
+ C,
+ (((t = {})[_] = b ? m + 'px' : ''),
+ (t[y] = v ? p + 'px' : ''),
+ (t.transform = ''),
+ t)
+ )
+ );
+ }
+ var Je = {
+ name: 'computeStyles',
+ enabled: !0,
+ phase: 'beforeWrite',
+ fn: function (e) {
+ var t = e.state,
+ n = e.options,
+ i = n.gpuAcceleration,
+ o = void 0 === i || i,
+ r = n.adaptive,
+ s = void 0 === r || r,
+ a = n.roundOffsets,
+ l = void 0 === a || a,
+ c = {
+ placement: Se(t.placement),
+ variation: Qe(t.placement),
+ popper: t.elements.popper,
+ popperRect: t.rects.popper,
+ gpuAcceleration: o,
+ isFixed: 'fixed' === t.options.strategy
+ };
+ null != t.modifiersData.popperOffsets &&
+ (t.styles.popper = Object.assign(
+ {},
+ t.styles.popper,
+ Ge(
+ Object.assign({}, c, {
+ offsets: t.modifiersData.popperOffsets,
+ position: t.options.strategy,
+ adaptive: s,
+ roundOffsets: l
+ })
+ )
+ )),
+ null != t.modifiersData.arrow &&
+ (t.styles.arrow = Object.assign(
+ {},
+ t.styles.arrow,
+ Ge(
+ Object.assign({}, c, {
+ offsets: t.modifiersData.arrow,
+ position: 'absolute',
+ adaptive: !1,
+ roundOffsets: l
+ })
+ )
+ )),
+ (t.attributes.popper = Object.assign({}, t.attributes.popper, {
+ 'data-popper-placement': t.placement
+ }));
+ },
+ data: {}
+ },
+ Ze = { passive: !0 };
+ var et = {
+ name: 'eventListeners',
+ enabled: !0,
+ phase: 'write',
+ fn: function () {},
+ effect: function (e) {
+ var t = e.state,
+ n = e.instance,
+ i = e.options,
+ o = i.scroll,
+ r = void 0 === o || o,
+ s = i.resize,
+ a = void 0 === s || s,
+ l = xe(t.elements.popper),
+ c = [].concat(t.scrollParents.reference, t.scrollParents.popper);
+ return (
+ r &&
+ c.forEach(function (e) {
+ e.addEventListener('scroll', n.update, Ze);
+ }),
+ a && l.addEventListener('resize', n.update, Ze),
+ function () {
+ r &&
+ c.forEach(function (e) {
+ e.removeEventListener('scroll', n.update, Ze);
+ }),
+ a && l.removeEventListener('resize', n.update, Ze);
+ }
+ );
+ },
+ data: {}
+ },
+ tt = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };
+ function nt(e) {
+ return e.replace(/left|right|bottom|top/g, function (e) {
+ return tt[e];
+ });
+ }
+ var it = { start: 'end', end: 'start' };
+ function ot(e) {
+ return e.replace(/start|end/g, function (e) {
+ return it[e];
+ });
+ }
+ function rt(e) {
+ var t = xe(e);
+ return { scrollLeft: t.pageXOffset, scrollTop: t.pageYOffset };
+ }
+ function st(e) {
+ return Me($e(e)).left + rt(e).scrollLeft;
+ }
+ function at(e) {
+ var t = Fe(e),
+ n = t.overflow,
+ i = t.overflowX,
+ o = t.overflowY;
+ return /auto|scroll|overlay|hidden/.test(n + o + i);
+ }
+ function lt(e) {
+ return ['html', 'body', '#document'].indexOf(Oe(e)) >= 0
+ ? e.ownerDocument.body
+ : Ce(e) && at(e)
+ ? e
+ : lt(ze(e));
+ }
+ function ct(e, t) {
+ var n;
+ void 0 === t && (t = []);
+ var i = lt(e),
+ o = i === (null == (n = e.ownerDocument) ? void 0 : n.body),
+ r = xe(i),
+ s = o ? [r].concat(r.visualViewport || [], at(i) ? i : []) : i,
+ a = t.concat(s);
+ return o ? a : a.concat(ct(ze(s)));
+ }
+ function ut(e) {
+ return Object.assign({}, e, {
+ left: e.x,
+ top: e.y,
+ right: e.x + e.width,
+ bottom: e.y + e.height
+ });
+ }
+ function ft(e, t, n) {
+ return t === le
+ ? ut(
+ (function (e, t) {
+ var n = xe(e),
+ i = $e(e),
+ o = n.visualViewport,
+ r = i.clientWidth,
+ s = i.clientHeight,
+ a = 0,
+ l = 0;
+ if (o) {
+ (r = o.width), (s = o.height);
+ var c = Ne();
+ (c || (!c && 'fixed' === t)) &&
+ ((a = o.offsetLeft), (l = o.offsetTop));
+ }
+ return { width: r, height: s, x: a + st(e), y: l };
+ })(e, n)
+ )
+ : Ae(t)
+ ? (function (e, t) {
+ var n = Me(e, !1, 'fixed' === t);
+ return (
+ (n.top = n.top + e.clientTop),
+ (n.left = n.left + e.clientLeft),
+ (n.bottom = n.top + e.clientHeight),
+ (n.right = n.left + e.clientWidth),
+ (n.width = e.clientWidth),
+ (n.height = e.clientHeight),
+ (n.x = n.left),
+ (n.y = n.top),
+ n
+ );
+ })(t, n)
+ : ut(
+ (function (e) {
+ var t,
+ n = $e(e),
+ i = rt(e),
+ o = null == (t = e.ownerDocument) ? void 0 : t.body,
+ r = je(
+ n.scrollWidth,
+ n.clientWidth,
+ o ? o.scrollWidth : 0,
+ o ? o.clientWidth : 0
+ ),
+ s = je(
+ n.scrollHeight,
+ n.clientHeight,
+ o ? o.scrollHeight : 0,
+ o ? o.clientHeight : 0
+ ),
+ a = -i.scrollLeft + st(e),
+ l = -i.scrollTop;
+ return (
+ 'rtl' === Fe(o || n).direction &&
+ (a += je(n.clientWidth, o ? o.clientWidth : 0) - r),
+ { width: r, height: s, x: a, y: l }
+ );
+ })($e(e))
+ );
+ }
+ function dt(e, t, n, i) {
+ var o =
+ 'clippingParents' === t
+ ? (function (e) {
+ var t = ct(ze(e)),
+ n =
+ ['absolute', 'fixed'].indexOf(Fe(e).position) >= 0 && Ce(e)
+ ? qe(e)
+ : e;
+ return Ae(n)
+ ? t.filter(function (e) {
+ return Ae(e) && Ie(e, n) && 'body' !== Oe(e);
+ })
+ : [];
+ })(e)
+ : [].concat(t),
+ r = [].concat(o, [n]),
+ s = r[0],
+ a = r.reduce(function (t, n) {
+ var o = ft(e, n, i);
+ return (
+ (t.top = je(o.top, t.top)),
+ (t.right = ke(o.right, t.right)),
+ (t.bottom = ke(o.bottom, t.bottom)),
+ (t.left = je(o.left, t.left)),
+ t
+ );
+ }, ft(e, s, i));
+ return (
+ (a.width = a.right - a.left),
+ (a.height = a.bottom - a.top),
+ (a.x = a.left),
+ (a.y = a.top),
+ a
+ );
+ }
+ function pt(e) {
+ var t,
+ n = e.reference,
+ i = e.element,
+ o = e.placement,
+ r = o ? Se(o) : null,
+ s = o ? Qe(o) : null,
+ a = n.x + n.width / 2 - i.width / 2,
+ l = n.y + n.height / 2 - i.height / 2;
+ switch (r) {
+ case Z:
+ t = { x: a, y: n.y - i.height };
+ break;
+ case ee:
+ t = { x: a, y: n.y + n.height };
+ break;
+ case te:
+ t = { x: n.x + n.width, y: l };
+ break;
+ case ne:
+ t = { x: n.x - i.width, y: l };
+ break;
+ default:
+ t = { x: n.x, y: n.y };
+ }
+ var c = r ? Re(r) : null;
+ if (null != c) {
+ var u = 'y' === c ? 'height' : 'width';
+ switch (s) {
+ case re:
+ t[c] = t[c] - (n[u] / 2 - i[u] / 2);
+ break;
+ case se:
+ t[c] = t[c] + (n[u] / 2 - i[u] / 2);
+ }
+ }
+ return t;
+ }
+ function ht(e, t) {
+ void 0 === t && (t = {});
+ var n = t,
+ i = n.placement,
+ o = void 0 === i ? e.placement : i,
+ r = n.strategy,
+ s = void 0 === r ? e.strategy : r,
+ a = n.boundary,
+ l = void 0 === a ? ae : a,
+ c = n.rootBoundary,
+ u = void 0 === c ? le : c,
+ f = n.elementContext,
+ d = void 0 === f ? ce : f,
+ p = n.altBoundary,
+ h = void 0 !== p && p,
+ m = n.padding,
+ g = void 0 === m ? 0 : m,
+ v = Ye('number' != typeof g ? g : Ue(g, oe)),
+ b = d === ce ? ue : ce,
+ y = e.rects.popper,
+ _ = e.elements[h ? b : d],
+ w = dt(Ae(_) ? _ : _.contextElement || $e(e.elements.popper), l, u, s),
+ E = Me(e.elements.reference),
+ O = pt({ reference: E, element: y, placement: o }),
+ x = ut(Object.assign({}, y, O)),
+ A = d === ce ? x : E,
+ C = {
+ top: w.top - A.top + v.top,
+ bottom: A.bottom - w.bottom + v.bottom,
+ left: w.left - A.left + v.left,
+ right: A.right - w.right + v.right
+ },
+ L = e.modifiersData.offset;
+ if (d === ce && L) {
+ var T = L[o];
+ Object.keys(C).forEach(function (e) {
+ var t = [te, ee].indexOf(e) >= 0 ? 1 : -1,
+ n = [Z, ee].indexOf(e) >= 0 ? 'y' : 'x';
+ C[e] += T[n] * t;
+ });
+ }
+ return C;
+ }
+ function mt(e, t) {
+ void 0 === t && (t = {});
+ var n = t,
+ i = n.placement,
+ o = n.boundary,
+ r = n.rootBoundary,
+ s = n.padding,
+ a = n.flipVariations,
+ l = n.allowedAutoPlacements,
+ c = void 0 === l ? de : l,
+ u = Qe(i),
+ f = u
+ ? a
+ ? fe
+ : fe.filter(function (e) {
+ return Qe(e) === u;
+ })
+ : oe,
+ d = f.filter(function (e) {
+ return c.indexOf(e) >= 0;
+ });
+ 0 === d.length && (d = f);
+ var p = d.reduce(function (t, n) {
+ return (
+ (t[n] = ht(e, {
+ placement: n,
+ boundary: o,
+ rootBoundary: r,
+ padding: s
+ })[Se(n)]),
+ t
+ );
+ }, {});
+ return Object.keys(p).sort(function (e, t) {
+ return p[e] - p[t];
+ });
+ }
+ var gt = {
+ name: 'flip',
+ enabled: !0,
+ phase: 'main',
+ fn: function (e) {
+ var t = e.state,
+ n = e.options,
+ i = e.name;
+ if (!t.modifiersData[i]._skip) {
+ for (
+ var o = n.mainAxis,
+ r = void 0 === o || o,
+ s = n.altAxis,
+ a = void 0 === s || s,
+ l = n.fallbackPlacements,
+ c = n.padding,
+ u = n.boundary,
+ f = n.rootBoundary,
+ d = n.altBoundary,
+ p = n.flipVariations,
+ h = void 0 === p || p,
+ m = n.allowedAutoPlacements,
+ g = t.options.placement,
+ v = Se(g),
+ b =
+ l ||
+ (v === g || !h
+ ? [nt(g)]
+ : (function (e) {
+ if (Se(e) === ie) return [];
+ var t = nt(e);
+ return [ot(e), t, ot(t)];
+ })(g)),
+ y = [g].concat(b).reduce(function (e, n) {
+ return e.concat(
+ Se(n) === ie
+ ? mt(t, {
+ placement: n,
+ boundary: u,
+ rootBoundary: f,
+ padding: c,
+ flipVariations: h,
+ allowedAutoPlacements: m
+ })
+ : n
+ );
+ }, []),
+ _ = t.rects.reference,
+ w = t.rects.popper,
+ E = new Map(),
+ O = !0,
+ x = y[0],
+ A = 0;
+ A < y.length;
+ A++
+ ) {
+ var C = y[A],
+ L = Se(C),
+ T = Qe(C) === re,
+ S = [Z, ee].indexOf(L) >= 0,
+ j = S ? 'width' : 'height',
+ k = ht(t, {
+ placement: C,
+ boundary: u,
+ rootBoundary: f,
+ altBoundary: d,
+ padding: c
+ }),
+ D = S ? (T ? te : ne) : T ? ee : Z;
+ _[j] > w[j] && (D = nt(D));
+ var P = nt(D),
+ N = [];
+ if (
+ (r && N.push(k[L] <= 0),
+ a && N.push(k[D] <= 0, k[P] <= 0),
+ N.every(function (e) {
+ return e;
+ }))
+ ) {
+ (x = C), (O = !1);
+ break;
+ }
+ E.set(C, N);
+ }
+ if (O)
+ for (
+ var M = function (e) {
+ var t = y.find(function (t) {
+ var n = E.get(t);
+ if (n)
+ return n.slice(0, e).every(function (e) {
+ return e;
+ });
+ });
+ if (t) return (x = t), 'break';
+ },
+ B = h ? 3 : 1;
+ B > 0;
+ B--
+ ) {
+ if ('break' === M(B)) break;
+ }
+ t.placement !== x &&
+ ((t.modifiersData[i]._skip = !0), (t.placement = x), (t.reset = !0));
+ }
+ },
+ requiresIfExists: ['offset'],
+ data: { _skip: !1 }
+ };
+ function vt(e, t, n) {
+ return (
+ void 0 === n && (n = { x: 0, y: 0 }),
+ {
+ top: e.top - t.height - n.y,
+ right: e.right - t.width + n.x,
+ bottom: e.bottom - t.height + n.y,
+ left: e.left - t.width - n.x
+ }
+ );
+ }
+ function bt(e) {
+ return [Z, te, ee, ne].some(function (t) {
+ return e[t] >= 0;
+ });
+ }
+ var yt = {
+ name: 'hide',
+ enabled: !0,
+ phase: 'main',
+ requiresIfExists: ['preventOverflow'],
+ fn: function (e) {
+ var t = e.state,
+ n = e.name,
+ i = t.rects.reference,
+ o = t.rects.popper,
+ r = t.modifiersData.preventOverflow,
+ s = ht(t, { elementContext: 'reference' }),
+ a = ht(t, { altBoundary: !0 }),
+ l = vt(s, i),
+ c = vt(a, o, r),
+ u = bt(l),
+ f = bt(c);
+ (t.modifiersData[n] = {
+ referenceClippingOffsets: l,
+ popperEscapeOffsets: c,
+ isReferenceHidden: u,
+ hasPopperEscaped: f
+ }),
+ (t.attributes.popper = Object.assign({}, t.attributes.popper, {
+ 'data-popper-reference-hidden': u,
+ 'data-popper-escaped': f
+ }));
+ }
+ };
+ var _t = {
+ name: 'offset',
+ enabled: !0,
+ phase: 'main',
+ requires: ['popperOffsets'],
+ fn: function (e) {
+ var t = e.state,
+ n = e.options,
+ i = e.name,
+ o = n.offset,
+ r = void 0 === o ? [0, 0] : o,
+ s = de.reduce(function (e, n) {
+ return (
+ (e[n] = (function (e, t, n) {
+ var i = Se(e),
+ o = [ne, Z].indexOf(i) >= 0 ? -1 : 1,
+ r =
+ 'function' == typeof n
+ ? n(Object.assign({}, t, { placement: e }))
+ : n,
+ s = r[0],
+ a = r[1];
+ return (
+ (s = s || 0),
+ (a = (a || 0) * o),
+ [ne, te].indexOf(i) >= 0 ? { x: a, y: s } : { x: s, y: a }
+ );
+ })(n, t.rects, r)),
+ e
+ );
+ }, {}),
+ a = s[t.placement],
+ l = a.x,
+ c = a.y;
+ null != t.modifiersData.popperOffsets &&
+ ((t.modifiersData.popperOffsets.x += l),
+ (t.modifiersData.popperOffsets.y += c)),
+ (t.modifiersData[i] = s);
+ }
+ };
+ var wt = {
+ name: 'popperOffsets',
+ enabled: !0,
+ phase: 'read',
+ fn: function (e) {
+ var t = e.state,
+ n = e.name;
+ t.modifiersData[n] = pt({
+ reference: t.rects.reference,
+ element: t.rects.popper,
+ placement: t.placement
+ });
+ },
+ data: {}
+ };
+ var Et = {
+ name: 'preventOverflow',
+ enabled: !0,
+ phase: 'main',
+ fn: function (e) {
+ var t = e.state,
+ n = e.options,
+ i = e.name,
+ o = n.mainAxis,
+ r = void 0 === o || o,
+ s = n.altAxis,
+ a = void 0 !== s && s,
+ l = n.boundary,
+ c = n.rootBoundary,
+ u = n.altBoundary,
+ f = n.padding,
+ d = n.tether,
+ p = void 0 === d || d,
+ h = n.tetherOffset,
+ m = void 0 === h ? 0 : h,
+ g = ht(t, { boundary: l, rootBoundary: c, padding: f, altBoundary: u }),
+ v = Se(t.placement),
+ b = Qe(t.placement),
+ y = !b,
+ _ = Re(v),
+ w = 'x' === _ ? 'y' : 'x',
+ E = t.modifiersData.popperOffsets,
+ O = t.rects.reference,
+ x = t.rects.popper,
+ A =
+ 'function' == typeof m
+ ? m(Object.assign({}, t.rects, { placement: t.placement }))
+ : m,
+ C =
+ 'number' == typeof A
+ ? { mainAxis: A, altAxis: A }
+ : Object.assign({ mainAxis: 0, altAxis: 0 }, A),
+ L = t.modifiersData.offset ? t.modifiersData.offset[t.placement] : null,
+ T = { x: 0, y: 0 };
+ if (E) {
+ if (r) {
+ var S,
+ j = 'y' === _ ? Z : ne,
+ k = 'y' === _ ? ee : te,
+ D = 'y' === _ ? 'height' : 'width',
+ P = E[_],
+ N = P + g[j],
+ M = P - g[k],
+ B = p ? -x[D] / 2 : 0,
+ I = b === re ? O[D] : x[D],
+ F = b === re ? -x[D] : -O[D],
+ H = t.elements.arrow,
+ $ = p && H ? Be(H) : { width: 0, height: 0 },
+ z = t.modifiersData['arrow#persistent']
+ ? t.modifiersData['arrow#persistent'].padding
+ : { top: 0, right: 0, bottom: 0, left: 0 },
+ W = z[j],
+ q = z[k],
+ R = Ve(0, O[D], $[D]),
+ V = y ? O[D] / 2 - B - R - W - C.mainAxis : I - R - W - C.mainAxis,
+ Y = y ? -O[D] / 2 + B + R + q + C.mainAxis : F + R + q + C.mainAxis,
+ U = t.elements.arrow && qe(t.elements.arrow),
+ K = U ? ('y' === _ ? U.clientTop || 0 : U.clientLeft || 0) : 0,
+ Q = null != (S = null == L ? void 0 : L[_]) ? S : 0,
+ X = P + Y - Q,
+ G = Ve(p ? ke(N, P + V - Q - K) : N, P, p ? je(M, X) : M);
+ (E[_] = G), (T[_] = G - P);
+ }
+ if (a) {
+ var J,
+ ie = 'x' === _ ? Z : ne,
+ oe = 'x' === _ ? ee : te,
+ se = E[w],
+ ae = 'y' === w ? 'height' : 'width',
+ le = se + g[ie],
+ ce = se - g[oe],
+ ue = -1 !== [Z, ne].indexOf(v),
+ fe = null != (J = null == L ? void 0 : L[w]) ? J : 0,
+ de = ue ? le : se - O[ae] - x[ae] - fe + C.altAxis,
+ pe = ue ? se + O[ae] + x[ae] - fe - C.altAxis : ce,
+ he =
+ p && ue
+ ? (function (e, t, n) {
+ var i = Ve(e, t, n);
+ return i > n ? n : i;
+ })(de, se, pe)
+ : Ve(p ? de : le, se, p ? pe : ce);
+ (E[w] = he), (T[w] = he - se);
+ }
+ t.modifiersData[i] = T;
+ }
+ },
+ requiresIfExists: ['offset']
+ };
+ function Ot(e, t, n) {
+ void 0 === n && (n = !1);
+ var i,
+ o,
+ r = Ce(t),
+ s =
+ Ce(t) &&
+ (function (e) {
+ var t = e.getBoundingClientRect(),
+ n = De(t.width) / e.offsetWidth || 1,
+ i = De(t.height) / e.offsetHeight || 1;
+ return 1 !== n || 1 !== i;
+ })(t),
+ a = $e(t),
+ l = Me(e, s, n),
+ c = { scrollLeft: 0, scrollTop: 0 },
+ u = { x: 0, y: 0 };
+ return (
+ (r || (!r && !n)) &&
+ (('body' !== Oe(t) || at(a)) &&
+ (c =
+ (i = t) !== xe(i) && Ce(i)
+ ? { scrollLeft: (o = i).scrollLeft, scrollTop: o.scrollTop }
+ : rt(i)),
+ Ce(t)
+ ? (((u = Me(t, !0)).x += t.clientLeft), (u.y += t.clientTop))
+ : a && (u.x = st(a))),
+ {
+ x: l.left + c.scrollLeft - u.x,
+ y: l.top + c.scrollTop - u.y,
+ width: l.width,
+ height: l.height
+ }
+ );
+ }
+ function xt(e) {
+ var t = new Map(),
+ n = new Set(),
+ i = [];
+ function o(e) {
+ n.add(e.name),
+ []
+ .concat(e.requires || [], e.requiresIfExists || [])
+ .forEach(function (e) {
+ if (!n.has(e)) {
+ var i = t.get(e);
+ i && o(i);
+ }
+ }),
+ i.push(e);
+ }
+ return (
+ e.forEach(function (e) {
+ t.set(e.name, e);
+ }),
+ e.forEach(function (e) {
+ n.has(e.name) || o(e);
+ }),
+ i
+ );
+ }
+ var At = { placement: 'bottom', modifiers: [], strategy: 'absolute' };
+ function Ct() {
+ for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)
+ t[n] = arguments[n];
+ return !t.some(function (e) {
+ return !(e && 'function' == typeof e.getBoundingClientRect);
+ });
+ }
+ function Lt(e) {
+ void 0 === e && (e = {});
+ var t = e,
+ n = t.defaultModifiers,
+ i = void 0 === n ? [] : n,
+ o = t.defaultOptions,
+ r = void 0 === o ? At : o;
+ return function (e, t, n) {
+ void 0 === n && (n = r);
+ var o,
+ s,
+ a = {
+ placement: 'bottom',
+ orderedModifiers: [],
+ options: Object.assign({}, At, r),
+ modifiersData: {},
+ elements: { reference: e, popper: t },
+ attributes: {},
+ styles: {}
+ },
+ l = [],
+ c = !1,
+ u = {
+ state: a,
+ setOptions: function (n) {
+ var o = 'function' == typeof n ? n(a.options) : n;
+ f(),
+ (a.options = Object.assign({}, r, a.options, o)),
+ (a.scrollParents = {
+ reference: Ae(e)
+ ? ct(e)
+ : e.contextElement
+ ? ct(e.contextElement)
+ : [],
+ popper: ct(t)
+ });
+ var s,
+ c,
+ d = (function (e) {
+ var t = xt(e);
+ return Ee.reduce(function (e, n) {
+ return e.concat(
+ t.filter(function (e) {
+ return e.phase === n;
+ })
+ );
+ }, []);
+ })(
+ ((s = [].concat(i, a.options.modifiers)),
+ (c = s.reduce(function (e, t) {
+ var n = e[t.name];
+ return (
+ (e[t.name] = n
+ ? Object.assign({}, n, t, {
+ options: Object.assign({}, n.options, t.options),
+ data: Object.assign({}, n.data, t.data)
+ })
+ : t),
+ e
+ );
+ }, {})),
+ Object.keys(c).map(function (e) {
+ return c[e];
+ }))
+ );
+ return (
+ (a.orderedModifiers = d.filter(function (e) {
+ return e.enabled;
+ })),
+ a.orderedModifiers.forEach(function (e) {
+ var t = e.name,
+ n = e.options,
+ i = void 0 === n ? {} : n,
+ o = e.effect;
+ if ('function' == typeof o) {
+ var r = o({ state: a, name: t, instance: u, options: i }),
+ s = function () {};
+ l.push(r || s);
+ }
+ }),
+ u.update()
+ );
+ },
+ forceUpdate: function () {
+ if (!c) {
+ var e = a.elements,
+ t = e.reference,
+ n = e.popper;
+ if (Ct(t, n)) {
+ (a.rects = {
+ reference: Ot(t, qe(n), 'fixed' === a.options.strategy),
+ popper: Be(n)
+ }),
+ (a.reset = !1),
+ (a.placement = a.options.placement),
+ a.orderedModifiers.forEach(function (e) {
+ return (a.modifiersData[e.name] = Object.assign(
+ {},
+ e.data
+ ));
+ });
+ for (var i = 0; i < a.orderedModifiers.length; i++)
+ if (!0 !== a.reset) {
+ var o = a.orderedModifiers[i],
+ r = o.fn,
+ s = o.options,
+ l = void 0 === s ? {} : s,
+ f = o.name;
+ 'function' == typeof r &&
+ (a =
+ r({ state: a, options: l, name: f, instance: u }) || a);
+ } else (a.reset = !1), (i = -1);
+ }
+ }
+ },
+ update:
+ ((o = function () {
+ return new Promise(function (e) {
+ u.forceUpdate(), e(a);
+ });
+ }),
+ function () {
+ return (
+ s ||
+ (s = new Promise(function (e) {
+ Promise.resolve().then(function () {
+ (s = void 0), e(o());
+ });
+ })),
+ s
+ );
+ }),
+ destroy: function () {
+ f(), (c = !0);
+ }
+ };
+ if (!Ct(e, t)) return u;
+ function f() {
+ l.forEach(function (e) {
+ return e();
+ }),
+ (l = []);
+ }
+ return (
+ u.setOptions(n).then(function (e) {
+ !c && n.onFirstUpdate && n.onFirstUpdate(e);
+ }),
+ u
+ );
+ };
+ }
+ var Tt = Lt(),
+ St = Lt({ defaultModifiers: [et, wt, Je, Te] }),
+ jt = Lt({ defaultModifiers: [et, wt, Je, Te, _t, gt, Et, Ke, yt] }),
+ kt = Object.freeze({
+ __proto__: null,
+ afterMain: be,
+ afterRead: me,
+ afterWrite: we,
+ applyStyles: Te,
+ arrow: Ke,
+ auto: ie,
+ basePlacements: oe,
+ beforeMain: ge,
+ beforeRead: pe,
+ beforeWrite: ye,
+ bottom: ee,
+ clippingParents: ae,
+ computeStyles: Je,
+ createPopper: jt,
+ createPopperBase: Tt,
+ createPopperLite: St,
+ detectOverflow: ht,
+ end: se,
+ eventListeners: et,
+ flip: gt,
+ hide: yt,
+ left: ne,
+ main: ve,
+ modifierPhases: Ee,
+ offset: _t,
+ placements: de,
+ popper: ce,
+ popperGenerator: Lt,
+ popperOffsets: wt,
+ preventOverflow: Et,
+ read: he,
+ reference: ue,
+ right: te,
+ start: re,
+ top: Z,
+ variationPlacements: fe,
+ viewport: le,
+ write: _e
+ });
+ const Dt = {
+ '*': ['class', 'dir', 'id', 'lang', 'role', /^aria-[\w-]*$/i],
+ a: ['target', 'href', 'title', 'rel'],
+ area: [],
+ b: [],
+ br: [],
+ col: [],
+ code: [],
+ dd: [],
+ div: [],
+ dl: [],
+ dt: [],
+ em: [],
+ hr: [],
+ h1: [],
+ h2: [],
+ h3: [],
+ h4: [],
+ h5: [],
+ h6: [],
+ i: [],
+ img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],
+ li: [],
+ ol: [],
+ p: [],
+ pre: [],
+ s: [],
+ small: [],
+ span: [],
+ sub: [],
+ sup: [],
+ strong: [],
+ u: [],
+ ul: []
+ },
+ Pt = new Set([
+ 'background',
+ 'cite',
+ 'href',
+ 'itemtype',
+ 'longdesc',
+ 'poster',
+ 'src',
+ 'xlink:href'
+ ]),
+ Nt = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,
+ Mt = (e, t) => {
+ const n = e.nodeName.toLowerCase();
+ return t.includes(n)
+ ? !Pt.has(n) || Boolean(Nt.test(e.nodeValue))
+ : t.filter((e) => e instanceof RegExp).some((e) => e.test(n));
+ };
+ const Bt = {
+ allowList: Dt,
+ content: {},
+ extraClass: '',
+ html: !1,
+ sanitize: !0,
+ sanitizeFn: null,
+ template: ''
+ },
+ It = {
+ allowList: 'object',
+ content: 'object',
+ extraClass: '(string|function)',
+ html: 'boolean',
+ sanitize: 'boolean',
+ sanitizeFn: '(null|function)',
+ template: 'string'
+ },
+ Ft = {
+ entry: '(string|element|function|null)',
+ selector: '(string|element)'
+ };
+ class Ht extends N {
+ constructor(e) {
+ super(), (this._config = this._getConfig(e));
+ }
+ static get Default() {
+ return Bt;
+ }
+ static get DefaultType() {
+ return It;
+ }
+ static get NAME() {
+ return 'TemplateFactory';
+ }
+ getContent() {
+ return Object.values(this._config.content)
+ .map((e) => this._resolvePossibleFunction(e))
+ .filter(Boolean);
+ }
+ hasContent() {
+ return this.getContent().length > 0;
+ }
+ changeContent(e) {
+ return (
+ this._checkContent(e),
+ (this._config.content = { ...this._config.content, ...e }),
+ this
+ );
+ }
+ toHtml() {
+ const e = document.createElement('div');
+ e.innerHTML = this._maybeSanitize(this._config.template);
+ for (const [t, n] of Object.entries(this._config.content))
+ this._setContent(e, n, t);
+ const t = e.children[0],
+ n = this._resolvePossibleFunction(this._config.extraClass);
+ return n && t.classList.add(...n.split(' ')), t;
+ }
+ _typeCheckConfig(e) {
+ super._typeCheckConfig(e), this._checkContent(e.content);
+ }
+ _checkContent(e) {
+ for (const [t, n] of Object.entries(e))
+ super._typeCheckConfig({ selector: t, entry: n }, Ft);
+ }
+ _setContent(e, t, n) {
+ const i = I.findOne(n, e);
+ i &&
+ ((t = this._resolvePossibleFunction(t))
+ ? o(t)
+ ? this._putElementInTemplate(r(t), i)
+ : this._config.html
+ ? (i.innerHTML = this._maybeSanitize(t))
+ : (i.textContent = t)
+ : i.remove());
+ }
+ _maybeSanitize(e) {
+ return this._config.sanitize
+ ? (function (e, t, n) {
+ if (!e.length) return e;
+ if (n && 'function' == typeof n) return n(e);
+ const i = new window.DOMParser().parseFromString(e, 'text/html'),
+ o = [].concat(...i.body.querySelectorAll('*'));
+ for (const e of o) {
+ const n = e.nodeName.toLowerCase();
+ if (!Object.keys(t).includes(n)) {
+ e.remove();
+ continue;
+ }
+ const i = [].concat(...e.attributes),
+ o = [].concat(t['*'] || [], t[n] || []);
+ for (const t of i) Mt(t, o) || e.removeAttribute(t.nodeName);
+ }
+ return i.body.innerHTML;
+ })(e, this._config.allowList, this._config.sanitizeFn)
+ : e;
+ }
+ _resolvePossibleFunction(e) {
+ return d(e, [this]);
+ }
+ _putElementInTemplate(e, t) {
+ if (this._config.html) return (t.innerHTML = ''), void t.append(e);
+ t.textContent = e.textContent;
+ }
+ }
+ const $t = new Set(['sanitize', 'allowList', 'sanitizeFn']),
+ zt = 'fade',
+ Wt = 'show',
+ qt = '.tooltip-inner',
+ Rt = '.modal',
+ Vt = 'hide.bs.modal',
+ Yt = 'hover',
+ Ut = 'focus',
+ Kt = {
+ AUTO: 'auto',
+ TOP: 'top',
+ RIGHT: u() ? 'left' : 'right',
+ BOTTOM: 'bottom',
+ LEFT: u() ? 'right' : 'left'
+ },
+ Qt = {
+ allowList: Dt,
+ animation: !0,
+ boundary: 'clippingParents',
+ container: !1,
+ customClass: '',
+ delay: 0,
+ fallbackPlacements: ['top', 'right', 'bottom', 'left'],
+ html: !1,
+ offset: [0, 6],
+ placement: 'top',
+ popperConfig: null,
+ sanitize: !0,
+ sanitizeFn: null,
+ selector: !1,
+ template:
+ '=0,j=S?"width":"height",k=pe(e,{placement:C,boundary:u,rootBoundary:f,altBoundary:d,padding:c}),D=S?L?tt:et:L?Z:J;_[j]>w[j]&&(D=ee(D));var P=ee(D),M=[];if(r&&M.push(k[T]<=0),a&&M.push(k[D]<=0,k[P]<=0),M.every((function(t){return t}))){x=C,O=!1;break}E.set(C,M)}if(O)for(var N=function(t){var e=y.find((function(e){var n=E.get(e);if(n)return n.slice(0,t).every((function(t){return t}))}));if(e)return x=e,"break"},B=h?3:1;B>0;B--){if("break"===N(B))break}e.placement!==x&&(e.modifiersData[i]._skip=!0,e.placement=x,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function ge(t,e,n){return void 0===n&&(n={x:0,y:0}),{top:t.top-e.height-n.y,right:t.right-e.width+n.x,bottom:t.bottom-e.height+n.y,left:t.left-e.width-n.x}}function ve(t){return[J,tt,Z,et].some((function(e){return t[e]>=0}))}var be={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,n=t.name,i=e.rects.reference,o=e.rects.popper,r=e.modifiersData.preventOverflow,s=pe(e,{elementContext:"reference"}),a=pe(e,{altBoundary:!0}),l=ge(s,i),c=ge(a,o,r),u=ve(l),f=ve(c);e.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:u,hasPopperEscaped:f},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":f})}};var ye={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.offset,r=void 0===o?[0,0]:o,s=ft.reduce((function(t,n){return t[n]=function(t,e,n){var i=Lt(t),o=[et,J].indexOf(i)>=0?-1:1,r="function"==typeof n?n(Object.assign({},e,{placement:t})):n,s=r[0],a=r[1];return s=s||0,a=(a||0)*o,[et,tt].indexOf(i)>=0?{x:a,y:s}:{x:s,y:a}}(n,e.rects,r),t}),{}),a=s[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[i]=s}};var _e={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,n=t.name;e.modifiersData[n]=de({reference:e.rects.reference,element:e.rects.popper,placement:e.placement})},data:{}};var we={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0!==s&&s,l=n.boundary,c=n.rootBoundary,u=n.altBoundary,f=n.padding,d=n.tether,p=void 0===d||d,h=n.tetherOffset,m=void 0===h?0:h,g=pe(e,{boundary:l,rootBoundary:c,padding:f,altBoundary:u}),v=Lt(e.placement),b=Kt(e.placement),y=!b,_=qt(v),w="x"===_?"y":"x",E=e.modifiersData.popperOffsets,O=e.rects.reference,x=e.rects.popper,A="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,C="number"==typeof A?{mainAxis:A,altAxis:A}:Object.assign({mainAxis:0,altAxis:0},A),T=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,L={x:0,y:0};if(E){if(r){var S,j="y"===_?J:et,k="y"===_?Z:tt,D="y"===_?"height":"width",P=E[_],M=P+g[j],N=P-g[k],B=p?-x[D]/2:0,I=b===ot?O[D]:x[D],F=b===ot?-x[D]:-O[D],H=e.elements.arrow,$=p&&H?Nt(H):{width:0,height:0},R=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},z=R[j],q=R[k],W=Wt(0,O[D],$[D]),V=y?O[D]/2-B-W-z-C.mainAxis:I-W-z-C.mainAxis,Y=y?-O[D]/2+B+W+q+C.mainAxis:F+W+q+C.mainAxis,U=e.elements.arrow&&zt(e.elements.arrow),K=U?"y"===_?U.clientTop||0:U.clientLeft||0:0,Q=null!=(S=null==T?void 0:T[_])?S:0,X=P+Y-Q,G=Wt(p?jt(M,P+V-Q-K):M,P,p?St(N,X):N);E[_]=G,L[_]=G-P}if(a){var nt,it="x"===_?J:et,rt="x"===_?Z:tt,st=E[w],at="y"===w?"height":"width",lt=st+g[it],ct=st-g[rt],ut=-1!==[J,et].indexOf(v),ft=null!=(nt=null==T?void 0:T[w])?nt:0,dt=ut?lt:st-O[at]-x[at]-ft+C.altAxis,pt=ut?st+O[at]+x[at]-ft-C.altAxis:ct,ht=p&&ut?function(t,e,n){var i=Wt(t,e,n);return i>n?n:i}(dt,st,pt):Wt(p?dt:lt,st,p?pt:ct);E[w]=ht,L[w]=ht-st}e.modifiersData[i]=L}},requiresIfExists:["offset"]};function Ee(t,e,n){void 0===n&&(n=!1);var i,o,r=At(e),s=At(e)&&function(t){var e=t.getBoundingClientRect(),n=kt(e.width)/t.offsetWidth||1,i=kt(e.height)/t.offsetHeight||1;return 1!==n||1!==i}(e),a=Ht(e),l=Mt(t,s,n),c={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(r||!r&&!n)&&(("body"!==Et(e)||se(a))&&(c=(i=e)!==Ot(i)&&At(i)?{scrollLeft:(o=i).scrollLeft,scrollTop:o.scrollTop}:oe(i)),At(e)?((u=Mt(e,!0)).x+=e.clientLeft,u.y+=e.clientTop):a&&(u.x=re(a))),{x:l.left+c.scrollLeft-u.x,y:l.top+c.scrollTop-u.y,width:l.width,height:l.height}}function Oe(t){var e=new Map,n=new Set,i=[];function o(t){n.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!n.has(t)){var i=e.get(t);i&&o(i)}})),i.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){n.has(t.name)||o(t)})),i}var xe={placement:"bottom",modifiers:[],strategy:"absolute"};function Ae(){for(var t=arguments.length,e=new Array(t),n=0;n{const n=t.nodeName.toLowerCase();return e.includes(n)?!De.has(n)||Boolean(Pe.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(n)))};const Ne={allowList:ke,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:""},Be={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Ie={entry:"(string|element|function|null)",selector:"(string|element)"};class Fe extends M{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Ne}static get DefaultType(){return Be}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,n]of Object.entries(this._config.content))this._setContent(t,n,e);const e=t.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&e.classList.add(...n.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,n]of Object.entries(t))super._typeCheckConfig({selector:e,entry:n},Ie)}_setContent(t,e,n){const i=I.findOne(n,t);i&&((e=this._resolvePossibleFunction(e))?o(e)?this._putElementInTemplate(r(e),i):this._config.html?i.innerHTML=this._maybeSanitize(e):i.textContent=e:i.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,n){if(!t.length)return t;if(n&&"function"==typeof n)return n(t);const i=(new window.DOMParser).parseFromString(t,"text/html"),o=[].concat(...i.body.querySelectorAll("*"));for(const t of o){const n=t.nodeName.toLowerCase();if(!Object.keys(e).includes(n)){t.remove();continue}const i=[].concat(...t.attributes),o=[].concat(e["*"]||[],e[n]||[]);for(const e of i)Me(e,o)||t.removeAttribute(e.nodeName)}return i.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return d(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const He=new Set(["sanitize","allowList","sanitizeFn"]),$e="fade",Re="show",ze=".tooltip-inner",qe=".modal",We="hide.bs.modal",Ve="hover",Ye="focus",Ue={AUTO:"auto",TOP:"top",RIGHT:u()?"left":"right",BOTTOM:"bottom",LEFT:u()?"right":"left"},Ke={allowList:ke,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'e.right||t.clientYe.bottom)&&this.hidePopup()}static initComponents(){this.initBar(),[...un].forEach((t=>{t.onclick=()=>this.showPopup()})),fn.onclick=t=>this.clickBackdrop(t),dn.onclick=()=>this.hidePopup(),fn.oncancel=t=>{t.preventDefault(),this.hidePopup()}}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}}var gn={_:!0},vn={_:48};sn(mn,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:rn(an=mn,an,vn)._});sn(class{static refresh(){tocbot.refresh(this.options)}static init(){document.getElementById("toc-wrapper")&&tocbot.init(this.options)}},"options",{tocSelector:"#toc",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,headingsOffset:32}),matchMedia("(min-width: 1200px)"),Theme.getThemeMapper("default","dark");const bn=document.getElementById("mode-toggle");const yn=document.getElementById("sidebar"),_n=document.getElementById("sidebar-trigger"),wn=document.getElementById("mask");class En{static toggle(){On._=rn(En,this,!rn(En,this,On)._),document.body.toggleAttribute("sidebar-display",rn(En,this,On)._),yn.classList.toggle("z-2",rn(En,this,On)._),wn.classList.toggle("d-none",!rn(En,this,On)._)}}var On={_:!1};const xn=document.getElementById("sidebar-trigger"),An=document.getElementById("search-trigger"),Cn=document.getElementById("search-cancel"),Tn=document.querySelectorAll("#main-wrapper>.container>.row"),Ln=document.getElementById("topbar-title"),Sn=document.getElementById("search"),jn=document.getElementById("search-result-wrapper"),kn=document.getElementById("search-results"),Dn=document.getElementById("search-input"),Pn=document.getElementById("search-hints"),Mn="d-block",Nn="d-none",Bn="input-focus",In="d-flex";class Fn{static on(){xn.classList.add(Nn),Ln.classList.add(Nn),An.classList.add(Nn),Sn.classList.add(In),Cn.classList.add(Mn)}static off(){Cn.classList.remove(Mn),Sn.classList.remove(In),xn.classList.remove(Nn),Ln.classList.remove(Nn),An.classList.remove(Nn)}}class Hn{static on(){this.resultVisible||(jn.classList.remove(Nn),Tn.forEach((t=>{t.classList.add(Nn)})),this.resultVisible=!0)}static off(){this.resultVisible&&(kn.innerHTML="",Pn.classList.contains(Nn)&&Pn.classList.remove(Nn),jn.classList.add(Nn),Tn.forEach((t=>{t.classList.remove(Nn)})),Dn.textContent="",this.resultVisible=!1)}}function $n(){return Cn.classList.contains(Mn)}sn(Hn,"resultVisible",!1),function(){const t=document.querySelectorAll("article img");if(0===t.length)return;t.forEach((t=>{t.addEventListener("load",en)})),document.querySelectorAll('article img[loading="lazy"]').forEach((t=>{t.complete&&tn.call(t,Ze.SHIMMER)}));const e=document.querySelectorAll(`article img[${Je}="true"]`);e.length&&e.forEach((t=>{nn.call(t)}))}(),dayjs.locale(on.locale),dayjs.extend(window.dayjs_plugin_localizedFormat),document.querySelectorAll(`[${on.attrTimestamp}]`).forEach((t=>{const e=dayjs.unix(on.getTimestamp(t)),n=e.format(on.getDateFormat(t));if(t.textContent=n,t.removeAttribute(on.attrTimestamp),t.removeAttribute(on.attrDateFormat),t.hasAttribute("data-bs-toggle")&&"tooltip"===t.getAttribute("data-bs-toggle")){const n=e.format("llll");t.setAttribute("data-bs-title",n)}})),_n.onclick=wn.onclick=()=>En.toggle(),An.addEventListener("click",(()=>{Fn.on(),Hn.on(),Dn.focus()})),Cn.addEventListener("click",(()=>{Fn.off(),Hn.off()})),Dn.addEventListener("focus",(()=>{Sn.classList.add(Bn)})),Dn.addEventListener("focusout",(()=>{Sn.classList.remove(Bn)})),Dn.addEventListener("input",(()=>{""===Dn.value?$n()?Pn.classList.remove(Nn):Hn.off():(Hn.on(),$n()&&Pn.classList.add(Nn))})),bn&&bn.addEventListener("click",(()=>{Theme.flip()})),function(){const t=document.getElementById("back-to-top");window.addEventListener("scroll",(()=>{window.scrollY>50?t.classList.add("show"):t.classList.remove("show")})),t.addEventListener("click",(()=>{window.scrollTo({top:0})}))}(),[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map((t=>new Xe(t)))}();
+!(function () {
+ 'use strict';
+ const t = new Map();
+ var e = {
+ set(e, n, i) {
+ t.has(e) || t.set(e, new Map());
+ const o = t.get(e);
+ o.has(n) || 0 === o.size
+ ? o.set(n, i)
+ : console.error(
+ `Bootstrap doesn't allow more than one instance per element. Bound instance: ${
+ Array.from(o.keys())[0]
+ }.`
+ );
+ },
+ get: (e, n) => (t.has(e) && t.get(e).get(n)) || null,
+ remove(e, n) {
+ if (!t.has(e)) return;
+ const i = t.get(e);
+ i.delete(n), 0 === i.size && t.delete(e);
+ }
+ };
+ const n = 'transitionend',
+ i = (t) => (
+ t &&
+ window.CSS &&
+ window.CSS.escape &&
+ (t = t.replace(/#([^\s"#']+)/g, (t, e) => `#${CSS.escape(e)}`)),
+ t
+ ),
+ o = (t) =>
+ !(!t || 'object' != typeof t) &&
+ (void 0 !== t.jquery && (t = t[0]), void 0 !== t.nodeType),
+ r = (t) =>
+ o(t)
+ ? t.jquery
+ ? t[0]
+ : t
+ : 'string' == typeof t && t.length > 0
+ ? document.querySelector(i(t))
+ : null,
+ s = (t) => {
+ if (!document.documentElement.attachShadow) return null;
+ if ('function' == typeof t.getRootNode) {
+ const e = t.getRootNode();
+ return e instanceof ShadowRoot ? e : null;
+ }
+ return t instanceof ShadowRoot
+ ? t
+ : t.parentNode
+ ? s(t.parentNode)
+ : null;
+ },
+ a = () => {},
+ l = () =>
+ window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')
+ ? window.jQuery
+ : null,
+ c = [],
+ u = () => 'rtl' === document.documentElement.dir,
+ f = (t) => {
+ var e;
+ (e = () => {
+ const e = l();
+ if (e) {
+ const n = t.NAME,
+ i = e.fn[n];
+ (e.fn[n] = t.jQueryInterface),
+ (e.fn[n].Constructor = t),
+ (e.fn[n].noConflict = () => ((e.fn[n] = i), t.jQueryInterface));
+ }
+ }),
+ 'loading' === document.readyState
+ ? (c.length ||
+ document.addEventListener('DOMContentLoaded', () => {
+ for (const t of c) t();
+ }),
+ c.push(e))
+ : e();
+ },
+ d = function (t) {
+ let e =
+ arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : t;
+ return 'function' == typeof t
+ ? t(
+ ...(arguments.length > 1 && void 0 !== arguments[1]
+ ? arguments[1]
+ : [])
+ )
+ : e;
+ },
+ p = function (t, e) {
+ if (!(!(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]))
+ return void d(t);
+ const i =
+ ((t) => {
+ if (!t) return 0;
+ let { transitionDuration: e, transitionDelay: n } =
+ window.getComputedStyle(t);
+ const i = Number.parseFloat(e),
+ o = Number.parseFloat(n);
+ return i || o
+ ? ((e = e.split(',')[0]),
+ (n = n.split(',')[0]),
+ 1e3 * (Number.parseFloat(e) + Number.parseFloat(n)))
+ : 0;
+ })(e) + 5;
+ let o = !1;
+ const r = (i) => {
+ let { target: s } = i;
+ s === e && ((o = !0), e.removeEventListener(n, r), d(t));
+ };
+ e.addEventListener(n, r),
+ setTimeout(() => {
+ o || e.dispatchEvent(new Event(n));
+ }, i);
+ },
+ h = /[^.]*(?=\..*)\.|.*/,
+ m = /\..*/,
+ g = /::\d+$/,
+ v = {};
+ let b = 1;
+ const y = { mouseenter: 'mouseover', mouseleave: 'mouseout' },
+ _ = new Set([
+ 'click',
+ 'dblclick',
+ 'mouseup',
+ 'mousedown',
+ 'contextmenu',
+ 'mousewheel',
+ 'DOMMouseScroll',
+ 'mouseover',
+ 'mouseout',
+ 'mousemove',
+ 'selectstart',
+ 'selectend',
+ 'keydown',
+ 'keypress',
+ 'keyup',
+ 'orientationchange',
+ 'touchstart',
+ 'touchmove',
+ 'touchend',
+ 'touchcancel',
+ 'pointerdown',
+ 'pointermove',
+ 'pointerup',
+ 'pointerleave',
+ 'pointercancel',
+ 'gesturestart',
+ 'gesturechange',
+ 'gestureend',
+ 'focus',
+ 'blur',
+ 'change',
+ 'reset',
+ 'select',
+ 'submit',
+ 'focusin',
+ 'focusout',
+ 'load',
+ 'unload',
+ 'beforeunload',
+ 'resize',
+ 'move',
+ 'DOMContentLoaded',
+ 'readystatechange',
+ 'error',
+ 'abort',
+ 'scroll'
+ ]);
+ function w(t, e) {
+ return (e && `${e}::${b++}`) || t.uidEvent || b++;
+ }
+ function E(t) {
+ const e = w(t);
+ return (t.uidEvent = e), (v[e] = v[e] || {}), v[e];
+ }
+ function O(t, e) {
+ let n =
+ arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null;
+ return Object.values(t).find(
+ (t) => t.callable === e && t.delegationSelector === n
+ );
+ }
+ function x(t, e, n) {
+ const i = 'string' == typeof e,
+ o = i ? n : e || n;
+ let r = L(t);
+ return _.has(r) || (r = t), [i, o, r];
+ }
+ function A(t, e, n, i, o) {
+ if ('string' != typeof e || !t) return;
+ let [r, s, a] = x(e, n, i);
+ if (e in y) {
+ const t = (t) =>
+ function (e) {
+ if (
+ !e.relatedTarget ||
+ (e.relatedTarget !== e.delegateTarget &&
+ !e.delegateTarget.contains(e.relatedTarget))
+ )
+ return t.call(this, e);
+ };
+ s = t(s);
+ }
+ const l = E(t),
+ c = l[a] || (l[a] = {}),
+ u = O(c, s, r ? n : null);
+ if (u) return void (u.oneOff = u.oneOff && o);
+ const f = w(s, e.replace(h, '')),
+ d = r
+ ? (function (t, e, n) {
+ return function i(o) {
+ const r = t.querySelectorAll(e);
+ for (let { target: s } = o; s && s !== this; s = s.parentNode)
+ for (const a of r)
+ if (a === s)
+ return (
+ j(o, { delegateTarget: s }),
+ i.oneOff && S.off(t, o.type, e, n),
+ n.apply(s, [o])
+ );
+ };
+ })(t, n, s)
+ : (function (t, e) {
+ return function n(i) {
+ return (
+ j(i, { delegateTarget: t }),
+ n.oneOff && S.off(t, i.type, e),
+ e.apply(t, [i])
+ );
+ };
+ })(t, s);
+ (d.delegationSelector = r ? n : null),
+ (d.callable = s),
+ (d.oneOff = o),
+ (d.uidEvent = f),
+ (c[f] = d),
+ t.addEventListener(a, d, r);
+ }
+ function C(t, e, n, i, o) {
+ const r = O(e[n], i, o);
+ r && (t.removeEventListener(n, r, Boolean(o)), delete e[n][r.uidEvent]);
+ }
+ function T(t, e, n, i) {
+ const o = e[n] || {};
+ for (const [r, s] of Object.entries(o))
+ r.includes(i) && C(t, e, n, s.callable, s.delegationSelector);
+ }
+ function L(t) {
+ return (t = t.replace(m, '')), y[t] || t;
+ }
+ const S = {
+ on(t, e, n, i) {
+ A(t, e, n, i, !1);
+ },
+ one(t, e, n, i) {
+ A(t, e, n, i, !0);
+ },
+ off(t, e, n, i) {
+ if ('string' != typeof e || !t) return;
+ const [o, r, s] = x(e, n, i),
+ a = s !== e,
+ l = E(t),
+ c = l[s] || {},
+ u = e.startsWith('.');
+ if (void 0 === r) {
+ if (u) for (const n of Object.keys(l)) T(t, l, n, e.slice(1));
+ for (const [n, i] of Object.entries(c)) {
+ const o = n.replace(g, '');
+ (a && !e.includes(o)) || C(t, l, s, i.callable, i.delegationSelector);
+ }
+ } else {
+ if (!Object.keys(c).length) return;
+ C(t, l, s, r, o ? n : null);
+ }
+ },
+ trigger(t, e, n) {
+ if ('string' != typeof e || !t) return null;
+ const i = l();
+ let o = null,
+ r = !0,
+ s = !0,
+ a = !1;
+ e !== L(e) &&
+ i &&
+ ((o = i.Event(e, n)),
+ i(t).trigger(o),
+ (r = !o.isPropagationStopped()),
+ (s = !o.isImmediatePropagationStopped()),
+ (a = o.isDefaultPrevented()));
+ const c = j(new Event(e, { bubbles: r, cancelable: !0 }), n);
+ return (
+ a && c.preventDefault(),
+ s && t.dispatchEvent(c),
+ c.defaultPrevented && o && o.preventDefault(),
+ c
+ );
+ }
+ };
+ function j(t) {
+ let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
+ for (const [n, i] of Object.entries(e))
+ try {
+ t[n] = i;
+ } catch {
+ Object.defineProperty(t, n, { configurable: !0, get: () => i });
+ }
+ return t;
+ }
+ function k(t) {
+ if ('true' === t) return !0;
+ if ('false' === t) return !1;
+ if (t === Number(t).toString()) return Number(t);
+ if ('' === t || 'null' === t) return null;
+ if ('string' != typeof t) return t;
+ try {
+ return JSON.parse(decodeURIComponent(t));
+ } catch {
+ return t;
+ }
+ }
+ function D(t) {
+ return t.replace(/[A-Z]/g, (t) => `-${t.toLowerCase()}`);
+ }
+ const P = {
+ setDataAttribute(t, e, n) {
+ t.setAttribute(`data-bs-${D(e)}`, n);
+ },
+ removeDataAttribute(t, e) {
+ t.removeAttribute(`data-bs-${D(e)}`);
+ },
+ getDataAttributes(t) {
+ if (!t) return {};
+ const e = {},
+ n = Object.keys(t.dataset).filter(
+ (t) => t.startsWith('bs') && !t.startsWith('bsConfig')
+ );
+ for (const i of n) {
+ let n = i.replace(/^bs/, '');
+ (n = n.charAt(0).toLowerCase() + n.slice(1, n.length)),
+ (e[n] = k(t.dataset[i]));
+ }
+ return e;
+ },
+ getDataAttribute: (t, e) => k(t.getAttribute(`data-bs-${D(e)}`))
+ };
+ class M {
+ static get Default() {
+ return {};
+ }
+ static get DefaultType() {
+ return {};
+ }
+ static get NAME() {
+ throw new Error(
+ 'You have to implement the static method "NAME", for each component!'
+ );
+ }
+ _getConfig(t) {
+ return (
+ (t = this._mergeConfigObj(t)),
+ (t = this._configAfterMerge(t)),
+ this._typeCheckConfig(t),
+ t
+ );
+ }
+ _configAfterMerge(t) {
+ return t;
+ }
+ _mergeConfigObj(t, e) {
+ const n = o(e) ? P.getDataAttribute(e, 'config') : {};
+ return {
+ ...this.constructor.Default,
+ ...('object' == typeof n ? n : {}),
+ ...(o(e) ? P.getDataAttributes(e) : {}),
+ ...('object' == typeof t ? t : {})
+ };
+ }
+ _typeCheckConfig(t) {
+ let e =
+ arguments.length > 1 && void 0 !== arguments[1]
+ ? arguments[1]
+ : this.constructor.DefaultType;
+ for (const [i, r] of Object.entries(e)) {
+ const e = t[i],
+ s = o(e)
+ ? 'element'
+ : null == (n = e)
+ ? `${n}`
+ : Object.prototype.toString
+ .call(n)
+ .match(/\s([a-z]+)/i)[1]
+ .toLowerCase();
+ if (!new RegExp(r).test(s))
+ throw new TypeError(
+ `${this.constructor.NAME.toUpperCase()}: Option "${i}" provided type "${s}" but expected type "${r}".`
+ );
+ }
+ var n;
+ }
+ }
+ class N extends M {
+ constructor(t, n) {
+ super(),
+ (t = r(t)) &&
+ ((this._element = t),
+ (this._config = this._getConfig(n)),
+ e.set(this._element, this.constructor.DATA_KEY, this));
+ }
+ dispose() {
+ e.remove(this._element, this.constructor.DATA_KEY),
+ S.off(this._element, this.constructor.EVENT_KEY);
+ for (const t of Object.getOwnPropertyNames(this)) this[t] = null;
+ }
+ _queueCallback(t, e) {
+ p(
+ t,
+ e,
+ !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]
+ );
+ }
+ _getConfig(t) {
+ return (
+ (t = this._mergeConfigObj(t, this._element)),
+ (t = this._configAfterMerge(t)),
+ this._typeCheckConfig(t),
+ t
+ );
+ }
+ static getInstance(t) {
+ return e.get(r(t), this.DATA_KEY);
+ }
+ static getOrCreateInstance(t) {
+ let e =
+ arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
+ return (
+ this.getInstance(t) || new this(t, 'object' == typeof e ? e : null)
+ );
+ }
+ static get VERSION() {
+ return '5.3.3';
+ }
+ static get DATA_KEY() {
+ return `bs.${this.NAME}`;
+ }
+ static get EVENT_KEY() {
+ return `.${this.DATA_KEY}`;
+ }
+ static eventName(t) {
+ return `${t}${this.EVENT_KEY}`;
+ }
+ }
+ const B = (t) => {
+ let e = t.getAttribute('data-bs-target');
+ if (!e || '#' === e) {
+ let n = t.getAttribute('href');
+ if (!n || (!n.includes('#') && !n.startsWith('.'))) return null;
+ n.includes('#') && !n.startsWith('#') && (n = `#${n.split('#')[1]}`),
+ (e = n && '#' !== n ? n.trim() : null);
+ }
+ return e
+ ? e
+ .split(',')
+ .map((t) => i(t))
+ .join(',')
+ : null;
+ },
+ I = {
+ find(t) {
+ let e =
+ arguments.length > 1 && void 0 !== arguments[1]
+ ? arguments[1]
+ : document.documentElement;
+ return [].concat(...Element.prototype.querySelectorAll.call(e, t));
+ },
+ findOne(t) {
+ let e =
+ arguments.length > 1 && void 0 !== arguments[1]
+ ? arguments[1]
+ : document.documentElement;
+ return Element.prototype.querySelector.call(e, t);
+ },
+ children: (t, e) => [].concat(...t.children).filter((t) => t.matches(e)),
+ parents(t, e) {
+ const n = [];
+ let i = t.parentNode.closest(e);
+ for (; i; ) n.push(i), (i = i.parentNode.closest(e));
+ return n;
+ },
+ prev(t, e) {
+ let n = t.previousElementSibling;
+ for (; n; ) {
+ if (n.matches(e)) return [n];
+ n = n.previousElementSibling;
+ }
+ return [];
+ },
+ next(t, e) {
+ let n = t.nextElementSibling;
+ for (; n; ) {
+ if (n.matches(e)) return [n];
+ n = n.nextElementSibling;
+ }
+ return [];
+ },
+ focusableChildren(t) {
+ const e = [
+ 'a',
+ 'button',
+ 'input',
+ 'textarea',
+ 'select',
+ 'details',
+ '[tabindex]',
+ '[contenteditable="true"]'
+ ]
+ .map((t) => `${t}:not([tabindex^="-"])`)
+ .join(',');
+ return this.find(e, t).filter(
+ (t) =>
+ !((t) =>
+ !t ||
+ t.nodeType !== Node.ELEMENT_NODE ||
+ !!t.classList.contains('disabled') ||
+ (void 0 !== t.disabled
+ ? t.disabled
+ : t.hasAttribute('disabled') &&
+ 'false' !== t.getAttribute('disabled')))(t) &&
+ ((t) => {
+ if (!o(t) || 0 === t.getClientRects().length) return !1;
+ const e =
+ 'visible' ===
+ getComputedStyle(t).getPropertyValue('visibility'),
+ n = t.closest('details:not([open])');
+ if (!n) return e;
+ if (n !== t) {
+ const e = t.closest('summary');
+ if (e && e.parentNode !== n) return !1;
+ if (null === e) return !1;
+ }
+ return e;
+ })(t)
+ );
+ },
+ getSelectorFromElement(t) {
+ const e = B(t);
+ return e && I.findOne(e) ? e : null;
+ },
+ getElementFromSelector(t) {
+ const e = B(t);
+ return e ? I.findOne(e) : null;
+ },
+ getMultipleElementsFromSelector(t) {
+ const e = B(t);
+ return e ? I.find(e) : [];
+ }
+ },
+ F = '.bs.collapse',
+ H = `show${F}`,
+ $ = `shown${F}`,
+ R = `hide${F}`,
+ z = `hidden${F}`,
+ q = `click${F}.data-api`,
+ W = 'show',
+ V = 'collapse',
+ Y = 'collapsing',
+ U = `:scope .${V} .${V}`,
+ K = '[data-bs-toggle="collapse"]',
+ Q = { parent: null, toggle: !0 },
+ X = { parent: '(null|element)', toggle: 'boolean' };
+ class G extends N {
+ constructor(t, e) {
+ super(t, e), (this._isTransitioning = !1), (this._triggerArray = []);
+ const n = I.find(K);
+ for (const t of n) {
+ const e = I.getSelectorFromElement(t),
+ n = I.find(e).filter((t) => t === this._element);
+ null !== e && n.length && this._triggerArray.push(t);
+ }
+ this._initializeChildren(),
+ this._config.parent ||
+ this._addAriaAndCollapsedClass(this._triggerArray, this._isShown()),
+ this._config.toggle && this.toggle();
+ }
+ static get Default() {
+ return Q;
+ }
+ static get DefaultType() {
+ return X;
+ }
+ static get NAME() {
+ return 'collapse';
+ }
+ toggle() {
+ this._isShown() ? this.hide() : this.show();
+ }
+ show() {
+ if (this._isTransitioning || this._isShown()) return;
+ let t = [];
+ if (
+ (this._config.parent &&
+ (t = this._getFirstLevelChildren(
+ '.collapse.show, .collapse.collapsing'
+ )
+ .filter((t) => t !== this._element)
+ .map((t) => G.getOrCreateInstance(t, { toggle: !1 }))),
+ t.length && t[0]._isTransitioning)
+ )
+ return;
+ if (S.trigger(this._element, H).defaultPrevented) return;
+ for (const e of t) e.hide();
+ const e = this._getDimension();
+ this._element.classList.remove(V),
+ this._element.classList.add(Y),
+ (this._element.style[e] = 0),
+ this._addAriaAndCollapsedClass(this._triggerArray, !0),
+ (this._isTransitioning = !0);
+ const n = `scroll${e[0].toUpperCase() + e.slice(1)}`;
+ this._queueCallback(
+ () => {
+ (this._isTransitioning = !1),
+ this._element.classList.remove(Y),
+ this._element.classList.add(V, W),
+ (this._element.style[e] = ''),
+ S.trigger(this._element, $);
+ },
+ this._element,
+ !0
+ ),
+ (this._element.style[e] = `${this._element[n]}px`);
+ }
+ hide() {
+ if (this._isTransitioning || !this._isShown()) return;
+ if (S.trigger(this._element, R).defaultPrevented) return;
+ const t = this._getDimension();
+ (this._element.style[t] = `${
+ this._element.getBoundingClientRect()[t]
+ }px`),
+ this._element.offsetHeight,
+ this._element.classList.add(Y),
+ this._element.classList.remove(V, W);
+ for (const t of this._triggerArray) {
+ const e = I.getElementFromSelector(t);
+ e && !this._isShown(e) && this._addAriaAndCollapsedClass([t], !1);
+ }
+ this._isTransitioning = !0;
+ (this._element.style[t] = ''),
+ this._queueCallback(
+ () => {
+ (this._isTransitioning = !1),
+ this._element.classList.remove(Y),
+ this._element.classList.add(V),
+ S.trigger(this._element, z);
+ },
+ this._element,
+ !0
+ );
+ }
+ _isShown() {
+ return (
+ arguments.length > 0 && void 0 !== arguments[0]
+ ? arguments[0]
+ : this._element
+ ).classList.contains(W);
+ }
+ _configAfterMerge(t) {
+ return (t.toggle = Boolean(t.toggle)), (t.parent = r(t.parent)), t;
+ }
+ _getDimension() {
+ return this._element.classList.contains('collapse-horizontal')
+ ? 'width'
+ : 'height';
+ }
+ _initializeChildren() {
+ if (!this._config.parent) return;
+ const t = this._getFirstLevelChildren(K);
+ for (const e of t) {
+ const t = I.getElementFromSelector(e);
+ t && this._addAriaAndCollapsedClass([e], this._isShown(t));
+ }
+ }
+ _getFirstLevelChildren(t) {
+ const e = I.find(U, this._config.parent);
+ return I.find(t, this._config.parent).filter((t) => !e.includes(t));
+ }
+ _addAriaAndCollapsedClass(t, e) {
+ if (t.length)
+ for (const n of t)
+ n.classList.toggle('collapsed', !e),
+ n.setAttribute('aria-expanded', e);
+ }
+ static jQueryInterface(t) {
+ const e = {};
+ return (
+ 'string' == typeof t && /show|hide/.test(t) && (e.toggle = !1),
+ this.each(function () {
+ const n = G.getOrCreateInstance(this, e);
+ if ('string' == typeof t) {
+ if (void 0 === n[t]) throw new TypeError(`No method named "${t}"`);
+ n[t]();
+ }
+ })
+ );
+ }
+ }
+ S.on(document, q, K, function (t) {
+ ('A' === t.target.tagName ||
+ (t.delegateTarget && 'A' === t.delegateTarget.tagName)) &&
+ t.preventDefault();
+ for (const t of I.getMultipleElementsFromSelector(this))
+ G.getOrCreateInstance(t, { toggle: !1 }).toggle();
+ }),
+ f(G),
+ document.getElementsByClassName('collapse');
+ var J = 'top',
+ Z = 'bottom',
+ tt = 'right',
+ et = 'left',
+ nt = 'auto',
+ it = [J, Z, tt, et],
+ ot = 'start',
+ rt = 'end',
+ st = 'clippingParents',
+ at = 'viewport',
+ lt = 'popper',
+ ct = 'reference',
+ ut = it.reduce(function (t, e) {
+ return t.concat([e + '-' + ot, e + '-' + rt]);
+ }, []),
+ ft = [].concat(it, [nt]).reduce(function (t, e) {
+ return t.concat([e, e + '-' + ot, e + '-' + rt]);
+ }, []),
+ dt = 'beforeRead',
+ pt = 'read',
+ ht = 'afterRead',
+ mt = 'beforeMain',
+ gt = 'main',
+ vt = 'afterMain',
+ bt = 'beforeWrite',
+ yt = 'write',
+ _t = 'afterWrite',
+ wt = [dt, pt, ht, mt, gt, vt, bt, yt, _t];
+ function Et(t) {
+ return t ? (t.nodeName || '').toLowerCase() : null;
+ }
+ function Ot(t) {
+ if (null == t) return window;
+ if ('[object Window]' !== t.toString()) {
+ var e = t.ownerDocument;
+ return (e && e.defaultView) || window;
+ }
+ return t;
+ }
+ function xt(t) {
+ return t instanceof Ot(t).Element || t instanceof Element;
+ }
+ function At(t) {
+ return t instanceof Ot(t).HTMLElement || t instanceof HTMLElement;
+ }
+ function Ct(t) {
+ return (
+ 'undefined' != typeof ShadowRoot &&
+ (t instanceof Ot(t).ShadowRoot || t instanceof ShadowRoot)
+ );
+ }
+ var Tt = {
+ name: 'applyStyles',
+ enabled: !0,
+ phase: 'write',
+ fn: function (t) {
+ var e = t.state;
+ Object.keys(e.elements).forEach(function (t) {
+ var n = e.styles[t] || {},
+ i = e.attributes[t] || {},
+ o = e.elements[t];
+ At(o) &&
+ Et(o) &&
+ (Object.assign(o.style, n),
+ Object.keys(i).forEach(function (t) {
+ var e = i[t];
+ !1 === e
+ ? o.removeAttribute(t)
+ : o.setAttribute(t, !0 === e ? '' : e);
+ }));
+ });
+ },
+ effect: function (t) {
+ var e = t.state,
+ n = {
+ popper: {
+ position: e.options.strategy,
+ left: '0',
+ top: '0',
+ margin: '0'
+ },
+ arrow: { position: 'absolute' },
+ reference: {}
+ };
+ return (
+ Object.assign(e.elements.popper.style, n.popper),
+ (e.styles = n),
+ e.elements.arrow && Object.assign(e.elements.arrow.style, n.arrow),
+ function () {
+ Object.keys(e.elements).forEach(function (t) {
+ var i = e.elements[t],
+ o = e.attributes[t] || {},
+ r = Object.keys(
+ e.styles.hasOwnProperty(t) ? e.styles[t] : n[t]
+ ).reduce(function (t, e) {
+ return (t[e] = ''), t;
+ }, {});
+ At(i) &&
+ Et(i) &&
+ (Object.assign(i.style, r),
+ Object.keys(o).forEach(function (t) {
+ i.removeAttribute(t);
+ }));
+ });
+ }
+ );
+ },
+ requires: ['computeStyles']
+ };
+ function Lt(t) {
+ return t.split('-')[0];
+ }
+ var St = Math.max,
+ jt = Math.min,
+ kt = Math.round;
+ function Dt() {
+ var t = navigator.userAgentData;
+ return null != t && t.brands && Array.isArray(t.brands)
+ ? t.brands
+ .map(function (t) {
+ return t.brand + '/' + t.version;
+ })
+ .join(' ')
+ : navigator.userAgent;
+ }
+ function Pt() {
+ return !/^((?!chrome|android).)*safari/i.test(Dt());
+ }
+ function Mt(t, e, n) {
+ void 0 === e && (e = !1), void 0 === n && (n = !1);
+ var i = t.getBoundingClientRect(),
+ o = 1,
+ r = 1;
+ e &&
+ At(t) &&
+ ((o = (t.offsetWidth > 0 && kt(i.width) / t.offsetWidth) || 1),
+ (r = (t.offsetHeight > 0 && kt(i.height) / t.offsetHeight) || 1));
+ var s = (xt(t) ? Ot(t) : window).visualViewport,
+ a = !Pt() && n,
+ l = (i.left + (a && s ? s.offsetLeft : 0)) / o,
+ c = (i.top + (a && s ? s.offsetTop : 0)) / r,
+ u = i.width / o,
+ f = i.height / r;
+ return {
+ width: u,
+ height: f,
+ top: c,
+ right: l + u,
+ bottom: c + f,
+ left: l,
+ x: l,
+ y: c
+ };
+ }
+ function Nt(t) {
+ var e = Mt(t),
+ n = t.offsetWidth,
+ i = t.offsetHeight;
+ return (
+ Math.abs(e.width - n) <= 1 && (n = e.width),
+ Math.abs(e.height - i) <= 1 && (i = e.height),
+ { x: t.offsetLeft, y: t.offsetTop, width: n, height: i }
+ );
+ }
+ function Bt(t, e) {
+ var n = e.getRootNode && e.getRootNode();
+ if (t.contains(e)) return !0;
+ if (n && Ct(n)) {
+ var i = e;
+ do {
+ if (i && t.isSameNode(i)) return !0;
+ i = i.parentNode || i.host;
+ } while (i);
+ }
+ return !1;
+ }
+ function It(t) {
+ return Ot(t).getComputedStyle(t);
+ }
+ function Ft(t) {
+ return ['table', 'td', 'th'].indexOf(Et(t)) >= 0;
+ }
+ function Ht(t) {
+ return ((xt(t) ? t.ownerDocument : t.document) || window.document)
+ .documentElement;
+ }
+ function $t(t) {
+ return 'html' === Et(t)
+ ? t
+ : t.assignedSlot || t.parentNode || (Ct(t) ? t.host : null) || Ht(t);
+ }
+ function Rt(t) {
+ return At(t) && 'fixed' !== It(t).position ? t.offsetParent : null;
+ }
+ function zt(t) {
+ for (var e = Ot(t), n = Rt(t); n && Ft(n) && 'static' === It(n).position; )
+ n = Rt(n);
+ return n &&
+ ('html' === Et(n) || ('body' === Et(n) && 'static' === It(n).position))
+ ? e
+ : n ||
+ (function (t) {
+ var e = /firefox/i.test(Dt());
+ if (/Trident/i.test(Dt()) && At(t) && 'fixed' === It(t).position)
+ return null;
+ var n = $t(t);
+ for (
+ Ct(n) && (n = n.host);
+ At(n) && ['html', 'body'].indexOf(Et(n)) < 0;
+
+ ) {
+ var i = It(n);
+ if (
+ 'none' !== i.transform ||
+ 'none' !== i.perspective ||
+ 'paint' === i.contain ||
+ -1 !== ['transform', 'perspective'].indexOf(i.willChange) ||
+ (e && 'filter' === i.willChange) ||
+ (e && i.filter && 'none' !== i.filter)
+ )
+ return n;
+ n = n.parentNode;
+ }
+ return null;
+ })(t) ||
+ e;
+ }
+ function qt(t) {
+ return ['top', 'bottom'].indexOf(t) >= 0 ? 'x' : 'y';
+ }
+ function Wt(t, e, n) {
+ return St(t, jt(e, n));
+ }
+ function Vt(t) {
+ return Object.assign({}, { top: 0, right: 0, bottom: 0, left: 0 }, t);
+ }
+ function Yt(t, e) {
+ return e.reduce(function (e, n) {
+ return (e[n] = t), e;
+ }, {});
+ }
+ var Ut = {
+ name: 'arrow',
+ enabled: !0,
+ phase: 'main',
+ fn: function (t) {
+ var e,
+ n = t.state,
+ i = t.name,
+ o = t.options,
+ r = n.elements.arrow,
+ s = n.modifiersData.popperOffsets,
+ a = Lt(n.placement),
+ l = qt(a),
+ c = [et, tt].indexOf(a) >= 0 ? 'height' : 'width';
+ if (r && s) {
+ var u = (function (t, e) {
+ return Vt(
+ 'number' !=
+ typeof (t =
+ 'function' == typeof t
+ ? t(Object.assign({}, e.rects, { placement: e.placement }))
+ : t)
+ ? t
+ : Yt(t, it)
+ );
+ })(o.padding, n),
+ f = Nt(r),
+ d = 'y' === l ? J : et,
+ p = 'y' === l ? Z : tt,
+ h =
+ n.rects.reference[c] +
+ n.rects.reference[l] -
+ s[l] -
+ n.rects.popper[c],
+ m = s[l] - n.rects.reference[l],
+ g = zt(r),
+ v = g ? ('y' === l ? g.clientHeight || 0 : g.clientWidth || 0) : 0,
+ b = h / 2 - m / 2,
+ y = u[d],
+ _ = v - f[c] - u[p],
+ w = v / 2 - f[c] / 2 + b,
+ E = Wt(y, w, _),
+ O = l;
+ n.modifiersData[i] = (((e = {})[O] = E), (e.centerOffset = E - w), e);
+ }
+ },
+ effect: function (t) {
+ var e = t.state,
+ n = t.options.element,
+ i = void 0 === n ? '[data-popper-arrow]' : n;
+ null != i &&
+ ('string' != typeof i || (i = e.elements.popper.querySelector(i))) &&
+ Bt(e.elements.popper, i) &&
+ (e.elements.arrow = i);
+ },
+ requires: ['popperOffsets'],
+ requiresIfExists: ['preventOverflow']
+ };
+ function Kt(t) {
+ return t.split('-')[1];
+ }
+ var Qt = { top: 'auto', right: 'auto', bottom: 'auto', left: 'auto' };
+ function Xt(t) {
+ var e,
+ n = t.popper,
+ i = t.popperRect,
+ o = t.placement,
+ r = t.variation,
+ s = t.offsets,
+ a = t.position,
+ l = t.gpuAcceleration,
+ c = t.adaptive,
+ u = t.roundOffsets,
+ f = t.isFixed,
+ d = s.x,
+ p = void 0 === d ? 0 : d,
+ h = s.y,
+ m = void 0 === h ? 0 : h,
+ g = 'function' == typeof u ? u({ x: p, y: m }) : { x: p, y: m };
+ (p = g.x), (m = g.y);
+ var v = s.hasOwnProperty('x'),
+ b = s.hasOwnProperty('y'),
+ y = et,
+ _ = J,
+ w = window;
+ if (c) {
+ var E = zt(n),
+ O = 'clientHeight',
+ x = 'clientWidth';
+ if (
+ (E === Ot(n) &&
+ 'static' !== It((E = Ht(n))).position &&
+ 'absolute' === a &&
+ ((O = 'scrollHeight'), (x = 'scrollWidth')),
+ o === J || ((o === et || o === tt) && r === rt))
+ )
+ (_ = Z),
+ (m -=
+ (f && E === w && w.visualViewport
+ ? w.visualViewport.height
+ : E[O]) - i.height),
+ (m *= l ? 1 : -1);
+ if (o === et || ((o === J || o === Z) && r === rt))
+ (y = tt),
+ (p -=
+ (f && E === w && w.visualViewport ? w.visualViewport.width : E[x]) -
+ i.width),
+ (p *= l ? 1 : -1);
+ }
+ var A,
+ C = Object.assign({ position: a }, c && Qt),
+ T =
+ !0 === u
+ ? (function (t, e) {
+ var n = t.x,
+ i = t.y,
+ o = e.devicePixelRatio || 1;
+ return { x: kt(n * o) / o || 0, y: kt(i * o) / o || 0 };
+ })({ x: p, y: m }, Ot(n))
+ : { x: p, y: m };
+ return (
+ (p = T.x),
+ (m = T.y),
+ l
+ ? Object.assign(
+ {},
+ C,
+ (((A = {})[_] = b ? '0' : ''),
+ (A[y] = v ? '0' : ''),
+ (A.transform =
+ (w.devicePixelRatio || 1) <= 1
+ ? 'translate(' + p + 'px, ' + m + 'px)'
+ : 'translate3d(' + p + 'px, ' + m + 'px, 0)'),
+ A)
+ )
+ : Object.assign(
+ {},
+ C,
+ (((e = {})[_] = b ? m + 'px' : ''),
+ (e[y] = v ? p + 'px' : ''),
+ (e.transform = ''),
+ e)
+ )
+ );
+ }
+ var Gt = {
+ name: 'computeStyles',
+ enabled: !0,
+ phase: 'beforeWrite',
+ fn: function (t) {
+ var e = t.state,
+ n = t.options,
+ i = n.gpuAcceleration,
+ o = void 0 === i || i,
+ r = n.adaptive,
+ s = void 0 === r || r,
+ a = n.roundOffsets,
+ l = void 0 === a || a,
+ c = {
+ placement: Lt(e.placement),
+ variation: Kt(e.placement),
+ popper: e.elements.popper,
+ popperRect: e.rects.popper,
+ gpuAcceleration: o,
+ isFixed: 'fixed' === e.options.strategy
+ };
+ null != e.modifiersData.popperOffsets &&
+ (e.styles.popper = Object.assign(
+ {},
+ e.styles.popper,
+ Xt(
+ Object.assign({}, c, {
+ offsets: e.modifiersData.popperOffsets,
+ position: e.options.strategy,
+ adaptive: s,
+ roundOffsets: l
+ })
+ )
+ )),
+ null != e.modifiersData.arrow &&
+ (e.styles.arrow = Object.assign(
+ {},
+ e.styles.arrow,
+ Xt(
+ Object.assign({}, c, {
+ offsets: e.modifiersData.arrow,
+ position: 'absolute',
+ adaptive: !1,
+ roundOffsets: l
+ })
+ )
+ )),
+ (e.attributes.popper = Object.assign({}, e.attributes.popper, {
+ 'data-popper-placement': e.placement
+ }));
+ },
+ data: {}
+ },
+ Jt = { passive: !0 };
+ var Zt = {
+ name: 'eventListeners',
+ enabled: !0,
+ phase: 'write',
+ fn: function () {},
+ effect: function (t) {
+ var e = t.state,
+ n = t.instance,
+ i = t.options,
+ o = i.scroll,
+ r = void 0 === o || o,
+ s = i.resize,
+ a = void 0 === s || s,
+ l = Ot(e.elements.popper),
+ c = [].concat(e.scrollParents.reference, e.scrollParents.popper);
+ return (
+ r &&
+ c.forEach(function (t) {
+ t.addEventListener('scroll', n.update, Jt);
+ }),
+ a && l.addEventListener('resize', n.update, Jt),
+ function () {
+ r &&
+ c.forEach(function (t) {
+ t.removeEventListener('scroll', n.update, Jt);
+ }),
+ a && l.removeEventListener('resize', n.update, Jt);
+ }
+ );
+ },
+ data: {}
+ },
+ te = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };
+ function ee(t) {
+ return t.replace(/left|right|bottom|top/g, function (t) {
+ return te[t];
+ });
+ }
+ var ne = { start: 'end', end: 'start' };
+ function ie(t) {
+ return t.replace(/start|end/g, function (t) {
+ return ne[t];
+ });
+ }
+ function oe(t) {
+ var e = Ot(t);
+ return { scrollLeft: e.pageXOffset, scrollTop: e.pageYOffset };
+ }
+ function re(t) {
+ return Mt(Ht(t)).left + oe(t).scrollLeft;
+ }
+ function se(t) {
+ var e = It(t),
+ n = e.overflow,
+ i = e.overflowX,
+ o = e.overflowY;
+ return /auto|scroll|overlay|hidden/.test(n + o + i);
+ }
+ function ae(t) {
+ return ['html', 'body', '#document'].indexOf(Et(t)) >= 0
+ ? t.ownerDocument.body
+ : At(t) && se(t)
+ ? t
+ : ae($t(t));
+ }
+ function le(t, e) {
+ var n;
+ void 0 === e && (e = []);
+ var i = ae(t),
+ o = i === (null == (n = t.ownerDocument) ? void 0 : n.body),
+ r = Ot(i),
+ s = o ? [r].concat(r.visualViewport || [], se(i) ? i : []) : i,
+ a = e.concat(s);
+ return o ? a : a.concat(le($t(s)));
+ }
+ function ce(t) {
+ return Object.assign({}, t, {
+ left: t.x,
+ top: t.y,
+ right: t.x + t.width,
+ bottom: t.y + t.height
+ });
+ }
+ function ue(t, e, n) {
+ return e === at
+ ? ce(
+ (function (t, e) {
+ var n = Ot(t),
+ i = Ht(t),
+ o = n.visualViewport,
+ r = i.clientWidth,
+ s = i.clientHeight,
+ a = 0,
+ l = 0;
+ if (o) {
+ (r = o.width), (s = o.height);
+ var c = Pt();
+ (c || (!c && 'fixed' === e)) &&
+ ((a = o.offsetLeft), (l = o.offsetTop));
+ }
+ return { width: r, height: s, x: a + re(t), y: l };
+ })(t, n)
+ )
+ : xt(e)
+ ? (function (t, e) {
+ var n = Mt(t, !1, 'fixed' === e);
+ return (
+ (n.top = n.top + t.clientTop),
+ (n.left = n.left + t.clientLeft),
+ (n.bottom = n.top + t.clientHeight),
+ (n.right = n.left + t.clientWidth),
+ (n.width = t.clientWidth),
+ (n.height = t.clientHeight),
+ (n.x = n.left),
+ (n.y = n.top),
+ n
+ );
+ })(e, n)
+ : ce(
+ (function (t) {
+ var e,
+ n = Ht(t),
+ i = oe(t),
+ o = null == (e = t.ownerDocument) ? void 0 : e.body,
+ r = St(
+ n.scrollWidth,
+ n.clientWidth,
+ o ? o.scrollWidth : 0,
+ o ? o.clientWidth : 0
+ ),
+ s = St(
+ n.scrollHeight,
+ n.clientHeight,
+ o ? o.scrollHeight : 0,
+ o ? o.clientHeight : 0
+ ),
+ a = -i.scrollLeft + re(t),
+ l = -i.scrollTop;
+ return (
+ 'rtl' === It(o || n).direction &&
+ (a += St(n.clientWidth, o ? o.clientWidth : 0) - r),
+ { width: r, height: s, x: a, y: l }
+ );
+ })(Ht(t))
+ );
+ }
+ function fe(t, e, n, i) {
+ var o =
+ 'clippingParents' === e
+ ? (function (t) {
+ var e = le($t(t)),
+ n =
+ ['absolute', 'fixed'].indexOf(It(t).position) >= 0 && At(t)
+ ? zt(t)
+ : t;
+ return xt(n)
+ ? e.filter(function (t) {
+ return xt(t) && Bt(t, n) && 'body' !== Et(t);
+ })
+ : [];
+ })(t)
+ : [].concat(e),
+ r = [].concat(o, [n]),
+ s = r[0],
+ a = r.reduce(function (e, n) {
+ var o = ue(t, n, i);
+ return (
+ (e.top = St(o.top, e.top)),
+ (e.right = jt(o.right, e.right)),
+ (e.bottom = jt(o.bottom, e.bottom)),
+ (e.left = St(o.left, e.left)),
+ e
+ );
+ }, ue(t, s, i));
+ return (
+ (a.width = a.right - a.left),
+ (a.height = a.bottom - a.top),
+ (a.x = a.left),
+ (a.y = a.top),
+ a
+ );
+ }
+ function de(t) {
+ var e,
+ n = t.reference,
+ i = t.element,
+ o = t.placement,
+ r = o ? Lt(o) : null,
+ s = o ? Kt(o) : null,
+ a = n.x + n.width / 2 - i.width / 2,
+ l = n.y + n.height / 2 - i.height / 2;
+ switch (r) {
+ case J:
+ e = { x: a, y: n.y - i.height };
+ break;
+ case Z:
+ e = { x: a, y: n.y + n.height };
+ break;
+ case tt:
+ e = { x: n.x + n.width, y: l };
+ break;
+ case et:
+ e = { x: n.x - i.width, y: l };
+ break;
+ default:
+ e = { x: n.x, y: n.y };
+ }
+ var c = r ? qt(r) : null;
+ if (null != c) {
+ var u = 'y' === c ? 'height' : 'width';
+ switch (s) {
+ case ot:
+ e[c] = e[c] - (n[u] / 2 - i[u] / 2);
+ break;
+ case rt:
+ e[c] = e[c] + (n[u] / 2 - i[u] / 2);
+ }
+ }
+ return e;
+ }
+ function pe(t, e) {
+ void 0 === e && (e = {});
+ var n = e,
+ i = n.placement,
+ o = void 0 === i ? t.placement : i,
+ r = n.strategy,
+ s = void 0 === r ? t.strategy : r,
+ a = n.boundary,
+ l = void 0 === a ? st : a,
+ c = n.rootBoundary,
+ u = void 0 === c ? at : c,
+ f = n.elementContext,
+ d = void 0 === f ? lt : f,
+ p = n.altBoundary,
+ h = void 0 !== p && p,
+ m = n.padding,
+ g = void 0 === m ? 0 : m,
+ v = Vt('number' != typeof g ? g : Yt(g, it)),
+ b = d === lt ? ct : lt,
+ y = t.rects.popper,
+ _ = t.elements[h ? b : d],
+ w = fe(xt(_) ? _ : _.contextElement || Ht(t.elements.popper), l, u, s),
+ E = Mt(t.elements.reference),
+ O = de({ reference: E, element: y, placement: o }),
+ x = ce(Object.assign({}, y, O)),
+ A = d === lt ? x : E,
+ C = {
+ top: w.top - A.top + v.top,
+ bottom: A.bottom - w.bottom + v.bottom,
+ left: w.left - A.left + v.left,
+ right: A.right - w.right + v.right
+ },
+ T = t.modifiersData.offset;
+ if (d === lt && T) {
+ var L = T[o];
+ Object.keys(C).forEach(function (t) {
+ var e = [tt, Z].indexOf(t) >= 0 ? 1 : -1,
+ n = [J, Z].indexOf(t) >= 0 ? 'y' : 'x';
+ C[t] += L[n] * e;
+ });
+ }
+ return C;
+ }
+ function he(t, e) {
+ void 0 === e && (e = {});
+ var n = e,
+ i = n.placement,
+ o = n.boundary,
+ r = n.rootBoundary,
+ s = n.padding,
+ a = n.flipVariations,
+ l = n.allowedAutoPlacements,
+ c = void 0 === l ? ft : l,
+ u = Kt(i),
+ f = u
+ ? a
+ ? ut
+ : ut.filter(function (t) {
+ return Kt(t) === u;
+ })
+ : it,
+ d = f.filter(function (t) {
+ return c.indexOf(t) >= 0;
+ });
+ 0 === d.length && (d = f);
+ var p = d.reduce(function (e, n) {
+ return (
+ (e[n] = pe(t, {
+ placement: n,
+ boundary: o,
+ rootBoundary: r,
+ padding: s
+ })[Lt(n)]),
+ e
+ );
+ }, {});
+ return Object.keys(p).sort(function (t, e) {
+ return p[t] - p[e];
+ });
+ }
+ var me = {
+ name: 'flip',
+ enabled: !0,
+ phase: 'main',
+ fn: function (t) {
+ var e = t.state,
+ n = t.options,
+ i = t.name;
+ if (!e.modifiersData[i]._skip) {
+ for (
+ var o = n.mainAxis,
+ r = void 0 === o || o,
+ s = n.altAxis,
+ a = void 0 === s || s,
+ l = n.fallbackPlacements,
+ c = n.padding,
+ u = n.boundary,
+ f = n.rootBoundary,
+ d = n.altBoundary,
+ p = n.flipVariations,
+ h = void 0 === p || p,
+ m = n.allowedAutoPlacements,
+ g = e.options.placement,
+ v = Lt(g),
+ b =
+ l ||
+ (v === g || !h
+ ? [ee(g)]
+ : (function (t) {
+ if (Lt(t) === nt) return [];
+ var e = ee(t);
+ return [ie(t), e, ie(e)];
+ })(g)),
+ y = [g].concat(b).reduce(function (t, n) {
+ return t.concat(
+ Lt(n) === nt
+ ? he(e, {
+ placement: n,
+ boundary: u,
+ rootBoundary: f,
+ padding: c,
+ flipVariations: h,
+ allowedAutoPlacements: m
+ })
+ : n
+ );
+ }, []),
+ _ = e.rects.reference,
+ w = e.rects.popper,
+ E = new Map(),
+ O = !0,
+ x = y[0],
+ A = 0;
+ A < y.length;
+ A++
+ ) {
+ var C = y[A],
+ T = Lt(C),
+ L = Kt(C) === ot,
+ S = [J, Z].indexOf(T) >= 0,
+ j = S ? 'width' : 'height',
+ k = pe(e, {
+ placement: C,
+ boundary: u,
+ rootBoundary: f,
+ altBoundary: d,
+ padding: c
+ }),
+ D = S ? (L ? tt : et) : L ? Z : J;
+ _[j] > w[j] && (D = ee(D));
+ var P = ee(D),
+ M = [];
+ if (
+ (r && M.push(k[T] <= 0),
+ a && M.push(k[D] <= 0, k[P] <= 0),
+ M.every(function (t) {
+ return t;
+ }))
+ ) {
+ (x = C), (O = !1);
+ break;
+ }
+ E.set(C, M);
+ }
+ if (O)
+ for (
+ var N = function (t) {
+ var e = y.find(function (e) {
+ var n = E.get(e);
+ if (n)
+ return n.slice(0, t).every(function (t) {
+ return t;
+ });
+ });
+ if (e) return (x = e), 'break';
+ },
+ B = h ? 3 : 1;
+ B > 0;
+ B--
+ ) {
+ if ('break' === N(B)) break;
+ }
+ e.placement !== x &&
+ ((e.modifiersData[i]._skip = !0), (e.placement = x), (e.reset = !0));
+ }
+ },
+ requiresIfExists: ['offset'],
+ data: { _skip: !1 }
+ };
+ function ge(t, e, n) {
+ return (
+ void 0 === n && (n = { x: 0, y: 0 }),
+ {
+ top: t.top - e.height - n.y,
+ right: t.right - e.width + n.x,
+ bottom: t.bottom - e.height + n.y,
+ left: t.left - e.width - n.x
+ }
+ );
+ }
+ function ve(t) {
+ return [J, tt, Z, et].some(function (e) {
+ return t[e] >= 0;
+ });
+ }
+ var be = {
+ name: 'hide',
+ enabled: !0,
+ phase: 'main',
+ requiresIfExists: ['preventOverflow'],
+ fn: function (t) {
+ var e = t.state,
+ n = t.name,
+ i = e.rects.reference,
+ o = e.rects.popper,
+ r = e.modifiersData.preventOverflow,
+ s = pe(e, { elementContext: 'reference' }),
+ a = pe(e, { altBoundary: !0 }),
+ l = ge(s, i),
+ c = ge(a, o, r),
+ u = ve(l),
+ f = ve(c);
+ (e.modifiersData[n] = {
+ referenceClippingOffsets: l,
+ popperEscapeOffsets: c,
+ isReferenceHidden: u,
+ hasPopperEscaped: f
+ }),
+ (e.attributes.popper = Object.assign({}, e.attributes.popper, {
+ 'data-popper-reference-hidden': u,
+ 'data-popper-escaped': f
+ }));
+ }
+ };
+ var ye = {
+ name: 'offset',
+ enabled: !0,
+ phase: 'main',
+ requires: ['popperOffsets'],
+ fn: function (t) {
+ var e = t.state,
+ n = t.options,
+ i = t.name,
+ o = n.offset,
+ r = void 0 === o ? [0, 0] : o,
+ s = ft.reduce(function (t, n) {
+ return (
+ (t[n] = (function (t, e, n) {
+ var i = Lt(t),
+ o = [et, J].indexOf(i) >= 0 ? -1 : 1,
+ r =
+ 'function' == typeof n
+ ? n(Object.assign({}, e, { placement: t }))
+ : n,
+ s = r[0],
+ a = r[1];
+ return (
+ (s = s || 0),
+ (a = (a || 0) * o),
+ [et, tt].indexOf(i) >= 0 ? { x: a, y: s } : { x: s, y: a }
+ );
+ })(n, e.rects, r)),
+ t
+ );
+ }, {}),
+ a = s[e.placement],
+ l = a.x,
+ c = a.y;
+ null != e.modifiersData.popperOffsets &&
+ ((e.modifiersData.popperOffsets.x += l),
+ (e.modifiersData.popperOffsets.y += c)),
+ (e.modifiersData[i] = s);
+ }
+ };
+ var _e = {
+ name: 'popperOffsets',
+ enabled: !0,
+ phase: 'read',
+ fn: function (t) {
+ var e = t.state,
+ n = t.name;
+ e.modifiersData[n] = de({
+ reference: e.rects.reference,
+ element: e.rects.popper,
+ placement: e.placement
+ });
+ },
+ data: {}
+ };
+ var we = {
+ name: 'preventOverflow',
+ enabled: !0,
+ phase: 'main',
+ fn: function (t) {
+ var e = t.state,
+ n = t.options,
+ i = t.name,
+ o = n.mainAxis,
+ r = void 0 === o || o,
+ s = n.altAxis,
+ a = void 0 !== s && s,
+ l = n.boundary,
+ c = n.rootBoundary,
+ u = n.altBoundary,
+ f = n.padding,
+ d = n.tether,
+ p = void 0 === d || d,
+ h = n.tetherOffset,
+ m = void 0 === h ? 0 : h,
+ g = pe(e, { boundary: l, rootBoundary: c, padding: f, altBoundary: u }),
+ v = Lt(e.placement),
+ b = Kt(e.placement),
+ y = !b,
+ _ = qt(v),
+ w = 'x' === _ ? 'y' : 'x',
+ E = e.modifiersData.popperOffsets,
+ O = e.rects.reference,
+ x = e.rects.popper,
+ A =
+ 'function' == typeof m
+ ? m(Object.assign({}, e.rects, { placement: e.placement }))
+ : m,
+ C =
+ 'number' == typeof A
+ ? { mainAxis: A, altAxis: A }
+ : Object.assign({ mainAxis: 0, altAxis: 0 }, A),
+ T = e.modifiersData.offset ? e.modifiersData.offset[e.placement] : null,
+ L = { x: 0, y: 0 };
+ if (E) {
+ if (r) {
+ var S,
+ j = 'y' === _ ? J : et,
+ k = 'y' === _ ? Z : tt,
+ D = 'y' === _ ? 'height' : 'width',
+ P = E[_],
+ M = P + g[j],
+ N = P - g[k],
+ B = p ? -x[D] / 2 : 0,
+ I = b === ot ? O[D] : x[D],
+ F = b === ot ? -x[D] : -O[D],
+ H = e.elements.arrow,
+ $ = p && H ? Nt(H) : { width: 0, height: 0 },
+ R = e.modifiersData['arrow#persistent']
+ ? e.modifiersData['arrow#persistent'].padding
+ : { top: 0, right: 0, bottom: 0, left: 0 },
+ z = R[j],
+ q = R[k],
+ W = Wt(0, O[D], $[D]),
+ V = y ? O[D] / 2 - B - W - z - C.mainAxis : I - W - z - C.mainAxis,
+ Y = y ? -O[D] / 2 + B + W + q + C.mainAxis : F + W + q + C.mainAxis,
+ U = e.elements.arrow && zt(e.elements.arrow),
+ K = U ? ('y' === _ ? U.clientTop || 0 : U.clientLeft || 0) : 0,
+ Q = null != (S = null == T ? void 0 : T[_]) ? S : 0,
+ X = P + Y - Q,
+ G = Wt(p ? jt(M, P + V - Q - K) : M, P, p ? St(N, X) : N);
+ (E[_] = G), (L[_] = G - P);
+ }
+ if (a) {
+ var nt,
+ it = 'x' === _ ? J : et,
+ rt = 'x' === _ ? Z : tt,
+ st = E[w],
+ at = 'y' === w ? 'height' : 'width',
+ lt = st + g[it],
+ ct = st - g[rt],
+ ut = -1 !== [J, et].indexOf(v),
+ ft = null != (nt = null == T ? void 0 : T[w]) ? nt : 0,
+ dt = ut ? lt : st - O[at] - x[at] - ft + C.altAxis,
+ pt = ut ? st + O[at] + x[at] - ft - C.altAxis : ct,
+ ht =
+ p && ut
+ ? (function (t, e, n) {
+ var i = Wt(t, e, n);
+ return i > n ? n : i;
+ })(dt, st, pt)
+ : Wt(p ? dt : lt, st, p ? pt : ct);
+ (E[w] = ht), (L[w] = ht - st);
+ }
+ e.modifiersData[i] = L;
+ }
+ },
+ requiresIfExists: ['offset']
+ };
+ function Ee(t, e, n) {
+ void 0 === n && (n = !1);
+ var i,
+ o,
+ r = At(e),
+ s =
+ At(e) &&
+ (function (t) {
+ var e = t.getBoundingClientRect(),
+ n = kt(e.width) / t.offsetWidth || 1,
+ i = kt(e.height) / t.offsetHeight || 1;
+ return 1 !== n || 1 !== i;
+ })(e),
+ a = Ht(e),
+ l = Mt(t, s, n),
+ c = { scrollLeft: 0, scrollTop: 0 },
+ u = { x: 0, y: 0 };
+ return (
+ (r || (!r && !n)) &&
+ (('body' !== Et(e) || se(a)) &&
+ (c =
+ (i = e) !== Ot(i) && At(i)
+ ? { scrollLeft: (o = i).scrollLeft, scrollTop: o.scrollTop }
+ : oe(i)),
+ At(e)
+ ? (((u = Mt(e, !0)).x += e.clientLeft), (u.y += e.clientTop))
+ : a && (u.x = re(a))),
+ {
+ x: l.left + c.scrollLeft - u.x,
+ y: l.top + c.scrollTop - u.y,
+ width: l.width,
+ height: l.height
+ }
+ );
+ }
+ function Oe(t) {
+ var e = new Map(),
+ n = new Set(),
+ i = [];
+ function o(t) {
+ n.add(t.name),
+ []
+ .concat(t.requires || [], t.requiresIfExists || [])
+ .forEach(function (t) {
+ if (!n.has(t)) {
+ var i = e.get(t);
+ i && o(i);
+ }
+ }),
+ i.push(t);
+ }
+ return (
+ t.forEach(function (t) {
+ e.set(t.name, t);
+ }),
+ t.forEach(function (t) {
+ n.has(t.name) || o(t);
+ }),
+ i
+ );
+ }
+ var xe = { placement: 'bottom', modifiers: [], strategy: 'absolute' };
+ function Ae() {
+ for (var t = arguments.length, e = new Array(t), n = 0; n < t; n++)
+ e[n] = arguments[n];
+ return !e.some(function (t) {
+ return !(t && 'function' == typeof t.getBoundingClientRect);
+ });
+ }
+ function Ce(t) {
+ void 0 === t && (t = {});
+ var e = t,
+ n = e.defaultModifiers,
+ i = void 0 === n ? [] : n,
+ o = e.defaultOptions,
+ r = void 0 === o ? xe : o;
+ return function (t, e, n) {
+ void 0 === n && (n = r);
+ var o,
+ s,
+ a = {
+ placement: 'bottom',
+ orderedModifiers: [],
+ options: Object.assign({}, xe, r),
+ modifiersData: {},
+ elements: { reference: t, popper: e },
+ attributes: {},
+ styles: {}
+ },
+ l = [],
+ c = !1,
+ u = {
+ state: a,
+ setOptions: function (n) {
+ var o = 'function' == typeof n ? n(a.options) : n;
+ f(),
+ (a.options = Object.assign({}, r, a.options, o)),
+ (a.scrollParents = {
+ reference: xt(t)
+ ? le(t)
+ : t.contextElement
+ ? le(t.contextElement)
+ : [],
+ popper: le(e)
+ });
+ var s,
+ c,
+ d = (function (t) {
+ var e = Oe(t);
+ return wt.reduce(function (t, n) {
+ return t.concat(
+ e.filter(function (t) {
+ return t.phase === n;
+ })
+ );
+ }, []);
+ })(
+ ((s = [].concat(i, a.options.modifiers)),
+ (c = s.reduce(function (t, e) {
+ var n = t[e.name];
+ return (
+ (t[e.name] = n
+ ? Object.assign({}, n, e, {
+ options: Object.assign({}, n.options, e.options),
+ data: Object.assign({}, n.data, e.data)
+ })
+ : e),
+ t
+ );
+ }, {})),
+ Object.keys(c).map(function (t) {
+ return c[t];
+ }))
+ );
+ return (
+ (a.orderedModifiers = d.filter(function (t) {
+ return t.enabled;
+ })),
+ a.orderedModifiers.forEach(function (t) {
+ var e = t.name,
+ n = t.options,
+ i = void 0 === n ? {} : n,
+ o = t.effect;
+ if ('function' == typeof o) {
+ var r = o({ state: a, name: e, instance: u, options: i }),
+ s = function () {};
+ l.push(r || s);
+ }
+ }),
+ u.update()
+ );
+ },
+ forceUpdate: function () {
+ if (!c) {
+ var t = a.elements,
+ e = t.reference,
+ n = t.popper;
+ if (Ae(e, n)) {
+ (a.rects = {
+ reference: Ee(e, zt(n), 'fixed' === a.options.strategy),
+ popper: Nt(n)
+ }),
+ (a.reset = !1),
+ (a.placement = a.options.placement),
+ a.orderedModifiers.forEach(function (t) {
+ return (a.modifiersData[t.name] = Object.assign(
+ {},
+ t.data
+ ));
+ });
+ for (var i = 0; i < a.orderedModifiers.length; i++)
+ if (!0 !== a.reset) {
+ var o = a.orderedModifiers[i],
+ r = o.fn,
+ s = o.options,
+ l = void 0 === s ? {} : s,
+ f = o.name;
+ 'function' == typeof r &&
+ (a =
+ r({ state: a, options: l, name: f, instance: u }) || a);
+ } else (a.reset = !1), (i = -1);
+ }
+ }
+ },
+ update:
+ ((o = function () {
+ return new Promise(function (t) {
+ u.forceUpdate(), t(a);
+ });
+ }),
+ function () {
+ return (
+ s ||
+ (s = new Promise(function (t) {
+ Promise.resolve().then(function () {
+ (s = void 0), t(o());
+ });
+ })),
+ s
+ );
+ }),
+ destroy: function () {
+ f(), (c = !0);
+ }
+ };
+ if (!Ae(t, e)) return u;
+ function f() {
+ l.forEach(function (t) {
+ return t();
+ }),
+ (l = []);
+ }
+ return (
+ u.setOptions(n).then(function (t) {
+ !c && n.onFirstUpdate && n.onFirstUpdate(t);
+ }),
+ u
+ );
+ };
+ }
+ var Te = Ce(),
+ Le = Ce({ defaultModifiers: [Zt, _e, Gt, Tt] }),
+ Se = Ce({ defaultModifiers: [Zt, _e, Gt, Tt, ye, me, we, Ut, be] }),
+ je = Object.freeze({
+ __proto__: null,
+ afterMain: vt,
+ afterRead: ht,
+ afterWrite: _t,
+ applyStyles: Tt,
+ arrow: Ut,
+ auto: nt,
+ basePlacements: it,
+ beforeMain: mt,
+ beforeRead: dt,
+ beforeWrite: bt,
+ bottom: Z,
+ clippingParents: st,
+ computeStyles: Gt,
+ createPopper: Se,
+ createPopperBase: Te,
+ createPopperLite: Le,
+ detectOverflow: pe,
+ end: rt,
+ eventListeners: Zt,
+ flip: me,
+ hide: be,
+ left: et,
+ main: gt,
+ modifierPhases: wt,
+ offset: ye,
+ placements: ft,
+ popper: lt,
+ popperGenerator: Ce,
+ popperOffsets: _e,
+ preventOverflow: we,
+ read: pt,
+ reference: ct,
+ right: tt,
+ start: ot,
+ top: J,
+ variationPlacements: ut,
+ viewport: at,
+ write: yt
+ });
+ const ke = {
+ '*': ['class', 'dir', 'id', 'lang', 'role', /^aria-[\w-]*$/i],
+ a: ['target', 'href', 'title', 'rel'],
+ area: [],
+ b: [],
+ br: [],
+ col: [],
+ code: [],
+ dd: [],
+ div: [],
+ dl: [],
+ dt: [],
+ em: [],
+ hr: [],
+ h1: [],
+ h2: [],
+ h3: [],
+ h4: [],
+ h5: [],
+ h6: [],
+ i: [],
+ img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],
+ li: [],
+ ol: [],
+ p: [],
+ pre: [],
+ s: [],
+ small: [],
+ span: [],
+ sub: [],
+ sup: [],
+ strong: [],
+ u: [],
+ ul: []
+ },
+ De = new Set([
+ 'background',
+ 'cite',
+ 'href',
+ 'itemtype',
+ 'longdesc',
+ 'poster',
+ 'src',
+ 'xlink:href'
+ ]),
+ Pe = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,
+ Me = (t, e) => {
+ const n = t.nodeName.toLowerCase();
+ return e.includes(n)
+ ? !De.has(n) || Boolean(Pe.test(t.nodeValue))
+ : e.filter((t) => t instanceof RegExp).some((t) => t.test(n));
+ };
+ const Ne = {
+ allowList: ke,
+ content: {},
+ extraClass: '',
+ html: !1,
+ sanitize: !0,
+ sanitizeFn: null,
+ template: ''
+ },
+ Be = {
+ allowList: 'object',
+ content: 'object',
+ extraClass: '(string|function)',
+ html: 'boolean',
+ sanitize: 'boolean',
+ sanitizeFn: '(null|function)',
+ template: 'string'
+ },
+ Ie = {
+ entry: '(string|element|function|null)',
+ selector: '(string|element)'
+ };
+ class Fe extends M {
+ constructor(t) {
+ super(), (this._config = this._getConfig(t));
+ }
+ static get Default() {
+ return Ne;
+ }
+ static get DefaultType() {
+ return Be;
+ }
+ static get NAME() {
+ return 'TemplateFactory';
+ }
+ getContent() {
+ return Object.values(this._config.content)
+ .map((t) => this._resolvePossibleFunction(t))
+ .filter(Boolean);
+ }
+ hasContent() {
+ return this.getContent().length > 0;
+ }
+ changeContent(t) {
+ return (
+ this._checkContent(t),
+ (this._config.content = { ...this._config.content, ...t }),
+ this
+ );
+ }
+ toHtml() {
+ const t = document.createElement('div');
+ t.innerHTML = this._maybeSanitize(this._config.template);
+ for (const [e, n] of Object.entries(this._config.content))
+ this._setContent(t, n, e);
+ const e = t.children[0],
+ n = this._resolvePossibleFunction(this._config.extraClass);
+ return n && e.classList.add(...n.split(' ')), e;
+ }
+ _typeCheckConfig(t) {
+ super._typeCheckConfig(t), this._checkContent(t.content);
+ }
+ _checkContent(t) {
+ for (const [e, n] of Object.entries(t))
+ super._typeCheckConfig({ selector: e, entry: n }, Ie);
+ }
+ _setContent(t, e, n) {
+ const i = I.findOne(n, t);
+ i &&
+ ((e = this._resolvePossibleFunction(e))
+ ? o(e)
+ ? this._putElementInTemplate(r(e), i)
+ : this._config.html
+ ? (i.innerHTML = this._maybeSanitize(e))
+ : (i.textContent = e)
+ : i.remove());
+ }
+ _maybeSanitize(t) {
+ return this._config.sanitize
+ ? (function (t, e, n) {
+ if (!t.length) return t;
+ if (n && 'function' == typeof n) return n(t);
+ const i = new window.DOMParser().parseFromString(t, 'text/html'),
+ o = [].concat(...i.body.querySelectorAll('*'));
+ for (const t of o) {
+ const n = t.nodeName.toLowerCase();
+ if (!Object.keys(e).includes(n)) {
+ t.remove();
+ continue;
+ }
+ const i = [].concat(...t.attributes),
+ o = [].concat(e['*'] || [], e[n] || []);
+ for (const e of i) Me(e, o) || t.removeAttribute(e.nodeName);
+ }
+ return i.body.innerHTML;
+ })(t, this._config.allowList, this._config.sanitizeFn)
+ : t;
+ }
+ _resolvePossibleFunction(t) {
+ return d(t, [this]);
+ }
+ _putElementInTemplate(t, e) {
+ if (this._config.html) return (e.innerHTML = ''), void e.append(t);
+ e.textContent = t.textContent;
+ }
+ }
+ const He = new Set(['sanitize', 'allowList', 'sanitizeFn']),
+ $e = 'fade',
+ Re = 'show',
+ ze = '.tooltip-inner',
+ qe = '.modal',
+ We = 'hide.bs.modal',
+ Ve = 'hover',
+ Ye = 'focus',
+ Ue = {
+ AUTO: 'auto',
+ TOP: 'top',
+ RIGHT: u() ? 'left' : 'right',
+ BOTTOM: 'bottom',
+ LEFT: u() ? 'right' : 'left'
+ },
+ Ke = {
+ allowList: ke,
+ animation: !0,
+ boundary: 'clippingParents',
+ container: !1,
+ customClass: '',
+ delay: 0,
+ fallbackPlacements: ['top', 'right', 'bottom', 'left'],
+ html: !1,
+ offset: [0, 6],
+ placement: 'top',
+ popperConfig: null,
+ sanitize: !0,
+ sanitizeFn: null,
+ selector: !1,
+ template:
+ '=0,j=S?"width":"height",k=pe(e,{placement:C,boundary:u,rootBoundary:f,altBoundary:d,padding:c}),D=S?L?tt:et:L?Z:J;_[j]>w[j]&&(D=ee(D));var P=ee(D),M=[];if(r&&M.push(k[T]<=0),a&&M.push(k[D]<=0,k[P]<=0),M.every((function(t){return t}))){x=C,O=!1;break}E.set(C,M)}if(O)for(var N=function(t){var e=y.find((function(e){var n=E.get(e);if(n)return n.slice(0,t).every((function(t){return t}))}));if(e)return x=e,"break"},B=h?3:1;B>0;B--){if("break"===N(B))break}e.placement!==x&&(e.modifiersData[i]._skip=!0,e.placement=x,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function ge(t,e,n){return void 0===n&&(n={x:0,y:0}),{top:t.top-e.height-n.y,right:t.right-e.width+n.x,bottom:t.bottom-e.height+n.y,left:t.left-e.width-n.x}}function ve(t){return[J,tt,Z,et].some((function(e){return t[e]>=0}))}var be={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,n=t.name,i=e.rects.reference,o=e.rects.popper,r=e.modifiersData.preventOverflow,s=pe(e,{elementContext:"reference"}),a=pe(e,{altBoundary:!0}),l=ge(s,i),c=ge(a,o,r),u=ve(l),f=ve(c);e.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:u,hasPopperEscaped:f},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":f})}};var ye={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.offset,r=void 0===o?[0,0]:o,s=ft.reduce((function(t,n){return t[n]=function(t,e,n){var i=Lt(t),o=[et,J].indexOf(i)>=0?-1:1,r="function"==typeof n?n(Object.assign({},e,{placement:t})):n,s=r[0],a=r[1];return s=s||0,a=(a||0)*o,[et,tt].indexOf(i)>=0?{x:a,y:s}:{x:s,y:a}}(n,e.rects,r),t}),{}),a=s[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[i]=s}};var _e={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,n=t.name;e.modifiersData[n]=de({reference:e.rects.reference,element:e.rects.popper,placement:e.placement})},data:{}};var we={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0!==s&&s,l=n.boundary,c=n.rootBoundary,u=n.altBoundary,f=n.padding,d=n.tether,p=void 0===d||d,h=n.tetherOffset,m=void 0===h?0:h,g=pe(e,{boundary:l,rootBoundary:c,padding:f,altBoundary:u}),v=Lt(e.placement),b=Kt(e.placement),y=!b,_=Rt(v),w="x"===_?"y":"x",E=e.modifiersData.popperOffsets,O=e.rects.reference,x=e.rects.popper,A="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,C="number"==typeof A?{mainAxis:A,altAxis:A}:Object.assign({mainAxis:0,altAxis:0},A),T=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,L={x:0,y:0};if(E){if(r){var S,j="y"===_?J:et,k="y"===_?Z:tt,D="y"===_?"height":"width",P=E[_],M=P+g[j],N=P-g[k],B=p?-x[D]/2:0,F=b===ot?O[D]:x[D],I=b===ot?-x[D]:-O[D],H=e.elements.arrow,$=p&&H?Nt(H):{width:0,height:0},z=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},W=z[j],R=z[k],q=qt(0,O[D],$[D]),V=y?O[D]/2-B-q-W-C.mainAxis:F-q-W-C.mainAxis,Y=y?-O[D]/2+B+q+R+C.mainAxis:I+q+R+C.mainAxis,U=e.elements.arrow&&Wt(e.elements.arrow),K=U?"y"===_?U.clientTop||0:U.clientLeft||0:0,Q=null!=(S=null==T?void 0:T[_])?S:0,X=P+Y-Q,G=qt(p?jt(M,P+V-Q-K):M,P,p?St(N,X):N);E[_]=G,L[_]=G-P}if(a){var nt,it="x"===_?J:et,rt="x"===_?Z:tt,st=E[w],at="y"===w?"height":"width",lt=st+g[it],ct=st-g[rt],ut=-1!==[J,et].indexOf(v),ft=null!=(nt=null==T?void 0:T[w])?nt:0,dt=ut?lt:st-O[at]-x[at]-ft+C.altAxis,pt=ut?st+O[at]+x[at]-ft-C.altAxis:ct,ht=p&&ut?function(t,e,n){var i=qt(t,e,n);return i>n?n:i}(dt,st,pt):qt(p?dt:lt,st,p?pt:ct);E[w]=ht,L[w]=ht-st}e.modifiersData[i]=L}},requiresIfExists:["offset"]};function Ee(t,e,n){void 0===n&&(n=!1);var i,o,r=At(e),s=At(e)&&function(t){var e=t.getBoundingClientRect(),n=kt(e.width)/t.offsetWidth||1,i=kt(e.height)/t.offsetHeight||1;return 1!==n||1!==i}(e),a=Ht(e),l=Mt(t,s,n),c={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(r||!r&&!n)&&(("body"!==Et(e)||se(a))&&(c=(i=e)!==Ot(i)&&At(i)?{scrollLeft:(o=i).scrollLeft,scrollTop:o.scrollTop}:oe(i)),At(e)?((u=Mt(e,!0)).x+=e.clientLeft,u.y+=e.clientTop):a&&(u.x=re(a))),{x:l.left+c.scrollLeft-u.x,y:l.top+c.scrollTop-u.y,width:l.width,height:l.height}}function Oe(t){var e=new Map,n=new Set,i=[];function o(t){n.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!n.has(t)){var i=e.get(t);i&&o(i)}})),i.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){n.has(t.name)||o(t)})),i}var xe={placement:"bottom",modifiers:[],strategy:"absolute"};function Ae(){for(var t=arguments.length,e=new Array(t),n=0;n{const n=t.nodeName.toLowerCase();return e.includes(n)?!De.has(n)||Boolean(Pe.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(n)))};const Ne={allowList:ke,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:""},Be={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Fe={entry:"(string|element|function|null)",selector:"(string|element)"};class Ie extends M{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Ne}static get DefaultType(){return Be}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,n]of Object.entries(this._config.content))this._setContent(t,n,e);const e=t.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&e.classList.add(...n.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,n]of Object.entries(t))super._typeCheckConfig({selector:e,entry:n},Fe)}_setContent(t,e,n){const i=F.findOne(n,t);i&&((e=this._resolvePossibleFunction(e))?o(e)?this._putElementInTemplate(r(e),i):this._config.html?i.innerHTML=this._maybeSanitize(e):i.textContent=e:i.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,n){if(!t.length)return t;if(n&&"function"==typeof n)return n(t);const i=(new window.DOMParser).parseFromString(t,"text/html"),o=[].concat(...i.body.querySelectorAll("*"));for(const t of o){const n=t.nodeName.toLowerCase();if(!Object.keys(e).includes(n)){t.remove();continue}const i=[].concat(...t.attributes),o=[].concat(e["*"]||[],e[n]||[]);for(const e of i)Me(e,o)||t.removeAttribute(e.nodeName)}return i.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return d(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const He=new Set(["sanitize","allowList","sanitizeFn"]),$e="fade",ze="show",We=".tooltip-inner",Re=".modal",qe="hide.bs.modal",Ve="hover",Ye="focus",Ue={AUTO:"auto",TOP:"top",RIGHT:u()?"left":"right",BOTTOM:"bottom",LEFT:u()?"right":"left"},Ke={allowList:ke,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'e.right||t.clientYe.bottom)&&this.hidePopup()}static initComponents(){this.initBar(),[...on].forEach((t=>{t.onclick=()=>this.showPopup()})),rn.onclick=t=>this.clickBackdrop(t),sn.onclick=()=>this.hidePopup(),rn.oncancel=t=>{t.preventDefault(),this.hidePopup()}}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}}var un={_:!0},fn={_:48};Ze(cn,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:Je(tn=cn,tn,fn)._});Ze(class{static refresh(){tocbot.refresh(this.options)}static init(){document.getElementById("toc-wrapper")&&tocbot.init(this.options)}},"options",{tocSelector:"#toc",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,headingsOffset:32}),matchMedia("(min-width: 1200px)"),Theme.getThemeMapper("default","dark");const dn=document.getElementById("mode-toggle");const pn=document.getElementById("sidebar"),hn=document.getElementById("sidebar-trigger"),mn=document.getElementById("mask");class gn{static toggle(){vn._=Je(gn,this,!Je(gn,this,vn)._),document.body.toggleAttribute("sidebar-display",Je(gn,this,vn)._),pn.classList.toggle("z-2",Je(gn,this,vn)._),mn.classList.toggle("d-none",!Je(gn,this,vn)._)}}var vn={_:!1};const bn=document.getElementById("sidebar-trigger"),yn=document.getElementById("search-trigger"),_n=document.getElementById("search-cancel"),wn=document.querySelectorAll("#main-wrapper>.container>.row"),En=document.getElementById("topbar-title"),On=document.getElementById("search"),xn=document.getElementById("search-result-wrapper"),An=document.getElementById("search-results"),Cn=document.getElementById("search-input"),Tn=document.getElementById("search-hints"),Ln="d-block",Sn="d-none",jn="input-focus",kn="d-flex";class Dn{static on(){bn.classList.add(Sn),En.classList.add(Sn),yn.classList.add(Sn),On.classList.add(kn),_n.classList.add(Ln)}static off(){_n.classList.remove(Ln),On.classList.remove(kn),bn.classList.remove(Sn),En.classList.remove(Sn),yn.classList.remove(Sn)}}class Pn{static on(){this.resultVisible||(xn.classList.remove(Sn),wn.forEach((t=>{t.classList.add(Sn)})),this.resultVisible=!0)}static off(){this.resultVisible&&(An.innerHTML="",Tn.classList.contains(Sn)&&Tn.classList.remove(Sn),xn.classList.add(Sn),wn.forEach((t=>{t.classList.remove(Sn)})),Cn.textContent="",this.resultVisible=!1)}}function Mn(){return _n.classList.contains(Ln)}Ze(Pn,"resultVisible",!1),hn.onclick=mn.onclick=()=>gn.toggle(),yn.addEventListener("click",(()=>{Dn.on(),Pn.on(),Cn.focus()})),_n.addEventListener("click",(()=>{Dn.off(),Pn.off()})),Cn.addEventListener("focus",(()=>{On.classList.add(jn)})),Cn.addEventListener("focusout",(()=>{On.classList.remove(jn)})),Cn.addEventListener("input",(()=>{""===Cn.value?Mn()?Tn.classList.remove(Sn):Pn.off():(Pn.on(),Mn()&&Tn.classList.add(Sn))})),dayjs.locale(Ge.locale),dayjs.extend(window.dayjs_plugin_localizedFormat),document.querySelectorAll(`[${Ge.attrTimestamp}]`).forEach((t=>{const e=dayjs.unix(Ge.getTimestamp(t)),n=e.format(Ge.getDateFormat(t));if(t.textContent=n,t.removeAttribute(Ge.attrTimestamp),t.removeAttribute(Ge.attrDateFormat),t.hasAttribute("data-bs-toggle")&&"tooltip"===t.getAttribute("data-bs-toggle")){const n=e.format("llll");t.setAttribute("data-bs-title",n)}})),dn&&dn.addEventListener("click",(()=>{Theme.flip()})),function(){const t=document.getElementById("back-to-top");window.addEventListener("scroll",(()=>{window.scrollY>50?t.classList.add("show"):t.classList.remove("show")})),t.addEventListener("click",(()=>{window.scrollTo({top:0})}))}(),[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map((t=>new Xe(t)))}();
+!(function () {
+ 'use strict';
+ const t = new Map();
+ var e = {
+ set(e, n, i) {
+ t.has(e) || t.set(e, new Map());
+ const o = t.get(e);
+ o.has(n) || 0 === o.size
+ ? o.set(n, i)
+ : console.error(
+ `Bootstrap doesn't allow more than one instance per element. Bound instance: ${
+ Array.from(o.keys())[0]
+ }.`
+ );
+ },
+ get: (e, n) => (t.has(e) && t.get(e).get(n)) || null,
+ remove(e, n) {
+ if (!t.has(e)) return;
+ const i = t.get(e);
+ i.delete(n), 0 === i.size && t.delete(e);
+ }
+ };
+ const n = 'transitionend',
+ i = (t) => (
+ t &&
+ window.CSS &&
+ window.CSS.escape &&
+ (t = t.replace(/#([^\s"#']+)/g, (t, e) => `#${CSS.escape(e)}`)),
+ t
+ ),
+ o = (t) =>
+ !(!t || 'object' != typeof t) &&
+ (void 0 !== t.jquery && (t = t[0]), void 0 !== t.nodeType),
+ r = (t) =>
+ o(t)
+ ? t.jquery
+ ? t[0]
+ : t
+ : 'string' == typeof t && t.length > 0
+ ? document.querySelector(i(t))
+ : null,
+ s = (t) => {
+ if (!document.documentElement.attachShadow) return null;
+ if ('function' == typeof t.getRootNode) {
+ const e = t.getRootNode();
+ return e instanceof ShadowRoot ? e : null;
+ }
+ return t instanceof ShadowRoot
+ ? t
+ : t.parentNode
+ ? s(t.parentNode)
+ : null;
+ },
+ a = () => {},
+ l = () =>
+ window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')
+ ? window.jQuery
+ : null,
+ c = [],
+ u = () => 'rtl' === document.documentElement.dir,
+ f = (t) => {
+ var e;
+ (e = () => {
+ const e = l();
+ if (e) {
+ const n = t.NAME,
+ i = e.fn[n];
+ (e.fn[n] = t.jQueryInterface),
+ (e.fn[n].Constructor = t),
+ (e.fn[n].noConflict = () => ((e.fn[n] = i), t.jQueryInterface));
+ }
+ }),
+ 'loading' === document.readyState
+ ? (c.length ||
+ document.addEventListener('DOMContentLoaded', () => {
+ for (const t of c) t();
+ }),
+ c.push(e))
+ : e();
+ },
+ d = function (t) {
+ let e =
+ arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : t;
+ return 'function' == typeof t
+ ? t(
+ ...(arguments.length > 1 && void 0 !== arguments[1]
+ ? arguments[1]
+ : [])
+ )
+ : e;
+ },
+ p = function (t, e) {
+ if (!(!(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]))
+ return void d(t);
+ const i =
+ ((t) => {
+ if (!t) return 0;
+ let { transitionDuration: e, transitionDelay: n } =
+ window.getComputedStyle(t);
+ const i = Number.parseFloat(e),
+ o = Number.parseFloat(n);
+ return i || o
+ ? ((e = e.split(',')[0]),
+ (n = n.split(',')[0]),
+ 1e3 * (Number.parseFloat(e) + Number.parseFloat(n)))
+ : 0;
+ })(e) + 5;
+ let o = !1;
+ const r = (i) => {
+ let { target: s } = i;
+ s === e && ((o = !0), e.removeEventListener(n, r), d(t));
+ };
+ e.addEventListener(n, r),
+ setTimeout(() => {
+ o || e.dispatchEvent(new Event(n));
+ }, i);
+ },
+ h = /[^.]*(?=\..*)\.|.*/,
+ m = /\..*/,
+ g = /::\d+$/,
+ v = {};
+ let b = 1;
+ const y = { mouseenter: 'mouseover', mouseleave: 'mouseout' },
+ _ = new Set([
+ 'click',
+ 'dblclick',
+ 'mouseup',
+ 'mousedown',
+ 'contextmenu',
+ 'mousewheel',
+ 'DOMMouseScroll',
+ 'mouseover',
+ 'mouseout',
+ 'mousemove',
+ 'selectstart',
+ 'selectend',
+ 'keydown',
+ 'keypress',
+ 'keyup',
+ 'orientationchange',
+ 'touchstart',
+ 'touchmove',
+ 'touchend',
+ 'touchcancel',
+ 'pointerdown',
+ 'pointermove',
+ 'pointerup',
+ 'pointerleave',
+ 'pointercancel',
+ 'gesturestart',
+ 'gesturechange',
+ 'gestureend',
+ 'focus',
+ 'blur',
+ 'change',
+ 'reset',
+ 'select',
+ 'submit',
+ 'focusin',
+ 'focusout',
+ 'load',
+ 'unload',
+ 'beforeunload',
+ 'resize',
+ 'move',
+ 'DOMContentLoaded',
+ 'readystatechange',
+ 'error',
+ 'abort',
+ 'scroll'
+ ]);
+ function w(t, e) {
+ return (e && `${e}::${b++}`) || t.uidEvent || b++;
+ }
+ function E(t) {
+ const e = w(t);
+ return (t.uidEvent = e), (v[e] = v[e] || {}), v[e];
+ }
+ function O(t, e) {
+ let n =
+ arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null;
+ return Object.values(t).find(
+ (t) => t.callable === e && t.delegationSelector === n
+ );
+ }
+ function x(t, e, n) {
+ const i = 'string' == typeof e,
+ o = i ? n : e || n;
+ let r = L(t);
+ return _.has(r) || (r = t), [i, o, r];
+ }
+ function A(t, e, n, i, o) {
+ if ('string' != typeof e || !t) return;
+ let [r, s, a] = x(e, n, i);
+ if (e in y) {
+ const t = (t) =>
+ function (e) {
+ if (
+ !e.relatedTarget ||
+ (e.relatedTarget !== e.delegateTarget &&
+ !e.delegateTarget.contains(e.relatedTarget))
+ )
+ return t.call(this, e);
+ };
+ s = t(s);
+ }
+ const l = E(t),
+ c = l[a] || (l[a] = {}),
+ u = O(c, s, r ? n : null);
+ if (u) return void (u.oneOff = u.oneOff && o);
+ const f = w(s, e.replace(h, '')),
+ d = r
+ ? (function (t, e, n) {
+ return function i(o) {
+ const r = t.querySelectorAll(e);
+ for (let { target: s } = o; s && s !== this; s = s.parentNode)
+ for (const a of r)
+ if (a === s)
+ return (
+ j(o, { delegateTarget: s }),
+ i.oneOff && S.off(t, o.type, e, n),
+ n.apply(s, [o])
+ );
+ };
+ })(t, n, s)
+ : (function (t, e) {
+ return function n(i) {
+ return (
+ j(i, { delegateTarget: t }),
+ n.oneOff && S.off(t, i.type, e),
+ e.apply(t, [i])
+ );
+ };
+ })(t, s);
+ (d.delegationSelector = r ? n : null),
+ (d.callable = s),
+ (d.oneOff = o),
+ (d.uidEvent = f),
+ (c[f] = d),
+ t.addEventListener(a, d, r);
+ }
+ function C(t, e, n, i, o) {
+ const r = O(e[n], i, o);
+ r && (t.removeEventListener(n, r, Boolean(o)), delete e[n][r.uidEvent]);
+ }
+ function T(t, e, n, i) {
+ const o = e[n] || {};
+ for (const [r, s] of Object.entries(o))
+ r.includes(i) && C(t, e, n, s.callable, s.delegationSelector);
+ }
+ function L(t) {
+ return (t = t.replace(m, '')), y[t] || t;
+ }
+ const S = {
+ on(t, e, n, i) {
+ A(t, e, n, i, !1);
+ },
+ one(t, e, n, i) {
+ A(t, e, n, i, !0);
+ },
+ off(t, e, n, i) {
+ if ('string' != typeof e || !t) return;
+ const [o, r, s] = x(e, n, i),
+ a = s !== e,
+ l = E(t),
+ c = l[s] || {},
+ u = e.startsWith('.');
+ if (void 0 === r) {
+ if (u) for (const n of Object.keys(l)) T(t, l, n, e.slice(1));
+ for (const [n, i] of Object.entries(c)) {
+ const o = n.replace(g, '');
+ (a && !e.includes(o)) || C(t, l, s, i.callable, i.delegationSelector);
+ }
+ } else {
+ if (!Object.keys(c).length) return;
+ C(t, l, s, r, o ? n : null);
+ }
+ },
+ trigger(t, e, n) {
+ if ('string' != typeof e || !t) return null;
+ const i = l();
+ let o = null,
+ r = !0,
+ s = !0,
+ a = !1;
+ e !== L(e) &&
+ i &&
+ ((o = i.Event(e, n)),
+ i(t).trigger(o),
+ (r = !o.isPropagationStopped()),
+ (s = !o.isImmediatePropagationStopped()),
+ (a = o.isDefaultPrevented()));
+ const c = j(new Event(e, { bubbles: r, cancelable: !0 }), n);
+ return (
+ a && c.preventDefault(),
+ s && t.dispatchEvent(c),
+ c.defaultPrevented && o && o.preventDefault(),
+ c
+ );
+ }
+ };
+ function j(t) {
+ let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
+ for (const [n, i] of Object.entries(e))
+ try {
+ t[n] = i;
+ } catch {
+ Object.defineProperty(t, n, { configurable: !0, get: () => i });
+ }
+ return t;
+ }
+ function k(t) {
+ if ('true' === t) return !0;
+ if ('false' === t) return !1;
+ if (t === Number(t).toString()) return Number(t);
+ if ('' === t || 'null' === t) return null;
+ if ('string' != typeof t) return t;
+ try {
+ return JSON.parse(decodeURIComponent(t));
+ } catch {
+ return t;
+ }
+ }
+ function D(t) {
+ return t.replace(/[A-Z]/g, (t) => `-${t.toLowerCase()}`);
+ }
+ const P = {
+ setDataAttribute(t, e, n) {
+ t.setAttribute(`data-bs-${D(e)}`, n);
+ },
+ removeDataAttribute(t, e) {
+ t.removeAttribute(`data-bs-${D(e)}`);
+ },
+ getDataAttributes(t) {
+ if (!t) return {};
+ const e = {},
+ n = Object.keys(t.dataset).filter(
+ (t) => t.startsWith('bs') && !t.startsWith('bsConfig')
+ );
+ for (const i of n) {
+ let n = i.replace(/^bs/, '');
+ (n = n.charAt(0).toLowerCase() + n.slice(1, n.length)),
+ (e[n] = k(t.dataset[i]));
+ }
+ return e;
+ },
+ getDataAttribute: (t, e) => k(t.getAttribute(`data-bs-${D(e)}`))
+ };
+ class M {
+ static get Default() {
+ return {};
+ }
+ static get DefaultType() {
+ return {};
+ }
+ static get NAME() {
+ throw new Error(
+ 'You have to implement the static method "NAME", for each component!'
+ );
+ }
+ _getConfig(t) {
+ return (
+ (t = this._mergeConfigObj(t)),
+ (t = this._configAfterMerge(t)),
+ this._typeCheckConfig(t),
+ t
+ );
+ }
+ _configAfterMerge(t) {
+ return t;
+ }
+ _mergeConfigObj(t, e) {
+ const n = o(e) ? P.getDataAttribute(e, 'config') : {};
+ return {
+ ...this.constructor.Default,
+ ...('object' == typeof n ? n : {}),
+ ...(o(e) ? P.getDataAttributes(e) : {}),
+ ...('object' == typeof t ? t : {})
+ };
+ }
+ _typeCheckConfig(t) {
+ let e =
+ arguments.length > 1 && void 0 !== arguments[1]
+ ? arguments[1]
+ : this.constructor.DefaultType;
+ for (const [i, r] of Object.entries(e)) {
+ const e = t[i],
+ s = o(e)
+ ? 'element'
+ : null == (n = e)
+ ? `${n}`
+ : Object.prototype.toString
+ .call(n)
+ .match(/\s([a-z]+)/i)[1]
+ .toLowerCase();
+ if (!new RegExp(r).test(s))
+ throw new TypeError(
+ `${this.constructor.NAME.toUpperCase()}: Option "${i}" provided type "${s}" but expected type "${r}".`
+ );
+ }
+ var n;
+ }
+ }
+ class N extends M {
+ constructor(t, n) {
+ super(),
+ (t = r(t)) &&
+ ((this._element = t),
+ (this._config = this._getConfig(n)),
+ e.set(this._element, this.constructor.DATA_KEY, this));
+ }
+ dispose() {
+ e.remove(this._element, this.constructor.DATA_KEY),
+ S.off(this._element, this.constructor.EVENT_KEY);
+ for (const t of Object.getOwnPropertyNames(this)) this[t] = null;
+ }
+ _queueCallback(t, e) {
+ p(
+ t,
+ e,
+ !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]
+ );
+ }
+ _getConfig(t) {
+ return (
+ (t = this._mergeConfigObj(t, this._element)),
+ (t = this._configAfterMerge(t)),
+ this._typeCheckConfig(t),
+ t
+ );
+ }
+ static getInstance(t) {
+ return e.get(r(t), this.DATA_KEY);
+ }
+ static getOrCreateInstance(t) {
+ let e =
+ arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
+ return (
+ this.getInstance(t) || new this(t, 'object' == typeof e ? e : null)
+ );
+ }
+ static get VERSION() {
+ return '5.3.3';
+ }
+ static get DATA_KEY() {
+ return `bs.${this.NAME}`;
+ }
+ static get EVENT_KEY() {
+ return `.${this.DATA_KEY}`;
+ }
+ static eventName(t) {
+ return `${t}${this.EVENT_KEY}`;
+ }
+ }
+ const B = (t) => {
+ let e = t.getAttribute('data-bs-target');
+ if (!e || '#' === e) {
+ let n = t.getAttribute('href');
+ if (!n || (!n.includes('#') && !n.startsWith('.'))) return null;
+ n.includes('#') && !n.startsWith('#') && (n = `#${n.split('#')[1]}`),
+ (e = n && '#' !== n ? n.trim() : null);
+ }
+ return e
+ ? e
+ .split(',')
+ .map((t) => i(t))
+ .join(',')
+ : null;
+ },
+ F = {
+ find(t) {
+ let e =
+ arguments.length > 1 && void 0 !== arguments[1]
+ ? arguments[1]
+ : document.documentElement;
+ return [].concat(...Element.prototype.querySelectorAll.call(e, t));
+ },
+ findOne(t) {
+ let e =
+ arguments.length > 1 && void 0 !== arguments[1]
+ ? arguments[1]
+ : document.documentElement;
+ return Element.prototype.querySelector.call(e, t);
+ },
+ children: (t, e) => [].concat(...t.children).filter((t) => t.matches(e)),
+ parents(t, e) {
+ const n = [];
+ let i = t.parentNode.closest(e);
+ for (; i; ) n.push(i), (i = i.parentNode.closest(e));
+ return n;
+ },
+ prev(t, e) {
+ let n = t.previousElementSibling;
+ for (; n; ) {
+ if (n.matches(e)) return [n];
+ n = n.previousElementSibling;
+ }
+ return [];
+ },
+ next(t, e) {
+ let n = t.nextElementSibling;
+ for (; n; ) {
+ if (n.matches(e)) return [n];
+ n = n.nextElementSibling;
+ }
+ return [];
+ },
+ focusableChildren(t) {
+ const e = [
+ 'a',
+ 'button',
+ 'input',
+ 'textarea',
+ 'select',
+ 'details',
+ '[tabindex]',
+ '[contenteditable="true"]'
+ ]
+ .map((t) => `${t}:not([tabindex^="-"])`)
+ .join(',');
+ return this.find(e, t).filter(
+ (t) =>
+ !((t) =>
+ !t ||
+ t.nodeType !== Node.ELEMENT_NODE ||
+ !!t.classList.contains('disabled') ||
+ (void 0 !== t.disabled
+ ? t.disabled
+ : t.hasAttribute('disabled') &&
+ 'false' !== t.getAttribute('disabled')))(t) &&
+ ((t) => {
+ if (!o(t) || 0 === t.getClientRects().length) return !1;
+ const e =
+ 'visible' ===
+ getComputedStyle(t).getPropertyValue('visibility'),
+ n = t.closest('details:not([open])');
+ if (!n) return e;
+ if (n !== t) {
+ const e = t.closest('summary');
+ if (e && e.parentNode !== n) return !1;
+ if (null === e) return !1;
+ }
+ return e;
+ })(t)
+ );
+ },
+ getSelectorFromElement(t) {
+ const e = B(t);
+ return e && F.findOne(e) ? e : null;
+ },
+ getElementFromSelector(t) {
+ const e = B(t);
+ return e ? F.findOne(e) : null;
+ },
+ getMultipleElementsFromSelector(t) {
+ const e = B(t);
+ return e ? F.find(e) : [];
+ }
+ },
+ I = '.bs.collapse',
+ H = `show${I}`,
+ $ = `shown${I}`,
+ z = `hide${I}`,
+ W = `hidden${I}`,
+ R = `click${I}.data-api`,
+ q = 'show',
+ V = 'collapse',
+ Y = 'collapsing',
+ U = `:scope .${V} .${V}`,
+ K = '[data-bs-toggle="collapse"]',
+ Q = { parent: null, toggle: !0 },
+ X = { parent: '(null|element)', toggle: 'boolean' };
+ class G extends N {
+ constructor(t, e) {
+ super(t, e), (this._isTransitioning = !1), (this._triggerArray = []);
+ const n = F.find(K);
+ for (const t of n) {
+ const e = F.getSelectorFromElement(t),
+ n = F.find(e).filter((t) => t === this._element);
+ null !== e && n.length && this._triggerArray.push(t);
+ }
+ this._initializeChildren(),
+ this._config.parent ||
+ this._addAriaAndCollapsedClass(this._triggerArray, this._isShown()),
+ this._config.toggle && this.toggle();
+ }
+ static get Default() {
+ return Q;
+ }
+ static get DefaultType() {
+ return X;
+ }
+ static get NAME() {
+ return 'collapse';
+ }
+ toggle() {
+ this._isShown() ? this.hide() : this.show();
+ }
+ show() {
+ if (this._isTransitioning || this._isShown()) return;
+ let t = [];
+ if (
+ (this._config.parent &&
+ (t = this._getFirstLevelChildren(
+ '.collapse.show, .collapse.collapsing'
+ )
+ .filter((t) => t !== this._element)
+ .map((t) => G.getOrCreateInstance(t, { toggle: !1 }))),
+ t.length && t[0]._isTransitioning)
+ )
+ return;
+ if (S.trigger(this._element, H).defaultPrevented) return;
+ for (const e of t) e.hide();
+ const e = this._getDimension();
+ this._element.classList.remove(V),
+ this._element.classList.add(Y),
+ (this._element.style[e] = 0),
+ this._addAriaAndCollapsedClass(this._triggerArray, !0),
+ (this._isTransitioning = !0);
+ const n = `scroll${e[0].toUpperCase() + e.slice(1)}`;
+ this._queueCallback(
+ () => {
+ (this._isTransitioning = !1),
+ this._element.classList.remove(Y),
+ this._element.classList.add(V, q),
+ (this._element.style[e] = ''),
+ S.trigger(this._element, $);
+ },
+ this._element,
+ !0
+ ),
+ (this._element.style[e] = `${this._element[n]}px`);
+ }
+ hide() {
+ if (this._isTransitioning || !this._isShown()) return;
+ if (S.trigger(this._element, z).defaultPrevented) return;
+ const t = this._getDimension();
+ (this._element.style[t] = `${
+ this._element.getBoundingClientRect()[t]
+ }px`),
+ this._element.offsetHeight,
+ this._element.classList.add(Y),
+ this._element.classList.remove(V, q);
+ for (const t of this._triggerArray) {
+ const e = F.getElementFromSelector(t);
+ e && !this._isShown(e) && this._addAriaAndCollapsedClass([t], !1);
+ }
+ this._isTransitioning = !0;
+ (this._element.style[t] = ''),
+ this._queueCallback(
+ () => {
+ (this._isTransitioning = !1),
+ this._element.classList.remove(Y),
+ this._element.classList.add(V),
+ S.trigger(this._element, W);
+ },
+ this._element,
+ !0
+ );
+ }
+ _isShown() {
+ return (
+ arguments.length > 0 && void 0 !== arguments[0]
+ ? arguments[0]
+ : this._element
+ ).classList.contains(q);
+ }
+ _configAfterMerge(t) {
+ return (t.toggle = Boolean(t.toggle)), (t.parent = r(t.parent)), t;
+ }
+ _getDimension() {
+ return this._element.classList.contains('collapse-horizontal')
+ ? 'width'
+ : 'height';
+ }
+ _initializeChildren() {
+ if (!this._config.parent) return;
+ const t = this._getFirstLevelChildren(K);
+ for (const e of t) {
+ const t = F.getElementFromSelector(e);
+ t && this._addAriaAndCollapsedClass([e], this._isShown(t));
+ }
+ }
+ _getFirstLevelChildren(t) {
+ const e = F.find(U, this._config.parent);
+ return F.find(t, this._config.parent).filter((t) => !e.includes(t));
+ }
+ _addAriaAndCollapsedClass(t, e) {
+ if (t.length)
+ for (const n of t)
+ n.classList.toggle('collapsed', !e),
+ n.setAttribute('aria-expanded', e);
+ }
+ static jQueryInterface(t) {
+ const e = {};
+ return (
+ 'string' == typeof t && /show|hide/.test(t) && (e.toggle = !1),
+ this.each(function () {
+ const n = G.getOrCreateInstance(this, e);
+ if ('string' == typeof t) {
+ if (void 0 === n[t]) throw new TypeError(`No method named "${t}"`);
+ n[t]();
+ }
+ })
+ );
+ }
+ }
+ S.on(document, R, K, function (t) {
+ ('A' === t.target.tagName ||
+ (t.delegateTarget && 'A' === t.delegateTarget.tagName)) &&
+ t.preventDefault();
+ for (const t of F.getMultipleElementsFromSelector(this))
+ G.getOrCreateInstance(t, { toggle: !1 }).toggle();
+ }),
+ f(G),
+ document.getElementsByClassName('collapse');
+ var J = 'top',
+ Z = 'bottom',
+ tt = 'right',
+ et = 'left',
+ nt = 'auto',
+ it = [J, Z, tt, et],
+ ot = 'start',
+ rt = 'end',
+ st = 'clippingParents',
+ at = 'viewport',
+ lt = 'popper',
+ ct = 'reference',
+ ut = it.reduce(function (t, e) {
+ return t.concat([e + '-' + ot, e + '-' + rt]);
+ }, []),
+ ft = [].concat(it, [nt]).reduce(function (t, e) {
+ return t.concat([e, e + '-' + ot, e + '-' + rt]);
+ }, []),
+ dt = 'beforeRead',
+ pt = 'read',
+ ht = 'afterRead',
+ mt = 'beforeMain',
+ gt = 'main',
+ vt = 'afterMain',
+ bt = 'beforeWrite',
+ yt = 'write',
+ _t = 'afterWrite',
+ wt = [dt, pt, ht, mt, gt, vt, bt, yt, _t];
+ function Et(t) {
+ return t ? (t.nodeName || '').toLowerCase() : null;
+ }
+ function Ot(t) {
+ if (null == t) return window;
+ if ('[object Window]' !== t.toString()) {
+ var e = t.ownerDocument;
+ return (e && e.defaultView) || window;
+ }
+ return t;
+ }
+ function xt(t) {
+ return t instanceof Ot(t).Element || t instanceof Element;
+ }
+ function At(t) {
+ return t instanceof Ot(t).HTMLElement || t instanceof HTMLElement;
+ }
+ function Ct(t) {
+ return (
+ 'undefined' != typeof ShadowRoot &&
+ (t instanceof Ot(t).ShadowRoot || t instanceof ShadowRoot)
+ );
+ }
+ var Tt = {
+ name: 'applyStyles',
+ enabled: !0,
+ phase: 'write',
+ fn: function (t) {
+ var e = t.state;
+ Object.keys(e.elements).forEach(function (t) {
+ var n = e.styles[t] || {},
+ i = e.attributes[t] || {},
+ o = e.elements[t];
+ At(o) &&
+ Et(o) &&
+ (Object.assign(o.style, n),
+ Object.keys(i).forEach(function (t) {
+ var e = i[t];
+ !1 === e
+ ? o.removeAttribute(t)
+ : o.setAttribute(t, !0 === e ? '' : e);
+ }));
+ });
+ },
+ effect: function (t) {
+ var e = t.state,
+ n = {
+ popper: {
+ position: e.options.strategy,
+ left: '0',
+ top: '0',
+ margin: '0'
+ },
+ arrow: { position: 'absolute' },
+ reference: {}
+ };
+ return (
+ Object.assign(e.elements.popper.style, n.popper),
+ (e.styles = n),
+ e.elements.arrow && Object.assign(e.elements.arrow.style, n.arrow),
+ function () {
+ Object.keys(e.elements).forEach(function (t) {
+ var i = e.elements[t],
+ o = e.attributes[t] || {},
+ r = Object.keys(
+ e.styles.hasOwnProperty(t) ? e.styles[t] : n[t]
+ ).reduce(function (t, e) {
+ return (t[e] = ''), t;
+ }, {});
+ At(i) &&
+ Et(i) &&
+ (Object.assign(i.style, r),
+ Object.keys(o).forEach(function (t) {
+ i.removeAttribute(t);
+ }));
+ });
+ }
+ );
+ },
+ requires: ['computeStyles']
+ };
+ function Lt(t) {
+ return t.split('-')[0];
+ }
+ var St = Math.max,
+ jt = Math.min,
+ kt = Math.round;
+ function Dt() {
+ var t = navigator.userAgentData;
+ return null != t && t.brands && Array.isArray(t.brands)
+ ? t.brands
+ .map(function (t) {
+ return t.brand + '/' + t.version;
+ })
+ .join(' ')
+ : navigator.userAgent;
+ }
+ function Pt() {
+ return !/^((?!chrome|android).)*safari/i.test(Dt());
+ }
+ function Mt(t, e, n) {
+ void 0 === e && (e = !1), void 0 === n && (n = !1);
+ var i = t.getBoundingClientRect(),
+ o = 1,
+ r = 1;
+ e &&
+ At(t) &&
+ ((o = (t.offsetWidth > 0 && kt(i.width) / t.offsetWidth) || 1),
+ (r = (t.offsetHeight > 0 && kt(i.height) / t.offsetHeight) || 1));
+ var s = (xt(t) ? Ot(t) : window).visualViewport,
+ a = !Pt() && n,
+ l = (i.left + (a && s ? s.offsetLeft : 0)) / o,
+ c = (i.top + (a && s ? s.offsetTop : 0)) / r,
+ u = i.width / o,
+ f = i.height / r;
+ return {
+ width: u,
+ height: f,
+ top: c,
+ right: l + u,
+ bottom: c + f,
+ left: l,
+ x: l,
+ y: c
+ };
+ }
+ function Nt(t) {
+ var e = Mt(t),
+ n = t.offsetWidth,
+ i = t.offsetHeight;
+ return (
+ Math.abs(e.width - n) <= 1 && (n = e.width),
+ Math.abs(e.height - i) <= 1 && (i = e.height),
+ { x: t.offsetLeft, y: t.offsetTop, width: n, height: i }
+ );
+ }
+ function Bt(t, e) {
+ var n = e.getRootNode && e.getRootNode();
+ if (t.contains(e)) return !0;
+ if (n && Ct(n)) {
+ var i = e;
+ do {
+ if (i && t.isSameNode(i)) return !0;
+ i = i.parentNode || i.host;
+ } while (i);
+ }
+ return !1;
+ }
+ function Ft(t) {
+ return Ot(t).getComputedStyle(t);
+ }
+ function It(t) {
+ return ['table', 'td', 'th'].indexOf(Et(t)) >= 0;
+ }
+ function Ht(t) {
+ return ((xt(t) ? t.ownerDocument : t.document) || window.document)
+ .documentElement;
+ }
+ function $t(t) {
+ return 'html' === Et(t)
+ ? t
+ : t.assignedSlot || t.parentNode || (Ct(t) ? t.host : null) || Ht(t);
+ }
+ function zt(t) {
+ return At(t) && 'fixed' !== Ft(t).position ? t.offsetParent : null;
+ }
+ function Wt(t) {
+ for (var e = Ot(t), n = zt(t); n && It(n) && 'static' === Ft(n).position; )
+ n = zt(n);
+ return n &&
+ ('html' === Et(n) || ('body' === Et(n) && 'static' === Ft(n).position))
+ ? e
+ : n ||
+ (function (t) {
+ var e = /firefox/i.test(Dt());
+ if (/Trident/i.test(Dt()) && At(t) && 'fixed' === Ft(t).position)
+ return null;
+ var n = $t(t);
+ for (
+ Ct(n) && (n = n.host);
+ At(n) && ['html', 'body'].indexOf(Et(n)) < 0;
+
+ ) {
+ var i = Ft(n);
+ if (
+ 'none' !== i.transform ||
+ 'none' !== i.perspective ||
+ 'paint' === i.contain ||
+ -1 !== ['transform', 'perspective'].indexOf(i.willChange) ||
+ (e && 'filter' === i.willChange) ||
+ (e && i.filter && 'none' !== i.filter)
+ )
+ return n;
+ n = n.parentNode;
+ }
+ return null;
+ })(t) ||
+ e;
+ }
+ function Rt(t) {
+ return ['top', 'bottom'].indexOf(t) >= 0 ? 'x' : 'y';
+ }
+ function qt(t, e, n) {
+ return St(t, jt(e, n));
+ }
+ function Vt(t) {
+ return Object.assign({}, { top: 0, right: 0, bottom: 0, left: 0 }, t);
+ }
+ function Yt(t, e) {
+ return e.reduce(function (e, n) {
+ return (e[n] = t), e;
+ }, {});
+ }
+ var Ut = {
+ name: 'arrow',
+ enabled: !0,
+ phase: 'main',
+ fn: function (t) {
+ var e,
+ n = t.state,
+ i = t.name,
+ o = t.options,
+ r = n.elements.arrow,
+ s = n.modifiersData.popperOffsets,
+ a = Lt(n.placement),
+ l = Rt(a),
+ c = [et, tt].indexOf(a) >= 0 ? 'height' : 'width';
+ if (r && s) {
+ var u = (function (t, e) {
+ return Vt(
+ 'number' !=
+ typeof (t =
+ 'function' == typeof t
+ ? t(Object.assign({}, e.rects, { placement: e.placement }))
+ : t)
+ ? t
+ : Yt(t, it)
+ );
+ })(o.padding, n),
+ f = Nt(r),
+ d = 'y' === l ? J : et,
+ p = 'y' === l ? Z : tt,
+ h =
+ n.rects.reference[c] +
+ n.rects.reference[l] -
+ s[l] -
+ n.rects.popper[c],
+ m = s[l] - n.rects.reference[l],
+ g = Wt(r),
+ v = g ? ('y' === l ? g.clientHeight || 0 : g.clientWidth || 0) : 0,
+ b = h / 2 - m / 2,
+ y = u[d],
+ _ = v - f[c] - u[p],
+ w = v / 2 - f[c] / 2 + b,
+ E = qt(y, w, _),
+ O = l;
+ n.modifiersData[i] = (((e = {})[O] = E), (e.centerOffset = E - w), e);
+ }
+ },
+ effect: function (t) {
+ var e = t.state,
+ n = t.options.element,
+ i = void 0 === n ? '[data-popper-arrow]' : n;
+ null != i &&
+ ('string' != typeof i || (i = e.elements.popper.querySelector(i))) &&
+ Bt(e.elements.popper, i) &&
+ (e.elements.arrow = i);
+ },
+ requires: ['popperOffsets'],
+ requiresIfExists: ['preventOverflow']
+ };
+ function Kt(t) {
+ return t.split('-')[1];
+ }
+ var Qt = { top: 'auto', right: 'auto', bottom: 'auto', left: 'auto' };
+ function Xt(t) {
+ var e,
+ n = t.popper,
+ i = t.popperRect,
+ o = t.placement,
+ r = t.variation,
+ s = t.offsets,
+ a = t.position,
+ l = t.gpuAcceleration,
+ c = t.adaptive,
+ u = t.roundOffsets,
+ f = t.isFixed,
+ d = s.x,
+ p = void 0 === d ? 0 : d,
+ h = s.y,
+ m = void 0 === h ? 0 : h,
+ g = 'function' == typeof u ? u({ x: p, y: m }) : { x: p, y: m };
+ (p = g.x), (m = g.y);
+ var v = s.hasOwnProperty('x'),
+ b = s.hasOwnProperty('y'),
+ y = et,
+ _ = J,
+ w = window;
+ if (c) {
+ var E = Wt(n),
+ O = 'clientHeight',
+ x = 'clientWidth';
+ if (
+ (E === Ot(n) &&
+ 'static' !== Ft((E = Ht(n))).position &&
+ 'absolute' === a &&
+ ((O = 'scrollHeight'), (x = 'scrollWidth')),
+ o === J || ((o === et || o === tt) && r === rt))
+ )
+ (_ = Z),
+ (m -=
+ (f && E === w && w.visualViewport
+ ? w.visualViewport.height
+ : E[O]) - i.height),
+ (m *= l ? 1 : -1);
+ if (o === et || ((o === J || o === Z) && r === rt))
+ (y = tt),
+ (p -=
+ (f && E === w && w.visualViewport ? w.visualViewport.width : E[x]) -
+ i.width),
+ (p *= l ? 1 : -1);
+ }
+ var A,
+ C = Object.assign({ position: a }, c && Qt),
+ T =
+ !0 === u
+ ? (function (t, e) {
+ var n = t.x,
+ i = t.y,
+ o = e.devicePixelRatio || 1;
+ return { x: kt(n * o) / o || 0, y: kt(i * o) / o || 0 };
+ })({ x: p, y: m }, Ot(n))
+ : { x: p, y: m };
+ return (
+ (p = T.x),
+ (m = T.y),
+ l
+ ? Object.assign(
+ {},
+ C,
+ (((A = {})[_] = b ? '0' : ''),
+ (A[y] = v ? '0' : ''),
+ (A.transform =
+ (w.devicePixelRatio || 1) <= 1
+ ? 'translate(' + p + 'px, ' + m + 'px)'
+ : 'translate3d(' + p + 'px, ' + m + 'px, 0)'),
+ A)
+ )
+ : Object.assign(
+ {},
+ C,
+ (((e = {})[_] = b ? m + 'px' : ''),
+ (e[y] = v ? p + 'px' : ''),
+ (e.transform = ''),
+ e)
+ )
+ );
+ }
+ var Gt = {
+ name: 'computeStyles',
+ enabled: !0,
+ phase: 'beforeWrite',
+ fn: function (t) {
+ var e = t.state,
+ n = t.options,
+ i = n.gpuAcceleration,
+ o = void 0 === i || i,
+ r = n.adaptive,
+ s = void 0 === r || r,
+ a = n.roundOffsets,
+ l = void 0 === a || a,
+ c = {
+ placement: Lt(e.placement),
+ variation: Kt(e.placement),
+ popper: e.elements.popper,
+ popperRect: e.rects.popper,
+ gpuAcceleration: o,
+ isFixed: 'fixed' === e.options.strategy
+ };
+ null != e.modifiersData.popperOffsets &&
+ (e.styles.popper = Object.assign(
+ {},
+ e.styles.popper,
+ Xt(
+ Object.assign({}, c, {
+ offsets: e.modifiersData.popperOffsets,
+ position: e.options.strategy,
+ adaptive: s,
+ roundOffsets: l
+ })
+ )
+ )),
+ null != e.modifiersData.arrow &&
+ (e.styles.arrow = Object.assign(
+ {},
+ e.styles.arrow,
+ Xt(
+ Object.assign({}, c, {
+ offsets: e.modifiersData.arrow,
+ position: 'absolute',
+ adaptive: !1,
+ roundOffsets: l
+ })
+ )
+ )),
+ (e.attributes.popper = Object.assign({}, e.attributes.popper, {
+ 'data-popper-placement': e.placement
+ }));
+ },
+ data: {}
+ },
+ Jt = { passive: !0 };
+ var Zt = {
+ name: 'eventListeners',
+ enabled: !0,
+ phase: 'write',
+ fn: function () {},
+ effect: function (t) {
+ var e = t.state,
+ n = t.instance,
+ i = t.options,
+ o = i.scroll,
+ r = void 0 === o || o,
+ s = i.resize,
+ a = void 0 === s || s,
+ l = Ot(e.elements.popper),
+ c = [].concat(e.scrollParents.reference, e.scrollParents.popper);
+ return (
+ r &&
+ c.forEach(function (t) {
+ t.addEventListener('scroll', n.update, Jt);
+ }),
+ a && l.addEventListener('resize', n.update, Jt),
+ function () {
+ r &&
+ c.forEach(function (t) {
+ t.removeEventListener('scroll', n.update, Jt);
+ }),
+ a && l.removeEventListener('resize', n.update, Jt);
+ }
+ );
+ },
+ data: {}
+ },
+ te = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };
+ function ee(t) {
+ return t.replace(/left|right|bottom|top/g, function (t) {
+ return te[t];
+ });
+ }
+ var ne = { start: 'end', end: 'start' };
+ function ie(t) {
+ return t.replace(/start|end/g, function (t) {
+ return ne[t];
+ });
+ }
+ function oe(t) {
+ var e = Ot(t);
+ return { scrollLeft: e.pageXOffset, scrollTop: e.pageYOffset };
+ }
+ function re(t) {
+ return Mt(Ht(t)).left + oe(t).scrollLeft;
+ }
+ function se(t) {
+ var e = Ft(t),
+ n = e.overflow,
+ i = e.overflowX,
+ o = e.overflowY;
+ return /auto|scroll|overlay|hidden/.test(n + o + i);
+ }
+ function ae(t) {
+ return ['html', 'body', '#document'].indexOf(Et(t)) >= 0
+ ? t.ownerDocument.body
+ : At(t) && se(t)
+ ? t
+ : ae($t(t));
+ }
+ function le(t, e) {
+ var n;
+ void 0 === e && (e = []);
+ var i = ae(t),
+ o = i === (null == (n = t.ownerDocument) ? void 0 : n.body),
+ r = Ot(i),
+ s = o ? [r].concat(r.visualViewport || [], se(i) ? i : []) : i,
+ a = e.concat(s);
+ return o ? a : a.concat(le($t(s)));
+ }
+ function ce(t) {
+ return Object.assign({}, t, {
+ left: t.x,
+ top: t.y,
+ right: t.x + t.width,
+ bottom: t.y + t.height
+ });
+ }
+ function ue(t, e, n) {
+ return e === at
+ ? ce(
+ (function (t, e) {
+ var n = Ot(t),
+ i = Ht(t),
+ o = n.visualViewport,
+ r = i.clientWidth,
+ s = i.clientHeight,
+ a = 0,
+ l = 0;
+ if (o) {
+ (r = o.width), (s = o.height);
+ var c = Pt();
+ (c || (!c && 'fixed' === e)) &&
+ ((a = o.offsetLeft), (l = o.offsetTop));
+ }
+ return { width: r, height: s, x: a + re(t), y: l };
+ })(t, n)
+ )
+ : xt(e)
+ ? (function (t, e) {
+ var n = Mt(t, !1, 'fixed' === e);
+ return (
+ (n.top = n.top + t.clientTop),
+ (n.left = n.left + t.clientLeft),
+ (n.bottom = n.top + t.clientHeight),
+ (n.right = n.left + t.clientWidth),
+ (n.width = t.clientWidth),
+ (n.height = t.clientHeight),
+ (n.x = n.left),
+ (n.y = n.top),
+ n
+ );
+ })(e, n)
+ : ce(
+ (function (t) {
+ var e,
+ n = Ht(t),
+ i = oe(t),
+ o = null == (e = t.ownerDocument) ? void 0 : e.body,
+ r = St(
+ n.scrollWidth,
+ n.clientWidth,
+ o ? o.scrollWidth : 0,
+ o ? o.clientWidth : 0
+ ),
+ s = St(
+ n.scrollHeight,
+ n.clientHeight,
+ o ? o.scrollHeight : 0,
+ o ? o.clientHeight : 0
+ ),
+ a = -i.scrollLeft + re(t),
+ l = -i.scrollTop;
+ return (
+ 'rtl' === Ft(o || n).direction &&
+ (a += St(n.clientWidth, o ? o.clientWidth : 0) - r),
+ { width: r, height: s, x: a, y: l }
+ );
+ })(Ht(t))
+ );
+ }
+ function fe(t, e, n, i) {
+ var o =
+ 'clippingParents' === e
+ ? (function (t) {
+ var e = le($t(t)),
+ n =
+ ['absolute', 'fixed'].indexOf(Ft(t).position) >= 0 && At(t)
+ ? Wt(t)
+ : t;
+ return xt(n)
+ ? e.filter(function (t) {
+ return xt(t) && Bt(t, n) && 'body' !== Et(t);
+ })
+ : [];
+ })(t)
+ : [].concat(e),
+ r = [].concat(o, [n]),
+ s = r[0],
+ a = r.reduce(function (e, n) {
+ var o = ue(t, n, i);
+ return (
+ (e.top = St(o.top, e.top)),
+ (e.right = jt(o.right, e.right)),
+ (e.bottom = jt(o.bottom, e.bottom)),
+ (e.left = St(o.left, e.left)),
+ e
+ );
+ }, ue(t, s, i));
+ return (
+ (a.width = a.right - a.left),
+ (a.height = a.bottom - a.top),
+ (a.x = a.left),
+ (a.y = a.top),
+ a
+ );
+ }
+ function de(t) {
+ var e,
+ n = t.reference,
+ i = t.element,
+ o = t.placement,
+ r = o ? Lt(o) : null,
+ s = o ? Kt(o) : null,
+ a = n.x + n.width / 2 - i.width / 2,
+ l = n.y + n.height / 2 - i.height / 2;
+ switch (r) {
+ case J:
+ e = { x: a, y: n.y - i.height };
+ break;
+ case Z:
+ e = { x: a, y: n.y + n.height };
+ break;
+ case tt:
+ e = { x: n.x + n.width, y: l };
+ break;
+ case et:
+ e = { x: n.x - i.width, y: l };
+ break;
+ default:
+ e = { x: n.x, y: n.y };
+ }
+ var c = r ? Rt(r) : null;
+ if (null != c) {
+ var u = 'y' === c ? 'height' : 'width';
+ switch (s) {
+ case ot:
+ e[c] = e[c] - (n[u] / 2 - i[u] / 2);
+ break;
+ case rt:
+ e[c] = e[c] + (n[u] / 2 - i[u] / 2);
+ }
+ }
+ return e;
+ }
+ function pe(t, e) {
+ void 0 === e && (e = {});
+ var n = e,
+ i = n.placement,
+ o = void 0 === i ? t.placement : i,
+ r = n.strategy,
+ s = void 0 === r ? t.strategy : r,
+ a = n.boundary,
+ l = void 0 === a ? st : a,
+ c = n.rootBoundary,
+ u = void 0 === c ? at : c,
+ f = n.elementContext,
+ d = void 0 === f ? lt : f,
+ p = n.altBoundary,
+ h = void 0 !== p && p,
+ m = n.padding,
+ g = void 0 === m ? 0 : m,
+ v = Vt('number' != typeof g ? g : Yt(g, it)),
+ b = d === lt ? ct : lt,
+ y = t.rects.popper,
+ _ = t.elements[h ? b : d],
+ w = fe(xt(_) ? _ : _.contextElement || Ht(t.elements.popper), l, u, s),
+ E = Mt(t.elements.reference),
+ O = de({ reference: E, element: y, placement: o }),
+ x = ce(Object.assign({}, y, O)),
+ A = d === lt ? x : E,
+ C = {
+ top: w.top - A.top + v.top,
+ bottom: A.bottom - w.bottom + v.bottom,
+ left: w.left - A.left + v.left,
+ right: A.right - w.right + v.right
+ },
+ T = t.modifiersData.offset;
+ if (d === lt && T) {
+ var L = T[o];
+ Object.keys(C).forEach(function (t) {
+ var e = [tt, Z].indexOf(t) >= 0 ? 1 : -1,
+ n = [J, Z].indexOf(t) >= 0 ? 'y' : 'x';
+ C[t] += L[n] * e;
+ });
+ }
+ return C;
+ }
+ function he(t, e) {
+ void 0 === e && (e = {});
+ var n = e,
+ i = n.placement,
+ o = n.boundary,
+ r = n.rootBoundary,
+ s = n.padding,
+ a = n.flipVariations,
+ l = n.allowedAutoPlacements,
+ c = void 0 === l ? ft : l,
+ u = Kt(i),
+ f = u
+ ? a
+ ? ut
+ : ut.filter(function (t) {
+ return Kt(t) === u;
+ })
+ : it,
+ d = f.filter(function (t) {
+ return c.indexOf(t) >= 0;
+ });
+ 0 === d.length && (d = f);
+ var p = d.reduce(function (e, n) {
+ return (
+ (e[n] = pe(t, {
+ placement: n,
+ boundary: o,
+ rootBoundary: r,
+ padding: s
+ })[Lt(n)]),
+ e
+ );
+ }, {});
+ return Object.keys(p).sort(function (t, e) {
+ return p[t] - p[e];
+ });
+ }
+ var me = {
+ name: 'flip',
+ enabled: !0,
+ phase: 'main',
+ fn: function (t) {
+ var e = t.state,
+ n = t.options,
+ i = t.name;
+ if (!e.modifiersData[i]._skip) {
+ for (
+ var o = n.mainAxis,
+ r = void 0 === o || o,
+ s = n.altAxis,
+ a = void 0 === s || s,
+ l = n.fallbackPlacements,
+ c = n.padding,
+ u = n.boundary,
+ f = n.rootBoundary,
+ d = n.altBoundary,
+ p = n.flipVariations,
+ h = void 0 === p || p,
+ m = n.allowedAutoPlacements,
+ g = e.options.placement,
+ v = Lt(g),
+ b =
+ l ||
+ (v === g || !h
+ ? [ee(g)]
+ : (function (t) {
+ if (Lt(t) === nt) return [];
+ var e = ee(t);
+ return [ie(t), e, ie(e)];
+ })(g)),
+ y = [g].concat(b).reduce(function (t, n) {
+ return t.concat(
+ Lt(n) === nt
+ ? he(e, {
+ placement: n,
+ boundary: u,
+ rootBoundary: f,
+ padding: c,
+ flipVariations: h,
+ allowedAutoPlacements: m
+ })
+ : n
+ );
+ }, []),
+ _ = e.rects.reference,
+ w = e.rects.popper,
+ E = new Map(),
+ O = !0,
+ x = y[0],
+ A = 0;
+ A < y.length;
+ A++
+ ) {
+ var C = y[A],
+ T = Lt(C),
+ L = Kt(C) === ot,
+ S = [J, Z].indexOf(T) >= 0,
+ j = S ? 'width' : 'height',
+ k = pe(e, {
+ placement: C,
+ boundary: u,
+ rootBoundary: f,
+ altBoundary: d,
+ padding: c
+ }),
+ D = S ? (L ? tt : et) : L ? Z : J;
+ _[j] > w[j] && (D = ee(D));
+ var P = ee(D),
+ M = [];
+ if (
+ (r && M.push(k[T] <= 0),
+ a && M.push(k[D] <= 0, k[P] <= 0),
+ M.every(function (t) {
+ return t;
+ }))
+ ) {
+ (x = C), (O = !1);
+ break;
+ }
+ E.set(C, M);
+ }
+ if (O)
+ for (
+ var N = function (t) {
+ var e = y.find(function (e) {
+ var n = E.get(e);
+ if (n)
+ return n.slice(0, t).every(function (t) {
+ return t;
+ });
+ });
+ if (e) return (x = e), 'break';
+ },
+ B = h ? 3 : 1;
+ B > 0;
+ B--
+ ) {
+ if ('break' === N(B)) break;
+ }
+ e.placement !== x &&
+ ((e.modifiersData[i]._skip = !0), (e.placement = x), (e.reset = !0));
+ }
+ },
+ requiresIfExists: ['offset'],
+ data: { _skip: !1 }
+ };
+ function ge(t, e, n) {
+ return (
+ void 0 === n && (n = { x: 0, y: 0 }),
+ {
+ top: t.top - e.height - n.y,
+ right: t.right - e.width + n.x,
+ bottom: t.bottom - e.height + n.y,
+ left: t.left - e.width - n.x
+ }
+ );
+ }
+ function ve(t) {
+ return [J, tt, Z, et].some(function (e) {
+ return t[e] >= 0;
+ });
+ }
+ var be = {
+ name: 'hide',
+ enabled: !0,
+ phase: 'main',
+ requiresIfExists: ['preventOverflow'],
+ fn: function (t) {
+ var e = t.state,
+ n = t.name,
+ i = e.rects.reference,
+ o = e.rects.popper,
+ r = e.modifiersData.preventOverflow,
+ s = pe(e, { elementContext: 'reference' }),
+ a = pe(e, { altBoundary: !0 }),
+ l = ge(s, i),
+ c = ge(a, o, r),
+ u = ve(l),
+ f = ve(c);
+ (e.modifiersData[n] = {
+ referenceClippingOffsets: l,
+ popperEscapeOffsets: c,
+ isReferenceHidden: u,
+ hasPopperEscaped: f
+ }),
+ (e.attributes.popper = Object.assign({}, e.attributes.popper, {
+ 'data-popper-reference-hidden': u,
+ 'data-popper-escaped': f
+ }));
+ }
+ };
+ var ye = {
+ name: 'offset',
+ enabled: !0,
+ phase: 'main',
+ requires: ['popperOffsets'],
+ fn: function (t) {
+ var e = t.state,
+ n = t.options,
+ i = t.name,
+ o = n.offset,
+ r = void 0 === o ? [0, 0] : o,
+ s = ft.reduce(function (t, n) {
+ return (
+ (t[n] = (function (t, e, n) {
+ var i = Lt(t),
+ o = [et, J].indexOf(i) >= 0 ? -1 : 1,
+ r =
+ 'function' == typeof n
+ ? n(Object.assign({}, e, { placement: t }))
+ : n,
+ s = r[0],
+ a = r[1];
+ return (
+ (s = s || 0),
+ (a = (a || 0) * o),
+ [et, tt].indexOf(i) >= 0 ? { x: a, y: s } : { x: s, y: a }
+ );
+ })(n, e.rects, r)),
+ t
+ );
+ }, {}),
+ a = s[e.placement],
+ l = a.x,
+ c = a.y;
+ null != e.modifiersData.popperOffsets &&
+ ((e.modifiersData.popperOffsets.x += l),
+ (e.modifiersData.popperOffsets.y += c)),
+ (e.modifiersData[i] = s);
+ }
+ };
+ var _e = {
+ name: 'popperOffsets',
+ enabled: !0,
+ phase: 'read',
+ fn: function (t) {
+ var e = t.state,
+ n = t.name;
+ e.modifiersData[n] = de({
+ reference: e.rects.reference,
+ element: e.rects.popper,
+ placement: e.placement
+ });
+ },
+ data: {}
+ };
+ var we = {
+ name: 'preventOverflow',
+ enabled: !0,
+ phase: 'main',
+ fn: function (t) {
+ var e = t.state,
+ n = t.options,
+ i = t.name,
+ o = n.mainAxis,
+ r = void 0 === o || o,
+ s = n.altAxis,
+ a = void 0 !== s && s,
+ l = n.boundary,
+ c = n.rootBoundary,
+ u = n.altBoundary,
+ f = n.padding,
+ d = n.tether,
+ p = void 0 === d || d,
+ h = n.tetherOffset,
+ m = void 0 === h ? 0 : h,
+ g = pe(e, { boundary: l, rootBoundary: c, padding: f, altBoundary: u }),
+ v = Lt(e.placement),
+ b = Kt(e.placement),
+ y = !b,
+ _ = Rt(v),
+ w = 'x' === _ ? 'y' : 'x',
+ E = e.modifiersData.popperOffsets,
+ O = e.rects.reference,
+ x = e.rects.popper,
+ A =
+ 'function' == typeof m
+ ? m(Object.assign({}, e.rects, { placement: e.placement }))
+ : m,
+ C =
+ 'number' == typeof A
+ ? { mainAxis: A, altAxis: A }
+ : Object.assign({ mainAxis: 0, altAxis: 0 }, A),
+ T = e.modifiersData.offset ? e.modifiersData.offset[e.placement] : null,
+ L = { x: 0, y: 0 };
+ if (E) {
+ if (r) {
+ var S,
+ j = 'y' === _ ? J : et,
+ k = 'y' === _ ? Z : tt,
+ D = 'y' === _ ? 'height' : 'width',
+ P = E[_],
+ M = P + g[j],
+ N = P - g[k],
+ B = p ? -x[D] / 2 : 0,
+ F = b === ot ? O[D] : x[D],
+ I = b === ot ? -x[D] : -O[D],
+ H = e.elements.arrow,
+ $ = p && H ? Nt(H) : { width: 0, height: 0 },
+ z = e.modifiersData['arrow#persistent']
+ ? e.modifiersData['arrow#persistent'].padding
+ : { top: 0, right: 0, bottom: 0, left: 0 },
+ W = z[j],
+ R = z[k],
+ q = qt(0, O[D], $[D]),
+ V = y ? O[D] / 2 - B - q - W - C.mainAxis : F - q - W - C.mainAxis,
+ Y = y ? -O[D] / 2 + B + q + R + C.mainAxis : I + q + R + C.mainAxis,
+ U = e.elements.arrow && Wt(e.elements.arrow),
+ K = U ? ('y' === _ ? U.clientTop || 0 : U.clientLeft || 0) : 0,
+ Q = null != (S = null == T ? void 0 : T[_]) ? S : 0,
+ X = P + Y - Q,
+ G = qt(p ? jt(M, P + V - Q - K) : M, P, p ? St(N, X) : N);
+ (E[_] = G), (L[_] = G - P);
+ }
+ if (a) {
+ var nt,
+ it = 'x' === _ ? J : et,
+ rt = 'x' === _ ? Z : tt,
+ st = E[w],
+ at = 'y' === w ? 'height' : 'width',
+ lt = st + g[it],
+ ct = st - g[rt],
+ ut = -1 !== [J, et].indexOf(v),
+ ft = null != (nt = null == T ? void 0 : T[w]) ? nt : 0,
+ dt = ut ? lt : st - O[at] - x[at] - ft + C.altAxis,
+ pt = ut ? st + O[at] + x[at] - ft - C.altAxis : ct,
+ ht =
+ p && ut
+ ? (function (t, e, n) {
+ var i = qt(t, e, n);
+ return i > n ? n : i;
+ })(dt, st, pt)
+ : qt(p ? dt : lt, st, p ? pt : ct);
+ (E[w] = ht), (L[w] = ht - st);
+ }
+ e.modifiersData[i] = L;
+ }
+ },
+ requiresIfExists: ['offset']
+ };
+ function Ee(t, e, n) {
+ void 0 === n && (n = !1);
+ var i,
+ o,
+ r = At(e),
+ s =
+ At(e) &&
+ (function (t) {
+ var e = t.getBoundingClientRect(),
+ n = kt(e.width) / t.offsetWidth || 1,
+ i = kt(e.height) / t.offsetHeight || 1;
+ return 1 !== n || 1 !== i;
+ })(e),
+ a = Ht(e),
+ l = Mt(t, s, n),
+ c = { scrollLeft: 0, scrollTop: 0 },
+ u = { x: 0, y: 0 };
+ return (
+ (r || (!r && !n)) &&
+ (('body' !== Et(e) || se(a)) &&
+ (c =
+ (i = e) !== Ot(i) && At(i)
+ ? { scrollLeft: (o = i).scrollLeft, scrollTop: o.scrollTop }
+ : oe(i)),
+ At(e)
+ ? (((u = Mt(e, !0)).x += e.clientLeft), (u.y += e.clientTop))
+ : a && (u.x = re(a))),
+ {
+ x: l.left + c.scrollLeft - u.x,
+ y: l.top + c.scrollTop - u.y,
+ width: l.width,
+ height: l.height
+ }
+ );
+ }
+ function Oe(t) {
+ var e = new Map(),
+ n = new Set(),
+ i = [];
+ function o(t) {
+ n.add(t.name),
+ []
+ .concat(t.requires || [], t.requiresIfExists || [])
+ .forEach(function (t) {
+ if (!n.has(t)) {
+ var i = e.get(t);
+ i && o(i);
+ }
+ }),
+ i.push(t);
+ }
+ return (
+ t.forEach(function (t) {
+ e.set(t.name, t);
+ }),
+ t.forEach(function (t) {
+ n.has(t.name) || o(t);
+ }),
+ i
+ );
+ }
+ var xe = { placement: 'bottom', modifiers: [], strategy: 'absolute' };
+ function Ae() {
+ for (var t = arguments.length, e = new Array(t), n = 0; n < t; n++)
+ e[n] = arguments[n];
+ return !e.some(function (t) {
+ return !(t && 'function' == typeof t.getBoundingClientRect);
+ });
+ }
+ function Ce(t) {
+ void 0 === t && (t = {});
+ var e = t,
+ n = e.defaultModifiers,
+ i = void 0 === n ? [] : n,
+ o = e.defaultOptions,
+ r = void 0 === o ? xe : o;
+ return function (t, e, n) {
+ void 0 === n && (n = r);
+ var o,
+ s,
+ a = {
+ placement: 'bottom',
+ orderedModifiers: [],
+ options: Object.assign({}, xe, r),
+ modifiersData: {},
+ elements: { reference: t, popper: e },
+ attributes: {},
+ styles: {}
+ },
+ l = [],
+ c = !1,
+ u = {
+ state: a,
+ setOptions: function (n) {
+ var o = 'function' == typeof n ? n(a.options) : n;
+ f(),
+ (a.options = Object.assign({}, r, a.options, o)),
+ (a.scrollParents = {
+ reference: xt(t)
+ ? le(t)
+ : t.contextElement
+ ? le(t.contextElement)
+ : [],
+ popper: le(e)
+ });
+ var s,
+ c,
+ d = (function (t) {
+ var e = Oe(t);
+ return wt.reduce(function (t, n) {
+ return t.concat(
+ e.filter(function (t) {
+ return t.phase === n;
+ })
+ );
+ }, []);
+ })(
+ ((s = [].concat(i, a.options.modifiers)),
+ (c = s.reduce(function (t, e) {
+ var n = t[e.name];
+ return (
+ (t[e.name] = n
+ ? Object.assign({}, n, e, {
+ options: Object.assign({}, n.options, e.options),
+ data: Object.assign({}, n.data, e.data)
+ })
+ : e),
+ t
+ );
+ }, {})),
+ Object.keys(c).map(function (t) {
+ return c[t];
+ }))
+ );
+ return (
+ (a.orderedModifiers = d.filter(function (t) {
+ return t.enabled;
+ })),
+ a.orderedModifiers.forEach(function (t) {
+ var e = t.name,
+ n = t.options,
+ i = void 0 === n ? {} : n,
+ o = t.effect;
+ if ('function' == typeof o) {
+ var r = o({ state: a, name: e, instance: u, options: i }),
+ s = function () {};
+ l.push(r || s);
+ }
+ }),
+ u.update()
+ );
+ },
+ forceUpdate: function () {
+ if (!c) {
+ var t = a.elements,
+ e = t.reference,
+ n = t.popper;
+ if (Ae(e, n)) {
+ (a.rects = {
+ reference: Ee(e, Wt(n), 'fixed' === a.options.strategy),
+ popper: Nt(n)
+ }),
+ (a.reset = !1),
+ (a.placement = a.options.placement),
+ a.orderedModifiers.forEach(function (t) {
+ return (a.modifiersData[t.name] = Object.assign(
+ {},
+ t.data
+ ));
+ });
+ for (var i = 0; i < a.orderedModifiers.length; i++)
+ if (!0 !== a.reset) {
+ var o = a.orderedModifiers[i],
+ r = o.fn,
+ s = o.options,
+ l = void 0 === s ? {} : s,
+ f = o.name;
+ 'function' == typeof r &&
+ (a =
+ r({ state: a, options: l, name: f, instance: u }) || a);
+ } else (a.reset = !1), (i = -1);
+ }
+ }
+ },
+ update:
+ ((o = function () {
+ return new Promise(function (t) {
+ u.forceUpdate(), t(a);
+ });
+ }),
+ function () {
+ return (
+ s ||
+ (s = new Promise(function (t) {
+ Promise.resolve().then(function () {
+ (s = void 0), t(o());
+ });
+ })),
+ s
+ );
+ }),
+ destroy: function () {
+ f(), (c = !0);
+ }
+ };
+ if (!Ae(t, e)) return u;
+ function f() {
+ l.forEach(function (t) {
+ return t();
+ }),
+ (l = []);
+ }
+ return (
+ u.setOptions(n).then(function (t) {
+ !c && n.onFirstUpdate && n.onFirstUpdate(t);
+ }),
+ u
+ );
+ };
+ }
+ var Te = Ce(),
+ Le = Ce({ defaultModifiers: [Zt, _e, Gt, Tt] }),
+ Se = Ce({ defaultModifiers: [Zt, _e, Gt, Tt, ye, me, we, Ut, be] }),
+ je = Object.freeze({
+ __proto__: null,
+ afterMain: vt,
+ afterRead: ht,
+ afterWrite: _t,
+ applyStyles: Tt,
+ arrow: Ut,
+ auto: nt,
+ basePlacements: it,
+ beforeMain: mt,
+ beforeRead: dt,
+ beforeWrite: bt,
+ bottom: Z,
+ clippingParents: st,
+ computeStyles: Gt,
+ createPopper: Se,
+ createPopperBase: Te,
+ createPopperLite: Le,
+ detectOverflow: pe,
+ end: rt,
+ eventListeners: Zt,
+ flip: me,
+ hide: be,
+ left: et,
+ main: gt,
+ modifierPhases: wt,
+ offset: ye,
+ placements: ft,
+ popper: lt,
+ popperGenerator: Ce,
+ popperOffsets: _e,
+ preventOverflow: we,
+ read: pt,
+ reference: ct,
+ right: tt,
+ start: ot,
+ top: J,
+ variationPlacements: ut,
+ viewport: at,
+ write: yt
+ });
+ const ke = {
+ '*': ['class', 'dir', 'id', 'lang', 'role', /^aria-[\w-]*$/i],
+ a: ['target', 'href', 'title', 'rel'],
+ area: [],
+ b: [],
+ br: [],
+ col: [],
+ code: [],
+ dd: [],
+ div: [],
+ dl: [],
+ dt: [],
+ em: [],
+ hr: [],
+ h1: [],
+ h2: [],
+ h3: [],
+ h4: [],
+ h5: [],
+ h6: [],
+ i: [],
+ img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],
+ li: [],
+ ol: [],
+ p: [],
+ pre: [],
+ s: [],
+ small: [],
+ span: [],
+ sub: [],
+ sup: [],
+ strong: [],
+ u: [],
+ ul: []
+ },
+ De = new Set([
+ 'background',
+ 'cite',
+ 'href',
+ 'itemtype',
+ 'longdesc',
+ 'poster',
+ 'src',
+ 'xlink:href'
+ ]),
+ Pe = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,
+ Me = (t, e) => {
+ const n = t.nodeName.toLowerCase();
+ return e.includes(n)
+ ? !De.has(n) || Boolean(Pe.test(t.nodeValue))
+ : e.filter((t) => t instanceof RegExp).some((t) => t.test(n));
+ };
+ const Ne = {
+ allowList: ke,
+ content: {},
+ extraClass: '',
+ html: !1,
+ sanitize: !0,
+ sanitizeFn: null,
+ template: ''
+ },
+ Be = {
+ allowList: 'object',
+ content: 'object',
+ extraClass: '(string|function)',
+ html: 'boolean',
+ sanitize: 'boolean',
+ sanitizeFn: '(null|function)',
+ template: 'string'
+ },
+ Fe = {
+ entry: '(string|element|function|null)',
+ selector: '(string|element)'
+ };
+ class Ie extends M {
+ constructor(t) {
+ super(), (this._config = this._getConfig(t));
+ }
+ static get Default() {
+ return Ne;
+ }
+ static get DefaultType() {
+ return Be;
+ }
+ static get NAME() {
+ return 'TemplateFactory';
+ }
+ getContent() {
+ return Object.values(this._config.content)
+ .map((t) => this._resolvePossibleFunction(t))
+ .filter(Boolean);
+ }
+ hasContent() {
+ return this.getContent().length > 0;
+ }
+ changeContent(t) {
+ return (
+ this._checkContent(t),
+ (this._config.content = { ...this._config.content, ...t }),
+ this
+ );
+ }
+ toHtml() {
+ const t = document.createElement('div');
+ t.innerHTML = this._maybeSanitize(this._config.template);
+ for (const [e, n] of Object.entries(this._config.content))
+ this._setContent(t, n, e);
+ const e = t.children[0],
+ n = this._resolvePossibleFunction(this._config.extraClass);
+ return n && e.classList.add(...n.split(' ')), e;
+ }
+ _typeCheckConfig(t) {
+ super._typeCheckConfig(t), this._checkContent(t.content);
+ }
+ _checkContent(t) {
+ for (const [e, n] of Object.entries(t))
+ super._typeCheckConfig({ selector: e, entry: n }, Fe);
+ }
+ _setContent(t, e, n) {
+ const i = F.findOne(n, t);
+ i &&
+ ((e = this._resolvePossibleFunction(e))
+ ? o(e)
+ ? this._putElementInTemplate(r(e), i)
+ : this._config.html
+ ? (i.innerHTML = this._maybeSanitize(e))
+ : (i.textContent = e)
+ : i.remove());
+ }
+ _maybeSanitize(t) {
+ return this._config.sanitize
+ ? (function (t, e, n) {
+ if (!t.length) return t;
+ if (n && 'function' == typeof n) return n(t);
+ const i = new window.DOMParser().parseFromString(t, 'text/html'),
+ o = [].concat(...i.body.querySelectorAll('*'));
+ for (const t of o) {
+ const n = t.nodeName.toLowerCase();
+ if (!Object.keys(e).includes(n)) {
+ t.remove();
+ continue;
+ }
+ const i = [].concat(...t.attributes),
+ o = [].concat(e['*'] || [], e[n] || []);
+ for (const e of i) Me(e, o) || t.removeAttribute(e.nodeName);
+ }
+ return i.body.innerHTML;
+ })(t, this._config.allowList, this._config.sanitizeFn)
+ : t;
+ }
+ _resolvePossibleFunction(t) {
+ return d(t, [this]);
+ }
+ _putElementInTemplate(t, e) {
+ if (this._config.html) return (e.innerHTML = ''), void e.append(t);
+ e.textContent = t.textContent;
+ }
+ }
+ const He = new Set(['sanitize', 'allowList', 'sanitizeFn']),
+ $e = 'fade',
+ ze = 'show',
+ We = '.tooltip-inner',
+ Re = '.modal',
+ qe = 'hide.bs.modal',
+ Ve = 'hover',
+ Ye = 'focus',
+ Ue = {
+ AUTO: 'auto',
+ TOP: 'top',
+ RIGHT: u() ? 'left' : 'right',
+ BOTTOM: 'bottom',
+ LEFT: u() ? 'right' : 'left'
+ },
+ Ke = {
+ allowList: ke,
+ animation: !0,
+ boundary: 'clippingParents',
+ container: !1,
+ customClass: '',
+ delay: 0,
+ fallbackPlacements: ['top', 'right', 'bottom', 'left'],
+ html: !1,
+ offset: [0, 6],
+ placement: 'top',
+ popperConfig: null,
+ sanitize: !0,
+ sanitizeFn: null,
+ selector: !1,
+ template:
+ '=0,N=S?"width":"height",k=pt(t,{placement:C,boundary:u,rootBoundary:d,altBoundary:f,padding:c}),D=S?L?ee:te:L?Z:J;_[N]>w[N]&&(D=tt(D));var j=tt(D),B=[];if(r&&B.push(k[O]<=0),a&&B.push(k[D]<=0,k[j]<=0),B.every((function(e){return e}))){x=C,A=!1;break}E.set(C,B)}if(A)for(var P=function(e){var t=y.find((function(t){var n=E.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return x=t,"break"},M=h?3:1;M>0;M--){if("break"===P(M))break}t.placement!==x&&(t.modifiersData[i]._skip=!0,t.placement=x,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function gt(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function bt(e){return[J,ee,Z,te].some((function(t){return e[t]>=0}))}var vt={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,i=t.rects.reference,o=t.rects.popper,r=t.modifiersData.preventOverflow,s=pt(t,{elementContext:"reference"}),a=pt(t,{altBoundary:!0}),l=gt(s,i),c=gt(a,o,r),u=bt(l),d=bt(c);t.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:u,hasPopperEscaped:d},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":d})}};var yt={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,i=e.name,o=n.offset,r=void 0===o?[0,0]:o,s=de.reduce((function(e,n){return e[n]=function(e,t,n){var i=Le(e),o=[te,J].indexOf(i)>=0?-1:1,r="function"==typeof n?n(Object.assign({},t,{placement:e})):n,s=r[0],a=r[1];return s=s||0,a=(a||0)*o,[te,ee].indexOf(i)>=0?{x:a,y:s}:{x:s,y:a}}(n,t.rects,r),e}),{}),a=s[t.placement],l=a.x,c=a.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=c),t.modifiersData[i]=s}};var _t={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=ft({reference:t.rects.reference,element:t.rects.popper,placement:t.placement})},data:{}};var wt={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,i=e.name,o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0!==s&&s,l=n.boundary,c=n.rootBoundary,u=n.altBoundary,d=n.padding,f=n.tether,p=void 0===f||f,h=n.tetherOffset,m=void 0===h?0:h,g=pt(t,{boundary:l,rootBoundary:c,padding:d,altBoundary:u}),b=Le(t.placement),v=Ke(t.placement),y=!v,_=Re(b),w="x"===_?"y":"x",E=t.modifiersData.popperOffsets,A=t.rects.reference,x=t.rects.popper,T="function"==typeof m?m(Object.assign({},t.rects,{placement:t.placement})):m,C="number"==typeof T?{mainAxis:T,altAxis:T}:Object.assign({mainAxis:0,altAxis:0},T),O=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,L={x:0,y:0};if(E){if(r){var S,N="y"===_?J:te,k="y"===_?Z:ee,D="y"===_?"height":"width",j=E[_],B=j+g[N],P=j-g[k],M=p?-x[D]/2:0,I=v===oe?A[D]:x[D],H=v===oe?-x[D]:-A[D],F=t.elements.arrow,q=p&&F?Pe(F):{width:0,height:0},$=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},z=$[N],R=$[k],W=We(0,A[D],q[D]),V=y?A[D]/2-M-W-z-C.mainAxis:I-W-z-C.mainAxis,U=y?-A[D]/2+M+W+R+C.mainAxis:H+W+R+C.mainAxis,Y=t.elements.arrow&&ze(t.elements.arrow),K=Y?"y"===_?Y.clientTop||0:Y.clientLeft||0:0,Q=null!=(S=null==O?void 0:O[_])?S:0,X=j+U-Q,G=We(p?Ne(B,j+V-Q-K):B,j,p?Se(P,X):P);E[_]=G,L[_]=G-j}if(a){var ne,ie="x"===_?J:te,re="x"===_?Z:ee,se=E[w],ae="y"===w?"height":"width",le=se+g[ie],ce=se-g[re],ue=-1!==[J,te].indexOf(b),de=null!=(ne=null==O?void 0:O[w])?ne:0,fe=ue?le:se-A[ae]-x[ae]-de+C.altAxis,pe=ue?se+A[ae]+x[ae]-de-C.altAxis:ce,he=p&&ue?function(e,t,n){var i=We(e,t,n);return i>n?n:i}(fe,se,pe):We(p?fe:le,se,p?pe:ce);E[w]=he,L[w]=he-se}t.modifiersData[i]=L}},requiresIfExists:["offset"]};function Et(e,t,n){void 0===n&&(n=!1);var i,o,r=Te(t),s=Te(t)&&function(e){var t=e.getBoundingClientRect(),n=ke(t.width)/e.offsetWidth||1,i=ke(t.height)/e.offsetHeight||1;return 1!==n||1!==i}(t),a=Fe(t),l=Be(e,s,n),c={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(r||!r&&!n)&&(("body"!==Ee(t)||st(a))&&(c=(i=t)!==Ae(i)&&Te(i)?{scrollLeft:(o=i).scrollLeft,scrollTop:o.scrollTop}:ot(i)),Te(t)?((u=Be(t,!0)).x+=t.clientLeft,u.y+=t.clientTop):a&&(u.x=rt(a))),{x:l.left+c.scrollLeft-u.x,y:l.top+c.scrollTop-u.y,width:l.width,height:l.height}}function At(e){var t=new Map,n=new Set,i=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var i=t.get(e);i&&o(i)}})),i.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),i}var xt={placement:"bottom",modifiers:[],strategy:"absolute"};function Tt(){for(var e=arguments.length,t=new Array(e),n=0;n{const n=e.nodeName.toLowerCase();return t.includes(n)?!Dt.has(n)||Boolean(jt.test(e.nodeValue)):t.filter((e=>e instanceof RegExp)).some((e=>e.test(n)))};const Pt={allowList:kt,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:""},Mt={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},It={entry:"(string|element|function|null)",selector:"(string|element)"};class Ht extends B{constructor(e){super(),this._config=this._getConfig(e)}static get Default(){return Pt}static get DefaultType(){return Mt}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((e=>this._resolvePossibleFunction(e))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(e){return this._checkContent(e),this._config.content={...this._config.content,...e},this}toHtml(){const e=document.createElement("div");e.innerHTML=this._maybeSanitize(this._config.template);for(const[t,n]of Object.entries(this._config.content))this._setContent(e,n,t);const t=e.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&t.classList.add(...n.split(" ")),t}_typeCheckConfig(e){super._typeCheckConfig(e),this._checkContent(e.content)}_checkContent(e){for(const[t,n]of Object.entries(e))super._typeCheckConfig({selector:t,entry:n},It)}_setContent(e,t,n){const i=I.findOne(n,e);i&&((t=this._resolvePossibleFunction(t))?o(t)?this._putElementInTemplate(r(t),i):this._config.html?i.innerHTML=this._maybeSanitize(t):i.textContent=t:i.remove())}_maybeSanitize(e){return this._config.sanitize?function(e,t,n){if(!e.length)return e;if(n&&"function"==typeof n)return n(e);const i=(new window.DOMParser).parseFromString(e,"text/html"),o=[].concat(...i.body.querySelectorAll("*"));for(const e of o){const n=e.nodeName.toLowerCase();if(!Object.keys(t).includes(n)){e.remove();continue}const i=[].concat(...e.attributes),o=[].concat(t["*"]||[],t[n]||[]);for(const t of i)Bt(t,o)||e.removeAttribute(t.nodeName)}return i.body.innerHTML}(e,this._config.allowList,this._config.sanitizeFn):e}_resolvePossibleFunction(e){return f(e,[this])}_putElementInTemplate(e,t){if(this._config.html)return t.innerHTML="",void t.append(e);t.textContent=e.textContent}}const Ft=new Set(["sanitize","allowList","sanitizeFn"]),qt="fade",$t="show",zt=".tooltip-inner",Rt=".modal",Wt="hide.bs.modal",Vt="hover",Ut="focus",Yt={AUTO:"auto",TOP:"top",RIGHT:u()?"left":"right",BOTTOM:"bottom",LEFT:u()?"right":"left"},Kt={allowList:kt,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'t.right||e.clientYt.bottom)&&this.hidePopup()}static initComponents(){this.initBar(),[...An].forEach((e=>{e.onclick=()=>this.showPopup()})),xn.onclick=e=>this.clickBackdrop(e),Tn.onclick=()=>this.hidePopup(),xn.oncancel=e=>{e.preventDefault(),this.hidePopup()}}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}}var Sn={_:!0},Nn={_:48};yn(Ln,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:vn(_n=Ln,_n,Nn)._});yn(class{static refresh(){tocbot.refresh(this.options)}static init(){document.getElementById("toc-wrapper")&&tocbot.init(this.options)}},"options",{tocSelector:"#toc",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,headingsOffset:32}),matchMedia("(min-width: 1200px)");const kn="mermaid",Dn=Theme.getThemeMapper("default","dark");function jn(e){if(e.source===window&&e.data&&e.data.id===Theme.ID){[...document.getElementsByClassName(kn)].forEach((e=>{const t=e.previousSibling.children.item(0).innerHTML;e.textContent=t,e.removeAttribute("data-processed")}));const e=Dn[Theme.visualState];mermaid.initialize({theme:e}),mermaid.init(null,`.${kn}`)}}function Bn(e){const t=e.textContent,n=e.parentElement;n.classList.add("d-none");const i=document.createElement("pre");i.classList.add(kn);const o=document.createTextNode(t);i.appendChild(o),n.after(i)}const Pn=document.getElementById("mode-toggle");const Mn="lock",In=2e4;function Hn(e){e.removeAttribute(Mn),e.getElementsByTagName("i")[0].classList.replace("icon-loading1","icon-playfill")}const Fn="lock",qn=2e4;function $n(e){e.removeAttribute(Fn),e.getElementsByTagName("i")[0].classList.replace("icon-loading1","icon-playfill")}function zn(){console.logs.push(Array.from(arguments)),console.stdlog.apply(console,arguments)}const Rn="lock",Wn=2e4;function Vn(e){e.removeAttribute(Rn),e.getElementsByTagName("i")[0].classList.replace("icon-loading1","icon-playfill")}const Un="lock",Yn=2e4;function Kn(e){e.removeAttribute(Un),e.getElementsByTagName("i")[0].classList.replace("icon-loading1","icon-playfill")}function Qn(e,t,n,i){let o,r=e.getElementsByTagName("pre");if(2==r.length)o=r[1].innerText;else{if(1!=r.length)return void Kn(n);o=r[0].innerText}let s={version:"stable",optimize:"0",code:o,edition:"2021"};-1!==o.indexOf("#![feature")&&(s.version="nightly"),function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:2e4;return Promise.race([fetch(e,t),new Promise(((e,t)=>setTimeout((()=>t(new Error("timeout"))),n)))])}("https://play.rust-lang.org/evaluate.json",{headers:{"Content-Type":"application/json"},method:"POST",mode:"cors",body:JSON.stringify(s)}).then((e=>e.json())).then((e=>{t.innerText=e.result,Kn(n)})).catch((e=>{t.innerText=i+e.message,Kn(n)}))}const Xn=document.getElementById("sidebar"),Gn=document.getElementById("sidebar-trigger"),Jn=document.getElementById("mask");class Zn{static toggle(){ei._=vn(Zn,this,!vn(Zn,this,ei)._),document.body.toggleAttribute("sidebar-display",vn(Zn,this,ei)._),Xn.classList.toggle("z-2",vn(Zn,this,ei)._),Jn.classList.toggle("d-none",!vn(Zn,this,ei)._)}}var ei={_:!1};const ti=document.getElementById("sidebar-trigger"),ni=document.getElementById("search-trigger"),ii=document.getElementById("search-cancel"),oi=document.querySelectorAll("#main-wrapper>.container>.row"),ri=document.getElementById("topbar-title"),si=document.getElementById("search"),ai=document.getElementById("search-result-wrapper"),li=document.getElementById("search-results"),ci=document.getElementById("search-input"),ui=document.getElementById("search-hints"),di="d-block",fi="d-none",pi="input-focus",hi="d-flex";class mi{static on(){ti.classList.add(fi),ri.classList.add(fi),ni.classList.add(fi),si.classList.add(hi),ii.classList.add(di)}static off(){ii.classList.remove(di),si.classList.remove(hi),ti.classList.remove(fi),ri.classList.remove(fi),ni.classList.remove(fi)}}class gi{static on(){this.resultVisible||(ai.classList.remove(fi),oi.forEach((e=>{e.classList.add(fi)})),this.resultVisible=!0)}static off(){this.resultVisible&&(li.innerHTML="",ui.classList.contains(fi)&&ui.classList.remove(fi),ai.classList.add(fi),oi.forEach((e=>{e.classList.remove(fi)})),ci.textContent="",this.resultVisible=!1)}}function bi(){return ii.classList.contains(di)}yn(gi,"resultVisible",!1),function(){const e=document.querySelectorAll("article img");if(0===e.length)return;e.forEach((e=>{e.addEventListener("load",pn)})),document.querySelectorAll('article img[loading="lazy"]').forEach((e=>{e.complete&&fn.call(e,dn.SHIMMER)}));const t=document.querySelectorAll(`article img[${un}="true"]`);t.length&&t.forEach((e=>{hn.call(e)}))}(),function(){if(null===document.querySelector(".popup"))return;const e=!(null===document.querySelector(".popup.light")&&null===document.querySelector(".popup.dark"));Theme.visualState===Theme.DARK&&(bn=gn);let t=GLightbox({selector:`${bn}`});if(e&&Theme.switchable){let e=null;window.addEventListener("message",(n=>{n.source===window&&n.data&&n.data.id===Theme.ID&&function(e,t){bn=bn===mn?gn:mn,null===t&&(t=GLightbox({selector:`${bn}`})),[e,t]=[t,e]}(t,e)}))}}(),Gn.onclick=Jn.onclick=()=>Zn.toggle(),ni.addEventListener("click",(()=>{mi.on(),gi.on(),ci.focus()})),ii.addEventListener("click",(()=>{mi.off(),gi.off()})),ci.addEventListener("focus",(()=>{si.classList.add(pi)})),ci.addEventListener("focusout",(()=>{si.classList.remove(pi)})),ci.addEventListener("input",(()=>{""===ci.value?bi()?ui.classList.remove(fi):gi.off():(gi.on(),bi()&&ui.classList.add(fi))})),ln(),function(){const e=document.getElementById("copy-link");null!==e&&(e.addEventListener("click",(e=>{const t=e.target;rn(t)||navigator.clipboard.writeText(window.location.href).then((()=>{const e=t.getAttribute(nn),n=t.getAttribute(tn);t.setAttribute(nn,n),Xt.getInstance(t).show(),sn(t),setTimeout((()=>{t.setAttribute(nn,e),an(t)}),on)}))})),e.addEventListener("mouseleave",(e=>{Xt.getInstance(e.target).hide()})))}(),function(){if("undefined"==typeof mermaid||"function"!=typeof mermaid.initialize)return;let e={theme:Dn[Theme.visualState]};[...document.getElementsByClassName("language-mermaid")].forEach(Bn),mermaid.initialize(e),Theme.switchable&&window.addEventListener("message",jn)}(),Pn&&Pn.addEventListener("click",(()=>{Theme.flip()})),function(){const e=document.getElementById("back-to-top");window.addEventListener("scroll",(()=>{window.scrollY>50?e.classList.add("show"):e.classList.remove("show")})),e.addEventListener("click",(()=>{window.scrollTo({top:0})}))}(),[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map((e=>new Xt(e))),[...document.getElementsByClassName("highlighter-rouge")].forEach((e=>{const t=e.getAttribute("highlight-lines");if(t&&t.length>0){let n=[];(","+t).match(/(?<=\s|,)\d+(-\d+)?/g).forEach((function(e){let t=e.split("-"),i=parseInt(t[0]);if(t.length>1){let e=parseInt(t[1]);if(e>=i)for(let t=i;t<=e;t++)n.push(t)}else 1==t.length&&n.push(i)}));let i=e.getElementsByTagName("pre");!function(e,t){let n=null,i=1;for(let o=e.firstChild;null!=o;o=o.nextSibling){null==n&&(n=o);let r=o.textContent.split(/\n/g);if((r||[]).length>1){let s=r.length-1,a=[];for(let t=0;t{e.onclick=()=>{if(function(e){if(e.hasAttribute(Mn)){let t=e.getAttribute(Mn);if(Number(t)+5e3>Date.now())return!0}return!1}(e))return;var t;(t=e).setAttribute(Mn,Date.now()+In),t.getElementsByTagName("i")[0].classList.replace("icon-playfill","icon-loading1");let n=function(e){let t=e.parentNode.parentNode.nextElementSibling;if(null==t||"DETAILS"!=t.tagName||"run-output"!=t.className){let n=t;t=document.createElement("details"),t.className="run-output";let i=document.createElement("summary");i.textContent=e.getAttribute("output-title"),t.appendChild(i),null==n?e.parentNode.parentNode.parentNode.appendChild(t):n.parentNode.insertBefore(t,n)}return t.setAttribute("open","open"),t}(e);for(let e of n.getElementsByTagName("p"))n.removeChild(e);let i=document.createElement("p");i.innerText=e.getAttribute("wait-message"),n.appendChild(i),function(e,t,n,i){let o,r=e.getElementsByTagName("pre");if(2==r.length)o=r[1].innerText;else{if(1!=r.length)return void Hn(n);o=r[0].innerText}let s={cmd:"g++ -std=c++20 main.cpp && ./a.out",src:o},a=new XMLHttpRequest;a.open("POST","https://coliru.stacked-crooked.com/compile",!0),a.onload=()=>{t.innerText=a.responseText,Hn(n)},a.onerror=()=>{t.innerText=i+a.responseText,Hn(n)},a.send(JSON.stringify(s))}(e.parentNode.nextElementSibling,i,e,e.getAttribute("error-prompt"))}})),[...document.querySelectorAll(".code-header button.button-run-javascript")].forEach((e=>{e.onclick=()=>{if(function(e){if(e.hasAttribute(Fn)){let t=e.getAttribute(Fn);if(Number(t)+5e3>Date.now())return!0}return!1}(e))return;var t;(t=e).setAttribute(Fn,Date.now()+qn),t.getElementsByTagName("i")[0].classList.replace("icon-playfill","icon-loading1");let n=function(e){let t=e.parentNode.parentNode.nextElementSibling;if(null==t||"DETAILS"!=t.tagName||"run-output"!=t.className){let n=t;t=document.createElement("details"),t.className="run-output";let i=document.createElement("summary");i.textContent=e.getAttribute("output-title"),t.appendChild(i),null==n?e.parentNode.parentNode.parentNode.appendChild(t):n.parentNode.insertBefore(t,n)}return t.setAttribute("open","open"),t}(e);for(let e of n.getElementsByTagName("p"))n.removeChild(e);let i=document.createElement("p");i.innerText=e.getAttribute("wait-message"),n.appendChild(i);let o,r=e.parentNode.nextElementSibling.getElementsByTagName("pre");if(2==r.length)o=r[1].innerText;else{if(1!=r.length)return void $n(e);o=r[0].innerText}let s=new Function(o);console.log!=zn&&(console.stdlog=console.log.bind(console),console.log=zn),console.logs=[],s(),i.innerText=console.logs.join("\n"),$n(e)}})),[...document.querySelectorAll(".code-header button.button-run-python")].forEach((e=>{e.onclick=()=>{if(function(e){if(e.hasAttribute(Rn)){let t=e.getAttribute(Rn);if(Number(t)+5e3>Date.now())return!0}return!1}(e))return;var t;(t=e).setAttribute(Rn,Date.now()+Wn),t.getElementsByTagName("i")[0].classList.replace("icon-playfill","icon-loading1");let n=function(e){let t=e.parentNode.parentNode.nextElementSibling;if(null==t||"DETAILS"!=t.tagName||"run-output"!=t.className){let n=t;t=document.createElement("details"),t.className="run-output";let i=document.createElement("summary");i.textContent=e.getAttribute("output-title"),t.appendChild(i),null==n?e.parentNode.parentNode.parentNode.appendChild(t):n.parentNode.insertBefore(t,n)}return t.setAttribute("open","open"),t}(e);for(let e of n.getElementsByTagName("p"))n.removeChild(e);let i=document.createElement("p");i.innerText=e.getAttribute("wait-message"),n.appendChild(i),function(e,t,n,i){let o,r=e.getElementsByTagName("pre");if(2==r.length)o=r[1].innerText;else{if(1!=r.length)return void Vn(n);o=r[0].innerText}let s=[{code:o,file_name:"main.py"}];socket=io("https://repl.online-cpp.com",{transports:["websocket"],timeout:Wn,"connect timeout":3e3,reconnection:!1,query:{type:"script",lang:"python3"}}),socket.emit("code",s,"","main.py"),socket.on("exit",(function(e,t){Vn(n)})),socket.on("output",(function(e){let n=(new TextDecoder).decode(new Uint8Array(e));t.innerText=n})),socket.on("err",(function(e){let n=(new TextDecoder).decode(new Uint8Array(e));t.innerText=i+"\n"+n})),socket.on("connect_error",(function(e){t.innerText=i+e.message,socket.close(),Vn(n)}))}(e.parentNode.nextElementSibling,i,e,e.getAttribute("error-prompt"))}})),[...document.querySelectorAll(".code-header button.button-run-rust")].forEach((e=>{e.onclick=()=>{if(function(e){if(e.hasAttribute(Un)){let t=e.getAttribute(Un);if(Number(t)+5e3>Date.now())return!0}return!1}(e))return;var t;(t=e).setAttribute(Un,Date.now()+Yn),t.getElementsByTagName("i")[0].classList.replace("icon-playfill","icon-loading1");let n=function(e){let t=e.parentNode.parentNode.nextElementSibling;if(null==t||"DETAILS"!=t.tagName||"run-output"!=t.className){let n=t;t=document.createElement("details"),t.className="run-output";let i=document.createElement("summary");i.textContent=e.getAttribute("output-title"),t.appendChild(i),null==n?e.parentNode.parentNode.parentNode.appendChild(t):n.parentNode.insertBefore(t,n)}return t.setAttribute("open","open"),t}(e);for(let e of n.getElementsByTagName("p"))n.removeChild(e);let i=document.createElement("p");i.innerText=e.getAttribute("wait-message"),n.appendChild(i),Qn(e.parentNode.nextElementSibling,i,e,e.getAttribute("error-prompt"))}}))}();
+!(function () {
+ 'use strict';
+ const e = new Map();
+ var t = {
+ set(t, n, i) {
+ e.has(t) || e.set(t, new Map());
+ const o = e.get(t);
+ o.has(n) || 0 === o.size
+ ? o.set(n, i)
+ : console.error(
+ `Bootstrap doesn't allow more than one instance per element. Bound instance: ${
+ Array.from(o.keys())[0]
+ }.`
+ );
+ },
+ get: (t, n) => (e.has(t) && e.get(t).get(n)) || null,
+ remove(t, n) {
+ if (!e.has(t)) return;
+ const i = e.get(t);
+ i.delete(n), 0 === i.size && e.delete(t);
+ }
+ };
+ const n = 'transitionend',
+ i = (e) => (
+ e &&
+ window.CSS &&
+ window.CSS.escape &&
+ (e = e.replace(/#([^\s"#']+)/g, (e, t) => `#${CSS.escape(t)}`)),
+ e
+ ),
+ o = (e) =>
+ !(!e || 'object' != typeof e) &&
+ (void 0 !== e.jquery && (e = e[0]), void 0 !== e.nodeType),
+ r = (e) =>
+ o(e)
+ ? e.jquery
+ ? e[0]
+ : e
+ : 'string' == typeof e && e.length > 0
+ ? document.querySelector(i(e))
+ : null,
+ s = (e) => {
+ if (!document.documentElement.attachShadow) return null;
+ if ('function' == typeof e.getRootNode) {
+ const t = e.getRootNode();
+ return t instanceof ShadowRoot ? t : null;
+ }
+ return e instanceof ShadowRoot
+ ? e
+ : e.parentNode
+ ? s(e.parentNode)
+ : null;
+ },
+ a = () => {},
+ l = () =>
+ window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')
+ ? window.jQuery
+ : null,
+ c = [],
+ u = () => 'rtl' === document.documentElement.dir,
+ d = (e) => {
+ var t;
+ (t = () => {
+ const t = l();
+ if (t) {
+ const n = e.NAME,
+ i = t.fn[n];
+ (t.fn[n] = e.jQueryInterface),
+ (t.fn[n].Constructor = e),
+ (t.fn[n].noConflict = () => ((t.fn[n] = i), e.jQueryInterface));
+ }
+ }),
+ 'loading' === document.readyState
+ ? (c.length ||
+ document.addEventListener('DOMContentLoaded', () => {
+ for (const e of c) e();
+ }),
+ c.push(t))
+ : t();
+ },
+ f = function (e) {
+ let t =
+ arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : e;
+ return 'function' == typeof e
+ ? e(
+ ...(arguments.length > 1 && void 0 !== arguments[1]
+ ? arguments[1]
+ : [])
+ )
+ : t;
+ },
+ p = function (e, t) {
+ if (!(!(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]))
+ return void f(e);
+ const i =
+ ((e) => {
+ if (!e) return 0;
+ let { transitionDuration: t, transitionDelay: n } =
+ window.getComputedStyle(e);
+ const i = Number.parseFloat(t),
+ o = Number.parseFloat(n);
+ return i || o
+ ? ((t = t.split(',')[0]),
+ (n = n.split(',')[0]),
+ 1e3 * (Number.parseFloat(t) + Number.parseFloat(n)))
+ : 0;
+ })(t) + 5;
+ let o = !1;
+ const r = (i) => {
+ let { target: s } = i;
+ s === t && ((o = !0), t.removeEventListener(n, r), f(e));
+ };
+ t.addEventListener(n, r),
+ setTimeout(() => {
+ o || t.dispatchEvent(new Event(n));
+ }, i);
+ },
+ h = /[^.]*(?=\..*)\.|.*/,
+ m = /\..*/,
+ g = /::\d+$/,
+ b = {};
+ let v = 1;
+ const y = { mouseenter: 'mouseover', mouseleave: 'mouseout' },
+ _ = new Set([
+ 'click',
+ 'dblclick',
+ 'mouseup',
+ 'mousedown',
+ 'contextmenu',
+ 'mousewheel',
+ 'DOMMouseScroll',
+ 'mouseover',
+ 'mouseout',
+ 'mousemove',
+ 'selectstart',
+ 'selectend',
+ 'keydown',
+ 'keypress',
+ 'keyup',
+ 'orientationchange',
+ 'touchstart',
+ 'touchmove',
+ 'touchend',
+ 'touchcancel',
+ 'pointerdown',
+ 'pointermove',
+ 'pointerup',
+ 'pointerleave',
+ 'pointercancel',
+ 'gesturestart',
+ 'gesturechange',
+ 'gestureend',
+ 'focus',
+ 'blur',
+ 'change',
+ 'reset',
+ 'select',
+ 'submit',
+ 'focusin',
+ 'focusout',
+ 'load',
+ 'unload',
+ 'beforeunload',
+ 'resize',
+ 'move',
+ 'DOMContentLoaded',
+ 'readystatechange',
+ 'error',
+ 'abort',
+ 'scroll'
+ ]);
+ function w(e, t) {
+ return (t && `${t}::${v++}`) || e.uidEvent || v++;
+ }
+ function E(e) {
+ const t = w(e);
+ return (e.uidEvent = t), (b[t] = b[t] || {}), b[t];
+ }
+ function A(e, t) {
+ let n =
+ arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null;
+ return Object.values(e).find(
+ (e) => e.callable === t && e.delegationSelector === n
+ );
+ }
+ function x(e, t, n) {
+ const i = 'string' == typeof t,
+ o = i ? n : t || n;
+ let r = L(e);
+ return _.has(r) || (r = e), [i, o, r];
+ }
+ function T(e, t, n, i, o) {
+ if ('string' != typeof t || !e) return;
+ let [r, s, a] = x(t, n, i);
+ if (t in y) {
+ const e = (e) =>
+ function (t) {
+ if (
+ !t.relatedTarget ||
+ (t.relatedTarget !== t.delegateTarget &&
+ !t.delegateTarget.contains(t.relatedTarget))
+ )
+ return e.call(this, t);
+ };
+ s = e(s);
+ }
+ const l = E(e),
+ c = l[a] || (l[a] = {}),
+ u = A(c, s, r ? n : null);
+ if (u) return void (u.oneOff = u.oneOff && o);
+ const d = w(s, t.replace(h, '')),
+ f = r
+ ? (function (e, t, n) {
+ return function i(o) {
+ const r = e.querySelectorAll(t);
+ for (let { target: s } = o; s && s !== this; s = s.parentNode)
+ for (const a of r)
+ if (a === s)
+ return (
+ N(o, { delegateTarget: s }),
+ i.oneOff && S.off(e, o.type, t, n),
+ n.apply(s, [o])
+ );
+ };
+ })(e, n, s)
+ : (function (e, t) {
+ return function n(i) {
+ return (
+ N(i, { delegateTarget: e }),
+ n.oneOff && S.off(e, i.type, t),
+ t.apply(e, [i])
+ );
+ };
+ })(e, s);
+ (f.delegationSelector = r ? n : null),
+ (f.callable = s),
+ (f.oneOff = o),
+ (f.uidEvent = d),
+ (c[d] = f),
+ e.addEventListener(a, f, r);
+ }
+ function C(e, t, n, i, o) {
+ const r = A(t[n], i, o);
+ r && (e.removeEventListener(n, r, Boolean(o)), delete t[n][r.uidEvent]);
+ }
+ function O(e, t, n, i) {
+ const o = t[n] || {};
+ for (const [r, s] of Object.entries(o))
+ r.includes(i) && C(e, t, n, s.callable, s.delegationSelector);
+ }
+ function L(e) {
+ return (e = e.replace(m, '')), y[e] || e;
+ }
+ const S = {
+ on(e, t, n, i) {
+ T(e, t, n, i, !1);
+ },
+ one(e, t, n, i) {
+ T(e, t, n, i, !0);
+ },
+ off(e, t, n, i) {
+ if ('string' != typeof t || !e) return;
+ const [o, r, s] = x(t, n, i),
+ a = s !== t,
+ l = E(e),
+ c = l[s] || {},
+ u = t.startsWith('.');
+ if (void 0 === r) {
+ if (u) for (const n of Object.keys(l)) O(e, l, n, t.slice(1));
+ for (const [n, i] of Object.entries(c)) {
+ const o = n.replace(g, '');
+ (a && !t.includes(o)) || C(e, l, s, i.callable, i.delegationSelector);
+ }
+ } else {
+ if (!Object.keys(c).length) return;
+ C(e, l, s, r, o ? n : null);
+ }
+ },
+ trigger(e, t, n) {
+ if ('string' != typeof t || !e) return null;
+ const i = l();
+ let o = null,
+ r = !0,
+ s = !0,
+ a = !1;
+ t !== L(t) &&
+ i &&
+ ((o = i.Event(t, n)),
+ i(e).trigger(o),
+ (r = !o.isPropagationStopped()),
+ (s = !o.isImmediatePropagationStopped()),
+ (a = o.isDefaultPrevented()));
+ const c = N(new Event(t, { bubbles: r, cancelable: !0 }), n);
+ return (
+ a && c.preventDefault(),
+ s && e.dispatchEvent(c),
+ c.defaultPrevented && o && o.preventDefault(),
+ c
+ );
+ }
+ };
+ function N(e) {
+ let t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
+ for (const [n, i] of Object.entries(t))
+ try {
+ e[n] = i;
+ } catch {
+ Object.defineProperty(e, n, { configurable: !0, get: () => i });
+ }
+ return e;
+ }
+ function k(e) {
+ if ('true' === e) return !0;
+ if ('false' === e) return !1;
+ if (e === Number(e).toString()) return Number(e);
+ if ('' === e || 'null' === e) return null;
+ if ('string' != typeof e) return e;
+ try {
+ return JSON.parse(decodeURIComponent(e));
+ } catch {
+ return e;
+ }
+ }
+ function D(e) {
+ return e.replace(/[A-Z]/g, (e) => `-${e.toLowerCase()}`);
+ }
+ const j = {
+ setDataAttribute(e, t, n) {
+ e.setAttribute(`data-bs-${D(t)}`, n);
+ },
+ removeDataAttribute(e, t) {
+ e.removeAttribute(`data-bs-${D(t)}`);
+ },
+ getDataAttributes(e) {
+ if (!e) return {};
+ const t = {},
+ n = Object.keys(e.dataset).filter(
+ (e) => e.startsWith('bs') && !e.startsWith('bsConfig')
+ );
+ for (const i of n) {
+ let n = i.replace(/^bs/, '');
+ (n = n.charAt(0).toLowerCase() + n.slice(1, n.length)),
+ (t[n] = k(e.dataset[i]));
+ }
+ return t;
+ },
+ getDataAttribute: (e, t) => k(e.getAttribute(`data-bs-${D(t)}`))
+ };
+ class B {
+ static get Default() {
+ return {};
+ }
+ static get DefaultType() {
+ return {};
+ }
+ static get NAME() {
+ throw new Error(
+ 'You have to implement the static method "NAME", for each component!'
+ );
+ }
+ _getConfig(e) {
+ return (
+ (e = this._mergeConfigObj(e)),
+ (e = this._configAfterMerge(e)),
+ this._typeCheckConfig(e),
+ e
+ );
+ }
+ _configAfterMerge(e) {
+ return e;
+ }
+ _mergeConfigObj(e, t) {
+ const n = o(t) ? j.getDataAttribute(t, 'config') : {};
+ return {
+ ...this.constructor.Default,
+ ...('object' == typeof n ? n : {}),
+ ...(o(t) ? j.getDataAttributes(t) : {}),
+ ...('object' == typeof e ? e : {})
+ };
+ }
+ _typeCheckConfig(e) {
+ let t =
+ arguments.length > 1 && void 0 !== arguments[1]
+ ? arguments[1]
+ : this.constructor.DefaultType;
+ for (const [i, r] of Object.entries(t)) {
+ const t = e[i],
+ s = o(t)
+ ? 'element'
+ : null == (n = t)
+ ? `${n}`
+ : Object.prototype.toString
+ .call(n)
+ .match(/\s([a-z]+)/i)[1]
+ .toLowerCase();
+ if (!new RegExp(r).test(s))
+ throw new TypeError(
+ `${this.constructor.NAME.toUpperCase()}: Option "${i}" provided type "${s}" but expected type "${r}".`
+ );
+ }
+ var n;
+ }
+ }
+ class P extends B {
+ constructor(e, n) {
+ super(),
+ (e = r(e)) &&
+ ((this._element = e),
+ (this._config = this._getConfig(n)),
+ t.set(this._element, this.constructor.DATA_KEY, this));
+ }
+ dispose() {
+ t.remove(this._element, this.constructor.DATA_KEY),
+ S.off(this._element, this.constructor.EVENT_KEY);
+ for (const e of Object.getOwnPropertyNames(this)) this[e] = null;
+ }
+ _queueCallback(e, t) {
+ p(
+ e,
+ t,
+ !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]
+ );
+ }
+ _getConfig(e) {
+ return (
+ (e = this._mergeConfigObj(e, this._element)),
+ (e = this._configAfterMerge(e)),
+ this._typeCheckConfig(e),
+ e
+ );
+ }
+ static getInstance(e) {
+ return t.get(r(e), this.DATA_KEY);
+ }
+ static getOrCreateInstance(e) {
+ let t =
+ arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
+ return (
+ this.getInstance(e) || new this(e, 'object' == typeof t ? t : null)
+ );
+ }
+ static get VERSION() {
+ return '5.3.3';
+ }
+ static get DATA_KEY() {
+ return `bs.${this.NAME}`;
+ }
+ static get EVENT_KEY() {
+ return `.${this.DATA_KEY}`;
+ }
+ static eventName(e) {
+ return `${e}${this.EVENT_KEY}`;
+ }
+ }
+ const M = (e) => {
+ let t = e.getAttribute('data-bs-target');
+ if (!t || '#' === t) {
+ let n = e.getAttribute('href');
+ if (!n || (!n.includes('#') && !n.startsWith('.'))) return null;
+ n.includes('#') && !n.startsWith('#') && (n = `#${n.split('#')[1]}`),
+ (t = n && '#' !== n ? n.trim() : null);
+ }
+ return t
+ ? t
+ .split(',')
+ .map((e) => i(e))
+ .join(',')
+ : null;
+ },
+ I = {
+ find(e) {
+ let t =
+ arguments.length > 1 && void 0 !== arguments[1]
+ ? arguments[1]
+ : document.documentElement;
+ return [].concat(...Element.prototype.querySelectorAll.call(t, e));
+ },
+ findOne(e) {
+ let t =
+ arguments.length > 1 && void 0 !== arguments[1]
+ ? arguments[1]
+ : document.documentElement;
+ return Element.prototype.querySelector.call(t, e);
+ },
+ children: (e, t) => [].concat(...e.children).filter((e) => e.matches(t)),
+ parents(e, t) {
+ const n = [];
+ let i = e.parentNode.closest(t);
+ for (; i; ) n.push(i), (i = i.parentNode.closest(t));
+ return n;
+ },
+ prev(e, t) {
+ let n = e.previousElementSibling;
+ for (; n; ) {
+ if (n.matches(t)) return [n];
+ n = n.previousElementSibling;
+ }
+ return [];
+ },
+ next(e, t) {
+ let n = e.nextElementSibling;
+ for (; n; ) {
+ if (n.matches(t)) return [n];
+ n = n.nextElementSibling;
+ }
+ return [];
+ },
+ focusableChildren(e) {
+ const t = [
+ 'a',
+ 'button',
+ 'input',
+ 'textarea',
+ 'select',
+ 'details',
+ '[tabindex]',
+ '[contenteditable="true"]'
+ ]
+ .map((e) => `${e}:not([tabindex^="-"])`)
+ .join(',');
+ return this.find(t, e).filter(
+ (e) =>
+ !((e) =>
+ !e ||
+ e.nodeType !== Node.ELEMENT_NODE ||
+ !!e.classList.contains('disabled') ||
+ (void 0 !== e.disabled
+ ? e.disabled
+ : e.hasAttribute('disabled') &&
+ 'false' !== e.getAttribute('disabled')))(e) &&
+ ((e) => {
+ if (!o(e) || 0 === e.getClientRects().length) return !1;
+ const t =
+ 'visible' ===
+ getComputedStyle(e).getPropertyValue('visibility'),
+ n = e.closest('details:not([open])');
+ if (!n) return t;
+ if (n !== e) {
+ const t = e.closest('summary');
+ if (t && t.parentNode !== n) return !1;
+ if (null === t) return !1;
+ }
+ return t;
+ })(e)
+ );
+ },
+ getSelectorFromElement(e) {
+ const t = M(e);
+ return t && I.findOne(t) ? t : null;
+ },
+ getElementFromSelector(e) {
+ const t = M(e);
+ return t ? I.findOne(t) : null;
+ },
+ getMultipleElementsFromSelector(e) {
+ const t = M(e);
+ return t ? I.find(t) : [];
+ }
+ },
+ H = '.bs.collapse',
+ F = `show${H}`,
+ q = `shown${H}`,
+ $ = `hide${H}`,
+ z = `hidden${H}`,
+ R = `click${H}.data-api`,
+ W = 'show',
+ V = 'collapse',
+ U = 'collapsing',
+ Y = `:scope .${V} .${V}`,
+ K = '[data-bs-toggle="collapse"]',
+ Q = { parent: null, toggle: !0 },
+ X = { parent: '(null|element)', toggle: 'boolean' };
+ class G extends P {
+ constructor(e, t) {
+ super(e, t), (this._isTransitioning = !1), (this._triggerArray = []);
+ const n = I.find(K);
+ for (const e of n) {
+ const t = I.getSelectorFromElement(e),
+ n = I.find(t).filter((e) => e === this._element);
+ null !== t && n.length && this._triggerArray.push(e);
+ }
+ this._initializeChildren(),
+ this._config.parent ||
+ this._addAriaAndCollapsedClass(this._triggerArray, this._isShown()),
+ this._config.toggle && this.toggle();
+ }
+ static get Default() {
+ return Q;
+ }
+ static get DefaultType() {
+ return X;
+ }
+ static get NAME() {
+ return 'collapse';
+ }
+ toggle() {
+ this._isShown() ? this.hide() : this.show();
+ }
+ show() {
+ if (this._isTransitioning || this._isShown()) return;
+ let e = [];
+ if (
+ (this._config.parent &&
+ (e = this._getFirstLevelChildren(
+ '.collapse.show, .collapse.collapsing'
+ )
+ .filter((e) => e !== this._element)
+ .map((e) => G.getOrCreateInstance(e, { toggle: !1 }))),
+ e.length && e[0]._isTransitioning)
+ )
+ return;
+ if (S.trigger(this._element, F).defaultPrevented) return;
+ for (const t of e) t.hide();
+ const t = this._getDimension();
+ this._element.classList.remove(V),
+ this._element.classList.add(U),
+ (this._element.style[t] = 0),
+ this._addAriaAndCollapsedClass(this._triggerArray, !0),
+ (this._isTransitioning = !0);
+ const n = `scroll${t[0].toUpperCase() + t.slice(1)}`;
+ this._queueCallback(
+ () => {
+ (this._isTransitioning = !1),
+ this._element.classList.remove(U),
+ this._element.classList.add(V, W),
+ (this._element.style[t] = ''),
+ S.trigger(this._element, q);
+ },
+ this._element,
+ !0
+ ),
+ (this._element.style[t] = `${this._element[n]}px`);
+ }
+ hide() {
+ if (this._isTransitioning || !this._isShown()) return;
+ if (S.trigger(this._element, $).defaultPrevented) return;
+ const e = this._getDimension();
+ (this._element.style[e] = `${
+ this._element.getBoundingClientRect()[e]
+ }px`),
+ this._element.offsetHeight,
+ this._element.classList.add(U),
+ this._element.classList.remove(V, W);
+ for (const e of this._triggerArray) {
+ const t = I.getElementFromSelector(e);
+ t && !this._isShown(t) && this._addAriaAndCollapsedClass([e], !1);
+ }
+ this._isTransitioning = !0;
+ (this._element.style[e] = ''),
+ this._queueCallback(
+ () => {
+ (this._isTransitioning = !1),
+ this._element.classList.remove(U),
+ this._element.classList.add(V),
+ S.trigger(this._element, z);
+ },
+ this._element,
+ !0
+ );
+ }
+ _isShown() {
+ return (
+ arguments.length > 0 && void 0 !== arguments[0]
+ ? arguments[0]
+ : this._element
+ ).classList.contains(W);
+ }
+ _configAfterMerge(e) {
+ return (e.toggle = Boolean(e.toggle)), (e.parent = r(e.parent)), e;
+ }
+ _getDimension() {
+ return this._element.classList.contains('collapse-horizontal')
+ ? 'width'
+ : 'height';
+ }
+ _initializeChildren() {
+ if (!this._config.parent) return;
+ const e = this._getFirstLevelChildren(K);
+ for (const t of e) {
+ const e = I.getElementFromSelector(t);
+ e && this._addAriaAndCollapsedClass([t], this._isShown(e));
+ }
+ }
+ _getFirstLevelChildren(e) {
+ const t = I.find(Y, this._config.parent);
+ return I.find(e, this._config.parent).filter((e) => !t.includes(e));
+ }
+ _addAriaAndCollapsedClass(e, t) {
+ if (e.length)
+ for (const n of e)
+ n.classList.toggle('collapsed', !t),
+ n.setAttribute('aria-expanded', t);
+ }
+ static jQueryInterface(e) {
+ const t = {};
+ return (
+ 'string' == typeof e && /show|hide/.test(e) && (t.toggle = !1),
+ this.each(function () {
+ const n = G.getOrCreateInstance(this, t);
+ if ('string' == typeof e) {
+ if (void 0 === n[e]) throw new TypeError(`No method named "${e}"`);
+ n[e]();
+ }
+ })
+ );
+ }
+ }
+ S.on(document, R, K, function (e) {
+ ('A' === e.target.tagName ||
+ (e.delegateTarget && 'A' === e.delegateTarget.tagName)) &&
+ e.preventDefault();
+ for (const e of I.getMultipleElementsFromSelector(this))
+ G.getOrCreateInstance(e, { toggle: !1 }).toggle();
+ }),
+ d(G),
+ document.getElementsByClassName('collapse');
+ var J = 'top',
+ Z = 'bottom',
+ ee = 'right',
+ te = 'left',
+ ne = 'auto',
+ ie = [J, Z, ee, te],
+ oe = 'start',
+ re = 'end',
+ se = 'clippingParents',
+ ae = 'viewport',
+ le = 'popper',
+ ce = 'reference',
+ ue = ie.reduce(function (e, t) {
+ return e.concat([t + '-' + oe, t + '-' + re]);
+ }, []),
+ de = [].concat(ie, [ne]).reduce(function (e, t) {
+ return e.concat([t, t + '-' + oe, t + '-' + re]);
+ }, []),
+ fe = 'beforeRead',
+ pe = 'read',
+ he = 'afterRead',
+ me = 'beforeMain',
+ ge = 'main',
+ be = 'afterMain',
+ ve = 'beforeWrite',
+ ye = 'write',
+ _e = 'afterWrite',
+ we = [fe, pe, he, me, ge, be, ve, ye, _e];
+ function Ee(e) {
+ return e ? (e.nodeName || '').toLowerCase() : null;
+ }
+ function Ae(e) {
+ if (null == e) return window;
+ if ('[object Window]' !== e.toString()) {
+ var t = e.ownerDocument;
+ return (t && t.defaultView) || window;
+ }
+ return e;
+ }
+ function xe(e) {
+ return e instanceof Ae(e).Element || e instanceof Element;
+ }
+ function Te(e) {
+ return e instanceof Ae(e).HTMLElement || e instanceof HTMLElement;
+ }
+ function Ce(e) {
+ return (
+ 'undefined' != typeof ShadowRoot &&
+ (e instanceof Ae(e).ShadowRoot || e instanceof ShadowRoot)
+ );
+ }
+ var Oe = {
+ name: 'applyStyles',
+ enabled: !0,
+ phase: 'write',
+ fn: function (e) {
+ var t = e.state;
+ Object.keys(t.elements).forEach(function (e) {
+ var n = t.styles[e] || {},
+ i = t.attributes[e] || {},
+ o = t.elements[e];
+ Te(o) &&
+ Ee(o) &&
+ (Object.assign(o.style, n),
+ Object.keys(i).forEach(function (e) {
+ var t = i[e];
+ !1 === t
+ ? o.removeAttribute(e)
+ : o.setAttribute(e, !0 === t ? '' : t);
+ }));
+ });
+ },
+ effect: function (e) {
+ var t = e.state,
+ n = {
+ popper: {
+ position: t.options.strategy,
+ left: '0',
+ top: '0',
+ margin: '0'
+ },
+ arrow: { position: 'absolute' },
+ reference: {}
+ };
+ return (
+ Object.assign(t.elements.popper.style, n.popper),
+ (t.styles = n),
+ t.elements.arrow && Object.assign(t.elements.arrow.style, n.arrow),
+ function () {
+ Object.keys(t.elements).forEach(function (e) {
+ var i = t.elements[e],
+ o = t.attributes[e] || {},
+ r = Object.keys(
+ t.styles.hasOwnProperty(e) ? t.styles[e] : n[e]
+ ).reduce(function (e, t) {
+ return (e[t] = ''), e;
+ }, {});
+ Te(i) &&
+ Ee(i) &&
+ (Object.assign(i.style, r),
+ Object.keys(o).forEach(function (e) {
+ i.removeAttribute(e);
+ }));
+ });
+ }
+ );
+ },
+ requires: ['computeStyles']
+ };
+ function Le(e) {
+ return e.split('-')[0];
+ }
+ var Se = Math.max,
+ Ne = Math.min,
+ ke = Math.round;
+ function De() {
+ var e = navigator.userAgentData;
+ return null != e && e.brands && Array.isArray(e.brands)
+ ? e.brands
+ .map(function (e) {
+ return e.brand + '/' + e.version;
+ })
+ .join(' ')
+ : navigator.userAgent;
+ }
+ function je() {
+ return !/^((?!chrome|android).)*safari/i.test(De());
+ }
+ function Be(e, t, n) {
+ void 0 === t && (t = !1), void 0 === n && (n = !1);
+ var i = e.getBoundingClientRect(),
+ o = 1,
+ r = 1;
+ t &&
+ Te(e) &&
+ ((o = (e.offsetWidth > 0 && ke(i.width) / e.offsetWidth) || 1),
+ (r = (e.offsetHeight > 0 && ke(i.height) / e.offsetHeight) || 1));
+ var s = (xe(e) ? Ae(e) : window).visualViewport,
+ a = !je() && n,
+ l = (i.left + (a && s ? s.offsetLeft : 0)) / o,
+ c = (i.top + (a && s ? s.offsetTop : 0)) / r,
+ u = i.width / o,
+ d = i.height / r;
+ return {
+ width: u,
+ height: d,
+ top: c,
+ right: l + u,
+ bottom: c + d,
+ left: l,
+ x: l,
+ y: c
+ };
+ }
+ function Pe(e) {
+ var t = Be(e),
+ n = e.offsetWidth,
+ i = e.offsetHeight;
+ return (
+ Math.abs(t.width - n) <= 1 && (n = t.width),
+ Math.abs(t.height - i) <= 1 && (i = t.height),
+ { x: e.offsetLeft, y: e.offsetTop, width: n, height: i }
+ );
+ }
+ function Me(e, t) {
+ var n = t.getRootNode && t.getRootNode();
+ if (e.contains(t)) return !0;
+ if (n && Ce(n)) {
+ var i = t;
+ do {
+ if (i && e.isSameNode(i)) return !0;
+ i = i.parentNode || i.host;
+ } while (i);
+ }
+ return !1;
+ }
+ function Ie(e) {
+ return Ae(e).getComputedStyle(e);
+ }
+ function He(e) {
+ return ['table', 'td', 'th'].indexOf(Ee(e)) >= 0;
+ }
+ function Fe(e) {
+ return ((xe(e) ? e.ownerDocument : e.document) || window.document)
+ .documentElement;
+ }
+ function qe(e) {
+ return 'html' === Ee(e)
+ ? e
+ : e.assignedSlot || e.parentNode || (Ce(e) ? e.host : null) || Fe(e);
+ }
+ function $e(e) {
+ return Te(e) && 'fixed' !== Ie(e).position ? e.offsetParent : null;
+ }
+ function ze(e) {
+ for (var t = Ae(e), n = $e(e); n && He(n) && 'static' === Ie(n).position; )
+ n = $e(n);
+ return n &&
+ ('html' === Ee(n) || ('body' === Ee(n) && 'static' === Ie(n).position))
+ ? t
+ : n ||
+ (function (e) {
+ var t = /firefox/i.test(De());
+ if (/Trident/i.test(De()) && Te(e) && 'fixed' === Ie(e).position)
+ return null;
+ var n = qe(e);
+ for (
+ Ce(n) && (n = n.host);
+ Te(n) && ['html', 'body'].indexOf(Ee(n)) < 0;
+
+ ) {
+ var i = Ie(n);
+ if (
+ 'none' !== i.transform ||
+ 'none' !== i.perspective ||
+ 'paint' === i.contain ||
+ -1 !== ['transform', 'perspective'].indexOf(i.willChange) ||
+ (t && 'filter' === i.willChange) ||
+ (t && i.filter && 'none' !== i.filter)
+ )
+ return n;
+ n = n.parentNode;
+ }
+ return null;
+ })(e) ||
+ t;
+ }
+ function Re(e) {
+ return ['top', 'bottom'].indexOf(e) >= 0 ? 'x' : 'y';
+ }
+ function We(e, t, n) {
+ return Se(e, Ne(t, n));
+ }
+ function Ve(e) {
+ return Object.assign({}, { top: 0, right: 0, bottom: 0, left: 0 }, e);
+ }
+ function Ue(e, t) {
+ return t.reduce(function (t, n) {
+ return (t[n] = e), t;
+ }, {});
+ }
+ var Ye = {
+ name: 'arrow',
+ enabled: !0,
+ phase: 'main',
+ fn: function (e) {
+ var t,
+ n = e.state,
+ i = e.name,
+ o = e.options,
+ r = n.elements.arrow,
+ s = n.modifiersData.popperOffsets,
+ a = Le(n.placement),
+ l = Re(a),
+ c = [te, ee].indexOf(a) >= 0 ? 'height' : 'width';
+ if (r && s) {
+ var u = (function (e, t) {
+ return Ve(
+ 'number' !=
+ typeof (e =
+ 'function' == typeof e
+ ? e(Object.assign({}, t.rects, { placement: t.placement }))
+ : e)
+ ? e
+ : Ue(e, ie)
+ );
+ })(o.padding, n),
+ d = Pe(r),
+ f = 'y' === l ? J : te,
+ p = 'y' === l ? Z : ee,
+ h =
+ n.rects.reference[c] +
+ n.rects.reference[l] -
+ s[l] -
+ n.rects.popper[c],
+ m = s[l] - n.rects.reference[l],
+ g = ze(r),
+ b = g ? ('y' === l ? g.clientHeight || 0 : g.clientWidth || 0) : 0,
+ v = h / 2 - m / 2,
+ y = u[f],
+ _ = b - d[c] - u[p],
+ w = b / 2 - d[c] / 2 + v,
+ E = We(y, w, _),
+ A = l;
+ n.modifiersData[i] = (((t = {})[A] = E), (t.centerOffset = E - w), t);
+ }
+ },
+ effect: function (e) {
+ var t = e.state,
+ n = e.options.element,
+ i = void 0 === n ? '[data-popper-arrow]' : n;
+ null != i &&
+ ('string' != typeof i || (i = t.elements.popper.querySelector(i))) &&
+ Me(t.elements.popper, i) &&
+ (t.elements.arrow = i);
+ },
+ requires: ['popperOffsets'],
+ requiresIfExists: ['preventOverflow']
+ };
+ function Ke(e) {
+ return e.split('-')[1];
+ }
+ var Qe = { top: 'auto', right: 'auto', bottom: 'auto', left: 'auto' };
+ function Xe(e) {
+ var t,
+ n = e.popper,
+ i = e.popperRect,
+ o = e.placement,
+ r = e.variation,
+ s = e.offsets,
+ a = e.position,
+ l = e.gpuAcceleration,
+ c = e.adaptive,
+ u = e.roundOffsets,
+ d = e.isFixed,
+ f = s.x,
+ p = void 0 === f ? 0 : f,
+ h = s.y,
+ m = void 0 === h ? 0 : h,
+ g = 'function' == typeof u ? u({ x: p, y: m }) : { x: p, y: m };
+ (p = g.x), (m = g.y);
+ var b = s.hasOwnProperty('x'),
+ v = s.hasOwnProperty('y'),
+ y = te,
+ _ = J,
+ w = window;
+ if (c) {
+ var E = ze(n),
+ A = 'clientHeight',
+ x = 'clientWidth';
+ if (
+ (E === Ae(n) &&
+ 'static' !== Ie((E = Fe(n))).position &&
+ 'absolute' === a &&
+ ((A = 'scrollHeight'), (x = 'scrollWidth')),
+ o === J || ((o === te || o === ee) && r === re))
+ )
+ (_ = Z),
+ (m -=
+ (d && E === w && w.visualViewport
+ ? w.visualViewport.height
+ : E[A]) - i.height),
+ (m *= l ? 1 : -1);
+ if (o === te || ((o === J || o === Z) && r === re))
+ (y = ee),
+ (p -=
+ (d && E === w && w.visualViewport ? w.visualViewport.width : E[x]) -
+ i.width),
+ (p *= l ? 1 : -1);
+ }
+ var T,
+ C = Object.assign({ position: a }, c && Qe),
+ O =
+ !0 === u
+ ? (function (e, t) {
+ var n = e.x,
+ i = e.y,
+ o = t.devicePixelRatio || 1;
+ return { x: ke(n * o) / o || 0, y: ke(i * o) / o || 0 };
+ })({ x: p, y: m }, Ae(n))
+ : { x: p, y: m };
+ return (
+ (p = O.x),
+ (m = O.y),
+ l
+ ? Object.assign(
+ {},
+ C,
+ (((T = {})[_] = v ? '0' : ''),
+ (T[y] = b ? '0' : ''),
+ (T.transform =
+ (w.devicePixelRatio || 1) <= 1
+ ? 'translate(' + p + 'px, ' + m + 'px)'
+ : 'translate3d(' + p + 'px, ' + m + 'px, 0)'),
+ T)
+ )
+ : Object.assign(
+ {},
+ C,
+ (((t = {})[_] = v ? m + 'px' : ''),
+ (t[y] = b ? p + 'px' : ''),
+ (t.transform = ''),
+ t)
+ )
+ );
+ }
+ var Ge = {
+ name: 'computeStyles',
+ enabled: !0,
+ phase: 'beforeWrite',
+ fn: function (e) {
+ var t = e.state,
+ n = e.options,
+ i = n.gpuAcceleration,
+ o = void 0 === i || i,
+ r = n.adaptive,
+ s = void 0 === r || r,
+ a = n.roundOffsets,
+ l = void 0 === a || a,
+ c = {
+ placement: Le(t.placement),
+ variation: Ke(t.placement),
+ popper: t.elements.popper,
+ popperRect: t.rects.popper,
+ gpuAcceleration: o,
+ isFixed: 'fixed' === t.options.strategy
+ };
+ null != t.modifiersData.popperOffsets &&
+ (t.styles.popper = Object.assign(
+ {},
+ t.styles.popper,
+ Xe(
+ Object.assign({}, c, {
+ offsets: t.modifiersData.popperOffsets,
+ position: t.options.strategy,
+ adaptive: s,
+ roundOffsets: l
+ })
+ )
+ )),
+ null != t.modifiersData.arrow &&
+ (t.styles.arrow = Object.assign(
+ {},
+ t.styles.arrow,
+ Xe(
+ Object.assign({}, c, {
+ offsets: t.modifiersData.arrow,
+ position: 'absolute',
+ adaptive: !1,
+ roundOffsets: l
+ })
+ )
+ )),
+ (t.attributes.popper = Object.assign({}, t.attributes.popper, {
+ 'data-popper-placement': t.placement
+ }));
+ },
+ data: {}
+ },
+ Je = { passive: !0 };
+ var Ze = {
+ name: 'eventListeners',
+ enabled: !0,
+ phase: 'write',
+ fn: function () {},
+ effect: function (e) {
+ var t = e.state,
+ n = e.instance,
+ i = e.options,
+ o = i.scroll,
+ r = void 0 === o || o,
+ s = i.resize,
+ a = void 0 === s || s,
+ l = Ae(t.elements.popper),
+ c = [].concat(t.scrollParents.reference, t.scrollParents.popper);
+ return (
+ r &&
+ c.forEach(function (e) {
+ e.addEventListener('scroll', n.update, Je);
+ }),
+ a && l.addEventListener('resize', n.update, Je),
+ function () {
+ r &&
+ c.forEach(function (e) {
+ e.removeEventListener('scroll', n.update, Je);
+ }),
+ a && l.removeEventListener('resize', n.update, Je);
+ }
+ );
+ },
+ data: {}
+ },
+ et = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };
+ function tt(e) {
+ return e.replace(/left|right|bottom|top/g, function (e) {
+ return et[e];
+ });
+ }
+ var nt = { start: 'end', end: 'start' };
+ function it(e) {
+ return e.replace(/start|end/g, function (e) {
+ return nt[e];
+ });
+ }
+ function ot(e) {
+ var t = Ae(e);
+ return { scrollLeft: t.pageXOffset, scrollTop: t.pageYOffset };
+ }
+ function rt(e) {
+ return Be(Fe(e)).left + ot(e).scrollLeft;
+ }
+ function st(e) {
+ var t = Ie(e),
+ n = t.overflow,
+ i = t.overflowX,
+ o = t.overflowY;
+ return /auto|scroll|overlay|hidden/.test(n + o + i);
+ }
+ function at(e) {
+ return ['html', 'body', '#document'].indexOf(Ee(e)) >= 0
+ ? e.ownerDocument.body
+ : Te(e) && st(e)
+ ? e
+ : at(qe(e));
+ }
+ function lt(e, t) {
+ var n;
+ void 0 === t && (t = []);
+ var i = at(e),
+ o = i === (null == (n = e.ownerDocument) ? void 0 : n.body),
+ r = Ae(i),
+ s = o ? [r].concat(r.visualViewport || [], st(i) ? i : []) : i,
+ a = t.concat(s);
+ return o ? a : a.concat(lt(qe(s)));
+ }
+ function ct(e) {
+ return Object.assign({}, e, {
+ left: e.x,
+ top: e.y,
+ right: e.x + e.width,
+ bottom: e.y + e.height
+ });
+ }
+ function ut(e, t, n) {
+ return t === ae
+ ? ct(
+ (function (e, t) {
+ var n = Ae(e),
+ i = Fe(e),
+ o = n.visualViewport,
+ r = i.clientWidth,
+ s = i.clientHeight,
+ a = 0,
+ l = 0;
+ if (o) {
+ (r = o.width), (s = o.height);
+ var c = je();
+ (c || (!c && 'fixed' === t)) &&
+ ((a = o.offsetLeft), (l = o.offsetTop));
+ }
+ return { width: r, height: s, x: a + rt(e), y: l };
+ })(e, n)
+ )
+ : xe(t)
+ ? (function (e, t) {
+ var n = Be(e, !1, 'fixed' === t);
+ return (
+ (n.top = n.top + e.clientTop),
+ (n.left = n.left + e.clientLeft),
+ (n.bottom = n.top + e.clientHeight),
+ (n.right = n.left + e.clientWidth),
+ (n.width = e.clientWidth),
+ (n.height = e.clientHeight),
+ (n.x = n.left),
+ (n.y = n.top),
+ n
+ );
+ })(t, n)
+ : ct(
+ (function (e) {
+ var t,
+ n = Fe(e),
+ i = ot(e),
+ o = null == (t = e.ownerDocument) ? void 0 : t.body,
+ r = Se(
+ n.scrollWidth,
+ n.clientWidth,
+ o ? o.scrollWidth : 0,
+ o ? o.clientWidth : 0
+ ),
+ s = Se(
+ n.scrollHeight,
+ n.clientHeight,
+ o ? o.scrollHeight : 0,
+ o ? o.clientHeight : 0
+ ),
+ a = -i.scrollLeft + rt(e),
+ l = -i.scrollTop;
+ return (
+ 'rtl' === Ie(o || n).direction &&
+ (a += Se(n.clientWidth, o ? o.clientWidth : 0) - r),
+ { width: r, height: s, x: a, y: l }
+ );
+ })(Fe(e))
+ );
+ }
+ function dt(e, t, n, i) {
+ var o =
+ 'clippingParents' === t
+ ? (function (e) {
+ var t = lt(qe(e)),
+ n =
+ ['absolute', 'fixed'].indexOf(Ie(e).position) >= 0 && Te(e)
+ ? ze(e)
+ : e;
+ return xe(n)
+ ? t.filter(function (e) {
+ return xe(e) && Me(e, n) && 'body' !== Ee(e);
+ })
+ : [];
+ })(e)
+ : [].concat(t),
+ r = [].concat(o, [n]),
+ s = r[0],
+ a = r.reduce(function (t, n) {
+ var o = ut(e, n, i);
+ return (
+ (t.top = Se(o.top, t.top)),
+ (t.right = Ne(o.right, t.right)),
+ (t.bottom = Ne(o.bottom, t.bottom)),
+ (t.left = Se(o.left, t.left)),
+ t
+ );
+ }, ut(e, s, i));
+ return (
+ (a.width = a.right - a.left),
+ (a.height = a.bottom - a.top),
+ (a.x = a.left),
+ (a.y = a.top),
+ a
+ );
+ }
+ function ft(e) {
+ var t,
+ n = e.reference,
+ i = e.element,
+ o = e.placement,
+ r = o ? Le(o) : null,
+ s = o ? Ke(o) : null,
+ a = n.x + n.width / 2 - i.width / 2,
+ l = n.y + n.height / 2 - i.height / 2;
+ switch (r) {
+ case J:
+ t = { x: a, y: n.y - i.height };
+ break;
+ case Z:
+ t = { x: a, y: n.y + n.height };
+ break;
+ case ee:
+ t = { x: n.x + n.width, y: l };
+ break;
+ case te:
+ t = { x: n.x - i.width, y: l };
+ break;
+ default:
+ t = { x: n.x, y: n.y };
+ }
+ var c = r ? Re(r) : null;
+ if (null != c) {
+ var u = 'y' === c ? 'height' : 'width';
+ switch (s) {
+ case oe:
+ t[c] = t[c] - (n[u] / 2 - i[u] / 2);
+ break;
+ case re:
+ t[c] = t[c] + (n[u] / 2 - i[u] / 2);
+ }
+ }
+ return t;
+ }
+ function pt(e, t) {
+ void 0 === t && (t = {});
+ var n = t,
+ i = n.placement,
+ o = void 0 === i ? e.placement : i,
+ r = n.strategy,
+ s = void 0 === r ? e.strategy : r,
+ a = n.boundary,
+ l = void 0 === a ? se : a,
+ c = n.rootBoundary,
+ u = void 0 === c ? ae : c,
+ d = n.elementContext,
+ f = void 0 === d ? le : d,
+ p = n.altBoundary,
+ h = void 0 !== p && p,
+ m = n.padding,
+ g = void 0 === m ? 0 : m,
+ b = Ve('number' != typeof g ? g : Ue(g, ie)),
+ v = f === le ? ce : le,
+ y = e.rects.popper,
+ _ = e.elements[h ? v : f],
+ w = dt(xe(_) ? _ : _.contextElement || Fe(e.elements.popper), l, u, s),
+ E = Be(e.elements.reference),
+ A = ft({ reference: E, element: y, placement: o }),
+ x = ct(Object.assign({}, y, A)),
+ T = f === le ? x : E,
+ C = {
+ top: w.top - T.top + b.top,
+ bottom: T.bottom - w.bottom + b.bottom,
+ left: w.left - T.left + b.left,
+ right: T.right - w.right + b.right
+ },
+ O = e.modifiersData.offset;
+ if (f === le && O) {
+ var L = O[o];
+ Object.keys(C).forEach(function (e) {
+ var t = [ee, Z].indexOf(e) >= 0 ? 1 : -1,
+ n = [J, Z].indexOf(e) >= 0 ? 'y' : 'x';
+ C[e] += L[n] * t;
+ });
+ }
+ return C;
+ }
+ function ht(e, t) {
+ void 0 === t && (t = {});
+ var n = t,
+ i = n.placement,
+ o = n.boundary,
+ r = n.rootBoundary,
+ s = n.padding,
+ a = n.flipVariations,
+ l = n.allowedAutoPlacements,
+ c = void 0 === l ? de : l,
+ u = Ke(i),
+ d = u
+ ? a
+ ? ue
+ : ue.filter(function (e) {
+ return Ke(e) === u;
+ })
+ : ie,
+ f = d.filter(function (e) {
+ return c.indexOf(e) >= 0;
+ });
+ 0 === f.length && (f = d);
+ var p = f.reduce(function (t, n) {
+ return (
+ (t[n] = pt(e, {
+ placement: n,
+ boundary: o,
+ rootBoundary: r,
+ padding: s
+ })[Le(n)]),
+ t
+ );
+ }, {});
+ return Object.keys(p).sort(function (e, t) {
+ return p[e] - p[t];
+ });
+ }
+ var mt = {
+ name: 'flip',
+ enabled: !0,
+ phase: 'main',
+ fn: function (e) {
+ var t = e.state,
+ n = e.options,
+ i = e.name;
+ if (!t.modifiersData[i]._skip) {
+ for (
+ var o = n.mainAxis,
+ r = void 0 === o || o,
+ s = n.altAxis,
+ a = void 0 === s || s,
+ l = n.fallbackPlacements,
+ c = n.padding,
+ u = n.boundary,
+ d = n.rootBoundary,
+ f = n.altBoundary,
+ p = n.flipVariations,
+ h = void 0 === p || p,
+ m = n.allowedAutoPlacements,
+ g = t.options.placement,
+ b = Le(g),
+ v =
+ l ||
+ (b === g || !h
+ ? [tt(g)]
+ : (function (e) {
+ if (Le(e) === ne) return [];
+ var t = tt(e);
+ return [it(e), t, it(t)];
+ })(g)),
+ y = [g].concat(v).reduce(function (e, n) {
+ return e.concat(
+ Le(n) === ne
+ ? ht(t, {
+ placement: n,
+ boundary: u,
+ rootBoundary: d,
+ padding: c,
+ flipVariations: h,
+ allowedAutoPlacements: m
+ })
+ : n
+ );
+ }, []),
+ _ = t.rects.reference,
+ w = t.rects.popper,
+ E = new Map(),
+ A = !0,
+ x = y[0],
+ T = 0;
+ T < y.length;
+ T++
+ ) {
+ var C = y[T],
+ O = Le(C),
+ L = Ke(C) === oe,
+ S = [J, Z].indexOf(O) >= 0,
+ N = S ? 'width' : 'height',
+ k = pt(t, {
+ placement: C,
+ boundary: u,
+ rootBoundary: d,
+ altBoundary: f,
+ padding: c
+ }),
+ D = S ? (L ? ee : te) : L ? Z : J;
+ _[N] > w[N] && (D = tt(D));
+ var j = tt(D),
+ B = [];
+ if (
+ (r && B.push(k[O] <= 0),
+ a && B.push(k[D] <= 0, k[j] <= 0),
+ B.every(function (e) {
+ return e;
+ }))
+ ) {
+ (x = C), (A = !1);
+ break;
+ }
+ E.set(C, B);
+ }
+ if (A)
+ for (
+ var P = function (e) {
+ var t = y.find(function (t) {
+ var n = E.get(t);
+ if (n)
+ return n.slice(0, e).every(function (e) {
+ return e;
+ });
+ });
+ if (t) return (x = t), 'break';
+ },
+ M = h ? 3 : 1;
+ M > 0;
+ M--
+ ) {
+ if ('break' === P(M)) break;
+ }
+ t.placement !== x &&
+ ((t.modifiersData[i]._skip = !0), (t.placement = x), (t.reset = !0));
+ }
+ },
+ requiresIfExists: ['offset'],
+ data: { _skip: !1 }
+ };
+ function gt(e, t, n) {
+ return (
+ void 0 === n && (n = { x: 0, y: 0 }),
+ {
+ top: e.top - t.height - n.y,
+ right: e.right - t.width + n.x,
+ bottom: e.bottom - t.height + n.y,
+ left: e.left - t.width - n.x
+ }
+ );
+ }
+ function bt(e) {
+ return [J, ee, Z, te].some(function (t) {
+ return e[t] >= 0;
+ });
+ }
+ var vt = {
+ name: 'hide',
+ enabled: !0,
+ phase: 'main',
+ requiresIfExists: ['preventOverflow'],
+ fn: function (e) {
+ var t = e.state,
+ n = e.name,
+ i = t.rects.reference,
+ o = t.rects.popper,
+ r = t.modifiersData.preventOverflow,
+ s = pt(t, { elementContext: 'reference' }),
+ a = pt(t, { altBoundary: !0 }),
+ l = gt(s, i),
+ c = gt(a, o, r),
+ u = bt(l),
+ d = bt(c);
+ (t.modifiersData[n] = {
+ referenceClippingOffsets: l,
+ popperEscapeOffsets: c,
+ isReferenceHidden: u,
+ hasPopperEscaped: d
+ }),
+ (t.attributes.popper = Object.assign({}, t.attributes.popper, {
+ 'data-popper-reference-hidden': u,
+ 'data-popper-escaped': d
+ }));
+ }
+ };
+ var yt = {
+ name: 'offset',
+ enabled: !0,
+ phase: 'main',
+ requires: ['popperOffsets'],
+ fn: function (e) {
+ var t = e.state,
+ n = e.options,
+ i = e.name,
+ o = n.offset,
+ r = void 0 === o ? [0, 0] : o,
+ s = de.reduce(function (e, n) {
+ return (
+ (e[n] = (function (e, t, n) {
+ var i = Le(e),
+ o = [te, J].indexOf(i) >= 0 ? -1 : 1,
+ r =
+ 'function' == typeof n
+ ? n(Object.assign({}, t, { placement: e }))
+ : n,
+ s = r[0],
+ a = r[1];
+ return (
+ (s = s || 0),
+ (a = (a || 0) * o),
+ [te, ee].indexOf(i) >= 0 ? { x: a, y: s } : { x: s, y: a }
+ );
+ })(n, t.rects, r)),
+ e
+ );
+ }, {}),
+ a = s[t.placement],
+ l = a.x,
+ c = a.y;
+ null != t.modifiersData.popperOffsets &&
+ ((t.modifiersData.popperOffsets.x += l),
+ (t.modifiersData.popperOffsets.y += c)),
+ (t.modifiersData[i] = s);
+ }
+ };
+ var _t = {
+ name: 'popperOffsets',
+ enabled: !0,
+ phase: 'read',
+ fn: function (e) {
+ var t = e.state,
+ n = e.name;
+ t.modifiersData[n] = ft({
+ reference: t.rects.reference,
+ element: t.rects.popper,
+ placement: t.placement
+ });
+ },
+ data: {}
+ };
+ var wt = {
+ name: 'preventOverflow',
+ enabled: !0,
+ phase: 'main',
+ fn: function (e) {
+ var t = e.state,
+ n = e.options,
+ i = e.name,
+ o = n.mainAxis,
+ r = void 0 === o || o,
+ s = n.altAxis,
+ a = void 0 !== s && s,
+ l = n.boundary,
+ c = n.rootBoundary,
+ u = n.altBoundary,
+ d = n.padding,
+ f = n.tether,
+ p = void 0 === f || f,
+ h = n.tetherOffset,
+ m = void 0 === h ? 0 : h,
+ g = pt(t, { boundary: l, rootBoundary: c, padding: d, altBoundary: u }),
+ b = Le(t.placement),
+ v = Ke(t.placement),
+ y = !v,
+ _ = Re(b),
+ w = 'x' === _ ? 'y' : 'x',
+ E = t.modifiersData.popperOffsets,
+ A = t.rects.reference,
+ x = t.rects.popper,
+ T =
+ 'function' == typeof m
+ ? m(Object.assign({}, t.rects, { placement: t.placement }))
+ : m,
+ C =
+ 'number' == typeof T
+ ? { mainAxis: T, altAxis: T }
+ : Object.assign({ mainAxis: 0, altAxis: 0 }, T),
+ O = t.modifiersData.offset ? t.modifiersData.offset[t.placement] : null,
+ L = { x: 0, y: 0 };
+ if (E) {
+ if (r) {
+ var S,
+ N = 'y' === _ ? J : te,
+ k = 'y' === _ ? Z : ee,
+ D = 'y' === _ ? 'height' : 'width',
+ j = E[_],
+ B = j + g[N],
+ P = j - g[k],
+ M = p ? -x[D] / 2 : 0,
+ I = v === oe ? A[D] : x[D],
+ H = v === oe ? -x[D] : -A[D],
+ F = t.elements.arrow,
+ q = p && F ? Pe(F) : { width: 0, height: 0 },
+ $ = t.modifiersData['arrow#persistent']
+ ? t.modifiersData['arrow#persistent'].padding
+ : { top: 0, right: 0, bottom: 0, left: 0 },
+ z = $[N],
+ R = $[k],
+ W = We(0, A[D], q[D]),
+ V = y ? A[D] / 2 - M - W - z - C.mainAxis : I - W - z - C.mainAxis,
+ U = y ? -A[D] / 2 + M + W + R + C.mainAxis : H + W + R + C.mainAxis,
+ Y = t.elements.arrow && ze(t.elements.arrow),
+ K = Y ? ('y' === _ ? Y.clientTop || 0 : Y.clientLeft || 0) : 0,
+ Q = null != (S = null == O ? void 0 : O[_]) ? S : 0,
+ X = j + U - Q,
+ G = We(p ? Ne(B, j + V - Q - K) : B, j, p ? Se(P, X) : P);
+ (E[_] = G), (L[_] = G - j);
+ }
+ if (a) {
+ var ne,
+ ie = 'x' === _ ? J : te,
+ re = 'x' === _ ? Z : ee,
+ se = E[w],
+ ae = 'y' === w ? 'height' : 'width',
+ le = se + g[ie],
+ ce = se - g[re],
+ ue = -1 !== [J, te].indexOf(b),
+ de = null != (ne = null == O ? void 0 : O[w]) ? ne : 0,
+ fe = ue ? le : se - A[ae] - x[ae] - de + C.altAxis,
+ pe = ue ? se + A[ae] + x[ae] - de - C.altAxis : ce,
+ he =
+ p && ue
+ ? (function (e, t, n) {
+ var i = We(e, t, n);
+ return i > n ? n : i;
+ })(fe, se, pe)
+ : We(p ? fe : le, se, p ? pe : ce);
+ (E[w] = he), (L[w] = he - se);
+ }
+ t.modifiersData[i] = L;
+ }
+ },
+ requiresIfExists: ['offset']
+ };
+ function Et(e, t, n) {
+ void 0 === n && (n = !1);
+ var i,
+ o,
+ r = Te(t),
+ s =
+ Te(t) &&
+ (function (e) {
+ var t = e.getBoundingClientRect(),
+ n = ke(t.width) / e.offsetWidth || 1,
+ i = ke(t.height) / e.offsetHeight || 1;
+ return 1 !== n || 1 !== i;
+ })(t),
+ a = Fe(t),
+ l = Be(e, s, n),
+ c = { scrollLeft: 0, scrollTop: 0 },
+ u = { x: 0, y: 0 };
+ return (
+ (r || (!r && !n)) &&
+ (('body' !== Ee(t) || st(a)) &&
+ (c =
+ (i = t) !== Ae(i) && Te(i)
+ ? { scrollLeft: (o = i).scrollLeft, scrollTop: o.scrollTop }
+ : ot(i)),
+ Te(t)
+ ? (((u = Be(t, !0)).x += t.clientLeft), (u.y += t.clientTop))
+ : a && (u.x = rt(a))),
+ {
+ x: l.left + c.scrollLeft - u.x,
+ y: l.top + c.scrollTop - u.y,
+ width: l.width,
+ height: l.height
+ }
+ );
+ }
+ function At(e) {
+ var t = new Map(),
+ n = new Set(),
+ i = [];
+ function o(e) {
+ n.add(e.name),
+ []
+ .concat(e.requires || [], e.requiresIfExists || [])
+ .forEach(function (e) {
+ if (!n.has(e)) {
+ var i = t.get(e);
+ i && o(i);
+ }
+ }),
+ i.push(e);
+ }
+ return (
+ e.forEach(function (e) {
+ t.set(e.name, e);
+ }),
+ e.forEach(function (e) {
+ n.has(e.name) || o(e);
+ }),
+ i
+ );
+ }
+ var xt = { placement: 'bottom', modifiers: [], strategy: 'absolute' };
+ function Tt() {
+ for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)
+ t[n] = arguments[n];
+ return !t.some(function (e) {
+ return !(e && 'function' == typeof e.getBoundingClientRect);
+ });
+ }
+ function Ct(e) {
+ void 0 === e && (e = {});
+ var t = e,
+ n = t.defaultModifiers,
+ i = void 0 === n ? [] : n,
+ o = t.defaultOptions,
+ r = void 0 === o ? xt : o;
+ return function (e, t, n) {
+ void 0 === n && (n = r);
+ var o,
+ s,
+ a = {
+ placement: 'bottom',
+ orderedModifiers: [],
+ options: Object.assign({}, xt, r),
+ modifiersData: {},
+ elements: { reference: e, popper: t },
+ attributes: {},
+ styles: {}
+ },
+ l = [],
+ c = !1,
+ u = {
+ state: a,
+ setOptions: function (n) {
+ var o = 'function' == typeof n ? n(a.options) : n;
+ d(),
+ (a.options = Object.assign({}, r, a.options, o)),
+ (a.scrollParents = {
+ reference: xe(e)
+ ? lt(e)
+ : e.contextElement
+ ? lt(e.contextElement)
+ : [],
+ popper: lt(t)
+ });
+ var s,
+ c,
+ f = (function (e) {
+ var t = At(e);
+ return we.reduce(function (e, n) {
+ return e.concat(
+ t.filter(function (e) {
+ return e.phase === n;
+ })
+ );
+ }, []);
+ })(
+ ((s = [].concat(i, a.options.modifiers)),
+ (c = s.reduce(function (e, t) {
+ var n = e[t.name];
+ return (
+ (e[t.name] = n
+ ? Object.assign({}, n, t, {
+ options: Object.assign({}, n.options, t.options),
+ data: Object.assign({}, n.data, t.data)
+ })
+ : t),
+ e
+ );
+ }, {})),
+ Object.keys(c).map(function (e) {
+ return c[e];
+ }))
+ );
+ return (
+ (a.orderedModifiers = f.filter(function (e) {
+ return e.enabled;
+ })),
+ a.orderedModifiers.forEach(function (e) {
+ var t = e.name,
+ n = e.options,
+ i = void 0 === n ? {} : n,
+ o = e.effect;
+ if ('function' == typeof o) {
+ var r = o({ state: a, name: t, instance: u, options: i }),
+ s = function () {};
+ l.push(r || s);
+ }
+ }),
+ u.update()
+ );
+ },
+ forceUpdate: function () {
+ if (!c) {
+ var e = a.elements,
+ t = e.reference,
+ n = e.popper;
+ if (Tt(t, n)) {
+ (a.rects = {
+ reference: Et(t, ze(n), 'fixed' === a.options.strategy),
+ popper: Pe(n)
+ }),
+ (a.reset = !1),
+ (a.placement = a.options.placement),
+ a.orderedModifiers.forEach(function (e) {
+ return (a.modifiersData[e.name] = Object.assign(
+ {},
+ e.data
+ ));
+ });
+ for (var i = 0; i < a.orderedModifiers.length; i++)
+ if (!0 !== a.reset) {
+ var o = a.orderedModifiers[i],
+ r = o.fn,
+ s = o.options,
+ l = void 0 === s ? {} : s,
+ d = o.name;
+ 'function' == typeof r &&
+ (a =
+ r({ state: a, options: l, name: d, instance: u }) || a);
+ } else (a.reset = !1), (i = -1);
+ }
+ }
+ },
+ update:
+ ((o = function () {
+ return new Promise(function (e) {
+ u.forceUpdate(), e(a);
+ });
+ }),
+ function () {
+ return (
+ s ||
+ (s = new Promise(function (e) {
+ Promise.resolve().then(function () {
+ (s = void 0), e(o());
+ });
+ })),
+ s
+ );
+ }),
+ destroy: function () {
+ d(), (c = !0);
+ }
+ };
+ if (!Tt(e, t)) return u;
+ function d() {
+ l.forEach(function (e) {
+ return e();
+ }),
+ (l = []);
+ }
+ return (
+ u.setOptions(n).then(function (e) {
+ !c && n.onFirstUpdate && n.onFirstUpdate(e);
+ }),
+ u
+ );
+ };
+ }
+ var Ot = Ct(),
+ Lt = Ct({ defaultModifiers: [Ze, _t, Ge, Oe] }),
+ St = Ct({ defaultModifiers: [Ze, _t, Ge, Oe, yt, mt, wt, Ye, vt] }),
+ Nt = Object.freeze({
+ __proto__: null,
+ afterMain: be,
+ afterRead: he,
+ afterWrite: _e,
+ applyStyles: Oe,
+ arrow: Ye,
+ auto: ne,
+ basePlacements: ie,
+ beforeMain: me,
+ beforeRead: fe,
+ beforeWrite: ve,
+ bottom: Z,
+ clippingParents: se,
+ computeStyles: Ge,
+ createPopper: St,
+ createPopperBase: Ot,
+ createPopperLite: Lt,
+ detectOverflow: pt,
+ end: re,
+ eventListeners: Ze,
+ flip: mt,
+ hide: vt,
+ left: te,
+ main: ge,
+ modifierPhases: we,
+ offset: yt,
+ placements: de,
+ popper: le,
+ popperGenerator: Ct,
+ popperOffsets: _t,
+ preventOverflow: wt,
+ read: pe,
+ reference: ce,
+ right: ee,
+ start: oe,
+ top: J,
+ variationPlacements: ue,
+ viewport: ae,
+ write: ye
+ });
+ const kt = {
+ '*': ['class', 'dir', 'id', 'lang', 'role', /^aria-[\w-]*$/i],
+ a: ['target', 'href', 'title', 'rel'],
+ area: [],
+ b: [],
+ br: [],
+ col: [],
+ code: [],
+ dd: [],
+ div: [],
+ dl: [],
+ dt: [],
+ em: [],
+ hr: [],
+ h1: [],
+ h2: [],
+ h3: [],
+ h4: [],
+ h5: [],
+ h6: [],
+ i: [],
+ img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],
+ li: [],
+ ol: [],
+ p: [],
+ pre: [],
+ s: [],
+ small: [],
+ span: [],
+ sub: [],
+ sup: [],
+ strong: [],
+ u: [],
+ ul: []
+ },
+ Dt = new Set([
+ 'background',
+ 'cite',
+ 'href',
+ 'itemtype',
+ 'longdesc',
+ 'poster',
+ 'src',
+ 'xlink:href'
+ ]),
+ jt = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,
+ Bt = (e, t) => {
+ const n = e.nodeName.toLowerCase();
+ return t.includes(n)
+ ? !Dt.has(n) || Boolean(jt.test(e.nodeValue))
+ : t.filter((e) => e instanceof RegExp).some((e) => e.test(n));
+ };
+ const Pt = {
+ allowList: kt,
+ content: {},
+ extraClass: '',
+ html: !1,
+ sanitize: !0,
+ sanitizeFn: null,
+ template: ''
+ },
+ Mt = {
+ allowList: 'object',
+ content: 'object',
+ extraClass: '(string|function)',
+ html: 'boolean',
+ sanitize: 'boolean',
+ sanitizeFn: '(null|function)',
+ template: 'string'
+ },
+ It = {
+ entry: '(string|element|function|null)',
+ selector: '(string|element)'
+ };
+ class Ht extends B {
+ constructor(e) {
+ super(), (this._config = this._getConfig(e));
+ }
+ static get Default() {
+ return Pt;
+ }
+ static get DefaultType() {
+ return Mt;
+ }
+ static get NAME() {
+ return 'TemplateFactory';
+ }
+ getContent() {
+ return Object.values(this._config.content)
+ .map((e) => this._resolvePossibleFunction(e))
+ .filter(Boolean);
+ }
+ hasContent() {
+ return this.getContent().length > 0;
+ }
+ changeContent(e) {
+ return (
+ this._checkContent(e),
+ (this._config.content = { ...this._config.content, ...e }),
+ this
+ );
+ }
+ toHtml() {
+ const e = document.createElement('div');
+ e.innerHTML = this._maybeSanitize(this._config.template);
+ for (const [t, n] of Object.entries(this._config.content))
+ this._setContent(e, n, t);
+ const t = e.children[0],
+ n = this._resolvePossibleFunction(this._config.extraClass);
+ return n && t.classList.add(...n.split(' ')), t;
+ }
+ _typeCheckConfig(e) {
+ super._typeCheckConfig(e), this._checkContent(e.content);
+ }
+ _checkContent(e) {
+ for (const [t, n] of Object.entries(e))
+ super._typeCheckConfig({ selector: t, entry: n }, It);
+ }
+ _setContent(e, t, n) {
+ const i = I.findOne(n, e);
+ i &&
+ ((t = this._resolvePossibleFunction(t))
+ ? o(t)
+ ? this._putElementInTemplate(r(t), i)
+ : this._config.html
+ ? (i.innerHTML = this._maybeSanitize(t))
+ : (i.textContent = t)
+ : i.remove());
+ }
+ _maybeSanitize(e) {
+ return this._config.sanitize
+ ? (function (e, t, n) {
+ if (!e.length) return e;
+ if (n && 'function' == typeof n) return n(e);
+ const i = new window.DOMParser().parseFromString(e, 'text/html'),
+ o = [].concat(...i.body.querySelectorAll('*'));
+ for (const e of o) {
+ const n = e.nodeName.toLowerCase();
+ if (!Object.keys(t).includes(n)) {
+ e.remove();
+ continue;
+ }
+ const i = [].concat(...e.attributes),
+ o = [].concat(t['*'] || [], t[n] || []);
+ for (const t of i) Bt(t, o) || e.removeAttribute(t.nodeName);
+ }
+ return i.body.innerHTML;
+ })(e, this._config.allowList, this._config.sanitizeFn)
+ : e;
+ }
+ _resolvePossibleFunction(e) {
+ return f(e, [this]);
+ }
+ _putElementInTemplate(e, t) {
+ if (this._config.html) return (t.innerHTML = ''), void t.append(e);
+ t.textContent = e.textContent;
+ }
+ }
+ const Ft = new Set(['sanitize', 'allowList', 'sanitizeFn']),
+ qt = 'fade',
+ $t = 'show',
+ zt = '.tooltip-inner',
+ Rt = '.modal',
+ Wt = 'hide.bs.modal',
+ Vt = 'hover',
+ Ut = 'focus',
+ Yt = {
+ AUTO: 'auto',
+ TOP: 'top',
+ RIGHT: u() ? 'left' : 'right',
+ BOTTOM: 'bottom',
+ LEFT: u() ? 'right' : 'left'
+ },
+ Kt = {
+ allowList: kt,
+ animation: !0,
+ boundary: 'clippingParents',
+ container: !1,
+ customClass: '',
+ delay: 0,
+ fallbackPlacements: ['top', 'right', 'bottom', 'left'],
+ html: !1,
+ offset: [0, 6],
+ placement: 'top',
+ popperConfig: null,
+ sanitize: !0,
+ sanitizeFn: null,
+ selector: !1,
+ template:
+ '=0,N=S?"width":"height",k=pt(t,{placement:C,boundary:u,rootBoundary:d,altBoundary:f,padding:c}),D=S?L?ee:te:L?Z:J;_[N]>w[N]&&(D=tt(D));var j=tt(D),B=[];if(r&&B.push(k[O]<=0),a&&B.push(k[D]<=0,k[j]<=0),B.every((function(e){return e}))){x=C,A=!1;break}E.set(C,B)}if(A)for(var P=function(e){var t=y.find((function(t){var n=E.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return x=t,"break"},M=h?3:1;M>0;M--){if("break"===P(M))break}t.placement!==x&&(t.modifiersData[i]._skip=!0,t.placement=x,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function gt(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function bt(e){return[J,ee,Z,te].some((function(t){return e[t]>=0}))}var vt={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,i=t.rects.reference,o=t.rects.popper,r=t.modifiersData.preventOverflow,s=pt(t,{elementContext:"reference"}),a=pt(t,{altBoundary:!0}),l=gt(s,i),c=gt(a,o,r),u=bt(l),d=bt(c);t.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:u,hasPopperEscaped:d},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":d})}};var yt={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,i=e.name,o=n.offset,r=void 0===o?[0,0]:o,s=de.reduce((function(e,n){return e[n]=function(e,t,n){var i=Le(e),o=[te,J].indexOf(i)>=0?-1:1,r="function"==typeof n?n(Object.assign({},t,{placement:e})):n,s=r[0],a=r[1];return s=s||0,a=(a||0)*o,[te,ee].indexOf(i)>=0?{x:a,y:s}:{x:s,y:a}}(n,t.rects,r),e}),{}),a=s[t.placement],l=a.x,c=a.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=c),t.modifiersData[i]=s}};var _t={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=ft({reference:t.rects.reference,element:t.rects.popper,placement:t.placement})},data:{}};var wt={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,i=e.name,o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0!==s&&s,l=n.boundary,c=n.rootBoundary,u=n.altBoundary,d=n.padding,f=n.tether,p=void 0===f||f,h=n.tetherOffset,m=void 0===h?0:h,g=pt(t,{boundary:l,rootBoundary:c,padding:d,altBoundary:u}),b=Le(t.placement),v=Ke(t.placement),y=!v,_=Re(b),w="x"===_?"y":"x",E=t.modifiersData.popperOffsets,A=t.rects.reference,x=t.rects.popper,T="function"==typeof m?m(Object.assign({},t.rects,{placement:t.placement})):m,C="number"==typeof T?{mainAxis:T,altAxis:T}:Object.assign({mainAxis:0,altAxis:0},T),O=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,L={x:0,y:0};if(E){if(r){var S,N="y"===_?J:te,k="y"===_?Z:ee,D="y"===_?"height":"width",j=E[_],B=j+g[N],P=j-g[k],M=p?-x[D]/2:0,I=v===oe?A[D]:x[D],F=v===oe?-x[D]:-A[D],H=t.elements.arrow,q=p&&H?Pe(H):{width:0,height:0},$=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},z=$[N],R=$[k],W=We(0,A[D],q[D]),V=y?A[D]/2-M-W-z-C.mainAxis:I-W-z-C.mainAxis,U=y?-A[D]/2+M+W+R+C.mainAxis:F+W+R+C.mainAxis,Y=t.elements.arrow&&ze(t.elements.arrow),K=Y?"y"===_?Y.clientTop||0:Y.clientLeft||0:0,Q=null!=(S=null==O?void 0:O[_])?S:0,X=j+U-Q,G=We(p?Ne(B,j+V-Q-K):B,j,p?Se(P,X):P);E[_]=G,L[_]=G-j}if(a){var ne,ie="x"===_?J:te,re="x"===_?Z:ee,se=E[w],ae="y"===w?"height":"width",le=se+g[ie],ce=se-g[re],ue=-1!==[J,te].indexOf(b),de=null!=(ne=null==O?void 0:O[w])?ne:0,fe=ue?le:se-A[ae]-x[ae]-de+C.altAxis,pe=ue?se+A[ae]+x[ae]-de-C.altAxis:ce,he=p&&ue?function(e,t,n){var i=We(e,t,n);return i>n?n:i}(fe,se,pe):We(p?fe:le,se,p?pe:ce);E[w]=he,L[w]=he-se}t.modifiersData[i]=L}},requiresIfExists:["offset"]};function Et(e,t,n){void 0===n&&(n=!1);var i,o,r=Te(t),s=Te(t)&&function(e){var t=e.getBoundingClientRect(),n=ke(t.width)/e.offsetWidth||1,i=ke(t.height)/e.offsetHeight||1;return 1!==n||1!==i}(t),a=He(t),l=Be(e,s,n),c={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(r||!r&&!n)&&(("body"!==Ee(t)||st(a))&&(c=(i=t)!==Ae(i)&&Te(i)?{scrollLeft:(o=i).scrollLeft,scrollTop:o.scrollTop}:ot(i)),Te(t)?((u=Be(t,!0)).x+=t.clientLeft,u.y+=t.clientTop):a&&(u.x=rt(a))),{x:l.left+c.scrollLeft-u.x,y:l.top+c.scrollTop-u.y,width:l.width,height:l.height}}function At(e){var t=new Map,n=new Set,i=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var i=t.get(e);i&&o(i)}})),i.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),i}var xt={placement:"bottom",modifiers:[],strategy:"absolute"};function Tt(){for(var e=arguments.length,t=new Array(e),n=0;n{const n=e.nodeName.toLowerCase();return t.includes(n)?!Dt.has(n)||Boolean(jt.test(e.nodeValue)):t.filter((e=>e instanceof RegExp)).some((e=>e.test(n)))};const Pt={allowList:kt,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:""},Mt={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},It={entry:"(string|element|function|null)",selector:"(string|element)"};class Ft extends B{constructor(e){super(),this._config=this._getConfig(e)}static get Default(){return Pt}static get DefaultType(){return Mt}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((e=>this._resolvePossibleFunction(e))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(e){return this._checkContent(e),this._config.content={...this._config.content,...e},this}toHtml(){const e=document.createElement("div");e.innerHTML=this._maybeSanitize(this._config.template);for(const[t,n]of Object.entries(this._config.content))this._setContent(e,n,t);const t=e.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&t.classList.add(...n.split(" ")),t}_typeCheckConfig(e){super._typeCheckConfig(e),this._checkContent(e.content)}_checkContent(e){for(const[t,n]of Object.entries(e))super._typeCheckConfig({selector:t,entry:n},It)}_setContent(e,t,n){const i=I.findOne(n,e);i&&((t=this._resolvePossibleFunction(t))?o(t)?this._putElementInTemplate(r(t),i):this._config.html?i.innerHTML=this._maybeSanitize(t):i.textContent=t:i.remove())}_maybeSanitize(e){return this._config.sanitize?function(e,t,n){if(!e.length)return e;if(n&&"function"==typeof n)return n(e);const i=(new window.DOMParser).parseFromString(e,"text/html"),o=[].concat(...i.body.querySelectorAll("*"));for(const e of o){const n=e.nodeName.toLowerCase();if(!Object.keys(t).includes(n)){e.remove();continue}const i=[].concat(...e.attributes),o=[].concat(t["*"]||[],t[n]||[]);for(const t of i)Bt(t,o)||e.removeAttribute(t.nodeName)}return i.body.innerHTML}(e,this._config.allowList,this._config.sanitizeFn):e}_resolvePossibleFunction(e){return f(e,[this])}_putElementInTemplate(e,t){if(this._config.html)return t.innerHTML="",void t.append(e);t.textContent=e.textContent}}const Ht=new Set(["sanitize","allowList","sanitizeFn"]),qt="fade",$t="show",zt=".tooltip-inner",Rt=".modal",Wt="hide.bs.modal",Vt="hover",Ut="focus",Yt={AUTO:"auto",TOP:"top",RIGHT:u()?"left":"right",BOTTOM:"bottom",LEFT:u()?"right":"left"},Kt={allowList:kt,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'t.right||e.clientYt.bottom)&&this.hidePopup()}static initComponents(){this.initBar(),[...xn].forEach((e=>{e.onclick=()=>this.showPopup()})),Tn.onclick=e=>this.clickBackdrop(e),Cn.onclick=()=>this.hidePopup(),Tn.oncancel=e=>{e.preventDefault(),this.hidePopup()}}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}}var Nn={_:!0},kn={_:48};_n(Sn,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:yn(wn=Sn,wn,kn)._});class Dn{static refresh(){tocbot.refresh(this.options)}static init(){document.getElementById("toc-wrapper")&&tocbot.init(this.options)}}_n(Dn,"options",{tocSelector:"#toc",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,headingsOffset:32});const jn=matchMedia("(min-width: 1200px)");function Bn(e){e.matches?(Sn.popupOpened&&Sn.hidePopup(),Dn.refresh()):Sn.refresh()}const Pn="mermaid",Mn=Theme.getThemeMapper("default","dark");function In(e){if(e.source===window&&e.data&&e.data.id===Theme.ID){[...document.getElementsByClassName(Pn)].forEach((e=>{const t=e.previousSibling.children.item(0).innerHTML;e.textContent=t,e.removeAttribute("data-processed")}));const e=Mn[Theme.visualState];mermaid.initialize({theme:e}),mermaid.init(null,`.${Pn}`)}}function Fn(e){const t=e.textContent,n=e.parentElement;n.classList.add("d-none");const i=document.createElement("pre");i.classList.add(Pn);const o=document.createTextNode(t);i.appendChild(o),n.after(i)}const Hn=document.getElementById("mode-toggle");const qn="lock",$n=2e4;function zn(e){e.removeAttribute(qn),e.getElementsByTagName("i")[0].classList.replace("icon-loading1","icon-playfill")}const Rn="lock",Wn=2e4;function Vn(e){e.removeAttribute(Rn),e.getElementsByTagName("i")[0].classList.replace("icon-loading1","icon-playfill")}function Un(){console.logs.push(Array.from(arguments)),console.stdlog.apply(console,arguments)}const Yn="lock",Kn=2e4;function Qn(e){e.removeAttribute(Yn),e.getElementsByTagName("i")[0].classList.replace("icon-loading1","icon-playfill")}const Xn="lock",Gn=2e4;function Jn(e){e.removeAttribute(Xn),e.getElementsByTagName("i")[0].classList.replace("icon-loading1","icon-playfill")}function Zn(e,t,n,i){let o,r=e.getElementsByTagName("pre");if(2==r.length)o=r[1].innerText;else{if(1!=r.length)return void Jn(n);o=r[0].innerText}let s={version:"stable",optimize:"0",code:o,edition:"2021"};-1!==o.indexOf("#![feature")&&(s.version="nightly"),function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:2e4;return Promise.race([fetch(e,t),new Promise(((e,t)=>setTimeout((()=>t(new Error("timeout"))),n)))])}("https://play.rust-lang.org/evaluate.json",{headers:{"Content-Type":"application/json"},method:"POST",mode:"cors",body:JSON.stringify(s)}).then((e=>e.json())).then((e=>{t.innerText=e.result,Jn(n)})).catch((e=>{t.innerText=i+e.message,Jn(n)}))}const ei=document.getElementById("sidebar"),ti=document.getElementById("sidebar-trigger"),ni=document.getElementById("mask");class ii{static toggle(){oi._=yn(ii,this,!yn(ii,this,oi)._),document.body.toggleAttribute("sidebar-display",yn(ii,this,oi)._),ei.classList.toggle("z-2",yn(ii,this,oi)._),ni.classList.toggle("d-none",!yn(ii,this,oi)._)}}var oi={_:!1};const ri=document.getElementById("sidebar-trigger"),si=document.getElementById("search-trigger"),ai=document.getElementById("search-cancel"),li=document.querySelectorAll("#main-wrapper>.container>.row"),ci=document.getElementById("topbar-title"),ui=document.getElementById("search"),di=document.getElementById("search-result-wrapper"),fi=document.getElementById("search-results"),pi=document.getElementById("search-input"),hi=document.getElementById("search-hints"),mi="d-block",gi="d-none",bi="input-focus",vi="d-flex";class yi{static on(){ri.classList.add(gi),ci.classList.add(gi),si.classList.add(gi),ui.classList.add(vi),ai.classList.add(mi)}static off(){ai.classList.remove(mi),ui.classList.remove(vi),ri.classList.remove(gi),ci.classList.remove(gi),si.classList.remove(gi)}}class _i{static on(){this.resultVisible||(di.classList.remove(gi),li.forEach((e=>{e.classList.add(gi)})),this.resultVisible=!0)}static off(){this.resultVisible&&(fi.innerHTML="",hi.classList.contains(gi)&&hi.classList.remove(gi),di.classList.add(gi),li.forEach((e=>{e.classList.remove(gi)})),pi.textContent="",this.resultVisible=!1)}}function wi(){return ai.classList.contains(mi)}_n(_i,"resultVisible",!1),function(){const e=document.querySelectorAll("article img");if(0===e.length)return;e.forEach((e=>{e.addEventListener("load",pn)})),document.querySelectorAll('article img[loading="lazy"]').forEach((e=>{e.complete&&fn.call(e,dn.SHIMMER)}));const t=document.querySelectorAll(`article img[${un}="true"]`);t.length&&t.forEach((e=>{hn.call(e)}))}(),null!==document.querySelector('main>article[data-toc="true"]')&&(jn.matches?Dn.init():Sn.init(),jn.onchange=Bn),function(){if(null===document.querySelector(".popup"))return;const e=!(null===document.querySelector(".popup.light")&&null===document.querySelector(".popup.dark"));Theme.visualState===Theme.DARK&&(bn=gn);let t=GLightbox({selector:`${bn}`});if(e&&Theme.switchable){let e=null;window.addEventListener("message",(n=>{n.source===window&&n.data&&n.data.id===Theme.ID&&function(e,t){bn=bn===mn?gn:mn,null===t&&(t=GLightbox({selector:`${bn}`})),[e,t]=[t,e]}(t,e)}))}}(),ti.onclick=ni.onclick=()=>ii.toggle(),dayjs.locale(vn.locale),dayjs.extend(window.dayjs_plugin_localizedFormat),document.querySelectorAll(`[${vn.attrTimestamp}]`).forEach((e=>{const t=dayjs.unix(vn.getTimestamp(e)),n=t.format(vn.getDateFormat(e));if(e.textContent=n,e.removeAttribute(vn.attrTimestamp),e.removeAttribute(vn.attrDateFormat),e.hasAttribute("data-bs-toggle")&&"tooltip"===e.getAttribute("data-bs-toggle")){const n=t.format("llll");e.setAttribute("data-bs-title",n)}})),ln(),function(){const e=document.getElementById("copy-link");null!==e&&(e.addEventListener("click",(e=>{const t=e.target;rn(t)||navigator.clipboard.writeText(window.location.href).then((()=>{const e=t.getAttribute(nn),n=t.getAttribute(tn);t.setAttribute(nn,n),Xt.getInstance(t).show(),sn(t),setTimeout((()=>{t.setAttribute(nn,e),an(t)}),on)}))})),e.addEventListener("mouseleave",(e=>{Xt.getInstance(e.target).hide()})))}(),si.addEventListener("click",(()=>{yi.on(),_i.on(),pi.focus()})),ai.addEventListener("click",(()=>{yi.off(),_i.off()})),pi.addEventListener("focus",(()=>{ui.classList.add(bi)})),pi.addEventListener("focusout",(()=>{ui.classList.remove(bi)})),pi.addEventListener("input",(()=>{""===pi.value?wi()?hi.classList.remove(gi):_i.off():(_i.on(),wi()&&hi.classList.add(gi))})),function(){if("undefined"==typeof mermaid||"function"!=typeof mermaid.initialize)return;let e={theme:Mn[Theme.visualState]};[...document.getElementsByClassName("language-mermaid")].forEach(Fn),mermaid.initialize(e),Theme.switchable&&window.addEventListener("message",In)}(),Hn&&Hn.addEventListener("click",(()=>{Theme.flip()})),function(){const e=document.getElementById("back-to-top");window.addEventListener("scroll",(()=>{window.scrollY>50?e.classList.add("show"):e.classList.remove("show")})),e.addEventListener("click",(()=>{window.scrollTo({top:0})}))}(),[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map((e=>new Xt(e))),[...document.getElementsByClassName("highlighter-rouge")].forEach((e=>{const t=e.getAttribute("highlight-lines");if(t&&t.length>0){let n=[];(","+t).match(/(?<=\s|,)\d+(-\d+)?/g).forEach((function(e){let t=e.split("-"),i=parseInt(t[0]);if(t.length>1){let e=parseInt(t[1]);if(e>=i)for(let t=i;t<=e;t++)n.push(t)}else 1==t.length&&n.push(i)}));let i=e.getElementsByTagName("pre");!function(e,t){let n=null,i=1;for(let o=e.firstChild;null!=o;o=o.nextSibling){null==n&&(n=o);let r=o.textContent.split(/\n/g);if((r||[]).length>1){let s=r.length-1,a=[];for(let t=0;t{e.onclick=()=>{if(function(e){if(e.hasAttribute(qn)){let t=e.getAttribute(qn);if(Number(t)+5e3>Date.now())return!0}return!1}(e))return;var t;(t=e).setAttribute(qn,Date.now()+$n),t.getElementsByTagName("i")[0].classList.replace("icon-playfill","icon-loading1");let n=function(e){let t=e.parentNode.parentNode.nextElementSibling;if(null==t||"DETAILS"!=t.tagName||"run-output"!=t.className){let n=t;t=document.createElement("details"),t.className="run-output";let i=document.createElement("summary");i.textContent=e.getAttribute("output-title"),t.appendChild(i),null==n?e.parentNode.parentNode.parentNode.appendChild(t):n.parentNode.insertBefore(t,n)}return t.setAttribute("open","open"),t}(e);for(let e of n.getElementsByTagName("p"))n.removeChild(e);let i=document.createElement("p");i.innerText=e.getAttribute("wait-message"),n.appendChild(i),function(e,t,n,i){let o,r=e.getElementsByTagName("pre");if(2==r.length)o=r[1].innerText;else{if(1!=r.length)return void zn(n);o=r[0].innerText}let s={cmd:"g++ -std=c++20 main.cpp && ./a.out",src:o},a=new XMLHttpRequest;a.open("POST","https://coliru.stacked-crooked.com/compile",!0),a.onload=()=>{t.innerText=a.responseText,zn(n)},a.onerror=()=>{t.innerText=i+a.responseText,zn(n)},a.send(JSON.stringify(s))}(e.parentNode.nextElementSibling,i,e,e.getAttribute("error-prompt"))}})),[...document.querySelectorAll(".code-header button.button-run-javascript")].forEach((e=>{e.onclick=()=>{if(function(e){if(e.hasAttribute(Rn)){let t=e.getAttribute(Rn);if(Number(t)+5e3>Date.now())return!0}return!1}(e))return;var t;(t=e).setAttribute(Rn,Date.now()+Wn),t.getElementsByTagName("i")[0].classList.replace("icon-playfill","icon-loading1");let n=function(e){let t=e.parentNode.parentNode.nextElementSibling;if(null==t||"DETAILS"!=t.tagName||"run-output"!=t.className){let n=t;t=document.createElement("details"),t.className="run-output";let i=document.createElement("summary");i.textContent=e.getAttribute("output-title"),t.appendChild(i),null==n?e.parentNode.parentNode.parentNode.appendChild(t):n.parentNode.insertBefore(t,n)}return t.setAttribute("open","open"),t}(e);for(let e of n.getElementsByTagName("p"))n.removeChild(e);let i=document.createElement("p");i.innerText=e.getAttribute("wait-message"),n.appendChild(i);let o,r=e.parentNode.nextElementSibling.getElementsByTagName("pre");if(2==r.length)o=r[1].innerText;else{if(1!=r.length)return void Vn(e);o=r[0].innerText}let s=new Function(o);console.log!=Un&&(console.stdlog=console.log.bind(console),console.log=Un),console.logs=[],s(),i.innerText=console.logs.join("\n"),Vn(e)}})),[...document.querySelectorAll(".code-header button.button-run-python")].forEach((e=>{e.onclick=()=>{if(function(e){if(e.hasAttribute(Yn)){let t=e.getAttribute(Yn);if(Number(t)+5e3>Date.now())return!0}return!1}(e))return;var t;(t=e).setAttribute(Yn,Date.now()+Kn),t.getElementsByTagName("i")[0].classList.replace("icon-playfill","icon-loading1");let n=function(e){let t=e.parentNode.parentNode.nextElementSibling;if(null==t||"DETAILS"!=t.tagName||"run-output"!=t.className){let n=t;t=document.createElement("details"),t.className="run-output";let i=document.createElement("summary");i.textContent=e.getAttribute("output-title"),t.appendChild(i),null==n?e.parentNode.parentNode.parentNode.appendChild(t):n.parentNode.insertBefore(t,n)}return t.setAttribute("open","open"),t}(e);for(let e of n.getElementsByTagName("p"))n.removeChild(e);let i=document.createElement("p");i.innerText=e.getAttribute("wait-message"),n.appendChild(i),function(e,t,n,i){let o,r=e.getElementsByTagName("pre");if(2==r.length)o=r[1].innerText;else{if(1!=r.length)return void Qn(n);o=r[0].innerText}let s=[{code:o,file_name:"main.py"}];socket=io("https://repl.online-cpp.com",{transports:["websocket"],timeout:Kn,"connect timeout":3e3,reconnection:!1,query:{type:"script",lang:"python3"}}),socket.emit("code",s,"","main.py"),socket.on("exit",(function(e,t){Qn(n)})),socket.on("output",(function(e){let n=(new TextDecoder).decode(new Uint8Array(e));t.innerText=n})),socket.on("err",(function(e){let n=(new TextDecoder).decode(new Uint8Array(e));t.innerText=i+"\n"+n})),socket.on("connect_error",(function(e){t.innerText=i+e.message,socket.close(),Qn(n)}))}(e.parentNode.nextElementSibling,i,e,e.getAttribute("error-prompt"))}})),[...document.querySelectorAll(".code-header button.button-run-rust")].forEach((e=>{e.onclick=()=>{if(function(e){if(e.hasAttribute(Xn)){let t=e.getAttribute(Xn);if(Number(t)+5e3>Date.now())return!0}return!1}(e))return;var t;(t=e).setAttribute(Xn,Date.now()+Gn),t.getElementsByTagName("i")[0].classList.replace("icon-playfill","icon-loading1");let n=function(e){let t=e.parentNode.parentNode.nextElementSibling;if(null==t||"DETAILS"!=t.tagName||"run-output"!=t.className){let n=t;t=document.createElement("details"),t.className="run-output";let i=document.createElement("summary");i.textContent=e.getAttribute("output-title"),t.appendChild(i),null==n?e.parentNode.parentNode.parentNode.appendChild(t):n.parentNode.insertBefore(t,n)}return t.setAttribute("open","open"),t}(e);for(let e of n.getElementsByTagName("p"))n.removeChild(e);let i=document.createElement("p");i.innerText=e.getAttribute("wait-message"),n.appendChild(i),Zn(e.parentNode.nextElementSibling,i,e,e.getAttribute("error-prompt"))}}))}();
+!(function () {
+ 'use strict';
+ const e = new Map();
+ var t = {
+ set(t, n, i) {
+ e.has(t) || e.set(t, new Map());
+ const o = e.get(t);
+ o.has(n) || 0 === o.size
+ ? o.set(n, i)
+ : console.error(
+ `Bootstrap doesn't allow more than one instance per element. Bound instance: ${
+ Array.from(o.keys())[0]
+ }.`
+ );
+ },
+ get: (t, n) => (e.has(t) && e.get(t).get(n)) || null,
+ remove(t, n) {
+ if (!e.has(t)) return;
+ const i = e.get(t);
+ i.delete(n), 0 === i.size && e.delete(t);
+ }
+ };
+ const n = 'transitionend',
+ i = (e) => (
+ e &&
+ window.CSS &&
+ window.CSS.escape &&
+ (e = e.replace(/#([^\s"#']+)/g, (e, t) => `#${CSS.escape(t)}`)),
+ e
+ ),
+ o = (e) =>
+ !(!e || 'object' != typeof e) &&
+ (void 0 !== e.jquery && (e = e[0]), void 0 !== e.nodeType),
+ r = (e) =>
+ o(e)
+ ? e.jquery
+ ? e[0]
+ : e
+ : 'string' == typeof e && e.length > 0
+ ? document.querySelector(i(e))
+ : null,
+ s = (e) => {
+ if (!document.documentElement.attachShadow) return null;
+ if ('function' == typeof e.getRootNode) {
+ const t = e.getRootNode();
+ return t instanceof ShadowRoot ? t : null;
+ }
+ return e instanceof ShadowRoot
+ ? e
+ : e.parentNode
+ ? s(e.parentNode)
+ : null;
+ },
+ a = () => {},
+ l = () =>
+ window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')
+ ? window.jQuery
+ : null,
+ c = [],
+ u = () => 'rtl' === document.documentElement.dir,
+ d = (e) => {
+ var t;
+ (t = () => {
+ const t = l();
+ if (t) {
+ const n = e.NAME,
+ i = t.fn[n];
+ (t.fn[n] = e.jQueryInterface),
+ (t.fn[n].Constructor = e),
+ (t.fn[n].noConflict = () => ((t.fn[n] = i), e.jQueryInterface));
+ }
+ }),
+ 'loading' === document.readyState
+ ? (c.length ||
+ document.addEventListener('DOMContentLoaded', () => {
+ for (const e of c) e();
+ }),
+ c.push(t))
+ : t();
+ },
+ f = function (e) {
+ let t =
+ arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : e;
+ return 'function' == typeof e
+ ? e(
+ ...(arguments.length > 1 && void 0 !== arguments[1]
+ ? arguments[1]
+ : [])
+ )
+ : t;
+ },
+ p = function (e, t) {
+ if (!(!(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]))
+ return void f(e);
+ const i =
+ ((e) => {
+ if (!e) return 0;
+ let { transitionDuration: t, transitionDelay: n } =
+ window.getComputedStyle(e);
+ const i = Number.parseFloat(t),
+ o = Number.parseFloat(n);
+ return i || o
+ ? ((t = t.split(',')[0]),
+ (n = n.split(',')[0]),
+ 1e3 * (Number.parseFloat(t) + Number.parseFloat(n)))
+ : 0;
+ })(t) + 5;
+ let o = !1;
+ const r = (i) => {
+ let { target: s } = i;
+ s === t && ((o = !0), t.removeEventListener(n, r), f(e));
+ };
+ t.addEventListener(n, r),
+ setTimeout(() => {
+ o || t.dispatchEvent(new Event(n));
+ }, i);
+ },
+ h = /[^.]*(?=\..*)\.|.*/,
+ m = /\..*/,
+ g = /::\d+$/,
+ b = {};
+ let v = 1;
+ const y = { mouseenter: 'mouseover', mouseleave: 'mouseout' },
+ _ = new Set([
+ 'click',
+ 'dblclick',
+ 'mouseup',
+ 'mousedown',
+ 'contextmenu',
+ 'mousewheel',
+ 'DOMMouseScroll',
+ 'mouseover',
+ 'mouseout',
+ 'mousemove',
+ 'selectstart',
+ 'selectend',
+ 'keydown',
+ 'keypress',
+ 'keyup',
+ 'orientationchange',
+ 'touchstart',
+ 'touchmove',
+ 'touchend',
+ 'touchcancel',
+ 'pointerdown',
+ 'pointermove',
+ 'pointerup',
+ 'pointerleave',
+ 'pointercancel',
+ 'gesturestart',
+ 'gesturechange',
+ 'gestureend',
+ 'focus',
+ 'blur',
+ 'change',
+ 'reset',
+ 'select',
+ 'submit',
+ 'focusin',
+ 'focusout',
+ 'load',
+ 'unload',
+ 'beforeunload',
+ 'resize',
+ 'move',
+ 'DOMContentLoaded',
+ 'readystatechange',
+ 'error',
+ 'abort',
+ 'scroll'
+ ]);
+ function w(e, t) {
+ return (t && `${t}::${v++}`) || e.uidEvent || v++;
+ }
+ function E(e) {
+ const t = w(e);
+ return (e.uidEvent = t), (b[t] = b[t] || {}), b[t];
+ }
+ function A(e, t) {
+ let n =
+ arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null;
+ return Object.values(e).find(
+ (e) => e.callable === t && e.delegationSelector === n
+ );
+ }
+ function x(e, t, n) {
+ const i = 'string' == typeof t,
+ o = i ? n : t || n;
+ let r = L(e);
+ return _.has(r) || (r = e), [i, o, r];
+ }
+ function T(e, t, n, i, o) {
+ if ('string' != typeof t || !e) return;
+ let [r, s, a] = x(t, n, i);
+ if (t in y) {
+ const e = (e) =>
+ function (t) {
+ if (
+ !t.relatedTarget ||
+ (t.relatedTarget !== t.delegateTarget &&
+ !t.delegateTarget.contains(t.relatedTarget))
+ )
+ return e.call(this, t);
+ };
+ s = e(s);
+ }
+ const l = E(e),
+ c = l[a] || (l[a] = {}),
+ u = A(c, s, r ? n : null);
+ if (u) return void (u.oneOff = u.oneOff && o);
+ const d = w(s, t.replace(h, '')),
+ f = r
+ ? (function (e, t, n) {
+ return function i(o) {
+ const r = e.querySelectorAll(t);
+ for (let { target: s } = o; s && s !== this; s = s.parentNode)
+ for (const a of r)
+ if (a === s)
+ return (
+ N(o, { delegateTarget: s }),
+ i.oneOff && S.off(e, o.type, t, n),
+ n.apply(s, [o])
+ );
+ };
+ })(e, n, s)
+ : (function (e, t) {
+ return function n(i) {
+ return (
+ N(i, { delegateTarget: e }),
+ n.oneOff && S.off(e, i.type, t),
+ t.apply(e, [i])
+ );
+ };
+ })(e, s);
+ (f.delegationSelector = r ? n : null),
+ (f.callable = s),
+ (f.oneOff = o),
+ (f.uidEvent = d),
+ (c[d] = f),
+ e.addEventListener(a, f, r);
+ }
+ function C(e, t, n, i, o) {
+ const r = A(t[n], i, o);
+ r && (e.removeEventListener(n, r, Boolean(o)), delete t[n][r.uidEvent]);
+ }
+ function O(e, t, n, i) {
+ const o = t[n] || {};
+ for (const [r, s] of Object.entries(o))
+ r.includes(i) && C(e, t, n, s.callable, s.delegationSelector);
+ }
+ function L(e) {
+ return (e = e.replace(m, '')), y[e] || e;
+ }
+ const S = {
+ on(e, t, n, i) {
+ T(e, t, n, i, !1);
+ },
+ one(e, t, n, i) {
+ T(e, t, n, i, !0);
+ },
+ off(e, t, n, i) {
+ if ('string' != typeof t || !e) return;
+ const [o, r, s] = x(t, n, i),
+ a = s !== t,
+ l = E(e),
+ c = l[s] || {},
+ u = t.startsWith('.');
+ if (void 0 === r) {
+ if (u) for (const n of Object.keys(l)) O(e, l, n, t.slice(1));
+ for (const [n, i] of Object.entries(c)) {
+ const o = n.replace(g, '');
+ (a && !t.includes(o)) || C(e, l, s, i.callable, i.delegationSelector);
+ }
+ } else {
+ if (!Object.keys(c).length) return;
+ C(e, l, s, r, o ? n : null);
+ }
+ },
+ trigger(e, t, n) {
+ if ('string' != typeof t || !e) return null;
+ const i = l();
+ let o = null,
+ r = !0,
+ s = !0,
+ a = !1;
+ t !== L(t) &&
+ i &&
+ ((o = i.Event(t, n)),
+ i(e).trigger(o),
+ (r = !o.isPropagationStopped()),
+ (s = !o.isImmediatePropagationStopped()),
+ (a = o.isDefaultPrevented()));
+ const c = N(new Event(t, { bubbles: r, cancelable: !0 }), n);
+ return (
+ a && c.preventDefault(),
+ s && e.dispatchEvent(c),
+ c.defaultPrevented && o && o.preventDefault(),
+ c
+ );
+ }
+ };
+ function N(e) {
+ let t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
+ for (const [n, i] of Object.entries(t))
+ try {
+ e[n] = i;
+ } catch {
+ Object.defineProperty(e, n, { configurable: !0, get: () => i });
+ }
+ return e;
+ }
+ function k(e) {
+ if ('true' === e) return !0;
+ if ('false' === e) return !1;
+ if (e === Number(e).toString()) return Number(e);
+ if ('' === e || 'null' === e) return null;
+ if ('string' != typeof e) return e;
+ try {
+ return JSON.parse(decodeURIComponent(e));
+ } catch {
+ return e;
+ }
+ }
+ function D(e) {
+ return e.replace(/[A-Z]/g, (e) => `-${e.toLowerCase()}`);
+ }
+ const j = {
+ setDataAttribute(e, t, n) {
+ e.setAttribute(`data-bs-${D(t)}`, n);
+ },
+ removeDataAttribute(e, t) {
+ e.removeAttribute(`data-bs-${D(t)}`);
+ },
+ getDataAttributes(e) {
+ if (!e) return {};
+ const t = {},
+ n = Object.keys(e.dataset).filter(
+ (e) => e.startsWith('bs') && !e.startsWith('bsConfig')
+ );
+ for (const i of n) {
+ let n = i.replace(/^bs/, '');
+ (n = n.charAt(0).toLowerCase() + n.slice(1, n.length)),
+ (t[n] = k(e.dataset[i]));
+ }
+ return t;
+ },
+ getDataAttribute: (e, t) => k(e.getAttribute(`data-bs-${D(t)}`))
+ };
+ class B {
+ static get Default() {
+ return {};
+ }
+ static get DefaultType() {
+ return {};
+ }
+ static get NAME() {
+ throw new Error(
+ 'You have to implement the static method "NAME", for each component!'
+ );
+ }
+ _getConfig(e) {
+ return (
+ (e = this._mergeConfigObj(e)),
+ (e = this._configAfterMerge(e)),
+ this._typeCheckConfig(e),
+ e
+ );
+ }
+ _configAfterMerge(e) {
+ return e;
+ }
+ _mergeConfigObj(e, t) {
+ const n = o(t) ? j.getDataAttribute(t, 'config') : {};
+ return {
+ ...this.constructor.Default,
+ ...('object' == typeof n ? n : {}),
+ ...(o(t) ? j.getDataAttributes(t) : {}),
+ ...('object' == typeof e ? e : {})
+ };
+ }
+ _typeCheckConfig(e) {
+ let t =
+ arguments.length > 1 && void 0 !== arguments[1]
+ ? arguments[1]
+ : this.constructor.DefaultType;
+ for (const [i, r] of Object.entries(t)) {
+ const t = e[i],
+ s = o(t)
+ ? 'element'
+ : null == (n = t)
+ ? `${n}`
+ : Object.prototype.toString
+ .call(n)
+ .match(/\s([a-z]+)/i)[1]
+ .toLowerCase();
+ if (!new RegExp(r).test(s))
+ throw new TypeError(
+ `${this.constructor.NAME.toUpperCase()}: Option "${i}" provided type "${s}" but expected type "${r}".`
+ );
+ }
+ var n;
+ }
+ }
+ class P extends B {
+ constructor(e, n) {
+ super(),
+ (e = r(e)) &&
+ ((this._element = e),
+ (this._config = this._getConfig(n)),
+ t.set(this._element, this.constructor.DATA_KEY, this));
+ }
+ dispose() {
+ t.remove(this._element, this.constructor.DATA_KEY),
+ S.off(this._element, this.constructor.EVENT_KEY);
+ for (const e of Object.getOwnPropertyNames(this)) this[e] = null;
+ }
+ _queueCallback(e, t) {
+ p(
+ e,
+ t,
+ !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]
+ );
+ }
+ _getConfig(e) {
+ return (
+ (e = this._mergeConfigObj(e, this._element)),
+ (e = this._configAfterMerge(e)),
+ this._typeCheckConfig(e),
+ e
+ );
+ }
+ static getInstance(e) {
+ return t.get(r(e), this.DATA_KEY);
+ }
+ static getOrCreateInstance(e) {
+ let t =
+ arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
+ return (
+ this.getInstance(e) || new this(e, 'object' == typeof t ? t : null)
+ );
+ }
+ static get VERSION() {
+ return '5.3.3';
+ }
+ static get DATA_KEY() {
+ return `bs.${this.NAME}`;
+ }
+ static get EVENT_KEY() {
+ return `.${this.DATA_KEY}`;
+ }
+ static eventName(e) {
+ return `${e}${this.EVENT_KEY}`;
+ }
+ }
+ const M = (e) => {
+ let t = e.getAttribute('data-bs-target');
+ if (!t || '#' === t) {
+ let n = e.getAttribute('href');
+ if (!n || (!n.includes('#') && !n.startsWith('.'))) return null;
+ n.includes('#') && !n.startsWith('#') && (n = `#${n.split('#')[1]}`),
+ (t = n && '#' !== n ? n.trim() : null);
+ }
+ return t
+ ? t
+ .split(',')
+ .map((e) => i(e))
+ .join(',')
+ : null;
+ },
+ I = {
+ find(e) {
+ let t =
+ arguments.length > 1 && void 0 !== arguments[1]
+ ? arguments[1]
+ : document.documentElement;
+ return [].concat(...Element.prototype.querySelectorAll.call(t, e));
+ },
+ findOne(e) {
+ let t =
+ arguments.length > 1 && void 0 !== arguments[1]
+ ? arguments[1]
+ : document.documentElement;
+ return Element.prototype.querySelector.call(t, e);
+ },
+ children: (e, t) => [].concat(...e.children).filter((e) => e.matches(t)),
+ parents(e, t) {
+ const n = [];
+ let i = e.parentNode.closest(t);
+ for (; i; ) n.push(i), (i = i.parentNode.closest(t));
+ return n;
+ },
+ prev(e, t) {
+ let n = e.previousElementSibling;
+ for (; n; ) {
+ if (n.matches(t)) return [n];
+ n = n.previousElementSibling;
+ }
+ return [];
+ },
+ next(e, t) {
+ let n = e.nextElementSibling;
+ for (; n; ) {
+ if (n.matches(t)) return [n];
+ n = n.nextElementSibling;
+ }
+ return [];
+ },
+ focusableChildren(e) {
+ const t = [
+ 'a',
+ 'button',
+ 'input',
+ 'textarea',
+ 'select',
+ 'details',
+ '[tabindex]',
+ '[contenteditable="true"]'
+ ]
+ .map((e) => `${e}:not([tabindex^="-"])`)
+ .join(',');
+ return this.find(t, e).filter(
+ (e) =>
+ !((e) =>
+ !e ||
+ e.nodeType !== Node.ELEMENT_NODE ||
+ !!e.classList.contains('disabled') ||
+ (void 0 !== e.disabled
+ ? e.disabled
+ : e.hasAttribute('disabled') &&
+ 'false' !== e.getAttribute('disabled')))(e) &&
+ ((e) => {
+ if (!o(e) || 0 === e.getClientRects().length) return !1;
+ const t =
+ 'visible' ===
+ getComputedStyle(e).getPropertyValue('visibility'),
+ n = e.closest('details:not([open])');
+ if (!n) return t;
+ if (n !== e) {
+ const t = e.closest('summary');
+ if (t && t.parentNode !== n) return !1;
+ if (null === t) return !1;
+ }
+ return t;
+ })(e)
+ );
+ },
+ getSelectorFromElement(e) {
+ const t = M(e);
+ return t && I.findOne(t) ? t : null;
+ },
+ getElementFromSelector(e) {
+ const t = M(e);
+ return t ? I.findOne(t) : null;
+ },
+ getMultipleElementsFromSelector(e) {
+ const t = M(e);
+ return t ? I.find(t) : [];
+ }
+ },
+ F = '.bs.collapse',
+ H = `show${F}`,
+ q = `shown${F}`,
+ $ = `hide${F}`,
+ z = `hidden${F}`,
+ R = `click${F}.data-api`,
+ W = 'show',
+ V = 'collapse',
+ U = 'collapsing',
+ Y = `:scope .${V} .${V}`,
+ K = '[data-bs-toggle="collapse"]',
+ Q = { parent: null, toggle: !0 },
+ X = { parent: '(null|element)', toggle: 'boolean' };
+ class G extends P {
+ constructor(e, t) {
+ super(e, t), (this._isTransitioning = !1), (this._triggerArray = []);
+ const n = I.find(K);
+ for (const e of n) {
+ const t = I.getSelectorFromElement(e),
+ n = I.find(t).filter((e) => e === this._element);
+ null !== t && n.length && this._triggerArray.push(e);
+ }
+ this._initializeChildren(),
+ this._config.parent ||
+ this._addAriaAndCollapsedClass(this._triggerArray, this._isShown()),
+ this._config.toggle && this.toggle();
+ }
+ static get Default() {
+ return Q;
+ }
+ static get DefaultType() {
+ return X;
+ }
+ static get NAME() {
+ return 'collapse';
+ }
+ toggle() {
+ this._isShown() ? this.hide() : this.show();
+ }
+ show() {
+ if (this._isTransitioning || this._isShown()) return;
+ let e = [];
+ if (
+ (this._config.parent &&
+ (e = this._getFirstLevelChildren(
+ '.collapse.show, .collapse.collapsing'
+ )
+ .filter((e) => e !== this._element)
+ .map((e) => G.getOrCreateInstance(e, { toggle: !1 }))),
+ e.length && e[0]._isTransitioning)
+ )
+ return;
+ if (S.trigger(this._element, H).defaultPrevented) return;
+ for (const t of e) t.hide();
+ const t = this._getDimension();
+ this._element.classList.remove(V),
+ this._element.classList.add(U),
+ (this._element.style[t] = 0),
+ this._addAriaAndCollapsedClass(this._triggerArray, !0),
+ (this._isTransitioning = !0);
+ const n = `scroll${t[0].toUpperCase() + t.slice(1)}`;
+ this._queueCallback(
+ () => {
+ (this._isTransitioning = !1),
+ this._element.classList.remove(U),
+ this._element.classList.add(V, W),
+ (this._element.style[t] = ''),
+ S.trigger(this._element, q);
+ },
+ this._element,
+ !0
+ ),
+ (this._element.style[t] = `${this._element[n]}px`);
+ }
+ hide() {
+ if (this._isTransitioning || !this._isShown()) return;
+ if (S.trigger(this._element, $).defaultPrevented) return;
+ const e = this._getDimension();
+ (this._element.style[e] = `${
+ this._element.getBoundingClientRect()[e]
+ }px`),
+ this._element.offsetHeight,
+ this._element.classList.add(U),
+ this._element.classList.remove(V, W);
+ for (const e of this._triggerArray) {
+ const t = I.getElementFromSelector(e);
+ t && !this._isShown(t) && this._addAriaAndCollapsedClass([e], !1);
+ }
+ this._isTransitioning = !0;
+ (this._element.style[e] = ''),
+ this._queueCallback(
+ () => {
+ (this._isTransitioning = !1),
+ this._element.classList.remove(U),
+ this._element.classList.add(V),
+ S.trigger(this._element, z);
+ },
+ this._element,
+ !0
+ );
+ }
+ _isShown() {
+ return (
+ arguments.length > 0 && void 0 !== arguments[0]
+ ? arguments[0]
+ : this._element
+ ).classList.contains(W);
+ }
+ _configAfterMerge(e) {
+ return (e.toggle = Boolean(e.toggle)), (e.parent = r(e.parent)), e;
+ }
+ _getDimension() {
+ return this._element.classList.contains('collapse-horizontal')
+ ? 'width'
+ : 'height';
+ }
+ _initializeChildren() {
+ if (!this._config.parent) return;
+ const e = this._getFirstLevelChildren(K);
+ for (const t of e) {
+ const e = I.getElementFromSelector(t);
+ e && this._addAriaAndCollapsedClass([t], this._isShown(e));
+ }
+ }
+ _getFirstLevelChildren(e) {
+ const t = I.find(Y, this._config.parent);
+ return I.find(e, this._config.parent).filter((e) => !t.includes(e));
+ }
+ _addAriaAndCollapsedClass(e, t) {
+ if (e.length)
+ for (const n of e)
+ n.classList.toggle('collapsed', !t),
+ n.setAttribute('aria-expanded', t);
+ }
+ static jQueryInterface(e) {
+ const t = {};
+ return (
+ 'string' == typeof e && /show|hide/.test(e) && (t.toggle = !1),
+ this.each(function () {
+ const n = G.getOrCreateInstance(this, t);
+ if ('string' == typeof e) {
+ if (void 0 === n[e]) throw new TypeError(`No method named "${e}"`);
+ n[e]();
+ }
+ })
+ );
+ }
+ }
+ S.on(document, R, K, function (e) {
+ ('A' === e.target.tagName ||
+ (e.delegateTarget && 'A' === e.delegateTarget.tagName)) &&
+ e.preventDefault();
+ for (const e of I.getMultipleElementsFromSelector(this))
+ G.getOrCreateInstance(e, { toggle: !1 }).toggle();
+ }),
+ d(G),
+ document.getElementsByClassName('collapse');
+ var J = 'top',
+ Z = 'bottom',
+ ee = 'right',
+ te = 'left',
+ ne = 'auto',
+ ie = [J, Z, ee, te],
+ oe = 'start',
+ re = 'end',
+ se = 'clippingParents',
+ ae = 'viewport',
+ le = 'popper',
+ ce = 'reference',
+ ue = ie.reduce(function (e, t) {
+ return e.concat([t + '-' + oe, t + '-' + re]);
+ }, []),
+ de = [].concat(ie, [ne]).reduce(function (e, t) {
+ return e.concat([t, t + '-' + oe, t + '-' + re]);
+ }, []),
+ fe = 'beforeRead',
+ pe = 'read',
+ he = 'afterRead',
+ me = 'beforeMain',
+ ge = 'main',
+ be = 'afterMain',
+ ve = 'beforeWrite',
+ ye = 'write',
+ _e = 'afterWrite',
+ we = [fe, pe, he, me, ge, be, ve, ye, _e];
+ function Ee(e) {
+ return e ? (e.nodeName || '').toLowerCase() : null;
+ }
+ function Ae(e) {
+ if (null == e) return window;
+ if ('[object Window]' !== e.toString()) {
+ var t = e.ownerDocument;
+ return (t && t.defaultView) || window;
+ }
+ return e;
+ }
+ function xe(e) {
+ return e instanceof Ae(e).Element || e instanceof Element;
+ }
+ function Te(e) {
+ return e instanceof Ae(e).HTMLElement || e instanceof HTMLElement;
+ }
+ function Ce(e) {
+ return (
+ 'undefined' != typeof ShadowRoot &&
+ (e instanceof Ae(e).ShadowRoot || e instanceof ShadowRoot)
+ );
+ }
+ var Oe = {
+ name: 'applyStyles',
+ enabled: !0,
+ phase: 'write',
+ fn: function (e) {
+ var t = e.state;
+ Object.keys(t.elements).forEach(function (e) {
+ var n = t.styles[e] || {},
+ i = t.attributes[e] || {},
+ o = t.elements[e];
+ Te(o) &&
+ Ee(o) &&
+ (Object.assign(o.style, n),
+ Object.keys(i).forEach(function (e) {
+ var t = i[e];
+ !1 === t
+ ? o.removeAttribute(e)
+ : o.setAttribute(e, !0 === t ? '' : t);
+ }));
+ });
+ },
+ effect: function (e) {
+ var t = e.state,
+ n = {
+ popper: {
+ position: t.options.strategy,
+ left: '0',
+ top: '0',
+ margin: '0'
+ },
+ arrow: { position: 'absolute' },
+ reference: {}
+ };
+ return (
+ Object.assign(t.elements.popper.style, n.popper),
+ (t.styles = n),
+ t.elements.arrow && Object.assign(t.elements.arrow.style, n.arrow),
+ function () {
+ Object.keys(t.elements).forEach(function (e) {
+ var i = t.elements[e],
+ o = t.attributes[e] || {},
+ r = Object.keys(
+ t.styles.hasOwnProperty(e) ? t.styles[e] : n[e]
+ ).reduce(function (e, t) {
+ return (e[t] = ''), e;
+ }, {});
+ Te(i) &&
+ Ee(i) &&
+ (Object.assign(i.style, r),
+ Object.keys(o).forEach(function (e) {
+ i.removeAttribute(e);
+ }));
+ });
+ }
+ );
+ },
+ requires: ['computeStyles']
+ };
+ function Le(e) {
+ return e.split('-')[0];
+ }
+ var Se = Math.max,
+ Ne = Math.min,
+ ke = Math.round;
+ function De() {
+ var e = navigator.userAgentData;
+ return null != e && e.brands && Array.isArray(e.brands)
+ ? e.brands
+ .map(function (e) {
+ return e.brand + '/' + e.version;
+ })
+ .join(' ')
+ : navigator.userAgent;
+ }
+ function je() {
+ return !/^((?!chrome|android).)*safari/i.test(De());
+ }
+ function Be(e, t, n) {
+ void 0 === t && (t = !1), void 0 === n && (n = !1);
+ var i = e.getBoundingClientRect(),
+ o = 1,
+ r = 1;
+ t &&
+ Te(e) &&
+ ((o = (e.offsetWidth > 0 && ke(i.width) / e.offsetWidth) || 1),
+ (r = (e.offsetHeight > 0 && ke(i.height) / e.offsetHeight) || 1));
+ var s = (xe(e) ? Ae(e) : window).visualViewport,
+ a = !je() && n,
+ l = (i.left + (a && s ? s.offsetLeft : 0)) / o,
+ c = (i.top + (a && s ? s.offsetTop : 0)) / r,
+ u = i.width / o,
+ d = i.height / r;
+ return {
+ width: u,
+ height: d,
+ top: c,
+ right: l + u,
+ bottom: c + d,
+ left: l,
+ x: l,
+ y: c
+ };
+ }
+ function Pe(e) {
+ var t = Be(e),
+ n = e.offsetWidth,
+ i = e.offsetHeight;
+ return (
+ Math.abs(t.width - n) <= 1 && (n = t.width),
+ Math.abs(t.height - i) <= 1 && (i = t.height),
+ { x: e.offsetLeft, y: e.offsetTop, width: n, height: i }
+ );
+ }
+ function Me(e, t) {
+ var n = t.getRootNode && t.getRootNode();
+ if (e.contains(t)) return !0;
+ if (n && Ce(n)) {
+ var i = t;
+ do {
+ if (i && e.isSameNode(i)) return !0;
+ i = i.parentNode || i.host;
+ } while (i);
+ }
+ return !1;
+ }
+ function Ie(e) {
+ return Ae(e).getComputedStyle(e);
+ }
+ function Fe(e) {
+ return ['table', 'td', 'th'].indexOf(Ee(e)) >= 0;
+ }
+ function He(e) {
+ return ((xe(e) ? e.ownerDocument : e.document) || window.document)
+ .documentElement;
+ }
+ function qe(e) {
+ return 'html' === Ee(e)
+ ? e
+ : e.assignedSlot || e.parentNode || (Ce(e) ? e.host : null) || He(e);
+ }
+ function $e(e) {
+ return Te(e) && 'fixed' !== Ie(e).position ? e.offsetParent : null;
+ }
+ function ze(e) {
+ for (var t = Ae(e), n = $e(e); n && Fe(n) && 'static' === Ie(n).position; )
+ n = $e(n);
+ return n &&
+ ('html' === Ee(n) || ('body' === Ee(n) && 'static' === Ie(n).position))
+ ? t
+ : n ||
+ (function (e) {
+ var t = /firefox/i.test(De());
+ if (/Trident/i.test(De()) && Te(e) && 'fixed' === Ie(e).position)
+ return null;
+ var n = qe(e);
+ for (
+ Ce(n) && (n = n.host);
+ Te(n) && ['html', 'body'].indexOf(Ee(n)) < 0;
+
+ ) {
+ var i = Ie(n);
+ if (
+ 'none' !== i.transform ||
+ 'none' !== i.perspective ||
+ 'paint' === i.contain ||
+ -1 !== ['transform', 'perspective'].indexOf(i.willChange) ||
+ (t && 'filter' === i.willChange) ||
+ (t && i.filter && 'none' !== i.filter)
+ )
+ return n;
+ n = n.parentNode;
+ }
+ return null;
+ })(e) ||
+ t;
+ }
+ function Re(e) {
+ return ['top', 'bottom'].indexOf(e) >= 0 ? 'x' : 'y';
+ }
+ function We(e, t, n) {
+ return Se(e, Ne(t, n));
+ }
+ function Ve(e) {
+ return Object.assign({}, { top: 0, right: 0, bottom: 0, left: 0 }, e);
+ }
+ function Ue(e, t) {
+ return t.reduce(function (t, n) {
+ return (t[n] = e), t;
+ }, {});
+ }
+ var Ye = {
+ name: 'arrow',
+ enabled: !0,
+ phase: 'main',
+ fn: function (e) {
+ var t,
+ n = e.state,
+ i = e.name,
+ o = e.options,
+ r = n.elements.arrow,
+ s = n.modifiersData.popperOffsets,
+ a = Le(n.placement),
+ l = Re(a),
+ c = [te, ee].indexOf(a) >= 0 ? 'height' : 'width';
+ if (r && s) {
+ var u = (function (e, t) {
+ return Ve(
+ 'number' !=
+ typeof (e =
+ 'function' == typeof e
+ ? e(Object.assign({}, t.rects, { placement: t.placement }))
+ : e)
+ ? e
+ : Ue(e, ie)
+ );
+ })(o.padding, n),
+ d = Pe(r),
+ f = 'y' === l ? J : te,
+ p = 'y' === l ? Z : ee,
+ h =
+ n.rects.reference[c] +
+ n.rects.reference[l] -
+ s[l] -
+ n.rects.popper[c],
+ m = s[l] - n.rects.reference[l],
+ g = ze(r),
+ b = g ? ('y' === l ? g.clientHeight || 0 : g.clientWidth || 0) : 0,
+ v = h / 2 - m / 2,
+ y = u[f],
+ _ = b - d[c] - u[p],
+ w = b / 2 - d[c] / 2 + v,
+ E = We(y, w, _),
+ A = l;
+ n.modifiersData[i] = (((t = {})[A] = E), (t.centerOffset = E - w), t);
+ }
+ },
+ effect: function (e) {
+ var t = e.state,
+ n = e.options.element,
+ i = void 0 === n ? '[data-popper-arrow]' : n;
+ null != i &&
+ ('string' != typeof i || (i = t.elements.popper.querySelector(i))) &&
+ Me(t.elements.popper, i) &&
+ (t.elements.arrow = i);
+ },
+ requires: ['popperOffsets'],
+ requiresIfExists: ['preventOverflow']
+ };
+ function Ke(e) {
+ return e.split('-')[1];
+ }
+ var Qe = { top: 'auto', right: 'auto', bottom: 'auto', left: 'auto' };
+ function Xe(e) {
+ var t,
+ n = e.popper,
+ i = e.popperRect,
+ o = e.placement,
+ r = e.variation,
+ s = e.offsets,
+ a = e.position,
+ l = e.gpuAcceleration,
+ c = e.adaptive,
+ u = e.roundOffsets,
+ d = e.isFixed,
+ f = s.x,
+ p = void 0 === f ? 0 : f,
+ h = s.y,
+ m = void 0 === h ? 0 : h,
+ g = 'function' == typeof u ? u({ x: p, y: m }) : { x: p, y: m };
+ (p = g.x), (m = g.y);
+ var b = s.hasOwnProperty('x'),
+ v = s.hasOwnProperty('y'),
+ y = te,
+ _ = J,
+ w = window;
+ if (c) {
+ var E = ze(n),
+ A = 'clientHeight',
+ x = 'clientWidth';
+ if (
+ (E === Ae(n) &&
+ 'static' !== Ie((E = He(n))).position &&
+ 'absolute' === a &&
+ ((A = 'scrollHeight'), (x = 'scrollWidth')),
+ o === J || ((o === te || o === ee) && r === re))
+ )
+ (_ = Z),
+ (m -=
+ (d && E === w && w.visualViewport
+ ? w.visualViewport.height
+ : E[A]) - i.height),
+ (m *= l ? 1 : -1);
+ if (o === te || ((o === J || o === Z) && r === re))
+ (y = ee),
+ (p -=
+ (d && E === w && w.visualViewport ? w.visualViewport.width : E[x]) -
+ i.width),
+ (p *= l ? 1 : -1);
+ }
+ var T,
+ C = Object.assign({ position: a }, c && Qe),
+ O =
+ !0 === u
+ ? (function (e, t) {
+ var n = e.x,
+ i = e.y,
+ o = t.devicePixelRatio || 1;
+ return { x: ke(n * o) / o || 0, y: ke(i * o) / o || 0 };
+ })({ x: p, y: m }, Ae(n))
+ : { x: p, y: m };
+ return (
+ (p = O.x),
+ (m = O.y),
+ l
+ ? Object.assign(
+ {},
+ C,
+ (((T = {})[_] = v ? '0' : ''),
+ (T[y] = b ? '0' : ''),
+ (T.transform =
+ (w.devicePixelRatio || 1) <= 1
+ ? 'translate(' + p + 'px, ' + m + 'px)'
+ : 'translate3d(' + p + 'px, ' + m + 'px, 0)'),
+ T)
+ )
+ : Object.assign(
+ {},
+ C,
+ (((t = {})[_] = v ? m + 'px' : ''),
+ (t[y] = b ? p + 'px' : ''),
+ (t.transform = ''),
+ t)
+ )
+ );
+ }
+ var Ge = {
+ name: 'computeStyles',
+ enabled: !0,
+ phase: 'beforeWrite',
+ fn: function (e) {
+ var t = e.state,
+ n = e.options,
+ i = n.gpuAcceleration,
+ o = void 0 === i || i,
+ r = n.adaptive,
+ s = void 0 === r || r,
+ a = n.roundOffsets,
+ l = void 0 === a || a,
+ c = {
+ placement: Le(t.placement),
+ variation: Ke(t.placement),
+ popper: t.elements.popper,
+ popperRect: t.rects.popper,
+ gpuAcceleration: o,
+ isFixed: 'fixed' === t.options.strategy
+ };
+ null != t.modifiersData.popperOffsets &&
+ (t.styles.popper = Object.assign(
+ {},
+ t.styles.popper,
+ Xe(
+ Object.assign({}, c, {
+ offsets: t.modifiersData.popperOffsets,
+ position: t.options.strategy,
+ adaptive: s,
+ roundOffsets: l
+ })
+ )
+ )),
+ null != t.modifiersData.arrow &&
+ (t.styles.arrow = Object.assign(
+ {},
+ t.styles.arrow,
+ Xe(
+ Object.assign({}, c, {
+ offsets: t.modifiersData.arrow,
+ position: 'absolute',
+ adaptive: !1,
+ roundOffsets: l
+ })
+ )
+ )),
+ (t.attributes.popper = Object.assign({}, t.attributes.popper, {
+ 'data-popper-placement': t.placement
+ }));
+ },
+ data: {}
+ },
+ Je = { passive: !0 };
+ var Ze = {
+ name: 'eventListeners',
+ enabled: !0,
+ phase: 'write',
+ fn: function () {},
+ effect: function (e) {
+ var t = e.state,
+ n = e.instance,
+ i = e.options,
+ o = i.scroll,
+ r = void 0 === o || o,
+ s = i.resize,
+ a = void 0 === s || s,
+ l = Ae(t.elements.popper),
+ c = [].concat(t.scrollParents.reference, t.scrollParents.popper);
+ return (
+ r &&
+ c.forEach(function (e) {
+ e.addEventListener('scroll', n.update, Je);
+ }),
+ a && l.addEventListener('resize', n.update, Je),
+ function () {
+ r &&
+ c.forEach(function (e) {
+ e.removeEventListener('scroll', n.update, Je);
+ }),
+ a && l.removeEventListener('resize', n.update, Je);
+ }
+ );
+ },
+ data: {}
+ },
+ et = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };
+ function tt(e) {
+ return e.replace(/left|right|bottom|top/g, function (e) {
+ return et[e];
+ });
+ }
+ var nt = { start: 'end', end: 'start' };
+ function it(e) {
+ return e.replace(/start|end/g, function (e) {
+ return nt[e];
+ });
+ }
+ function ot(e) {
+ var t = Ae(e);
+ return { scrollLeft: t.pageXOffset, scrollTop: t.pageYOffset };
+ }
+ function rt(e) {
+ return Be(He(e)).left + ot(e).scrollLeft;
+ }
+ function st(e) {
+ var t = Ie(e),
+ n = t.overflow,
+ i = t.overflowX,
+ o = t.overflowY;
+ return /auto|scroll|overlay|hidden/.test(n + o + i);
+ }
+ function at(e) {
+ return ['html', 'body', '#document'].indexOf(Ee(e)) >= 0
+ ? e.ownerDocument.body
+ : Te(e) && st(e)
+ ? e
+ : at(qe(e));
+ }
+ function lt(e, t) {
+ var n;
+ void 0 === t && (t = []);
+ var i = at(e),
+ o = i === (null == (n = e.ownerDocument) ? void 0 : n.body),
+ r = Ae(i),
+ s = o ? [r].concat(r.visualViewport || [], st(i) ? i : []) : i,
+ a = t.concat(s);
+ return o ? a : a.concat(lt(qe(s)));
+ }
+ function ct(e) {
+ return Object.assign({}, e, {
+ left: e.x,
+ top: e.y,
+ right: e.x + e.width,
+ bottom: e.y + e.height
+ });
+ }
+ function ut(e, t, n) {
+ return t === ae
+ ? ct(
+ (function (e, t) {
+ var n = Ae(e),
+ i = He(e),
+ o = n.visualViewport,
+ r = i.clientWidth,
+ s = i.clientHeight,
+ a = 0,
+ l = 0;
+ if (o) {
+ (r = o.width), (s = o.height);
+ var c = je();
+ (c || (!c && 'fixed' === t)) &&
+ ((a = o.offsetLeft), (l = o.offsetTop));
+ }
+ return { width: r, height: s, x: a + rt(e), y: l };
+ })(e, n)
+ )
+ : xe(t)
+ ? (function (e, t) {
+ var n = Be(e, !1, 'fixed' === t);
+ return (
+ (n.top = n.top + e.clientTop),
+ (n.left = n.left + e.clientLeft),
+ (n.bottom = n.top + e.clientHeight),
+ (n.right = n.left + e.clientWidth),
+ (n.width = e.clientWidth),
+ (n.height = e.clientHeight),
+ (n.x = n.left),
+ (n.y = n.top),
+ n
+ );
+ })(t, n)
+ : ct(
+ (function (e) {
+ var t,
+ n = He(e),
+ i = ot(e),
+ o = null == (t = e.ownerDocument) ? void 0 : t.body,
+ r = Se(
+ n.scrollWidth,
+ n.clientWidth,
+ o ? o.scrollWidth : 0,
+ o ? o.clientWidth : 0
+ ),
+ s = Se(
+ n.scrollHeight,
+ n.clientHeight,
+ o ? o.scrollHeight : 0,
+ o ? o.clientHeight : 0
+ ),
+ a = -i.scrollLeft + rt(e),
+ l = -i.scrollTop;
+ return (
+ 'rtl' === Ie(o || n).direction &&
+ (a += Se(n.clientWidth, o ? o.clientWidth : 0) - r),
+ { width: r, height: s, x: a, y: l }
+ );
+ })(He(e))
+ );
+ }
+ function dt(e, t, n, i) {
+ var o =
+ 'clippingParents' === t
+ ? (function (e) {
+ var t = lt(qe(e)),
+ n =
+ ['absolute', 'fixed'].indexOf(Ie(e).position) >= 0 && Te(e)
+ ? ze(e)
+ : e;
+ return xe(n)
+ ? t.filter(function (e) {
+ return xe(e) && Me(e, n) && 'body' !== Ee(e);
+ })
+ : [];
+ })(e)
+ : [].concat(t),
+ r = [].concat(o, [n]),
+ s = r[0],
+ a = r.reduce(function (t, n) {
+ var o = ut(e, n, i);
+ return (
+ (t.top = Se(o.top, t.top)),
+ (t.right = Ne(o.right, t.right)),
+ (t.bottom = Ne(o.bottom, t.bottom)),
+ (t.left = Se(o.left, t.left)),
+ t
+ );
+ }, ut(e, s, i));
+ return (
+ (a.width = a.right - a.left),
+ (a.height = a.bottom - a.top),
+ (a.x = a.left),
+ (a.y = a.top),
+ a
+ );
+ }
+ function ft(e) {
+ var t,
+ n = e.reference,
+ i = e.element,
+ o = e.placement,
+ r = o ? Le(o) : null,
+ s = o ? Ke(o) : null,
+ a = n.x + n.width / 2 - i.width / 2,
+ l = n.y + n.height / 2 - i.height / 2;
+ switch (r) {
+ case J:
+ t = { x: a, y: n.y - i.height };
+ break;
+ case Z:
+ t = { x: a, y: n.y + n.height };
+ break;
+ case ee:
+ t = { x: n.x + n.width, y: l };
+ break;
+ case te:
+ t = { x: n.x - i.width, y: l };
+ break;
+ default:
+ t = { x: n.x, y: n.y };
+ }
+ var c = r ? Re(r) : null;
+ if (null != c) {
+ var u = 'y' === c ? 'height' : 'width';
+ switch (s) {
+ case oe:
+ t[c] = t[c] - (n[u] / 2 - i[u] / 2);
+ break;
+ case re:
+ t[c] = t[c] + (n[u] / 2 - i[u] / 2);
+ }
+ }
+ return t;
+ }
+ function pt(e, t) {
+ void 0 === t && (t = {});
+ var n = t,
+ i = n.placement,
+ o = void 0 === i ? e.placement : i,
+ r = n.strategy,
+ s = void 0 === r ? e.strategy : r,
+ a = n.boundary,
+ l = void 0 === a ? se : a,
+ c = n.rootBoundary,
+ u = void 0 === c ? ae : c,
+ d = n.elementContext,
+ f = void 0 === d ? le : d,
+ p = n.altBoundary,
+ h = void 0 !== p && p,
+ m = n.padding,
+ g = void 0 === m ? 0 : m,
+ b = Ve('number' != typeof g ? g : Ue(g, ie)),
+ v = f === le ? ce : le,
+ y = e.rects.popper,
+ _ = e.elements[h ? v : f],
+ w = dt(xe(_) ? _ : _.contextElement || He(e.elements.popper), l, u, s),
+ E = Be(e.elements.reference),
+ A = ft({ reference: E, element: y, placement: o }),
+ x = ct(Object.assign({}, y, A)),
+ T = f === le ? x : E,
+ C = {
+ top: w.top - T.top + b.top,
+ bottom: T.bottom - w.bottom + b.bottom,
+ left: w.left - T.left + b.left,
+ right: T.right - w.right + b.right
+ },
+ O = e.modifiersData.offset;
+ if (f === le && O) {
+ var L = O[o];
+ Object.keys(C).forEach(function (e) {
+ var t = [ee, Z].indexOf(e) >= 0 ? 1 : -1,
+ n = [J, Z].indexOf(e) >= 0 ? 'y' : 'x';
+ C[e] += L[n] * t;
+ });
+ }
+ return C;
+ }
+ function ht(e, t) {
+ void 0 === t && (t = {});
+ var n = t,
+ i = n.placement,
+ o = n.boundary,
+ r = n.rootBoundary,
+ s = n.padding,
+ a = n.flipVariations,
+ l = n.allowedAutoPlacements,
+ c = void 0 === l ? de : l,
+ u = Ke(i),
+ d = u
+ ? a
+ ? ue
+ : ue.filter(function (e) {
+ return Ke(e) === u;
+ })
+ : ie,
+ f = d.filter(function (e) {
+ return c.indexOf(e) >= 0;
+ });
+ 0 === f.length && (f = d);
+ var p = f.reduce(function (t, n) {
+ return (
+ (t[n] = pt(e, {
+ placement: n,
+ boundary: o,
+ rootBoundary: r,
+ padding: s
+ })[Le(n)]),
+ t
+ );
+ }, {});
+ return Object.keys(p).sort(function (e, t) {
+ return p[e] - p[t];
+ });
+ }
+ var mt = {
+ name: 'flip',
+ enabled: !0,
+ phase: 'main',
+ fn: function (e) {
+ var t = e.state,
+ n = e.options,
+ i = e.name;
+ if (!t.modifiersData[i]._skip) {
+ for (
+ var o = n.mainAxis,
+ r = void 0 === o || o,
+ s = n.altAxis,
+ a = void 0 === s || s,
+ l = n.fallbackPlacements,
+ c = n.padding,
+ u = n.boundary,
+ d = n.rootBoundary,
+ f = n.altBoundary,
+ p = n.flipVariations,
+ h = void 0 === p || p,
+ m = n.allowedAutoPlacements,
+ g = t.options.placement,
+ b = Le(g),
+ v =
+ l ||
+ (b === g || !h
+ ? [tt(g)]
+ : (function (e) {
+ if (Le(e) === ne) return [];
+ var t = tt(e);
+ return [it(e), t, it(t)];
+ })(g)),
+ y = [g].concat(v).reduce(function (e, n) {
+ return e.concat(
+ Le(n) === ne
+ ? ht(t, {
+ placement: n,
+ boundary: u,
+ rootBoundary: d,
+ padding: c,
+ flipVariations: h,
+ allowedAutoPlacements: m
+ })
+ : n
+ );
+ }, []),
+ _ = t.rects.reference,
+ w = t.rects.popper,
+ E = new Map(),
+ A = !0,
+ x = y[0],
+ T = 0;
+ T < y.length;
+ T++
+ ) {
+ var C = y[T],
+ O = Le(C),
+ L = Ke(C) === oe,
+ S = [J, Z].indexOf(O) >= 0,
+ N = S ? 'width' : 'height',
+ k = pt(t, {
+ placement: C,
+ boundary: u,
+ rootBoundary: d,
+ altBoundary: f,
+ padding: c
+ }),
+ D = S ? (L ? ee : te) : L ? Z : J;
+ _[N] > w[N] && (D = tt(D));
+ var j = tt(D),
+ B = [];
+ if (
+ (r && B.push(k[O] <= 0),
+ a && B.push(k[D] <= 0, k[j] <= 0),
+ B.every(function (e) {
+ return e;
+ }))
+ ) {
+ (x = C), (A = !1);
+ break;
+ }
+ E.set(C, B);
+ }
+ if (A)
+ for (
+ var P = function (e) {
+ var t = y.find(function (t) {
+ var n = E.get(t);
+ if (n)
+ return n.slice(0, e).every(function (e) {
+ return e;
+ });
+ });
+ if (t) return (x = t), 'break';
+ },
+ M = h ? 3 : 1;
+ M > 0;
+ M--
+ ) {
+ if ('break' === P(M)) break;
+ }
+ t.placement !== x &&
+ ((t.modifiersData[i]._skip = !0), (t.placement = x), (t.reset = !0));
+ }
+ },
+ requiresIfExists: ['offset'],
+ data: { _skip: !1 }
+ };
+ function gt(e, t, n) {
+ return (
+ void 0 === n && (n = { x: 0, y: 0 }),
+ {
+ top: e.top - t.height - n.y,
+ right: e.right - t.width + n.x,
+ bottom: e.bottom - t.height + n.y,
+ left: e.left - t.width - n.x
+ }
+ );
+ }
+ function bt(e) {
+ return [J, ee, Z, te].some(function (t) {
+ return e[t] >= 0;
+ });
+ }
+ var vt = {
+ name: 'hide',
+ enabled: !0,
+ phase: 'main',
+ requiresIfExists: ['preventOverflow'],
+ fn: function (e) {
+ var t = e.state,
+ n = e.name,
+ i = t.rects.reference,
+ o = t.rects.popper,
+ r = t.modifiersData.preventOverflow,
+ s = pt(t, { elementContext: 'reference' }),
+ a = pt(t, { altBoundary: !0 }),
+ l = gt(s, i),
+ c = gt(a, o, r),
+ u = bt(l),
+ d = bt(c);
+ (t.modifiersData[n] = {
+ referenceClippingOffsets: l,
+ popperEscapeOffsets: c,
+ isReferenceHidden: u,
+ hasPopperEscaped: d
+ }),
+ (t.attributes.popper = Object.assign({}, t.attributes.popper, {
+ 'data-popper-reference-hidden': u,
+ 'data-popper-escaped': d
+ }));
+ }
+ };
+ var yt = {
+ name: 'offset',
+ enabled: !0,
+ phase: 'main',
+ requires: ['popperOffsets'],
+ fn: function (e) {
+ var t = e.state,
+ n = e.options,
+ i = e.name,
+ o = n.offset,
+ r = void 0 === o ? [0, 0] : o,
+ s = de.reduce(function (e, n) {
+ return (
+ (e[n] = (function (e, t, n) {
+ var i = Le(e),
+ o = [te, J].indexOf(i) >= 0 ? -1 : 1,
+ r =
+ 'function' == typeof n
+ ? n(Object.assign({}, t, { placement: e }))
+ : n,
+ s = r[0],
+ a = r[1];
+ return (
+ (s = s || 0),
+ (a = (a || 0) * o),
+ [te, ee].indexOf(i) >= 0 ? { x: a, y: s } : { x: s, y: a }
+ );
+ })(n, t.rects, r)),
+ e
+ );
+ }, {}),
+ a = s[t.placement],
+ l = a.x,
+ c = a.y;
+ null != t.modifiersData.popperOffsets &&
+ ((t.modifiersData.popperOffsets.x += l),
+ (t.modifiersData.popperOffsets.y += c)),
+ (t.modifiersData[i] = s);
+ }
+ };
+ var _t = {
+ name: 'popperOffsets',
+ enabled: !0,
+ phase: 'read',
+ fn: function (e) {
+ var t = e.state,
+ n = e.name;
+ t.modifiersData[n] = ft({
+ reference: t.rects.reference,
+ element: t.rects.popper,
+ placement: t.placement
+ });
+ },
+ data: {}
+ };
+ var wt = {
+ name: 'preventOverflow',
+ enabled: !0,
+ phase: 'main',
+ fn: function (e) {
+ var t = e.state,
+ n = e.options,
+ i = e.name,
+ o = n.mainAxis,
+ r = void 0 === o || o,
+ s = n.altAxis,
+ a = void 0 !== s && s,
+ l = n.boundary,
+ c = n.rootBoundary,
+ u = n.altBoundary,
+ d = n.padding,
+ f = n.tether,
+ p = void 0 === f || f,
+ h = n.tetherOffset,
+ m = void 0 === h ? 0 : h,
+ g = pt(t, { boundary: l, rootBoundary: c, padding: d, altBoundary: u }),
+ b = Le(t.placement),
+ v = Ke(t.placement),
+ y = !v,
+ _ = Re(b),
+ w = 'x' === _ ? 'y' : 'x',
+ E = t.modifiersData.popperOffsets,
+ A = t.rects.reference,
+ x = t.rects.popper,
+ T =
+ 'function' == typeof m
+ ? m(Object.assign({}, t.rects, { placement: t.placement }))
+ : m,
+ C =
+ 'number' == typeof T
+ ? { mainAxis: T, altAxis: T }
+ : Object.assign({ mainAxis: 0, altAxis: 0 }, T),
+ O = t.modifiersData.offset ? t.modifiersData.offset[t.placement] : null,
+ L = { x: 0, y: 0 };
+ if (E) {
+ if (r) {
+ var S,
+ N = 'y' === _ ? J : te,
+ k = 'y' === _ ? Z : ee,
+ D = 'y' === _ ? 'height' : 'width',
+ j = E[_],
+ B = j + g[N],
+ P = j - g[k],
+ M = p ? -x[D] / 2 : 0,
+ I = v === oe ? A[D] : x[D],
+ F = v === oe ? -x[D] : -A[D],
+ H = t.elements.arrow,
+ q = p && H ? Pe(H) : { width: 0, height: 0 },
+ $ = t.modifiersData['arrow#persistent']
+ ? t.modifiersData['arrow#persistent'].padding
+ : { top: 0, right: 0, bottom: 0, left: 0 },
+ z = $[N],
+ R = $[k],
+ W = We(0, A[D], q[D]),
+ V = y ? A[D] / 2 - M - W - z - C.mainAxis : I - W - z - C.mainAxis,
+ U = y ? -A[D] / 2 + M + W + R + C.mainAxis : F + W + R + C.mainAxis,
+ Y = t.elements.arrow && ze(t.elements.arrow),
+ K = Y ? ('y' === _ ? Y.clientTop || 0 : Y.clientLeft || 0) : 0,
+ Q = null != (S = null == O ? void 0 : O[_]) ? S : 0,
+ X = j + U - Q,
+ G = We(p ? Ne(B, j + V - Q - K) : B, j, p ? Se(P, X) : P);
+ (E[_] = G), (L[_] = G - j);
+ }
+ if (a) {
+ var ne,
+ ie = 'x' === _ ? J : te,
+ re = 'x' === _ ? Z : ee,
+ se = E[w],
+ ae = 'y' === w ? 'height' : 'width',
+ le = se + g[ie],
+ ce = se - g[re],
+ ue = -1 !== [J, te].indexOf(b),
+ de = null != (ne = null == O ? void 0 : O[w]) ? ne : 0,
+ fe = ue ? le : se - A[ae] - x[ae] - de + C.altAxis,
+ pe = ue ? se + A[ae] + x[ae] - de - C.altAxis : ce,
+ he =
+ p && ue
+ ? (function (e, t, n) {
+ var i = We(e, t, n);
+ return i > n ? n : i;
+ })(fe, se, pe)
+ : We(p ? fe : le, se, p ? pe : ce);
+ (E[w] = he), (L[w] = he - se);
+ }
+ t.modifiersData[i] = L;
+ }
+ },
+ requiresIfExists: ['offset']
+ };
+ function Et(e, t, n) {
+ void 0 === n && (n = !1);
+ var i,
+ o,
+ r = Te(t),
+ s =
+ Te(t) &&
+ (function (e) {
+ var t = e.getBoundingClientRect(),
+ n = ke(t.width) / e.offsetWidth || 1,
+ i = ke(t.height) / e.offsetHeight || 1;
+ return 1 !== n || 1 !== i;
+ })(t),
+ a = He(t),
+ l = Be(e, s, n),
+ c = { scrollLeft: 0, scrollTop: 0 },
+ u = { x: 0, y: 0 };
+ return (
+ (r || (!r && !n)) &&
+ (('body' !== Ee(t) || st(a)) &&
+ (c =
+ (i = t) !== Ae(i) && Te(i)
+ ? { scrollLeft: (o = i).scrollLeft, scrollTop: o.scrollTop }
+ : ot(i)),
+ Te(t)
+ ? (((u = Be(t, !0)).x += t.clientLeft), (u.y += t.clientTop))
+ : a && (u.x = rt(a))),
+ {
+ x: l.left + c.scrollLeft - u.x,
+ y: l.top + c.scrollTop - u.y,
+ width: l.width,
+ height: l.height
+ }
+ );
+ }
+ function At(e) {
+ var t = new Map(),
+ n = new Set(),
+ i = [];
+ function o(e) {
+ n.add(e.name),
+ []
+ .concat(e.requires || [], e.requiresIfExists || [])
+ .forEach(function (e) {
+ if (!n.has(e)) {
+ var i = t.get(e);
+ i && o(i);
+ }
+ }),
+ i.push(e);
+ }
+ return (
+ e.forEach(function (e) {
+ t.set(e.name, e);
+ }),
+ e.forEach(function (e) {
+ n.has(e.name) || o(e);
+ }),
+ i
+ );
+ }
+ var xt = { placement: 'bottom', modifiers: [], strategy: 'absolute' };
+ function Tt() {
+ for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)
+ t[n] = arguments[n];
+ return !t.some(function (e) {
+ return !(e && 'function' == typeof e.getBoundingClientRect);
+ });
+ }
+ function Ct(e) {
+ void 0 === e && (e = {});
+ var t = e,
+ n = t.defaultModifiers,
+ i = void 0 === n ? [] : n,
+ o = t.defaultOptions,
+ r = void 0 === o ? xt : o;
+ return function (e, t, n) {
+ void 0 === n && (n = r);
+ var o,
+ s,
+ a = {
+ placement: 'bottom',
+ orderedModifiers: [],
+ options: Object.assign({}, xt, r),
+ modifiersData: {},
+ elements: { reference: e, popper: t },
+ attributes: {},
+ styles: {}
+ },
+ l = [],
+ c = !1,
+ u = {
+ state: a,
+ setOptions: function (n) {
+ var o = 'function' == typeof n ? n(a.options) : n;
+ d(),
+ (a.options = Object.assign({}, r, a.options, o)),
+ (a.scrollParents = {
+ reference: xe(e)
+ ? lt(e)
+ : e.contextElement
+ ? lt(e.contextElement)
+ : [],
+ popper: lt(t)
+ });
+ var s,
+ c,
+ f = (function (e) {
+ var t = At(e);
+ return we.reduce(function (e, n) {
+ return e.concat(
+ t.filter(function (e) {
+ return e.phase === n;
+ })
+ );
+ }, []);
+ })(
+ ((s = [].concat(i, a.options.modifiers)),
+ (c = s.reduce(function (e, t) {
+ var n = e[t.name];
+ return (
+ (e[t.name] = n
+ ? Object.assign({}, n, t, {
+ options: Object.assign({}, n.options, t.options),
+ data: Object.assign({}, n.data, t.data)
+ })
+ : t),
+ e
+ );
+ }, {})),
+ Object.keys(c).map(function (e) {
+ return c[e];
+ }))
+ );
+ return (
+ (a.orderedModifiers = f.filter(function (e) {
+ return e.enabled;
+ })),
+ a.orderedModifiers.forEach(function (e) {
+ var t = e.name,
+ n = e.options,
+ i = void 0 === n ? {} : n,
+ o = e.effect;
+ if ('function' == typeof o) {
+ var r = o({ state: a, name: t, instance: u, options: i }),
+ s = function () {};
+ l.push(r || s);
+ }
+ }),
+ u.update()
+ );
+ },
+ forceUpdate: function () {
+ if (!c) {
+ var e = a.elements,
+ t = e.reference,
+ n = e.popper;
+ if (Tt(t, n)) {
+ (a.rects = {
+ reference: Et(t, ze(n), 'fixed' === a.options.strategy),
+ popper: Pe(n)
+ }),
+ (a.reset = !1),
+ (a.placement = a.options.placement),
+ a.orderedModifiers.forEach(function (e) {
+ return (a.modifiersData[e.name] = Object.assign(
+ {},
+ e.data
+ ));
+ });
+ for (var i = 0; i < a.orderedModifiers.length; i++)
+ if (!0 !== a.reset) {
+ var o = a.orderedModifiers[i],
+ r = o.fn,
+ s = o.options,
+ l = void 0 === s ? {} : s,
+ d = o.name;
+ 'function' == typeof r &&
+ (a =
+ r({ state: a, options: l, name: d, instance: u }) || a);
+ } else (a.reset = !1), (i = -1);
+ }
+ }
+ },
+ update:
+ ((o = function () {
+ return new Promise(function (e) {
+ u.forceUpdate(), e(a);
+ });
+ }),
+ function () {
+ return (
+ s ||
+ (s = new Promise(function (e) {
+ Promise.resolve().then(function () {
+ (s = void 0), e(o());
+ });
+ })),
+ s
+ );
+ }),
+ destroy: function () {
+ d(), (c = !0);
+ }
+ };
+ if (!Tt(e, t)) return u;
+ function d() {
+ l.forEach(function (e) {
+ return e();
+ }),
+ (l = []);
+ }
+ return (
+ u.setOptions(n).then(function (e) {
+ !c && n.onFirstUpdate && n.onFirstUpdate(e);
+ }),
+ u
+ );
+ };
+ }
+ var Ot = Ct(),
+ Lt = Ct({ defaultModifiers: [Ze, _t, Ge, Oe] }),
+ St = Ct({ defaultModifiers: [Ze, _t, Ge, Oe, yt, mt, wt, Ye, vt] }),
+ Nt = Object.freeze({
+ __proto__: null,
+ afterMain: be,
+ afterRead: he,
+ afterWrite: _e,
+ applyStyles: Oe,
+ arrow: Ye,
+ auto: ne,
+ basePlacements: ie,
+ beforeMain: me,
+ beforeRead: fe,
+ beforeWrite: ve,
+ bottom: Z,
+ clippingParents: se,
+ computeStyles: Ge,
+ createPopper: St,
+ createPopperBase: Ot,
+ createPopperLite: Lt,
+ detectOverflow: pt,
+ end: re,
+ eventListeners: Ze,
+ flip: mt,
+ hide: vt,
+ left: te,
+ main: ge,
+ modifierPhases: we,
+ offset: yt,
+ placements: de,
+ popper: le,
+ popperGenerator: Ct,
+ popperOffsets: _t,
+ preventOverflow: wt,
+ read: pe,
+ reference: ce,
+ right: ee,
+ start: oe,
+ top: J,
+ variationPlacements: ue,
+ viewport: ae,
+ write: ye
+ });
+ const kt = {
+ '*': ['class', 'dir', 'id', 'lang', 'role', /^aria-[\w-]*$/i],
+ a: ['target', 'href', 'title', 'rel'],
+ area: [],
+ b: [],
+ br: [],
+ col: [],
+ code: [],
+ dd: [],
+ div: [],
+ dl: [],
+ dt: [],
+ em: [],
+ hr: [],
+ h1: [],
+ h2: [],
+ h3: [],
+ h4: [],
+ h5: [],
+ h6: [],
+ i: [],
+ img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],
+ li: [],
+ ol: [],
+ p: [],
+ pre: [],
+ s: [],
+ small: [],
+ span: [],
+ sub: [],
+ sup: [],
+ strong: [],
+ u: [],
+ ul: []
+ },
+ Dt = new Set([
+ 'background',
+ 'cite',
+ 'href',
+ 'itemtype',
+ 'longdesc',
+ 'poster',
+ 'src',
+ 'xlink:href'
+ ]),
+ jt = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,
+ Bt = (e, t) => {
+ const n = e.nodeName.toLowerCase();
+ return t.includes(n)
+ ? !Dt.has(n) || Boolean(jt.test(e.nodeValue))
+ : t.filter((e) => e instanceof RegExp).some((e) => e.test(n));
+ };
+ const Pt = {
+ allowList: kt,
+ content: {},
+ extraClass: '',
+ html: !1,
+ sanitize: !0,
+ sanitizeFn: null,
+ template: ''
+ },
+ Mt = {
+ allowList: 'object',
+ content: 'object',
+ extraClass: '(string|function)',
+ html: 'boolean',
+ sanitize: 'boolean',
+ sanitizeFn: '(null|function)',
+ template: 'string'
+ },
+ It = {
+ entry: '(string|element|function|null)',
+ selector: '(string|element)'
+ };
+ class Ft extends B {
+ constructor(e) {
+ super(), (this._config = this._getConfig(e));
+ }
+ static get Default() {
+ return Pt;
+ }
+ static get DefaultType() {
+ return Mt;
+ }
+ static get NAME() {
+ return 'TemplateFactory';
+ }
+ getContent() {
+ return Object.values(this._config.content)
+ .map((e) => this._resolvePossibleFunction(e))
+ .filter(Boolean);
+ }
+ hasContent() {
+ return this.getContent().length > 0;
+ }
+ changeContent(e) {
+ return (
+ this._checkContent(e),
+ (this._config.content = { ...this._config.content, ...e }),
+ this
+ );
+ }
+ toHtml() {
+ const e = document.createElement('div');
+ e.innerHTML = this._maybeSanitize(this._config.template);
+ for (const [t, n] of Object.entries(this._config.content))
+ this._setContent(e, n, t);
+ const t = e.children[0],
+ n = this._resolvePossibleFunction(this._config.extraClass);
+ return n && t.classList.add(...n.split(' ')), t;
+ }
+ _typeCheckConfig(e) {
+ super._typeCheckConfig(e), this._checkContent(e.content);
+ }
+ _checkContent(e) {
+ for (const [t, n] of Object.entries(e))
+ super._typeCheckConfig({ selector: t, entry: n }, It);
+ }
+ _setContent(e, t, n) {
+ const i = I.findOne(n, e);
+ i &&
+ ((t = this._resolvePossibleFunction(t))
+ ? o(t)
+ ? this._putElementInTemplate(r(t), i)
+ : this._config.html
+ ? (i.innerHTML = this._maybeSanitize(t))
+ : (i.textContent = t)
+ : i.remove());
+ }
+ _maybeSanitize(e) {
+ return this._config.sanitize
+ ? (function (e, t, n) {
+ if (!e.length) return e;
+ if (n && 'function' == typeof n) return n(e);
+ const i = new window.DOMParser().parseFromString(e, 'text/html'),
+ o = [].concat(...i.body.querySelectorAll('*'));
+ for (const e of o) {
+ const n = e.nodeName.toLowerCase();
+ if (!Object.keys(t).includes(n)) {
+ e.remove();
+ continue;
+ }
+ const i = [].concat(...e.attributes),
+ o = [].concat(t['*'] || [], t[n] || []);
+ for (const t of i) Bt(t, o) || e.removeAttribute(t.nodeName);
+ }
+ return i.body.innerHTML;
+ })(e, this._config.allowList, this._config.sanitizeFn)
+ : e;
+ }
+ _resolvePossibleFunction(e) {
+ return f(e, [this]);
+ }
+ _putElementInTemplate(e, t) {
+ if (this._config.html) return (t.innerHTML = ''), void t.append(e);
+ t.textContent = e.textContent;
+ }
+ }
+ const Ht = new Set(['sanitize', 'allowList', 'sanitizeFn']),
+ qt = 'fade',
+ $t = 'show',
+ zt = '.tooltip-inner',
+ Rt = '.modal',
+ Wt = 'hide.bs.modal',
+ Vt = 'hover',
+ Ut = 'focus',
+ Yt = {
+ AUTO: 'auto',
+ TOP: 'top',
+ RIGHT: u() ? 'left' : 'right',
+ BOTTOM: 'bottom',
+ LEFT: u() ? 'right' : 'left'
+ },
+ Kt = {
+ allowList: kt,
+ animation: !0,
+ boundary: 'clippingParents',
+ container: !1,
+ customClass: '',
+ delay: 0,
+ fallbackPlacements: ['top', 'right', 'bottom', 'left'],
+ html: !1,
+ offset: [0, 6],
+ placement: 'top',
+ popperConfig: null,
+ sanitize: !0,
+ sanitizeFn: null,
+ selector: !1,
+ template:
+ '
' - sed -i -E 's/\s(<[a-z])/ \\\1/g' "$CHANGELOG" -} - -prepare() { - _bump_version - _improve_changelog -} - -## Build a Gem package -build_gem() { - # Remove unnecessary theme settings - sed -i -E "s/(^timezone:).*/\1/;s/(^cdn:).*/\1/;s/(^avatar:).*/\1/" $CONFIG - rm -f ./*.gem - - npm run build - # add CSS/JS distribution files to gem package - git add "$CSS_DIST" "$JS_DIST" -f - - echo -e "\n> gem build $GEM_SPEC\n" - gem build "$GEM_SPEC" - - echo -e "\n> Resume file changes ...\n" - git reset - git checkout . -} - -# Push the gem to RubyGems.org (using $GEM_HOST_API_KEY) -push_gem() { - gem push ./*.gem -} - -## Merge the release branch into the default branch -merge() { - git fetch origin "$MAIN_BRANCH" - git checkout -b "$MAIN_BRANCH" origin/"$MAIN_BRANCH" - - git merge --no-ff --no-edit "$RELEASE_BRANCH" || ( - git merge --abort - echo -e "\n> Conflict detected. Aborting merge.\n" - exit 0 - ) - - git push origin "$MAIN_BRANCH" -} - -main() { - init - - if $opt_pre; then - prepare - exit 0 - fi - - build_gem - $opt_pkg && exit 0 - push_gem - merge -} - -while (($#)); do - opt="$1" - case $opt in - --prepare) - opt_pre=true - shift - ;; - -p | --package) - opt_pkg=true - shift - ;; - -h | --help) - help - exit 0 - ;; - *) - # unknown option - help - exit 1 - ;; - esac -done - -main
+
404
-{{ site.data.locales[site.lang].not_found.statment }}
- ++ {{ site.data.locales[site.lang].not_found.statment }} +
+ {{ site.data.locales[site.lang].not_found.head_back }}
{{ site.data.locales[site.lang].not_found.or }}
-
+
{{ site.data.locales[site.lang].not_found.previous_page }}
-
+
diff --git a/assets/css/jekyll-theme-chirpy.scss b/assets/css/jekyll-theme-chirpy.scss
index d20545ba80b..6a979b7f5c1 100644
--- a/assets/css/jekyll-theme-chirpy.scss
+++ b/assets/css/jekyll-theme-chirpy.scss
@@ -1,10 +1,10 @@
---
---
-@import 'main
{%- if jekyll.environment == 'production' -%}
- .bundle
+@use 'main.bundle';
+{%- else -%}
+@use 'main';
{%- endif -%}
-';
/* append your custom style below */
diff --git a/assets/img/404/404 Template.png b/assets/img/404/Template.png
similarity index 100%
rename from assets/img/404/404 Template.png
rename to assets/img/404/Template.png
diff --git a/assets/img/eic-mesh/image.png b/assets/img/eic-mesh/image.png
new file mode 100644
index 00000000000..ccced44402f
Binary files /dev/null and b/assets/img/eic-mesh/image.png differ
diff --git a/assets/img/eic-mesh/image1.png b/assets/img/eic-mesh/image1.png
new file mode 100644
index 00000000000..a62742916a8
Binary files /dev/null and b/assets/img/eic-mesh/image1.png differ
diff --git a/assets/img/favicons/android-chrome-192x192.png b/assets/img/favicons/android-chrome-192x192.png
index 3571ffbec02..d6c53af4a32 100644
Binary files a/assets/img/favicons/android-chrome-192x192.png and b/assets/img/favicons/android-chrome-192x192.png differ
diff --git a/assets/img/favicons/android-chrome-512x512.png b/assets/img/favicons/android-chrome-512x512.png
index 524e0620a93..d9977ee7634 100644
Binary files a/assets/img/favicons/android-chrome-512x512.png and b/assets/img/favicons/android-chrome-512x512.png differ
diff --git a/assets/img/favicons/apple-touch-icon.png b/assets/img/favicons/apple-touch-icon.png
index 50ee1d2446b..51b429603f7 100644
Binary files a/assets/img/favicons/apple-touch-icon.png and b/assets/img/favicons/apple-touch-icon.png differ
diff --git a/assets/img/favicons/browserconfig.xml b/assets/img/favicons/browserconfig.xml
index a02a5c74ebb..55f8c068fa8 100644
--- a/assets/img/favicons/browserconfig.xml
+++ b/assets/img/favicons/browserconfig.xml
@@ -6,7 +6,7 @@ layout: compress
',title:"",trigger:"hover focus"},Xt={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class Gt extends M{constructor(e,t){if(void 0===kt)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(e,t),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Qt}static get DefaultType(){return Xt}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),S.off(this._element.closest(Rt),Vt,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const e=S.trigger(this._element,this.constructor.eventName("show")),t=(s(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(e.defaultPrevented||!t)return;this._disposePopper();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(n),S.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(n),n.classList.add(Wt),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))S.on(e,"mouseover",a);this._queueCallback((()=>{S.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(!this._isShown())return;if(S.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove(Wt),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))S.off(e,"mouseover",a);this._activeTrigger.click=!1,this._activeTrigger[Ut]=!1,this._activeTrigger[Yt]=!1,this._isHovered=null;this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),S.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(e){const t=this._getTemplateFactory(e).toHtml();if(!t)return null;t.classList.remove(zt,Wt),t.classList.add(`bs-${this.constructor.NAME}-auto`);const n=(e=>{do{e+=Math.floor(1e6*Math.random())}while(document.getElementById(e));return e})(this.constructor.NAME).toString();return t.setAttribute("id",n),this._isAnimated()&&t.classList.add(zt),t}setContent(e){this._newContent=e,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(e){return this._templateFactory?this._templateFactory.changeContent(e):this._templateFactory=new Ht({...this._config,content:e,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[qt]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(e){return this.constructor.getOrCreateInstance(e.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(zt)}_isShown(){return this.tip&&this.tip.classList.contains(Wt)}_createPopper(e){const t=d(this._config.placement,[this,e,this._element]),n=Kt[t.toUpperCase()];return jt(this._element,e,this._getPopperConfig(n))}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map((e=>Number.parseInt(e,10))):"function"==typeof e?t=>e(t,this._element):e}_resolvePossibleFunction(e){return d(e,[this._element])}_getPopperConfig(e){const t={placement:e,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:e=>{this._getTipElement().setAttribute("data-popper-placement",e.state.placement)}}]};return{...t,...d(this._config.popperConfig,[t])}}_setListeners(){const e=this._config.trigger.split(" ");for(const t of e)if("click"===t)S.on(this._element,this.constructor.eventName("click"),this._config.selector,(e=>{this._initializeOnDelegatedTarget(e).toggle()}));else if("manual"!==t){const e=t===Yt?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n=t===Yt?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");S.on(this._element,e,this._config.selector,(e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusin"===e.type?Ut:Yt]=!0,t._enter()})),S.on(this._element,n,this._config.selector,(e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusout"===e.type?Ut:Yt]=t._element.contains(e.relatedTarget),t._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},S.on(this._element.closest(Rt),Vt,this._hideModalHandler)}_fixTitle(){const e=this._element.getAttribute("title");e&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",e),this._element.setAttribute("data-bs-original-title",e),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(e,t){clearTimeout(this._timeout),this._timeout=setTimeout(e,t)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(e){const t=P.getDataAttributes(this._element);for(const e of Object.keys(t))$t.has(e)&&delete t[e];return e={...t,..."object"==typeof e&&e?e:{}},e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e.container=!1===e.container?document.body:r(e.container),"number"==typeof e.delay&&(e.delay={show:e.delay,hide:e.delay}),"number"==typeof e.title&&(e.title=e.title.toString()),"number"==typeof e.content&&(e.content=e.content.toString()),e}_getDelegateConfig(){const e={};for(const[t,n]of Object.entries(this._config))this.constructor.Default[t]!==n&&(e[t]=n);return e.selector=!1,e.trigger="manual",e}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(e){return this.each((function(){const t=Gt.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}}))}}function Jt(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}function Zt(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var en;f(Gt);const tn=document.getElementById("toc-bar"),nn=document.getElementById("toc-solo-trigger"),on=document.getElementsByClassName("toc-trigger"),rn=document.getElementById("toc-popup"),sn=document.getElementById("toc-popup-close"),an="overflow-hidden",ln="closing";class cn{static initBar(){new IntersectionObserver((e=>{e.forEach((e=>{tn.classList.toggle("invisible",e.isIntersecting)}))}),{rootMargin:`-${Jt(cn,this,fn)._}px 0px 0px 0px`}).observe(nn),un._=Jt(cn,this,!1)}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach((e=>{e.onclick=()=>this.hidePopup()}))}static refresh(){Jt(cn,this,un)._&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static get popupOpened(){return rn.open}static showPopup(){this.lockScroll(!0),rn.showModal();rn.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(){rn.toggleAttribute(ln),rn.addEventListener("animationend",(()=>{rn.toggleAttribute(ln),rn.close()}),{once:!0}),this.lockScroll(!1)}static lockScroll(e){document.documentElement.classList.toggle(an,e),document.body.classList.toggle(an,e)}static clickBackdrop(e){if(rn.hasAttribute(ln))return;const t=e.target.getBoundingClientRect();(e.clientX
',
+ title: '',
+ trigger: 'hover focus'
+ },
+ Xt = {
+ allowList: 'object',
+ animation: 'boolean',
+ boundary: '(string|element)',
+ container: '(string|element|boolean)',
+ customClass: '(string|function)',
+ delay: '(number|object)',
+ fallbackPlacements: 'array',
+ html: 'boolean',
+ offset: '(array|string|function)',
+ placement: '(string|function)',
+ popperConfig: '(null|object|function)',
+ sanitize: 'boolean',
+ sanitizeFn: '(null|function)',
+ selector: '(string|boolean)',
+ template: 'string',
+ title: '(string|element|function)',
+ trigger: 'string'
+ };
+ class Gt extends M {
+ constructor(e, t) {
+ if (void 0 === kt)
+ throw new TypeError(
+ "Bootstrap's tooltips require Popper (https://popper.js.org)"
+ );
+ super(e, t),
+ (this._isEnabled = !0),
+ (this._timeout = 0),
+ (this._isHovered = null),
+ (this._activeTrigger = {}),
+ (this._popper = null),
+ (this._templateFactory = null),
+ (this._newContent = null),
+ (this.tip = null),
+ this._setListeners(),
+ this._config.selector || this._fixTitle();
+ }
+ static get Default() {
+ return Qt;
+ }
+ static get DefaultType() {
+ return Xt;
+ }
+ static get NAME() {
+ return 'tooltip';
+ }
+ enable() {
+ this._isEnabled = !0;
+ }
+ disable() {
+ this._isEnabled = !1;
+ }
+ toggleEnabled() {
+ this._isEnabled = !this._isEnabled;
+ }
+ toggle() {
+ this._isEnabled &&
+ ((this._activeTrigger.click = !this._activeTrigger.click),
+ this._isShown() ? this._leave() : this._enter());
+ }
+ dispose() {
+ clearTimeout(this._timeout),
+ S.off(this._element.closest(Rt), Vt, this._hideModalHandler),
+ this._element.getAttribute('data-bs-original-title') &&
+ this._element.setAttribute(
+ 'title',
+ this._element.getAttribute('data-bs-original-title')
+ ),
+ this._disposePopper(),
+ super.dispose();
+ }
+ show() {
+ if ('none' === this._element.style.display)
+ throw new Error('Please use show on visible elements');
+ if (!this._isWithContent() || !this._isEnabled) return;
+ const e = S.trigger(this._element, this.constructor.eventName('show')),
+ t = (
+ s(this._element) || this._element.ownerDocument.documentElement
+ ).contains(this._element);
+ if (e.defaultPrevented || !t) return;
+ this._disposePopper();
+ const n = this._getTipElement();
+ this._element.setAttribute('aria-describedby', n.getAttribute('id'));
+ const { container: i } = this._config;
+ if (
+ (this._element.ownerDocument.documentElement.contains(this.tip) ||
+ (i.append(n),
+ S.trigger(this._element, this.constructor.eventName('inserted'))),
+ (this._popper = this._createPopper(n)),
+ n.classList.add(Wt),
+ 'ontouchstart' in document.documentElement)
+ )
+ for (const e of [].concat(...document.body.children))
+ S.on(e, 'mouseover', a);
+ this._queueCallback(
+ () => {
+ S.trigger(this._element, this.constructor.eventName('shown')),
+ !1 === this._isHovered && this._leave(),
+ (this._isHovered = !1);
+ },
+ this.tip,
+ this._isAnimated()
+ );
+ }
+ hide() {
+ if (!this._isShown()) return;
+ if (
+ S.trigger(this._element, this.constructor.eventName('hide'))
+ .defaultPrevented
+ )
+ return;
+ if (
+ (this._getTipElement().classList.remove(Wt),
+ 'ontouchstart' in document.documentElement)
+ )
+ for (const e of [].concat(...document.body.children))
+ S.off(e, 'mouseover', a);
+ (this._activeTrigger.click = !1),
+ (this._activeTrigger[Ut] = !1),
+ (this._activeTrigger[Yt] = !1),
+ (this._isHovered = null);
+ this._queueCallback(
+ () => {
+ this._isWithActiveTrigger() ||
+ (this._isHovered || this._disposePopper(),
+ this._element.removeAttribute('aria-describedby'),
+ S.trigger(this._element, this.constructor.eventName('hidden')));
+ },
+ this.tip,
+ this._isAnimated()
+ );
+ }
+ update() {
+ this._popper && this._popper.update();
+ }
+ _isWithContent() {
+ return Boolean(this._getTitle());
+ }
+ _getTipElement() {
+ return (
+ this.tip ||
+ (this.tip = this._createTipElement(
+ this._newContent || this._getContentForTemplate()
+ )),
+ this.tip
+ );
+ }
+ _createTipElement(e) {
+ const t = this._getTemplateFactory(e).toHtml();
+ if (!t) return null;
+ t.classList.remove(zt, Wt),
+ t.classList.add(`bs-${this.constructor.NAME}-auto`);
+ const n = ((e) => {
+ do {
+ e += Math.floor(1e6 * Math.random());
+ } while (document.getElementById(e));
+ return e;
+ })(this.constructor.NAME).toString();
+ return (
+ t.setAttribute('id', n), this._isAnimated() && t.classList.add(zt), t
+ );
+ }
+ setContent(e) {
+ (this._newContent = e),
+ this._isShown() && (this._disposePopper(), this.show());
+ }
+ _getTemplateFactory(e) {
+ return (
+ this._templateFactory
+ ? this._templateFactory.changeContent(e)
+ : (this._templateFactory = new Ht({
+ ...this._config,
+ content: e,
+ extraClass: this._resolvePossibleFunction(
+ this._config.customClass
+ )
+ })),
+ this._templateFactory
+ );
+ }
+ _getContentForTemplate() {
+ return { [qt]: this._getTitle() };
+ }
+ _getTitle() {
+ return (
+ this._resolvePossibleFunction(this._config.title) ||
+ this._element.getAttribute('data-bs-original-title')
+ );
+ }
+ _initializeOnDelegatedTarget(e) {
+ return this.constructor.getOrCreateInstance(
+ e.delegateTarget,
+ this._getDelegateConfig()
+ );
+ }
+ _isAnimated() {
+ return (
+ this._config.animation || (this.tip && this.tip.classList.contains(zt))
+ );
+ }
+ _isShown() {
+ return this.tip && this.tip.classList.contains(Wt);
+ }
+ _createPopper(e) {
+ const t = d(this._config.placement, [this, e, this._element]),
+ n = Kt[t.toUpperCase()];
+ return jt(this._element, e, this._getPopperConfig(n));
+ }
+ _getOffset() {
+ const { offset: e } = this._config;
+ return 'string' == typeof e
+ ? e.split(',').map((e) => Number.parseInt(e, 10))
+ : 'function' == typeof e
+ ? (t) => e(t, this._element)
+ : e;
+ }
+ _resolvePossibleFunction(e) {
+ return d(e, [this._element]);
+ }
+ _getPopperConfig(e) {
+ const t = {
+ placement: e,
+ modifiers: [
+ {
+ name: 'flip',
+ options: { fallbackPlacements: this._config.fallbackPlacements }
+ },
+ { name: 'offset', options: { offset: this._getOffset() } },
+ {
+ name: 'preventOverflow',
+ options: { boundary: this._config.boundary }
+ },
+ {
+ name: 'arrow',
+ options: { element: `.${this.constructor.NAME}-arrow` }
+ },
+ {
+ name: 'preSetPlacement',
+ enabled: !0,
+ phase: 'beforeMain',
+ fn: (e) => {
+ this._getTipElement().setAttribute(
+ 'data-popper-placement',
+ e.state.placement
+ );
+ }
+ }
+ ]
+ };
+ return { ...t, ...d(this._config.popperConfig, [t]) };
+ }
+ _setListeners() {
+ const e = this._config.trigger.split(' ');
+ for (const t of e)
+ if ('click' === t)
+ S.on(
+ this._element,
+ this.constructor.eventName('click'),
+ this._config.selector,
+ (e) => {
+ this._initializeOnDelegatedTarget(e).toggle();
+ }
+ );
+ else if ('manual' !== t) {
+ const e =
+ t === Yt
+ ? this.constructor.eventName('mouseenter')
+ : this.constructor.eventName('focusin'),
+ n =
+ t === Yt
+ ? this.constructor.eventName('mouseleave')
+ : this.constructor.eventName('focusout');
+ S.on(this._element, e, this._config.selector, (e) => {
+ const t = this._initializeOnDelegatedTarget(e);
+ (t._activeTrigger['focusin' === e.type ? Ut : Yt] = !0), t._enter();
+ }),
+ S.on(this._element, n, this._config.selector, (e) => {
+ const t = this._initializeOnDelegatedTarget(e);
+ (t._activeTrigger['focusout' === e.type ? Ut : Yt] =
+ t._element.contains(e.relatedTarget)),
+ t._leave();
+ });
+ }
+ (this._hideModalHandler = () => {
+ this._element && this.hide();
+ }),
+ S.on(this._element.closest(Rt), Vt, this._hideModalHandler);
+ }
+ _fixTitle() {
+ const e = this._element.getAttribute('title');
+ e &&
+ (this._element.getAttribute('aria-label') ||
+ this._element.textContent.trim() ||
+ this._element.setAttribute('aria-label', e),
+ this._element.setAttribute('data-bs-original-title', e),
+ this._element.removeAttribute('title'));
+ }
+ _enter() {
+ this._isShown() || this._isHovered
+ ? (this._isHovered = !0)
+ : ((this._isHovered = !0),
+ this._setTimeout(() => {
+ this._isHovered && this.show();
+ }, this._config.delay.show));
+ }
+ _leave() {
+ this._isWithActiveTrigger() ||
+ ((this._isHovered = !1),
+ this._setTimeout(() => {
+ this._isHovered || this.hide();
+ }, this._config.delay.hide));
+ }
+ _setTimeout(e, t) {
+ clearTimeout(this._timeout), (this._timeout = setTimeout(e, t));
+ }
+ _isWithActiveTrigger() {
+ return Object.values(this._activeTrigger).includes(!0);
+ }
+ _getConfig(e) {
+ const t = P.getDataAttributes(this._element);
+ for (const e of Object.keys(t)) $t.has(e) && delete t[e];
+ return (
+ (e = { ...t, ...('object' == typeof e && e ? e : {}) }),
+ (e = this._mergeConfigObj(e)),
+ (e = this._configAfterMerge(e)),
+ this._typeCheckConfig(e),
+ e
+ );
+ }
+ _configAfterMerge(e) {
+ return (
+ (e.container = !1 === e.container ? document.body : r(e.container)),
+ 'number' == typeof e.delay &&
+ (e.delay = { show: e.delay, hide: e.delay }),
+ 'number' == typeof e.title && (e.title = e.title.toString()),
+ 'number' == typeof e.content && (e.content = e.content.toString()),
+ e
+ );
+ }
+ _getDelegateConfig() {
+ const e = {};
+ for (const [t, n] of Object.entries(this._config))
+ this.constructor.Default[t] !== n && (e[t] = n);
+ return (e.selector = !1), (e.trigger = 'manual'), e;
+ }
+ _disposePopper() {
+ this._popper && (this._popper.destroy(), (this._popper = null)),
+ this.tip && (this.tip.remove(), (this.tip = null));
+ }
+ static jQueryInterface(e) {
+ return this.each(function () {
+ const t = Gt.getOrCreateInstance(this, e);
+ if ('string' == typeof e) {
+ if (void 0 === t[e]) throw new TypeError(`No method named "${e}"`);
+ t[e]();
+ }
+ });
+ }
+ }
+ function Jt(e, t, n) {
+ if ('function' == typeof e ? e === t : e.has(t))
+ return arguments.length < 3 ? t : n;
+ throw new TypeError('Private element is not present on this object');
+ }
+ function Zt(e, t, n) {
+ return (
+ (t = (function (e) {
+ var t = (function (e, t) {
+ if ('object' != typeof e || !e) return e;
+ var n = e[Symbol.toPrimitive];
+ if (void 0 !== n) {
+ var i = n.call(e, t || 'default');
+ if ('object' != typeof i) return i;
+ throw new TypeError('@@toPrimitive must return a primitive value.');
+ }
+ return ('string' === t ? String : Number)(e);
+ })(e, 'string');
+ return 'symbol' == typeof t ? t : t + '';
+ })(t)) in e
+ ? Object.defineProperty(e, t, {
+ value: n,
+ enumerable: !0,
+ configurable: !0,
+ writable: !0
+ })
+ : (e[t] = n),
+ e
+ );
+ }
+ var en;
+ f(Gt);
+ const tn = document.getElementById('toc-bar'),
+ nn = document.getElementById('toc-solo-trigger'),
+ on = document.getElementsByClassName('toc-trigger'),
+ rn = document.getElementById('toc-popup'),
+ sn = document.getElementById('toc-popup-close'),
+ an = 'overflow-hidden',
+ ln = 'closing';
+ class cn {
+ static initBar() {
+ new IntersectionObserver(
+ (e) => {
+ e.forEach((e) => {
+ tn.classList.toggle('invisible', e.isIntersecting);
+ });
+ },
+ { rootMargin: `-${Jt(cn, this, fn)._}px 0px 0px 0px` }
+ ).observe(nn),
+ (un._ = Jt(cn, this, !1));
+ }
+ static listenAnchors() {
+ [...document.getElementsByClassName('toc-link')].forEach((e) => {
+ e.onclick = () => this.hidePopup();
+ });
+ }
+ static refresh() {
+ Jt(cn, this, un)._ && this.initComponents(),
+ tocbot.refresh(this.options),
+ this.listenAnchors();
+ }
+ static get popupOpened() {
+ return rn.open;
+ }
+ static showPopup() {
+ this.lockScroll(!0), rn.showModal();
+ rn.querySelector('li.is-active-li').scrollIntoView({ block: 'center' });
+ }
+ static hidePopup() {
+ rn.toggleAttribute(ln),
+ rn.addEventListener(
+ 'animationend',
+ () => {
+ rn.toggleAttribute(ln), rn.close();
+ },
+ { once: !0 }
+ ),
+ this.lockScroll(!1);
+ }
+ static lockScroll(e) {
+ document.documentElement.classList.toggle(an, e),
+ document.body.classList.toggle(an, e);
+ }
+ static clickBackdrop(e) {
+ if (rn.hasAttribute(ln)) return;
+ const t = e.target.getBoundingClientRect();
+ (e.clientX < t.left ||
+ e.clientX > t.right ||
+ e.clientY < t.top ||
+ e.clientY > t.bottom) &&
+ this.hidePopup();
+ }
+ static initComponents() {
+ this.initBar(),
+ [...on].forEach((e) => {
+ e.onclick = () => this.showPopup();
+ }),
+ (rn.onclick = (e) => this.clickBackdrop(e)),
+ (sn.onclick = () => this.hidePopup()),
+ (rn.oncancel = (e) => {
+ e.preventDefault(), this.hidePopup();
+ });
+ }
+ static init() {
+ tocbot.init(this.options), this.listenAnchors(), this.initComponents();
+ }
+ }
+ var un = { _: !0 },
+ fn = { _: 48 };
+ Zt(cn, 'options', {
+ tocSelector: '#toc-popup-content',
+ contentSelector: '.content',
+ ignoreSelector: '[data-toc-skip]',
+ headingSelector: 'h2, h3, h4',
+ orderedList: !1,
+ scrollSmooth: !1,
+ collapseDepth: 4,
+ headingsOffset: Jt((en = cn), en, fn)._
+ });
+ Zt(
+ class {
+ static refresh() {
+ tocbot.refresh(this.options);
+ }
+ static init() {
+ document.getElementById('toc-wrapper') && tocbot.init(this.options);
+ }
+ },
+ 'options',
+ {
+ tocSelector: '#toc',
+ contentSelector: '.content',
+ ignoreSelector: '[data-toc-skip]',
+ headingSelector: 'h2, h3, h4',
+ orderedList: !1,
+ scrollSmooth: !1,
+ headingsOffset: 32
+ }
+ ),
+ matchMedia('(min-width: 1200px)'),
+ Theme.getThemeMapper('default', 'dark');
+ const dn = document.getElementById('mode-toggle');
+ const pn = document.getElementById('sidebar'),
+ hn = document.getElementById('sidebar-trigger'),
+ mn = document.getElementById('mask');
+ class gn {
+ static toggle() {
+ (vn._ = Jt(gn, this, !Jt(gn, this, vn)._)),
+ document.body.toggleAttribute('sidebar-display', Jt(gn, this, vn)._),
+ pn.classList.toggle('z-2', Jt(gn, this, vn)._),
+ mn.classList.toggle('d-none', !Jt(gn, this, vn)._);
+ }
+ }
+ var vn = { _: !1 };
+ const bn = document.getElementById('sidebar-trigger'),
+ yn = document.getElementById('search-trigger'),
+ _n = document.getElementById('search-cancel'),
+ wn = document.querySelectorAll('#main-wrapper>.container>.row'),
+ En = document.getElementById('topbar-title'),
+ On = document.getElementById('search'),
+ xn = document.getElementById('search-result-wrapper'),
+ An = document.getElementById('search-results'),
+ Cn = document.getElementById('search-input'),
+ Ln = document.getElementById('search-hints'),
+ Tn = 'd-block',
+ Sn = 'd-none',
+ jn = 'input-focus',
+ kn = 'd-flex';
+ class Dn {
+ static on() {
+ bn.classList.add(Sn),
+ En.classList.add(Sn),
+ yn.classList.add(Sn),
+ On.classList.add(kn),
+ _n.classList.add(Tn);
+ }
+ static off() {
+ _n.classList.remove(Tn),
+ On.classList.remove(kn),
+ bn.classList.remove(Sn),
+ En.classList.remove(Sn),
+ yn.classList.remove(Sn);
+ }
+ }
+ class Pn {
+ static on() {
+ this.resultVisible ||
+ (xn.classList.remove(Sn),
+ wn.forEach((e) => {
+ e.classList.add(Sn);
+ }),
+ (this.resultVisible = !0));
+ }
+ static off() {
+ this.resultVisible &&
+ ((An.innerHTML = ''),
+ Ln.classList.contains(Sn) && Ln.classList.remove(Sn),
+ xn.classList.add(Sn),
+ wn.forEach((e) => {
+ e.classList.remove(Sn);
+ }),
+ (Cn.textContent = ''),
+ (this.resultVisible = !1));
+ }
+ }
+ function Nn() {
+ return _n.classList.contains(Tn);
+ }
+ Zt(Pn, 'resultVisible', !1),
+ dn &&
+ dn.addEventListener('click', () => {
+ Theme.flip();
+ }),
+ (function () {
+ const e = document.getElementById('back-to-top');
+ window.addEventListener('scroll', () => {
+ window.scrollY > 50
+ ? e.classList.add('show')
+ : e.classList.remove('show');
+ }),
+ e.addEventListener('click', () => {
+ window.scrollTo({ top: 0 });
+ });
+ })(),
+ [...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map(
+ (e) => new Gt(e)
+ ),
+ (hn.onclick = mn.onclick = () => gn.toggle()),
+ yn.addEventListener('click', () => {
+ Dn.on(), Pn.on(), Cn.focus();
+ }),
+ _n.addEventListener('click', () => {
+ Dn.off(), Pn.off();
+ }),
+ Cn.addEventListener('focus', () => {
+ On.classList.add(jn);
+ }),
+ Cn.addEventListener('focusout', () => {
+ On.classList.remove(jn);
+ }),
+ Cn.addEventListener('input', () => {
+ '' === Cn.value
+ ? Nn()
+ ? Ln.classList.remove(Sn)
+ : Pn.off()
+ : (Pn.on(), Nn() && Ln.classList.add(Sn));
+ }),
+ [...J].forEach((e) => {
+ const t = 'h_' + e.id.substring(2),
+ n = document.getElementById(t);
+ e.addEventListener('hide.bs.collapse', () => {
+ n &&
+ ((n.querySelector('.iconfont.icon-FolderOpen-1').className =
+ 'iconfont icon-folder'),
+ n.querySelector('.ifrot').classList.add('rotate'),
+ n.classList.remove('hide-border-bottom'));
+ }),
+ e.addEventListener('show.bs.collapse', () => {
+ n &&
+ ((n.querySelector('.iconfont.icon-folder').className =
+ 'iconfont icon-FolderOpen-1'),
+ n.querySelector('.ifrot').classList.remove('rotate'),
+ n.classList.add('hide-border-bottom'));
+ });
+ });
+})();
diff --git a/assets/js/dist/home.min.js b/assets/js/dist/home.min.js
index 5ba98e440a4..0157e0a5511 100644
--- a/assets/js/dist/home.min.js
+++ b/assets/js/dist/home.min.js
@@ -1,4 +1,2892 @@
/*!
* jekyll-theme-chirpy v7.1.1 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/
*/
-!function(){"use strict";const t=new Map;var e={set(e,n,i){t.has(e)||t.set(e,new Map);const o=t.get(e);o.has(n)||0===o.size?o.set(n,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(o.keys())[0]}.`)},get:(e,n)=>t.has(e)&&t.get(e).get(n)||null,remove(e,n){if(!t.has(e))return;const i=t.get(e);i.delete(n),0===i.size&&t.delete(e)}};const n="transitionend",i=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>`#${CSS.escape(e)}`))),t),o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(i(t)):null,s=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?s(t.parentNode):null},a=()=>{},l=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,c=[],u=()=>"rtl"===document.documentElement.dir,f=t=>{var e;e=()=>{const e=l();if(e){const n=t.NAME,i=e.fn[n];e.fn[n]=t.jQueryInterface,e.fn[n].Constructor=t,e.fn[n].noConflict=()=>(e.fn[n]=i,t.jQueryInterface)}},"loading"===document.readyState?(c.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of c)t()})),c.push(e)):e()},d=function(t){let e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t;return"function"==typeof t?t(...arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]):e},p=function(t,e){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void d(t);const i=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:n}=window.getComputedStyle(t);const i=Number.parseFloat(e),o=Number.parseFloat(n);return i||o?(e=e.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(n))):0})(e)+5;let o=!1;const r=i=>{let{target:s}=i;s===e&&(o=!0,e.removeEventListener(n,r),d(t))};e.addEventListener(n,r),setTimeout((()=>{o||e.dispatchEvent(new Event(n))}),i)},h=/[^.]*(?=\..*)\.|.*/,m=/\..*/,g=/::\d+$/,v={};let b=1;const y={mouseenter:"mouseover",mouseleave:"mouseout"},_=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function w(t,e){return e&&`${e}::${b++}`||t.uidEvent||b++}function E(t){const e=w(t);return t.uidEvent=e,v[e]=v[e]||{},v[e]}function O(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===n))}function x(t,e,n){const i="string"==typeof e,o=i?n:e||n;let r=L(t);return _.has(r)||(r=t),[i,o,r]}function A(t,e,n,i,o){if("string"!=typeof e||!t)return;let[r,s,a]=x(e,n,i);if(e in y){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};s=t(s)}const l=E(t),c=l[a]||(l[a]={}),u=O(c,s,r?n:null);if(u)return void(u.oneOff=u.oneOff&&o);const f=w(s,e.replace(h,"")),d=r?function(t,e,n){return function i(o){const r=t.querySelectorAll(e);for(let{target:s}=o;s&&s!==this;s=s.parentNode)for(const a of r)if(a===s)return j(o,{delegateTarget:s}),i.oneOff&&S.off(t,o.type,e,n),n.apply(s,[o])}}(t,n,s):function(t,e){return function n(i){return j(i,{delegateTarget:t}),n.oneOff&&S.off(t,i.type,e),e.apply(t,[i])}}(t,s);d.delegationSelector=r?n:null,d.callable=s,d.oneOff=o,d.uidEvent=f,c[f]=d,t.addEventListener(a,d,r)}function C(t,e,n,i,o){const r=O(e[n],i,o);r&&(t.removeEventListener(n,r,Boolean(o)),delete e[n][r.uidEvent])}function T(t,e,n,i){const o=e[n]||{};for(const[r,s]of Object.entries(o))r.includes(i)&&C(t,e,n,s.callable,s.delegationSelector)}function L(t){return t=t.replace(m,""),y[t]||t}const S={on(t,e,n,i){A(t,e,n,i,!1)},one(t,e,n,i){A(t,e,n,i,!0)},off(t,e,n,i){if("string"!=typeof e||!t)return;const[o,r,s]=x(e,n,i),a=s!==e,l=E(t),c=l[s]||{},u=e.startsWith(".");if(void 0===r){if(u)for(const n of Object.keys(l))T(t,l,n,e.slice(1));for(const[n,i]of Object.entries(c)){const o=n.replace(g,"");a&&!e.includes(o)||C(t,l,s,i.callable,i.delegationSelector)}}else{if(!Object.keys(c).length)return;C(t,l,s,r,o?n:null)}},trigger(t,e,n){if("string"!=typeof e||!t)return null;const i=l();let o=null,r=!0,s=!0,a=!1;e!==L(e)&&i&&(o=i.Event(e,n),i(t).trigger(o),r=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());const c=j(new Event(e,{bubbles:r,cancelable:!0}),n);return a&&c.preventDefault(),s&&t.dispatchEvent(c),c.defaultPrevented&&o&&o.preventDefault(),c}};function j(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(const[n,i]of Object.entries(e))try{t[n]=i}catch{Object.defineProperty(t,n,{configurable:!0,get:()=>i})}return t}function k(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch{return t}}function D(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const P={setDataAttribute(t,e,n){t.setAttribute(`data-bs-${D(e)}`,n)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${D(e)}`)},getDataAttributes(t){if(!t)return{};const e={},n=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const i of n){let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),e[n]=k(t.dataset[i])}return e},getDataAttribute:(t,e)=>k(t.getAttribute(`data-bs-${D(e)}`))};class M{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const n=o(e)?P.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...o(e)?P.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[i,r]of Object.entries(e)){const e=t[i],s=o(e)?"element":null==(n=e)?`${n}`:Object.prototype.toString.call(n).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(r).test(s))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${i}" provided type "${s}" but expected type "${r}".`)}var n}}class N extends M{constructor(t,n){super(),(t=r(t))&&(this._element=t,this._config=this._getConfig(n),e.set(this._element,this.constructor.DATA_KEY,this))}dispose(){e.remove(this._element,this.constructor.DATA_KEY),S.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e){p(t,e,!(arguments.length>2&&void 0!==arguments[2])||arguments[2])}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return e.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.3"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const B=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let n=t.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n=`#${n.split("#")[1]}`),e=n&&"#"!==n?n.trim():null}return e?e.split(",").map((t=>i(t))).join(","):null},I={find(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return[].concat(...Element.prototype.querySelectorAll.call(e,t))},findOne(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return Element.prototype.querySelector.call(e,t)},children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const n=[];let i=t.parentNode.closest(e);for(;i;)n.push(i),i=i.parentNode.closest(e);return n},prev(t,e){let n=t.previousElementSibling;for(;n;){if(n.matches(e))return[n];n=n.previousElementSibling}return[]},next(t,e){let n=t.nextElementSibling;for(;n;){if(n.matches(e))return[n];n=n.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!(t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")))(t)&&(t=>{if(!o(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),n=t.closest("details:not([open])");if(!n)return e;if(n!==t){const e=t.closest("summary");if(e&&e.parentNode!==n)return!1;if(null===e)return!1}return e})(t)))},getSelectorFromElement(t){const e=B(t);return e&&I.findOne(e)?e:null},getElementFromSelector(t){const e=B(t);return e?I.findOne(e):null},getMultipleElementsFromSelector(t){const e=B(t);return e?I.find(e):[]}},F=".bs.collapse",H=`show${F}`,$=`shown${F}`,R=`hide${F}`,z=`hidden${F}`,q=`click${F}.data-api`,W="show",V="collapse",Y="collapsing",U=`:scope .${V} .${V}`,K='[data-bs-toggle="collapse"]',Q={parent:null,toggle:!0},X={parent:"(null|element)",toggle:"boolean"};class G extends N{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const n=I.find(K);for(const t of n){const e=I.getSelectorFromElement(t),n=I.find(e).filter((t=>t===this._element));null!==e&&n.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Q}static get DefaultType(){return X}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>G.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(S.trigger(this._element,H).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(V),this._element.classList.add(Y),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Y),this._element.classList.add(V,W),this._element.style[e]="",S.trigger(this._element,$)}),this._element,!0),this._element.style[e]=`${this._element[n]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(S.trigger(this._element,R).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,this._element.offsetHeight,this._element.classList.add(Y),this._element.classList.remove(V,W);for(const t of this._triggerArray){const e=I.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0;this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Y),this._element.classList.add(V),S.trigger(this._element,z)}),this._element,!0)}_isShown(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._element).classList.contains(W)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=r(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(K);for(const e of t){const t=I.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=I.find(U,this._config.parent);return I.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const n of t)n.classList.toggle("collapsed",!e),n.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const n=G.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===n[t])throw new TypeError(`No method named "${t}"`);n[t]()}}))}}S.on(document,q,K,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of I.getMultipleElementsFromSelector(this))G.getOrCreateInstance(t,{toggle:!1}).toggle()})),f(G),document.getElementsByClassName("collapse");var J="top",Z="bottom",tt="right",et="left",nt="auto",it=[J,Z,tt,et],ot="start",rt="end",st="clippingParents",at="viewport",lt="popper",ct="reference",ut=it.reduce((function(t,e){return t.concat([e+"-"+ot,e+"-"+rt])}),[]),ft=[].concat(it,[nt]).reduce((function(t,e){return t.concat([e,e+"-"+ot,e+"-"+rt])}),[]),dt="beforeRead",pt="read",ht="afterRead",mt="beforeMain",gt="main",vt="afterMain",bt="beforeWrite",yt="write",_t="afterWrite",wt=[dt,pt,ht,mt,gt,vt,bt,yt,_t];function Et(t){return t?(t.nodeName||"").toLowerCase():null}function Ot(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function xt(t){return t instanceof Ot(t).Element||t instanceof Element}function At(t){return t instanceof Ot(t).HTMLElement||t instanceof HTMLElement}function Ct(t){return"undefined"!=typeof ShadowRoot&&(t instanceof Ot(t).ShadowRoot||t instanceof ShadowRoot)}var Tt={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var n=e.styles[t]||{},i=e.attributes[t]||{},o=e.elements[t];At(o)&&Et(o)&&(Object.assign(o.style,n),Object.keys(i).forEach((function(t){var e=i[t];!1===e?o.removeAttribute(t):o.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,n={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,n.popper),e.styles=n,e.elements.arrow&&Object.assign(e.elements.arrow.style,n.arrow),function(){Object.keys(e.elements).forEach((function(t){var i=e.elements[t],o=e.attributes[t]||{},r=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:n[t]).reduce((function(t,e){return t[e]="",t}),{});At(i)&&Et(i)&&(Object.assign(i.style,r),Object.keys(o).forEach((function(t){i.removeAttribute(t)})))}))}},requires:["computeStyles"]};function Lt(t){return t.split("-")[0]}var St=Math.max,jt=Math.min,kt=Math.round;function Dt(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function Pt(){return!/^((?!chrome|android).)*safari/i.test(Dt())}function Mt(t,e,n){void 0===e&&(e=!1),void 0===n&&(n=!1);var i=t.getBoundingClientRect(),o=1,r=1;e&&At(t)&&(o=t.offsetWidth>0&&kt(i.width)/t.offsetWidth||1,r=t.offsetHeight>0&&kt(i.height)/t.offsetHeight||1);var s=(xt(t)?Ot(t):window).visualViewport,a=!Pt()&&n,l=(i.left+(a&&s?s.offsetLeft:0))/o,c=(i.top+(a&&s?s.offsetTop:0))/r,u=i.width/o,f=i.height/r;return{width:u,height:f,top:c,right:l+u,bottom:c+f,left:l,x:l,y:c}}function Nt(t){var e=Mt(t),n=t.offsetWidth,i=t.offsetHeight;return Math.abs(e.width-n)<=1&&(n=e.width),Math.abs(e.height-i)<=1&&(i=e.height),{x:t.offsetLeft,y:t.offsetTop,width:n,height:i}}function Bt(t,e){var n=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(n&&Ct(n)){var i=e;do{if(i&&t.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function It(t){return Ot(t).getComputedStyle(t)}function Ft(t){return["table","td","th"].indexOf(Et(t))>=0}function Ht(t){return((xt(t)?t.ownerDocument:t.document)||window.document).documentElement}function $t(t){return"html"===Et(t)?t:t.assignedSlot||t.parentNode||(Ct(t)?t.host:null)||Ht(t)}function Rt(t){return At(t)&&"fixed"!==It(t).position?t.offsetParent:null}function zt(t){for(var e=Ot(t),n=Rt(t);n&&Ft(n)&&"static"===It(n).position;)n=Rt(n);return n&&("html"===Et(n)||"body"===Et(n)&&"static"===It(n).position)?e:n||function(t){var e=/firefox/i.test(Dt());if(/Trident/i.test(Dt())&&At(t)&&"fixed"===It(t).position)return null;var n=$t(t);for(Ct(n)&&(n=n.host);At(n)&&["html","body"].indexOf(Et(n))<0;){var i=It(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||e&&"filter"===i.willChange||e&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(t)||e}function qt(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Wt(t,e,n){return St(t,jt(e,n))}function Vt(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function Yt(t,e){return e.reduce((function(e,n){return e[n]=t,e}),{})}var Ut={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,n=t.state,i=t.name,o=t.options,r=n.elements.arrow,s=n.modifiersData.popperOffsets,a=Lt(n.placement),l=qt(a),c=[et,tt].indexOf(a)>=0?"height":"width";if(r&&s){var u=function(t,e){return Vt("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:Yt(t,it))}(o.padding,n),f=Nt(r),d="y"===l?J:et,p="y"===l?Z:tt,h=n.rects.reference[c]+n.rects.reference[l]-s[l]-n.rects.popper[c],m=s[l]-n.rects.reference[l],g=zt(r),v=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,b=h/2-m/2,y=u[d],_=v-f[c]-u[p],w=v/2-f[c]/2+b,E=Wt(y,w,_),O=l;n.modifiersData[i]=((e={})[O]=E,e.centerOffset=E-w,e)}},effect:function(t){var e=t.state,n=t.options.element,i=void 0===n?"[data-popper-arrow]":n;null!=i&&("string"!=typeof i||(i=e.elements.popper.querySelector(i)))&&Bt(e.elements.popper,i)&&(e.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Kt(t){return t.split("-")[1]}var Qt={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Xt(t){var e,n=t.popper,i=t.popperRect,o=t.placement,r=t.variation,s=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,u=t.roundOffsets,f=t.isFixed,d=s.x,p=void 0===d?0:d,h=s.y,m=void 0===h?0:h,g="function"==typeof u?u({x:p,y:m}):{x:p,y:m};p=g.x,m=g.y;var v=s.hasOwnProperty("x"),b=s.hasOwnProperty("y"),y=et,_=J,w=window;if(c){var E=zt(n),O="clientHeight",x="clientWidth";if(E===Ot(n)&&"static"!==It(E=Ht(n)).position&&"absolute"===a&&(O="scrollHeight",x="scrollWidth"),o===J||(o===et||o===tt)&&r===rt)_=Z,m-=(f&&E===w&&w.visualViewport?w.visualViewport.height:E[O])-i.height,m*=l?1:-1;if(o===et||(o===J||o===Z)&&r===rt)y=tt,p-=(f&&E===w&&w.visualViewport?w.visualViewport.width:E[x])-i.width,p*=l?1:-1}var A,C=Object.assign({position:a},c&&Qt),T=!0===u?function(t,e){var n=t.x,i=t.y,o=e.devicePixelRatio||1;return{x:kt(n*o)/o||0,y:kt(i*o)/o||0}}({x:p,y:m},Ot(n)):{x:p,y:m};return p=T.x,m=T.y,l?Object.assign({},C,((A={})[_]=b?"0":"",A[y]=v?"0":"",A.transform=(w.devicePixelRatio||1)<=1?"translate("+p+"px, "+m+"px)":"translate3d("+p+"px, "+m+"px, 0)",A)):Object.assign({},C,((e={})[_]=b?m+"px":"",e[y]=v?p+"px":"",e.transform="",e))}var Gt={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,n=t.options,i=n.gpuAcceleration,o=void 0===i||i,r=n.adaptive,s=void 0===r||r,a=n.roundOffsets,l=void 0===a||a,c={placement:Lt(e.placement),variation:Kt(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:o,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,Xt(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:s,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,Xt(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}},Jt={passive:!0};var Zt={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,n=t.instance,i=t.options,o=i.scroll,r=void 0===o||o,s=i.resize,a=void 0===s||s,l=Ot(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return r&&c.forEach((function(t){t.addEventListener("scroll",n.update,Jt)})),a&&l.addEventListener("resize",n.update,Jt),function(){r&&c.forEach((function(t){t.removeEventListener("scroll",n.update,Jt)})),a&&l.removeEventListener("resize",n.update,Jt)}},data:{}},te={left:"right",right:"left",bottom:"top",top:"bottom"};function ee(t){return t.replace(/left|right|bottom|top/g,(function(t){return te[t]}))}var ne={start:"end",end:"start"};function ie(t){return t.replace(/start|end/g,(function(t){return ne[t]}))}function oe(t){var e=Ot(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function re(t){return Mt(Ht(t)).left+oe(t).scrollLeft}function se(t){var e=It(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function ae(t){return["html","body","#document"].indexOf(Et(t))>=0?t.ownerDocument.body:At(t)&&se(t)?t:ae($t(t))}function le(t,e){var n;void 0===e&&(e=[]);var i=ae(t),o=i===(null==(n=t.ownerDocument)?void 0:n.body),r=Ot(i),s=o?[r].concat(r.visualViewport||[],se(i)?i:[]):i,a=e.concat(s);return o?a:a.concat(le($t(s)))}function ce(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function ue(t,e,n){return e===at?ce(function(t,e){var n=Ot(t),i=Ht(t),o=n.visualViewport,r=i.clientWidth,s=i.clientHeight,a=0,l=0;if(o){r=o.width,s=o.height;var c=Pt();(c||!c&&"fixed"===e)&&(a=o.offsetLeft,l=o.offsetTop)}return{width:r,height:s,x:a+re(t),y:l}}(t,n)):xt(e)?function(t,e){var n=Mt(t,!1,"fixed"===e);return n.top=n.top+t.clientTop,n.left=n.left+t.clientLeft,n.bottom=n.top+t.clientHeight,n.right=n.left+t.clientWidth,n.width=t.clientWidth,n.height=t.clientHeight,n.x=n.left,n.y=n.top,n}(e,n):ce(function(t){var e,n=Ht(t),i=oe(t),o=null==(e=t.ownerDocument)?void 0:e.body,r=St(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=St(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-i.scrollLeft+re(t),l=-i.scrollTop;return"rtl"===It(o||n).direction&&(a+=St(n.clientWidth,o?o.clientWidth:0)-r),{width:r,height:s,x:a,y:l}}(Ht(t)))}function fe(t,e,n,i){var o="clippingParents"===e?function(t){var e=le($t(t)),n=["absolute","fixed"].indexOf(It(t).position)>=0&&At(t)?zt(t):t;return xt(n)?e.filter((function(t){return xt(t)&&Bt(t,n)&&"body"!==Et(t)})):[]}(t):[].concat(e),r=[].concat(o,[n]),s=r[0],a=r.reduce((function(e,n){var o=ue(t,n,i);return e.top=St(o.top,e.top),e.right=jt(o.right,e.right),e.bottom=jt(o.bottom,e.bottom),e.left=St(o.left,e.left),e}),ue(t,s,i));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function de(t){var e,n=t.reference,i=t.element,o=t.placement,r=o?Lt(o):null,s=o?Kt(o):null,a=n.x+n.width/2-i.width/2,l=n.y+n.height/2-i.height/2;switch(r){case J:e={x:a,y:n.y-i.height};break;case Z:e={x:a,y:n.y+n.height};break;case tt:e={x:n.x+n.width,y:l};break;case et:e={x:n.x-i.width,y:l};break;default:e={x:n.x,y:n.y}}var c=r?qt(r):null;if(null!=c){var u="y"===c?"height":"width";switch(s){case ot:e[c]=e[c]-(n[u]/2-i[u]/2);break;case rt:e[c]=e[c]+(n[u]/2-i[u]/2)}}return e}function pe(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=void 0===i?t.placement:i,r=n.strategy,s=void 0===r?t.strategy:r,a=n.boundary,l=void 0===a?st:a,c=n.rootBoundary,u=void 0===c?at:c,f=n.elementContext,d=void 0===f?lt:f,p=n.altBoundary,h=void 0!==p&&p,m=n.padding,g=void 0===m?0:m,v=Vt("number"!=typeof g?g:Yt(g,it)),b=d===lt?ct:lt,y=t.rects.popper,_=t.elements[h?b:d],w=fe(xt(_)?_:_.contextElement||Ht(t.elements.popper),l,u,s),E=Mt(t.elements.reference),O=de({reference:E,element:y,placement:o}),x=ce(Object.assign({},y,O)),A=d===lt?x:E,C={top:w.top-A.top+v.top,bottom:A.bottom-w.bottom+v.bottom,left:w.left-A.left+v.left,right:A.right-w.right+v.right},T=t.modifiersData.offset;if(d===lt&&T){var L=T[o];Object.keys(C).forEach((function(t){var e=[tt,Z].indexOf(t)>=0?1:-1,n=[J,Z].indexOf(t)>=0?"y":"x";C[t]+=L[n]*e}))}return C}function he(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=n.boundary,r=n.rootBoundary,s=n.padding,a=n.flipVariations,l=n.allowedAutoPlacements,c=void 0===l?ft:l,u=Kt(i),f=u?a?ut:ut.filter((function(t){return Kt(t)===u})):it,d=f.filter((function(t){return c.indexOf(t)>=0}));0===d.length&&(d=f);var p=d.reduce((function(e,n){return e[n]=pe(t,{placement:n,boundary:o,rootBoundary:r,padding:s})[Lt(n)],e}),{});return Object.keys(p).sort((function(t,e){return p[t]-p[e]}))}var me={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name;if(!e.modifiersData[i]._skip){for(var o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0===s||s,l=n.fallbackPlacements,c=n.padding,u=n.boundary,f=n.rootBoundary,d=n.altBoundary,p=n.flipVariations,h=void 0===p||p,m=n.allowedAutoPlacements,g=e.options.placement,v=Lt(g),b=l||(v===g||!h?[ee(g)]:function(t){if(Lt(t)===nt)return[];var e=ee(t);return[ie(t),e,ie(e)]}(g)),y=[g].concat(b).reduce((function(t,n){return t.concat(Lt(n)===nt?he(e,{placement:n,boundary:u,rootBoundary:f,padding:c,flipVariations:h,allowedAutoPlacements:m}):n)}),[]),_=e.rects.reference,w=e.rects.popper,E=new Map,O=!0,x=y[0],A=0;A
',title:"",trigger:"hover focus"},Qe={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class Xe extends N{constructor(t,e){if(void 0===je)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Ke}static get DefaultType(){return Qe}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),S.off(this._element.closest(qe),We,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=S.trigger(this._element,this.constructor.eventName("show")),e=(s(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(n),S.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(n),n.classList.add(Re),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))S.on(t,"mouseover",a);this._queueCallback((()=>{S.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(!this._isShown())return;if(S.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove(Re),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))S.off(t,"mouseover",a);this._activeTrigger.click=!1,this._activeTrigger[Ye]=!1,this._activeTrigger[Ve]=!1,this._isHovered=null;this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),S.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove($e,Re),e.classList.add(`bs-${this.constructor.NAME}-auto`);const n=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",n),this._isAnimated()&&e.classList.add($e),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Fe({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[ze]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains($e)}_isShown(){return this.tip&&this.tip.classList.contains(Re)}_createPopper(t){const e=d(this._config.placement,[this,t,this._element]),n=Ue[e.toUpperCase()];return Se(this._element,t,this._getPopperConfig(n))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return d(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,...d(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)S.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===Ve?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n=e===Ve?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");S.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?Ye:Ve]=!0,e._enter()})),S.on(this._element,n,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?Ye:Ve]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},S.on(this._element.closest(qe),We,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=P.getDataAttributes(this._element);for(const t of Object.keys(e))He.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:r(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,n]of Object.entries(this._config))this.constructor.Default[e]!==n&&(t[e]=n);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=Xe.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}f(Xe);const Ge="data-src",Je="data-lqip",Ze={SHIMMER:"shimmer",BLUR:"blur"};function tn(t){this.parentElement.classList.remove(t)}function en(){this.complete&&(this.hasAttribute(Je)?tn.call(this,Ze.BLUR):tn.call(this,Ze.SHIMMER))}function nn(){const t=this.getAttribute(Ge);this.setAttribute("src",encodeURI(t)),this.removeAttribute(Ge)}class on{static get attrTimestamp(){return"data-ts"}static get attrDateFormat(){return"data-df"}static get locale(){return document.documentElement.getAttribute("lang").substring(0,2)}static getTimestamp(t){return Number(t.getAttribute(this.attrTimestamp))}static getDateFormat(t){return t.getAttribute(this.attrDateFormat)}}function rn(t,e,n){if("function"==typeof t?t===e:t.has(e))return arguments.length<3?e:n;throw new TypeError("Private element is not present on this object")}function sn(t,e,n){return(e=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,e||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var an;const ln=document.getElementById("toc-bar"),cn=document.getElementById("toc-solo-trigger"),un=document.getElementsByClassName("toc-trigger"),fn=document.getElementById("toc-popup"),dn=document.getElementById("toc-popup-close"),pn="overflow-hidden",hn="closing";class mn{static initBar(){new IntersectionObserver((t=>{t.forEach((t=>{ln.classList.toggle("invisible",t.isIntersecting)}))}),{rootMargin:`-${rn(mn,this,vn)._}px 0px 0px 0px`}).observe(cn),gn._=rn(mn,this,!1)}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach((t=>{t.onclick=()=>this.hidePopup()}))}static refresh(){rn(mn,this,gn)._&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static get popupOpened(){return fn.open}static showPopup(){this.lockScroll(!0),fn.showModal();fn.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(){fn.toggleAttribute(hn),fn.addEventListener("animationend",(()=>{fn.toggleAttribute(hn),fn.close()}),{once:!0}),this.lockScroll(!1)}static lockScroll(t){document.documentElement.classList.toggle(pn,t),document.body.classList.toggle(pn,t)}static clickBackdrop(t){if(fn.hasAttribute(hn))return;const e=t.target.getBoundingClientRect();(t.clientX
',
+ title: '',
+ trigger: 'hover focus'
+ },
+ Qe = {
+ allowList: 'object',
+ animation: 'boolean',
+ boundary: '(string|element)',
+ container: '(string|element|boolean)',
+ customClass: '(string|function)',
+ delay: '(number|object)',
+ fallbackPlacements: 'array',
+ html: 'boolean',
+ offset: '(array|string|function)',
+ placement: '(string|function)',
+ popperConfig: '(null|object|function)',
+ sanitize: 'boolean',
+ sanitizeFn: '(null|function)',
+ selector: '(string|boolean)',
+ template: 'string',
+ title: '(string|element|function)',
+ trigger: 'string'
+ };
+ class Xe extends N {
+ constructor(t, e) {
+ if (void 0 === je)
+ throw new TypeError(
+ "Bootstrap's tooltips require Popper (https://popper.js.org)"
+ );
+ super(t, e),
+ (this._isEnabled = !0),
+ (this._timeout = 0),
+ (this._isHovered = null),
+ (this._activeTrigger = {}),
+ (this._popper = null),
+ (this._templateFactory = null),
+ (this._newContent = null),
+ (this.tip = null),
+ this._setListeners(),
+ this._config.selector || this._fixTitle();
+ }
+ static get Default() {
+ return Ke;
+ }
+ static get DefaultType() {
+ return Qe;
+ }
+ static get NAME() {
+ return 'tooltip';
+ }
+ enable() {
+ this._isEnabled = !0;
+ }
+ disable() {
+ this._isEnabled = !1;
+ }
+ toggleEnabled() {
+ this._isEnabled = !this._isEnabled;
+ }
+ toggle() {
+ this._isEnabled &&
+ ((this._activeTrigger.click = !this._activeTrigger.click),
+ this._isShown() ? this._leave() : this._enter());
+ }
+ dispose() {
+ clearTimeout(this._timeout),
+ S.off(this._element.closest(qe), We, this._hideModalHandler),
+ this._element.getAttribute('data-bs-original-title') &&
+ this._element.setAttribute(
+ 'title',
+ this._element.getAttribute('data-bs-original-title')
+ ),
+ this._disposePopper(),
+ super.dispose();
+ }
+ show() {
+ if ('none' === this._element.style.display)
+ throw new Error('Please use show on visible elements');
+ if (!this._isWithContent() || !this._isEnabled) return;
+ const t = S.trigger(this._element, this.constructor.eventName('show')),
+ e = (
+ s(this._element) || this._element.ownerDocument.documentElement
+ ).contains(this._element);
+ if (t.defaultPrevented || !e) return;
+ this._disposePopper();
+ const n = this._getTipElement();
+ this._element.setAttribute('aria-describedby', n.getAttribute('id'));
+ const { container: i } = this._config;
+ if (
+ (this._element.ownerDocument.documentElement.contains(this.tip) ||
+ (i.append(n),
+ S.trigger(this._element, this.constructor.eventName('inserted'))),
+ (this._popper = this._createPopper(n)),
+ n.classList.add(Re),
+ 'ontouchstart' in document.documentElement)
+ )
+ for (const t of [].concat(...document.body.children))
+ S.on(t, 'mouseover', a);
+ this._queueCallback(
+ () => {
+ S.trigger(this._element, this.constructor.eventName('shown')),
+ !1 === this._isHovered && this._leave(),
+ (this._isHovered = !1);
+ },
+ this.tip,
+ this._isAnimated()
+ );
+ }
+ hide() {
+ if (!this._isShown()) return;
+ if (
+ S.trigger(this._element, this.constructor.eventName('hide'))
+ .defaultPrevented
+ )
+ return;
+ if (
+ (this._getTipElement().classList.remove(Re),
+ 'ontouchstart' in document.documentElement)
+ )
+ for (const t of [].concat(...document.body.children))
+ S.off(t, 'mouseover', a);
+ (this._activeTrigger.click = !1),
+ (this._activeTrigger[Ye] = !1),
+ (this._activeTrigger[Ve] = !1),
+ (this._isHovered = null);
+ this._queueCallback(
+ () => {
+ this._isWithActiveTrigger() ||
+ (this._isHovered || this._disposePopper(),
+ this._element.removeAttribute('aria-describedby'),
+ S.trigger(this._element, this.constructor.eventName('hidden')));
+ },
+ this.tip,
+ this._isAnimated()
+ );
+ }
+ update() {
+ this._popper && this._popper.update();
+ }
+ _isWithContent() {
+ return Boolean(this._getTitle());
+ }
+ _getTipElement() {
+ return (
+ this.tip ||
+ (this.tip = this._createTipElement(
+ this._newContent || this._getContentForTemplate()
+ )),
+ this.tip
+ );
+ }
+ _createTipElement(t) {
+ const e = this._getTemplateFactory(t).toHtml();
+ if (!e) return null;
+ e.classList.remove($e, Re),
+ e.classList.add(`bs-${this.constructor.NAME}-auto`);
+ const n = ((t) => {
+ do {
+ t += Math.floor(1e6 * Math.random());
+ } while (document.getElementById(t));
+ return t;
+ })(this.constructor.NAME).toString();
+ return (
+ e.setAttribute('id', n), this._isAnimated() && e.classList.add($e), e
+ );
+ }
+ setContent(t) {
+ (this._newContent = t),
+ this._isShown() && (this._disposePopper(), this.show());
+ }
+ _getTemplateFactory(t) {
+ return (
+ this._templateFactory
+ ? this._templateFactory.changeContent(t)
+ : (this._templateFactory = new Fe({
+ ...this._config,
+ content: t,
+ extraClass: this._resolvePossibleFunction(
+ this._config.customClass
+ )
+ })),
+ this._templateFactory
+ );
+ }
+ _getContentForTemplate() {
+ return { [ze]: this._getTitle() };
+ }
+ _getTitle() {
+ return (
+ this._resolvePossibleFunction(this._config.title) ||
+ this._element.getAttribute('data-bs-original-title')
+ );
+ }
+ _initializeOnDelegatedTarget(t) {
+ return this.constructor.getOrCreateInstance(
+ t.delegateTarget,
+ this._getDelegateConfig()
+ );
+ }
+ _isAnimated() {
+ return (
+ this._config.animation || (this.tip && this.tip.classList.contains($e))
+ );
+ }
+ _isShown() {
+ return this.tip && this.tip.classList.contains(Re);
+ }
+ _createPopper(t) {
+ const e = d(this._config.placement, [this, t, this._element]),
+ n = Ue[e.toUpperCase()];
+ return Se(this._element, t, this._getPopperConfig(n));
+ }
+ _getOffset() {
+ const { offset: t } = this._config;
+ return 'string' == typeof t
+ ? t.split(',').map((t) => Number.parseInt(t, 10))
+ : 'function' == typeof t
+ ? (e) => t(e, this._element)
+ : t;
+ }
+ _resolvePossibleFunction(t) {
+ return d(t, [this._element]);
+ }
+ _getPopperConfig(t) {
+ const e = {
+ placement: t,
+ modifiers: [
+ {
+ name: 'flip',
+ options: { fallbackPlacements: this._config.fallbackPlacements }
+ },
+ { name: 'offset', options: { offset: this._getOffset() } },
+ {
+ name: 'preventOverflow',
+ options: { boundary: this._config.boundary }
+ },
+ {
+ name: 'arrow',
+ options: { element: `.${this.constructor.NAME}-arrow` }
+ },
+ {
+ name: 'preSetPlacement',
+ enabled: !0,
+ phase: 'beforeMain',
+ fn: (t) => {
+ this._getTipElement().setAttribute(
+ 'data-popper-placement',
+ t.state.placement
+ );
+ }
+ }
+ ]
+ };
+ return { ...e, ...d(this._config.popperConfig, [e]) };
+ }
+ _setListeners() {
+ const t = this._config.trigger.split(' ');
+ for (const e of t)
+ if ('click' === e)
+ S.on(
+ this._element,
+ this.constructor.eventName('click'),
+ this._config.selector,
+ (t) => {
+ this._initializeOnDelegatedTarget(t).toggle();
+ }
+ );
+ else if ('manual' !== e) {
+ const t =
+ e === Ve
+ ? this.constructor.eventName('mouseenter')
+ : this.constructor.eventName('focusin'),
+ n =
+ e === Ve
+ ? this.constructor.eventName('mouseleave')
+ : this.constructor.eventName('focusout');
+ S.on(this._element, t, this._config.selector, (t) => {
+ const e = this._initializeOnDelegatedTarget(t);
+ (e._activeTrigger['focusin' === t.type ? Ye : Ve] = !0), e._enter();
+ }),
+ S.on(this._element, n, this._config.selector, (t) => {
+ const e = this._initializeOnDelegatedTarget(t);
+ (e._activeTrigger['focusout' === t.type ? Ye : Ve] =
+ e._element.contains(t.relatedTarget)),
+ e._leave();
+ });
+ }
+ (this._hideModalHandler = () => {
+ this._element && this.hide();
+ }),
+ S.on(this._element.closest(qe), We, this._hideModalHandler);
+ }
+ _fixTitle() {
+ const t = this._element.getAttribute('title');
+ t &&
+ (this._element.getAttribute('aria-label') ||
+ this._element.textContent.trim() ||
+ this._element.setAttribute('aria-label', t),
+ this._element.setAttribute('data-bs-original-title', t),
+ this._element.removeAttribute('title'));
+ }
+ _enter() {
+ this._isShown() || this._isHovered
+ ? (this._isHovered = !0)
+ : ((this._isHovered = !0),
+ this._setTimeout(() => {
+ this._isHovered && this.show();
+ }, this._config.delay.show));
+ }
+ _leave() {
+ this._isWithActiveTrigger() ||
+ ((this._isHovered = !1),
+ this._setTimeout(() => {
+ this._isHovered || this.hide();
+ }, this._config.delay.hide));
+ }
+ _setTimeout(t, e) {
+ clearTimeout(this._timeout), (this._timeout = setTimeout(t, e));
+ }
+ _isWithActiveTrigger() {
+ return Object.values(this._activeTrigger).includes(!0);
+ }
+ _getConfig(t) {
+ const e = P.getDataAttributes(this._element);
+ for (const t of Object.keys(e)) He.has(t) && delete e[t];
+ return (
+ (t = { ...e, ...('object' == typeof t && t ? t : {}) }),
+ (t = this._mergeConfigObj(t)),
+ (t = this._configAfterMerge(t)),
+ this._typeCheckConfig(t),
+ t
+ );
+ }
+ _configAfterMerge(t) {
+ return (
+ (t.container = !1 === t.container ? document.body : r(t.container)),
+ 'number' == typeof t.delay &&
+ (t.delay = { show: t.delay, hide: t.delay }),
+ 'number' == typeof t.title && (t.title = t.title.toString()),
+ 'number' == typeof t.content && (t.content = t.content.toString()),
+ t
+ );
+ }
+ _getDelegateConfig() {
+ const t = {};
+ for (const [e, n] of Object.entries(this._config))
+ this.constructor.Default[e] !== n && (t[e] = n);
+ return (t.selector = !1), (t.trigger = 'manual'), t;
+ }
+ _disposePopper() {
+ this._popper && (this._popper.destroy(), (this._popper = null)),
+ this.tip && (this.tip.remove(), (this.tip = null));
+ }
+ static jQueryInterface(t) {
+ return this.each(function () {
+ const e = Xe.getOrCreateInstance(this, t);
+ if ('string' == typeof t) {
+ if (void 0 === e[t]) throw new TypeError(`No method named "${t}"`);
+ e[t]();
+ }
+ });
+ }
+ }
+ f(Xe);
+ const Ge = 'data-src',
+ Je = 'data-lqip',
+ Ze = { SHIMMER: 'shimmer', BLUR: 'blur' };
+ function tn(t) {
+ this.parentElement.classList.remove(t);
+ }
+ function en() {
+ this.complete &&
+ (this.hasAttribute(Je)
+ ? tn.call(this, Ze.BLUR)
+ : tn.call(this, Ze.SHIMMER));
+ }
+ function nn() {
+ const t = this.getAttribute(Ge);
+ this.setAttribute('src', encodeURI(t)), this.removeAttribute(Ge);
+ }
+ class on {
+ static get attrTimestamp() {
+ return 'data-ts';
+ }
+ static get attrDateFormat() {
+ return 'data-df';
+ }
+ static get locale() {
+ return document.documentElement.getAttribute('lang').substring(0, 2);
+ }
+ static getTimestamp(t) {
+ return Number(t.getAttribute(this.attrTimestamp));
+ }
+ static getDateFormat(t) {
+ return t.getAttribute(this.attrDateFormat);
+ }
+ }
+ function rn(t, e, n) {
+ if ('function' == typeof t ? t === e : t.has(e))
+ return arguments.length < 3 ? e : n;
+ throw new TypeError('Private element is not present on this object');
+ }
+ function sn(t, e, n) {
+ return (
+ (e = (function (t) {
+ var e = (function (t, e) {
+ if ('object' != typeof t || !t) return t;
+ var n = t[Symbol.toPrimitive];
+ if (void 0 !== n) {
+ var i = n.call(t, e || 'default');
+ if ('object' != typeof i) return i;
+ throw new TypeError('@@toPrimitive must return a primitive value.');
+ }
+ return ('string' === e ? String : Number)(t);
+ })(t, 'string');
+ return 'symbol' == typeof e ? e : e + '';
+ })(e)) in t
+ ? Object.defineProperty(t, e, {
+ value: n,
+ enumerable: !0,
+ configurable: !0,
+ writable: !0
+ })
+ : (t[e] = n),
+ t
+ );
+ }
+ var an;
+ const ln = document.getElementById('toc-bar'),
+ cn = document.getElementById('toc-solo-trigger'),
+ un = document.getElementsByClassName('toc-trigger'),
+ fn = document.getElementById('toc-popup'),
+ dn = document.getElementById('toc-popup-close'),
+ pn = 'overflow-hidden',
+ hn = 'closing';
+ class mn {
+ static initBar() {
+ new IntersectionObserver(
+ (t) => {
+ t.forEach((t) => {
+ ln.classList.toggle('invisible', t.isIntersecting);
+ });
+ },
+ { rootMargin: `-${rn(mn, this, vn)._}px 0px 0px 0px` }
+ ).observe(cn),
+ (gn._ = rn(mn, this, !1));
+ }
+ static listenAnchors() {
+ [...document.getElementsByClassName('toc-link')].forEach((t) => {
+ t.onclick = () => this.hidePopup();
+ });
+ }
+ static refresh() {
+ rn(mn, this, gn)._ && this.initComponents(),
+ tocbot.refresh(this.options),
+ this.listenAnchors();
+ }
+ static get popupOpened() {
+ return fn.open;
+ }
+ static showPopup() {
+ this.lockScroll(!0), fn.showModal();
+ fn.querySelector('li.is-active-li').scrollIntoView({ block: 'center' });
+ }
+ static hidePopup() {
+ fn.toggleAttribute(hn),
+ fn.addEventListener(
+ 'animationend',
+ () => {
+ fn.toggleAttribute(hn), fn.close();
+ },
+ { once: !0 }
+ ),
+ this.lockScroll(!1);
+ }
+ static lockScroll(t) {
+ document.documentElement.classList.toggle(pn, t),
+ document.body.classList.toggle(pn, t);
+ }
+ static clickBackdrop(t) {
+ if (fn.hasAttribute(hn)) return;
+ const e = t.target.getBoundingClientRect();
+ (t.clientX < e.left ||
+ t.clientX > e.right ||
+ t.clientY < e.top ||
+ t.clientY > e.bottom) &&
+ this.hidePopup();
+ }
+ static initComponents() {
+ this.initBar(),
+ [...un].forEach((t) => {
+ t.onclick = () => this.showPopup();
+ }),
+ (fn.onclick = (t) => this.clickBackdrop(t)),
+ (dn.onclick = () => this.hidePopup()),
+ (fn.oncancel = (t) => {
+ t.preventDefault(), this.hidePopup();
+ });
+ }
+ static init() {
+ tocbot.init(this.options), this.listenAnchors(), this.initComponents();
+ }
+ }
+ var gn = { _: !0 },
+ vn = { _: 48 };
+ sn(mn, 'options', {
+ tocSelector: '#toc-popup-content',
+ contentSelector: '.content',
+ ignoreSelector: '[data-toc-skip]',
+ headingSelector: 'h2, h3, h4',
+ orderedList: !1,
+ scrollSmooth: !1,
+ collapseDepth: 4,
+ headingsOffset: rn((an = mn), an, vn)._
+ });
+ sn(
+ class {
+ static refresh() {
+ tocbot.refresh(this.options);
+ }
+ static init() {
+ document.getElementById('toc-wrapper') && tocbot.init(this.options);
+ }
+ },
+ 'options',
+ {
+ tocSelector: '#toc',
+ contentSelector: '.content',
+ ignoreSelector: '[data-toc-skip]',
+ headingSelector: 'h2, h3, h4',
+ orderedList: !1,
+ scrollSmooth: !1,
+ headingsOffset: 32
+ }
+ ),
+ matchMedia('(min-width: 1200px)'),
+ Theme.getThemeMapper('default', 'dark');
+ const bn = document.getElementById('mode-toggle');
+ const yn = document.getElementById('sidebar'),
+ _n = document.getElementById('sidebar-trigger'),
+ wn = document.getElementById('mask');
+ class En {
+ static toggle() {
+ (On._ = rn(En, this, !rn(En, this, On)._)),
+ document.body.toggleAttribute('sidebar-display', rn(En, this, On)._),
+ yn.classList.toggle('z-2', rn(En, this, On)._),
+ wn.classList.toggle('d-none', !rn(En, this, On)._);
+ }
+ }
+ var On = { _: !1 };
+ const xn = document.getElementById('sidebar-trigger'),
+ An = document.getElementById('search-trigger'),
+ Cn = document.getElementById('search-cancel'),
+ Tn = document.querySelectorAll('#main-wrapper>.container>.row'),
+ Ln = document.getElementById('topbar-title'),
+ Sn = document.getElementById('search'),
+ jn = document.getElementById('search-result-wrapper'),
+ kn = document.getElementById('search-results'),
+ Dn = document.getElementById('search-input'),
+ Pn = document.getElementById('search-hints'),
+ Mn = 'd-block',
+ Nn = 'd-none',
+ Bn = 'input-focus',
+ In = 'd-flex';
+ class Fn {
+ static on() {
+ xn.classList.add(Nn),
+ Ln.classList.add(Nn),
+ An.classList.add(Nn),
+ Sn.classList.add(In),
+ Cn.classList.add(Mn);
+ }
+ static off() {
+ Cn.classList.remove(Mn),
+ Sn.classList.remove(In),
+ xn.classList.remove(Nn),
+ Ln.classList.remove(Nn),
+ An.classList.remove(Nn);
+ }
+ }
+ class Hn {
+ static on() {
+ this.resultVisible ||
+ (jn.classList.remove(Nn),
+ Tn.forEach((t) => {
+ t.classList.add(Nn);
+ }),
+ (this.resultVisible = !0));
+ }
+ static off() {
+ this.resultVisible &&
+ ((kn.innerHTML = ''),
+ Pn.classList.contains(Nn) && Pn.classList.remove(Nn),
+ jn.classList.add(Nn),
+ Tn.forEach((t) => {
+ t.classList.remove(Nn);
+ }),
+ (Dn.textContent = ''),
+ (this.resultVisible = !1));
+ }
+ }
+ function $n() {
+ return Cn.classList.contains(Mn);
+ }
+ sn(Hn, 'resultVisible', !1),
+ (function () {
+ const t = document.querySelectorAll('article img');
+ if (0 === t.length) return;
+ t.forEach((t) => {
+ t.addEventListener('load', en);
+ }),
+ document
+ .querySelectorAll('article img[loading="lazy"]')
+ .forEach((t) => {
+ t.complete && tn.call(t, Ze.SHIMMER);
+ });
+ const e = document.querySelectorAll(`article img[${Je}="true"]`);
+ e.length &&
+ e.forEach((t) => {
+ nn.call(t);
+ });
+ })(),
+ dayjs.locale(on.locale),
+ dayjs.extend(window.dayjs_plugin_localizedFormat),
+ document.querySelectorAll(`[${on.attrTimestamp}]`).forEach((t) => {
+ const e = dayjs.unix(on.getTimestamp(t)),
+ n = e.format(on.getDateFormat(t));
+ if (
+ ((t.textContent = n),
+ t.removeAttribute(on.attrTimestamp),
+ t.removeAttribute(on.attrDateFormat),
+ t.hasAttribute('data-bs-toggle') &&
+ 'tooltip' === t.getAttribute('data-bs-toggle'))
+ ) {
+ const n = e.format('llll');
+ t.setAttribute('data-bs-title', n);
+ }
+ }),
+ (_n.onclick = wn.onclick = () => En.toggle()),
+ An.addEventListener('click', () => {
+ Fn.on(), Hn.on(), Dn.focus();
+ }),
+ Cn.addEventListener('click', () => {
+ Fn.off(), Hn.off();
+ }),
+ Dn.addEventListener('focus', () => {
+ Sn.classList.add(Bn);
+ }),
+ Dn.addEventListener('focusout', () => {
+ Sn.classList.remove(Bn);
+ }),
+ Dn.addEventListener('input', () => {
+ '' === Dn.value
+ ? $n()
+ ? Pn.classList.remove(Nn)
+ : Hn.off()
+ : (Hn.on(), $n() && Pn.classList.add(Nn));
+ }),
+ bn &&
+ bn.addEventListener('click', () => {
+ Theme.flip();
+ }),
+ (function () {
+ const t = document.getElementById('back-to-top');
+ window.addEventListener('scroll', () => {
+ window.scrollY > 50
+ ? t.classList.add('show')
+ : t.classList.remove('show');
+ }),
+ t.addEventListener('click', () => {
+ window.scrollTo({ top: 0 });
+ });
+ })(),
+ [...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map(
+ (t) => new Xe(t)
+ );
+})();
diff --git a/assets/js/dist/misc.min.js b/assets/js/dist/misc.min.js
index 6f7ecdc1889..f55284d6f0c 100644
--- a/assets/js/dist/misc.min.js
+++ b/assets/js/dist/misc.min.js
@@ -1,4 +1,2859 @@
/*!
* jekyll-theme-chirpy v7.1.1 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/
*/
-!function(){"use strict";const t=new Map;var e={set(e,n,i){t.has(e)||t.set(e,new Map);const o=t.get(e);o.has(n)||0===o.size?o.set(n,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(o.keys())[0]}.`)},get:(e,n)=>t.has(e)&&t.get(e).get(n)||null,remove(e,n){if(!t.has(e))return;const i=t.get(e);i.delete(n),0===i.size&&t.delete(e)}};const n="transitionend",i=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>`#${CSS.escape(e)}`))),t),o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(i(t)):null,s=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?s(t.parentNode):null},a=()=>{},l=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,c=[],u=()=>"rtl"===document.documentElement.dir,f=t=>{var e;e=()=>{const e=l();if(e){const n=t.NAME,i=e.fn[n];e.fn[n]=t.jQueryInterface,e.fn[n].Constructor=t,e.fn[n].noConflict=()=>(e.fn[n]=i,t.jQueryInterface)}},"loading"===document.readyState?(c.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of c)t()})),c.push(e)):e()},d=function(t){let e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t;return"function"==typeof t?t(...arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]):e},p=function(t,e){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void d(t);const i=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:n}=window.getComputedStyle(t);const i=Number.parseFloat(e),o=Number.parseFloat(n);return i||o?(e=e.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(n))):0})(e)+5;let o=!1;const r=i=>{let{target:s}=i;s===e&&(o=!0,e.removeEventListener(n,r),d(t))};e.addEventListener(n,r),setTimeout((()=>{o||e.dispatchEvent(new Event(n))}),i)},h=/[^.]*(?=\..*)\.|.*/,m=/\..*/,g=/::\d+$/,v={};let b=1;const y={mouseenter:"mouseover",mouseleave:"mouseout"},_=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function w(t,e){return e&&`${e}::${b++}`||t.uidEvent||b++}function E(t){const e=w(t);return t.uidEvent=e,v[e]=v[e]||{},v[e]}function O(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===n))}function x(t,e,n){const i="string"==typeof e,o=i?n:e||n;let r=L(t);return _.has(r)||(r=t),[i,o,r]}function A(t,e,n,i,o){if("string"!=typeof e||!t)return;let[r,s,a]=x(e,n,i);if(e in y){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};s=t(s)}const l=E(t),c=l[a]||(l[a]={}),u=O(c,s,r?n:null);if(u)return void(u.oneOff=u.oneOff&&o);const f=w(s,e.replace(h,"")),d=r?function(t,e,n){return function i(o){const r=t.querySelectorAll(e);for(let{target:s}=o;s&&s!==this;s=s.parentNode)for(const a of r)if(a===s)return j(o,{delegateTarget:s}),i.oneOff&&S.off(t,o.type,e,n),n.apply(s,[o])}}(t,n,s):function(t,e){return function n(i){return j(i,{delegateTarget:t}),n.oneOff&&S.off(t,i.type,e),e.apply(t,[i])}}(t,s);d.delegationSelector=r?n:null,d.callable=s,d.oneOff=o,d.uidEvent=f,c[f]=d,t.addEventListener(a,d,r)}function C(t,e,n,i,o){const r=O(e[n],i,o);r&&(t.removeEventListener(n,r,Boolean(o)),delete e[n][r.uidEvent])}function T(t,e,n,i){const o=e[n]||{};for(const[r,s]of Object.entries(o))r.includes(i)&&C(t,e,n,s.callable,s.delegationSelector)}function L(t){return t=t.replace(m,""),y[t]||t}const S={on(t,e,n,i){A(t,e,n,i,!1)},one(t,e,n,i){A(t,e,n,i,!0)},off(t,e,n,i){if("string"!=typeof e||!t)return;const[o,r,s]=x(e,n,i),a=s!==e,l=E(t),c=l[s]||{},u=e.startsWith(".");if(void 0===r){if(u)for(const n of Object.keys(l))T(t,l,n,e.slice(1));for(const[n,i]of Object.entries(c)){const o=n.replace(g,"");a&&!e.includes(o)||C(t,l,s,i.callable,i.delegationSelector)}}else{if(!Object.keys(c).length)return;C(t,l,s,r,o?n:null)}},trigger(t,e,n){if("string"!=typeof e||!t)return null;const i=l();let o=null,r=!0,s=!0,a=!1;e!==L(e)&&i&&(o=i.Event(e,n),i(t).trigger(o),r=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());const c=j(new Event(e,{bubbles:r,cancelable:!0}),n);return a&&c.preventDefault(),s&&t.dispatchEvent(c),c.defaultPrevented&&o&&o.preventDefault(),c}};function j(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(const[n,i]of Object.entries(e))try{t[n]=i}catch{Object.defineProperty(t,n,{configurable:!0,get:()=>i})}return t}function k(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch{return t}}function D(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const P={setDataAttribute(t,e,n){t.setAttribute(`data-bs-${D(e)}`,n)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${D(e)}`)},getDataAttributes(t){if(!t)return{};const e={},n=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const i of n){let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),e[n]=k(t.dataset[i])}return e},getDataAttribute:(t,e)=>k(t.getAttribute(`data-bs-${D(e)}`))};class M{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const n=o(e)?P.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...o(e)?P.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[i,r]of Object.entries(e)){const e=t[i],s=o(e)?"element":null==(n=e)?`${n}`:Object.prototype.toString.call(n).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(r).test(s))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${i}" provided type "${s}" but expected type "${r}".`)}var n}}class N extends M{constructor(t,n){super(),(t=r(t))&&(this._element=t,this._config=this._getConfig(n),e.set(this._element,this.constructor.DATA_KEY,this))}dispose(){e.remove(this._element,this.constructor.DATA_KEY),S.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e){p(t,e,!(arguments.length>2&&void 0!==arguments[2])||arguments[2])}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return e.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.3"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const B=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let n=t.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n=`#${n.split("#")[1]}`),e=n&&"#"!==n?n.trim():null}return e?e.split(",").map((t=>i(t))).join(","):null},F={find(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return[].concat(...Element.prototype.querySelectorAll.call(e,t))},findOne(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return Element.prototype.querySelector.call(e,t)},children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const n=[];let i=t.parentNode.closest(e);for(;i;)n.push(i),i=i.parentNode.closest(e);return n},prev(t,e){let n=t.previousElementSibling;for(;n;){if(n.matches(e))return[n];n=n.previousElementSibling}return[]},next(t,e){let n=t.nextElementSibling;for(;n;){if(n.matches(e))return[n];n=n.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!(t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")))(t)&&(t=>{if(!o(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),n=t.closest("details:not([open])");if(!n)return e;if(n!==t){const e=t.closest("summary");if(e&&e.parentNode!==n)return!1;if(null===e)return!1}return e})(t)))},getSelectorFromElement(t){const e=B(t);return e&&F.findOne(e)?e:null},getElementFromSelector(t){const e=B(t);return e?F.findOne(e):null},getMultipleElementsFromSelector(t){const e=B(t);return e?F.find(e):[]}},I=".bs.collapse",H=`show${I}`,$=`shown${I}`,z=`hide${I}`,W=`hidden${I}`,R=`click${I}.data-api`,q="show",V="collapse",Y="collapsing",U=`:scope .${V} .${V}`,K='[data-bs-toggle="collapse"]',Q={parent:null,toggle:!0},X={parent:"(null|element)",toggle:"boolean"};class G extends N{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const n=F.find(K);for(const t of n){const e=F.getSelectorFromElement(t),n=F.find(e).filter((t=>t===this._element));null!==e&&n.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Q}static get DefaultType(){return X}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>G.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(S.trigger(this._element,H).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(V),this._element.classList.add(Y),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Y),this._element.classList.add(V,q),this._element.style[e]="",S.trigger(this._element,$)}),this._element,!0),this._element.style[e]=`${this._element[n]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(S.trigger(this._element,z).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,this._element.offsetHeight,this._element.classList.add(Y),this._element.classList.remove(V,q);for(const t of this._triggerArray){const e=F.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0;this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Y),this._element.classList.add(V),S.trigger(this._element,W)}),this._element,!0)}_isShown(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._element).classList.contains(q)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=r(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(K);for(const e of t){const t=F.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=F.find(U,this._config.parent);return F.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const n of t)n.classList.toggle("collapsed",!e),n.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const n=G.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===n[t])throw new TypeError(`No method named "${t}"`);n[t]()}}))}}S.on(document,R,K,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of F.getMultipleElementsFromSelector(this))G.getOrCreateInstance(t,{toggle:!1}).toggle()})),f(G),document.getElementsByClassName("collapse");var J="top",Z="bottom",tt="right",et="left",nt="auto",it=[J,Z,tt,et],ot="start",rt="end",st="clippingParents",at="viewport",lt="popper",ct="reference",ut=it.reduce((function(t,e){return t.concat([e+"-"+ot,e+"-"+rt])}),[]),ft=[].concat(it,[nt]).reduce((function(t,e){return t.concat([e,e+"-"+ot,e+"-"+rt])}),[]),dt="beforeRead",pt="read",ht="afterRead",mt="beforeMain",gt="main",vt="afterMain",bt="beforeWrite",yt="write",_t="afterWrite",wt=[dt,pt,ht,mt,gt,vt,bt,yt,_t];function Et(t){return t?(t.nodeName||"").toLowerCase():null}function Ot(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function xt(t){return t instanceof Ot(t).Element||t instanceof Element}function At(t){return t instanceof Ot(t).HTMLElement||t instanceof HTMLElement}function Ct(t){return"undefined"!=typeof ShadowRoot&&(t instanceof Ot(t).ShadowRoot||t instanceof ShadowRoot)}var Tt={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var n=e.styles[t]||{},i=e.attributes[t]||{},o=e.elements[t];At(o)&&Et(o)&&(Object.assign(o.style,n),Object.keys(i).forEach((function(t){var e=i[t];!1===e?o.removeAttribute(t):o.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,n={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,n.popper),e.styles=n,e.elements.arrow&&Object.assign(e.elements.arrow.style,n.arrow),function(){Object.keys(e.elements).forEach((function(t){var i=e.elements[t],o=e.attributes[t]||{},r=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:n[t]).reduce((function(t,e){return t[e]="",t}),{});At(i)&&Et(i)&&(Object.assign(i.style,r),Object.keys(o).forEach((function(t){i.removeAttribute(t)})))}))}},requires:["computeStyles"]};function Lt(t){return t.split("-")[0]}var St=Math.max,jt=Math.min,kt=Math.round;function Dt(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function Pt(){return!/^((?!chrome|android).)*safari/i.test(Dt())}function Mt(t,e,n){void 0===e&&(e=!1),void 0===n&&(n=!1);var i=t.getBoundingClientRect(),o=1,r=1;e&&At(t)&&(o=t.offsetWidth>0&&kt(i.width)/t.offsetWidth||1,r=t.offsetHeight>0&&kt(i.height)/t.offsetHeight||1);var s=(xt(t)?Ot(t):window).visualViewport,a=!Pt()&&n,l=(i.left+(a&&s?s.offsetLeft:0))/o,c=(i.top+(a&&s?s.offsetTop:0))/r,u=i.width/o,f=i.height/r;return{width:u,height:f,top:c,right:l+u,bottom:c+f,left:l,x:l,y:c}}function Nt(t){var e=Mt(t),n=t.offsetWidth,i=t.offsetHeight;return Math.abs(e.width-n)<=1&&(n=e.width),Math.abs(e.height-i)<=1&&(i=e.height),{x:t.offsetLeft,y:t.offsetTop,width:n,height:i}}function Bt(t,e){var n=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(n&&Ct(n)){var i=e;do{if(i&&t.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function Ft(t){return Ot(t).getComputedStyle(t)}function It(t){return["table","td","th"].indexOf(Et(t))>=0}function Ht(t){return((xt(t)?t.ownerDocument:t.document)||window.document).documentElement}function $t(t){return"html"===Et(t)?t:t.assignedSlot||t.parentNode||(Ct(t)?t.host:null)||Ht(t)}function zt(t){return At(t)&&"fixed"!==Ft(t).position?t.offsetParent:null}function Wt(t){for(var e=Ot(t),n=zt(t);n&&It(n)&&"static"===Ft(n).position;)n=zt(n);return n&&("html"===Et(n)||"body"===Et(n)&&"static"===Ft(n).position)?e:n||function(t){var e=/firefox/i.test(Dt());if(/Trident/i.test(Dt())&&At(t)&&"fixed"===Ft(t).position)return null;var n=$t(t);for(Ct(n)&&(n=n.host);At(n)&&["html","body"].indexOf(Et(n))<0;){var i=Ft(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||e&&"filter"===i.willChange||e&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(t)||e}function Rt(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function qt(t,e,n){return St(t,jt(e,n))}function Vt(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function Yt(t,e){return e.reduce((function(e,n){return e[n]=t,e}),{})}var Ut={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,n=t.state,i=t.name,o=t.options,r=n.elements.arrow,s=n.modifiersData.popperOffsets,a=Lt(n.placement),l=Rt(a),c=[et,tt].indexOf(a)>=0?"height":"width";if(r&&s){var u=function(t,e){return Vt("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:Yt(t,it))}(o.padding,n),f=Nt(r),d="y"===l?J:et,p="y"===l?Z:tt,h=n.rects.reference[c]+n.rects.reference[l]-s[l]-n.rects.popper[c],m=s[l]-n.rects.reference[l],g=Wt(r),v=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,b=h/2-m/2,y=u[d],_=v-f[c]-u[p],w=v/2-f[c]/2+b,E=qt(y,w,_),O=l;n.modifiersData[i]=((e={})[O]=E,e.centerOffset=E-w,e)}},effect:function(t){var e=t.state,n=t.options.element,i=void 0===n?"[data-popper-arrow]":n;null!=i&&("string"!=typeof i||(i=e.elements.popper.querySelector(i)))&&Bt(e.elements.popper,i)&&(e.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Kt(t){return t.split("-")[1]}var Qt={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Xt(t){var e,n=t.popper,i=t.popperRect,o=t.placement,r=t.variation,s=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,u=t.roundOffsets,f=t.isFixed,d=s.x,p=void 0===d?0:d,h=s.y,m=void 0===h?0:h,g="function"==typeof u?u({x:p,y:m}):{x:p,y:m};p=g.x,m=g.y;var v=s.hasOwnProperty("x"),b=s.hasOwnProperty("y"),y=et,_=J,w=window;if(c){var E=Wt(n),O="clientHeight",x="clientWidth";if(E===Ot(n)&&"static"!==Ft(E=Ht(n)).position&&"absolute"===a&&(O="scrollHeight",x="scrollWidth"),o===J||(o===et||o===tt)&&r===rt)_=Z,m-=(f&&E===w&&w.visualViewport?w.visualViewport.height:E[O])-i.height,m*=l?1:-1;if(o===et||(o===J||o===Z)&&r===rt)y=tt,p-=(f&&E===w&&w.visualViewport?w.visualViewport.width:E[x])-i.width,p*=l?1:-1}var A,C=Object.assign({position:a},c&&Qt),T=!0===u?function(t,e){var n=t.x,i=t.y,o=e.devicePixelRatio||1;return{x:kt(n*o)/o||0,y:kt(i*o)/o||0}}({x:p,y:m},Ot(n)):{x:p,y:m};return p=T.x,m=T.y,l?Object.assign({},C,((A={})[_]=b?"0":"",A[y]=v?"0":"",A.transform=(w.devicePixelRatio||1)<=1?"translate("+p+"px, "+m+"px)":"translate3d("+p+"px, "+m+"px, 0)",A)):Object.assign({},C,((e={})[_]=b?m+"px":"",e[y]=v?p+"px":"",e.transform="",e))}var Gt={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,n=t.options,i=n.gpuAcceleration,o=void 0===i||i,r=n.adaptive,s=void 0===r||r,a=n.roundOffsets,l=void 0===a||a,c={placement:Lt(e.placement),variation:Kt(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:o,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,Xt(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:s,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,Xt(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}},Jt={passive:!0};var Zt={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,n=t.instance,i=t.options,o=i.scroll,r=void 0===o||o,s=i.resize,a=void 0===s||s,l=Ot(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return r&&c.forEach((function(t){t.addEventListener("scroll",n.update,Jt)})),a&&l.addEventListener("resize",n.update,Jt),function(){r&&c.forEach((function(t){t.removeEventListener("scroll",n.update,Jt)})),a&&l.removeEventListener("resize",n.update,Jt)}},data:{}},te={left:"right",right:"left",bottom:"top",top:"bottom"};function ee(t){return t.replace(/left|right|bottom|top/g,(function(t){return te[t]}))}var ne={start:"end",end:"start"};function ie(t){return t.replace(/start|end/g,(function(t){return ne[t]}))}function oe(t){var e=Ot(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function re(t){return Mt(Ht(t)).left+oe(t).scrollLeft}function se(t){var e=Ft(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function ae(t){return["html","body","#document"].indexOf(Et(t))>=0?t.ownerDocument.body:At(t)&&se(t)?t:ae($t(t))}function le(t,e){var n;void 0===e&&(e=[]);var i=ae(t),o=i===(null==(n=t.ownerDocument)?void 0:n.body),r=Ot(i),s=o?[r].concat(r.visualViewport||[],se(i)?i:[]):i,a=e.concat(s);return o?a:a.concat(le($t(s)))}function ce(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function ue(t,e,n){return e===at?ce(function(t,e){var n=Ot(t),i=Ht(t),o=n.visualViewport,r=i.clientWidth,s=i.clientHeight,a=0,l=0;if(o){r=o.width,s=o.height;var c=Pt();(c||!c&&"fixed"===e)&&(a=o.offsetLeft,l=o.offsetTop)}return{width:r,height:s,x:a+re(t),y:l}}(t,n)):xt(e)?function(t,e){var n=Mt(t,!1,"fixed"===e);return n.top=n.top+t.clientTop,n.left=n.left+t.clientLeft,n.bottom=n.top+t.clientHeight,n.right=n.left+t.clientWidth,n.width=t.clientWidth,n.height=t.clientHeight,n.x=n.left,n.y=n.top,n}(e,n):ce(function(t){var e,n=Ht(t),i=oe(t),o=null==(e=t.ownerDocument)?void 0:e.body,r=St(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=St(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-i.scrollLeft+re(t),l=-i.scrollTop;return"rtl"===Ft(o||n).direction&&(a+=St(n.clientWidth,o?o.clientWidth:0)-r),{width:r,height:s,x:a,y:l}}(Ht(t)))}function fe(t,e,n,i){var o="clippingParents"===e?function(t){var e=le($t(t)),n=["absolute","fixed"].indexOf(Ft(t).position)>=0&&At(t)?Wt(t):t;return xt(n)?e.filter((function(t){return xt(t)&&Bt(t,n)&&"body"!==Et(t)})):[]}(t):[].concat(e),r=[].concat(o,[n]),s=r[0],a=r.reduce((function(e,n){var o=ue(t,n,i);return e.top=St(o.top,e.top),e.right=jt(o.right,e.right),e.bottom=jt(o.bottom,e.bottom),e.left=St(o.left,e.left),e}),ue(t,s,i));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function de(t){var e,n=t.reference,i=t.element,o=t.placement,r=o?Lt(o):null,s=o?Kt(o):null,a=n.x+n.width/2-i.width/2,l=n.y+n.height/2-i.height/2;switch(r){case J:e={x:a,y:n.y-i.height};break;case Z:e={x:a,y:n.y+n.height};break;case tt:e={x:n.x+n.width,y:l};break;case et:e={x:n.x-i.width,y:l};break;default:e={x:n.x,y:n.y}}var c=r?Rt(r):null;if(null!=c){var u="y"===c?"height":"width";switch(s){case ot:e[c]=e[c]-(n[u]/2-i[u]/2);break;case rt:e[c]=e[c]+(n[u]/2-i[u]/2)}}return e}function pe(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=void 0===i?t.placement:i,r=n.strategy,s=void 0===r?t.strategy:r,a=n.boundary,l=void 0===a?st:a,c=n.rootBoundary,u=void 0===c?at:c,f=n.elementContext,d=void 0===f?lt:f,p=n.altBoundary,h=void 0!==p&&p,m=n.padding,g=void 0===m?0:m,v=Vt("number"!=typeof g?g:Yt(g,it)),b=d===lt?ct:lt,y=t.rects.popper,_=t.elements[h?b:d],w=fe(xt(_)?_:_.contextElement||Ht(t.elements.popper),l,u,s),E=Mt(t.elements.reference),O=de({reference:E,element:y,placement:o}),x=ce(Object.assign({},y,O)),A=d===lt?x:E,C={top:w.top-A.top+v.top,bottom:A.bottom-w.bottom+v.bottom,left:w.left-A.left+v.left,right:A.right-w.right+v.right},T=t.modifiersData.offset;if(d===lt&&T){var L=T[o];Object.keys(C).forEach((function(t){var e=[tt,Z].indexOf(t)>=0?1:-1,n=[J,Z].indexOf(t)>=0?"y":"x";C[t]+=L[n]*e}))}return C}function he(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=n.boundary,r=n.rootBoundary,s=n.padding,a=n.flipVariations,l=n.allowedAutoPlacements,c=void 0===l?ft:l,u=Kt(i),f=u?a?ut:ut.filter((function(t){return Kt(t)===u})):it,d=f.filter((function(t){return c.indexOf(t)>=0}));0===d.length&&(d=f);var p=d.reduce((function(e,n){return e[n]=pe(t,{placement:n,boundary:o,rootBoundary:r,padding:s})[Lt(n)],e}),{});return Object.keys(p).sort((function(t,e){return p[t]-p[e]}))}var me={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name;if(!e.modifiersData[i]._skip){for(var o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0===s||s,l=n.fallbackPlacements,c=n.padding,u=n.boundary,f=n.rootBoundary,d=n.altBoundary,p=n.flipVariations,h=void 0===p||p,m=n.allowedAutoPlacements,g=e.options.placement,v=Lt(g),b=l||(v===g||!h?[ee(g)]:function(t){if(Lt(t)===nt)return[];var e=ee(t);return[ie(t),e,ie(e)]}(g)),y=[g].concat(b).reduce((function(t,n){return t.concat(Lt(n)===nt?he(e,{placement:n,boundary:u,rootBoundary:f,padding:c,flipVariations:h,allowedAutoPlacements:m}):n)}),[]),_=e.rects.reference,w=e.rects.popper,E=new Map,O=!0,x=y[0],A=0;A
',title:"",trigger:"hover focus"},Qe={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class Xe extends N{constructor(t,e){if(void 0===je)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Ke}static get DefaultType(){return Qe}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),S.off(this._element.closest(Re),qe,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=S.trigger(this._element,this.constructor.eventName("show")),e=(s(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(n),S.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(n),n.classList.add(ze),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))S.on(t,"mouseover",a);this._queueCallback((()=>{S.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(!this._isShown())return;if(S.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove(ze),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))S.off(t,"mouseover",a);this._activeTrigger.click=!1,this._activeTrigger[Ye]=!1,this._activeTrigger[Ve]=!1,this._isHovered=null;this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),S.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove($e,ze),e.classList.add(`bs-${this.constructor.NAME}-auto`);const n=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",n),this._isAnimated()&&e.classList.add($e),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Ie({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[We]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains($e)}_isShown(){return this.tip&&this.tip.classList.contains(ze)}_createPopper(t){const e=d(this._config.placement,[this,t,this._element]),n=Ue[e.toUpperCase()];return Se(this._element,t,this._getPopperConfig(n))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return d(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,...d(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)S.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===Ve?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n=e===Ve?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");S.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?Ye:Ve]=!0,e._enter()})),S.on(this._element,n,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?Ye:Ve]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},S.on(this._element.closest(Re),qe,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=P.getDataAttributes(this._element);for(const t of Object.keys(e))He.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:r(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,n]of Object.entries(this._config))this.constructor.Default[e]!==n&&(t[e]=n);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=Xe.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}f(Xe);class Ge{static get attrTimestamp(){return"data-ts"}static get attrDateFormat(){return"data-df"}static get locale(){return document.documentElement.getAttribute("lang").substring(0,2)}static getTimestamp(t){return Number(t.getAttribute(this.attrTimestamp))}static getDateFormat(t){return t.getAttribute(this.attrDateFormat)}}function Je(t,e,n){if("function"==typeof t?t===e:t.has(e))return arguments.length<3?e:n;throw new TypeError("Private element is not present on this object")}function Ze(t,e,n){return(e=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,e||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var tn;const en=document.getElementById("toc-bar"),nn=document.getElementById("toc-solo-trigger"),on=document.getElementsByClassName("toc-trigger"),rn=document.getElementById("toc-popup"),sn=document.getElementById("toc-popup-close"),an="overflow-hidden",ln="closing";class cn{static initBar(){new IntersectionObserver((t=>{t.forEach((t=>{en.classList.toggle("invisible",t.isIntersecting)}))}),{rootMargin:`-${Je(cn,this,fn)._}px 0px 0px 0px`}).observe(nn),un._=Je(cn,this,!1)}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach((t=>{t.onclick=()=>this.hidePopup()}))}static refresh(){Je(cn,this,un)._&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static get popupOpened(){return rn.open}static showPopup(){this.lockScroll(!0),rn.showModal();rn.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(){rn.toggleAttribute(ln),rn.addEventListener("animationend",(()=>{rn.toggleAttribute(ln),rn.close()}),{once:!0}),this.lockScroll(!1)}static lockScroll(t){document.documentElement.classList.toggle(an,t),document.body.classList.toggle(an,t)}static clickBackdrop(t){if(rn.hasAttribute(ln))return;const e=t.target.getBoundingClientRect();(t.clientX
',
+ title: '',
+ trigger: 'hover focus'
+ },
+ Qe = {
+ allowList: 'object',
+ animation: 'boolean',
+ boundary: '(string|element)',
+ container: '(string|element|boolean)',
+ customClass: '(string|function)',
+ delay: '(number|object)',
+ fallbackPlacements: 'array',
+ html: 'boolean',
+ offset: '(array|string|function)',
+ placement: '(string|function)',
+ popperConfig: '(null|object|function)',
+ sanitize: 'boolean',
+ sanitizeFn: '(null|function)',
+ selector: '(string|boolean)',
+ template: 'string',
+ title: '(string|element|function)',
+ trigger: 'string'
+ };
+ class Xe extends N {
+ constructor(t, e) {
+ if (void 0 === je)
+ throw new TypeError(
+ "Bootstrap's tooltips require Popper (https://popper.js.org)"
+ );
+ super(t, e),
+ (this._isEnabled = !0),
+ (this._timeout = 0),
+ (this._isHovered = null),
+ (this._activeTrigger = {}),
+ (this._popper = null),
+ (this._templateFactory = null),
+ (this._newContent = null),
+ (this.tip = null),
+ this._setListeners(),
+ this._config.selector || this._fixTitle();
+ }
+ static get Default() {
+ return Ke;
+ }
+ static get DefaultType() {
+ return Qe;
+ }
+ static get NAME() {
+ return 'tooltip';
+ }
+ enable() {
+ this._isEnabled = !0;
+ }
+ disable() {
+ this._isEnabled = !1;
+ }
+ toggleEnabled() {
+ this._isEnabled = !this._isEnabled;
+ }
+ toggle() {
+ this._isEnabled &&
+ ((this._activeTrigger.click = !this._activeTrigger.click),
+ this._isShown() ? this._leave() : this._enter());
+ }
+ dispose() {
+ clearTimeout(this._timeout),
+ S.off(this._element.closest(Re), qe, this._hideModalHandler),
+ this._element.getAttribute('data-bs-original-title') &&
+ this._element.setAttribute(
+ 'title',
+ this._element.getAttribute('data-bs-original-title')
+ ),
+ this._disposePopper(),
+ super.dispose();
+ }
+ show() {
+ if ('none' === this._element.style.display)
+ throw new Error('Please use show on visible elements');
+ if (!this._isWithContent() || !this._isEnabled) return;
+ const t = S.trigger(this._element, this.constructor.eventName('show')),
+ e = (
+ s(this._element) || this._element.ownerDocument.documentElement
+ ).contains(this._element);
+ if (t.defaultPrevented || !e) return;
+ this._disposePopper();
+ const n = this._getTipElement();
+ this._element.setAttribute('aria-describedby', n.getAttribute('id'));
+ const { container: i } = this._config;
+ if (
+ (this._element.ownerDocument.documentElement.contains(this.tip) ||
+ (i.append(n),
+ S.trigger(this._element, this.constructor.eventName('inserted'))),
+ (this._popper = this._createPopper(n)),
+ n.classList.add(ze),
+ 'ontouchstart' in document.documentElement)
+ )
+ for (const t of [].concat(...document.body.children))
+ S.on(t, 'mouseover', a);
+ this._queueCallback(
+ () => {
+ S.trigger(this._element, this.constructor.eventName('shown')),
+ !1 === this._isHovered && this._leave(),
+ (this._isHovered = !1);
+ },
+ this.tip,
+ this._isAnimated()
+ );
+ }
+ hide() {
+ if (!this._isShown()) return;
+ if (
+ S.trigger(this._element, this.constructor.eventName('hide'))
+ .defaultPrevented
+ )
+ return;
+ if (
+ (this._getTipElement().classList.remove(ze),
+ 'ontouchstart' in document.documentElement)
+ )
+ for (const t of [].concat(...document.body.children))
+ S.off(t, 'mouseover', a);
+ (this._activeTrigger.click = !1),
+ (this._activeTrigger[Ye] = !1),
+ (this._activeTrigger[Ve] = !1),
+ (this._isHovered = null);
+ this._queueCallback(
+ () => {
+ this._isWithActiveTrigger() ||
+ (this._isHovered || this._disposePopper(),
+ this._element.removeAttribute('aria-describedby'),
+ S.trigger(this._element, this.constructor.eventName('hidden')));
+ },
+ this.tip,
+ this._isAnimated()
+ );
+ }
+ update() {
+ this._popper && this._popper.update();
+ }
+ _isWithContent() {
+ return Boolean(this._getTitle());
+ }
+ _getTipElement() {
+ return (
+ this.tip ||
+ (this.tip = this._createTipElement(
+ this._newContent || this._getContentForTemplate()
+ )),
+ this.tip
+ );
+ }
+ _createTipElement(t) {
+ const e = this._getTemplateFactory(t).toHtml();
+ if (!e) return null;
+ e.classList.remove($e, ze),
+ e.classList.add(`bs-${this.constructor.NAME}-auto`);
+ const n = ((t) => {
+ do {
+ t += Math.floor(1e6 * Math.random());
+ } while (document.getElementById(t));
+ return t;
+ })(this.constructor.NAME).toString();
+ return (
+ e.setAttribute('id', n), this._isAnimated() && e.classList.add($e), e
+ );
+ }
+ setContent(t) {
+ (this._newContent = t),
+ this._isShown() && (this._disposePopper(), this.show());
+ }
+ _getTemplateFactory(t) {
+ return (
+ this._templateFactory
+ ? this._templateFactory.changeContent(t)
+ : (this._templateFactory = new Ie({
+ ...this._config,
+ content: t,
+ extraClass: this._resolvePossibleFunction(
+ this._config.customClass
+ )
+ })),
+ this._templateFactory
+ );
+ }
+ _getContentForTemplate() {
+ return { [We]: this._getTitle() };
+ }
+ _getTitle() {
+ return (
+ this._resolvePossibleFunction(this._config.title) ||
+ this._element.getAttribute('data-bs-original-title')
+ );
+ }
+ _initializeOnDelegatedTarget(t) {
+ return this.constructor.getOrCreateInstance(
+ t.delegateTarget,
+ this._getDelegateConfig()
+ );
+ }
+ _isAnimated() {
+ return (
+ this._config.animation || (this.tip && this.tip.classList.contains($e))
+ );
+ }
+ _isShown() {
+ return this.tip && this.tip.classList.contains(ze);
+ }
+ _createPopper(t) {
+ const e = d(this._config.placement, [this, t, this._element]),
+ n = Ue[e.toUpperCase()];
+ return Se(this._element, t, this._getPopperConfig(n));
+ }
+ _getOffset() {
+ const { offset: t } = this._config;
+ return 'string' == typeof t
+ ? t.split(',').map((t) => Number.parseInt(t, 10))
+ : 'function' == typeof t
+ ? (e) => t(e, this._element)
+ : t;
+ }
+ _resolvePossibleFunction(t) {
+ return d(t, [this._element]);
+ }
+ _getPopperConfig(t) {
+ const e = {
+ placement: t,
+ modifiers: [
+ {
+ name: 'flip',
+ options: { fallbackPlacements: this._config.fallbackPlacements }
+ },
+ { name: 'offset', options: { offset: this._getOffset() } },
+ {
+ name: 'preventOverflow',
+ options: { boundary: this._config.boundary }
+ },
+ {
+ name: 'arrow',
+ options: { element: `.${this.constructor.NAME}-arrow` }
+ },
+ {
+ name: 'preSetPlacement',
+ enabled: !0,
+ phase: 'beforeMain',
+ fn: (t) => {
+ this._getTipElement().setAttribute(
+ 'data-popper-placement',
+ t.state.placement
+ );
+ }
+ }
+ ]
+ };
+ return { ...e, ...d(this._config.popperConfig, [e]) };
+ }
+ _setListeners() {
+ const t = this._config.trigger.split(' ');
+ for (const e of t)
+ if ('click' === e)
+ S.on(
+ this._element,
+ this.constructor.eventName('click'),
+ this._config.selector,
+ (t) => {
+ this._initializeOnDelegatedTarget(t).toggle();
+ }
+ );
+ else if ('manual' !== e) {
+ const t =
+ e === Ve
+ ? this.constructor.eventName('mouseenter')
+ : this.constructor.eventName('focusin'),
+ n =
+ e === Ve
+ ? this.constructor.eventName('mouseleave')
+ : this.constructor.eventName('focusout');
+ S.on(this._element, t, this._config.selector, (t) => {
+ const e = this._initializeOnDelegatedTarget(t);
+ (e._activeTrigger['focusin' === t.type ? Ye : Ve] = !0), e._enter();
+ }),
+ S.on(this._element, n, this._config.selector, (t) => {
+ const e = this._initializeOnDelegatedTarget(t);
+ (e._activeTrigger['focusout' === t.type ? Ye : Ve] =
+ e._element.contains(t.relatedTarget)),
+ e._leave();
+ });
+ }
+ (this._hideModalHandler = () => {
+ this._element && this.hide();
+ }),
+ S.on(this._element.closest(Re), qe, this._hideModalHandler);
+ }
+ _fixTitle() {
+ const t = this._element.getAttribute('title');
+ t &&
+ (this._element.getAttribute('aria-label') ||
+ this._element.textContent.trim() ||
+ this._element.setAttribute('aria-label', t),
+ this._element.setAttribute('data-bs-original-title', t),
+ this._element.removeAttribute('title'));
+ }
+ _enter() {
+ this._isShown() || this._isHovered
+ ? (this._isHovered = !0)
+ : ((this._isHovered = !0),
+ this._setTimeout(() => {
+ this._isHovered && this.show();
+ }, this._config.delay.show));
+ }
+ _leave() {
+ this._isWithActiveTrigger() ||
+ ((this._isHovered = !1),
+ this._setTimeout(() => {
+ this._isHovered || this.hide();
+ }, this._config.delay.hide));
+ }
+ _setTimeout(t, e) {
+ clearTimeout(this._timeout), (this._timeout = setTimeout(t, e));
+ }
+ _isWithActiveTrigger() {
+ return Object.values(this._activeTrigger).includes(!0);
+ }
+ _getConfig(t) {
+ const e = P.getDataAttributes(this._element);
+ for (const t of Object.keys(e)) He.has(t) && delete e[t];
+ return (
+ (t = { ...e, ...('object' == typeof t && t ? t : {}) }),
+ (t = this._mergeConfigObj(t)),
+ (t = this._configAfterMerge(t)),
+ this._typeCheckConfig(t),
+ t
+ );
+ }
+ _configAfterMerge(t) {
+ return (
+ (t.container = !1 === t.container ? document.body : r(t.container)),
+ 'number' == typeof t.delay &&
+ (t.delay = { show: t.delay, hide: t.delay }),
+ 'number' == typeof t.title && (t.title = t.title.toString()),
+ 'number' == typeof t.content && (t.content = t.content.toString()),
+ t
+ );
+ }
+ _getDelegateConfig() {
+ const t = {};
+ for (const [e, n] of Object.entries(this._config))
+ this.constructor.Default[e] !== n && (t[e] = n);
+ return (t.selector = !1), (t.trigger = 'manual'), t;
+ }
+ _disposePopper() {
+ this._popper && (this._popper.destroy(), (this._popper = null)),
+ this.tip && (this.tip.remove(), (this.tip = null));
+ }
+ static jQueryInterface(t) {
+ return this.each(function () {
+ const e = Xe.getOrCreateInstance(this, t);
+ if ('string' == typeof t) {
+ if (void 0 === e[t]) throw new TypeError(`No method named "${t}"`);
+ e[t]();
+ }
+ });
+ }
+ }
+ f(Xe);
+ class Ge {
+ static get attrTimestamp() {
+ return 'data-ts';
+ }
+ static get attrDateFormat() {
+ return 'data-df';
+ }
+ static get locale() {
+ return document.documentElement.getAttribute('lang').substring(0, 2);
+ }
+ static getTimestamp(t) {
+ return Number(t.getAttribute(this.attrTimestamp));
+ }
+ static getDateFormat(t) {
+ return t.getAttribute(this.attrDateFormat);
+ }
+ }
+ function Je(t, e, n) {
+ if ('function' == typeof t ? t === e : t.has(e))
+ return arguments.length < 3 ? e : n;
+ throw new TypeError('Private element is not present on this object');
+ }
+ function Ze(t, e, n) {
+ return (
+ (e = (function (t) {
+ var e = (function (t, e) {
+ if ('object' != typeof t || !t) return t;
+ var n = t[Symbol.toPrimitive];
+ if (void 0 !== n) {
+ var i = n.call(t, e || 'default');
+ if ('object' != typeof i) return i;
+ throw new TypeError('@@toPrimitive must return a primitive value.');
+ }
+ return ('string' === e ? String : Number)(t);
+ })(t, 'string');
+ return 'symbol' == typeof e ? e : e + '';
+ })(e)) in t
+ ? Object.defineProperty(t, e, {
+ value: n,
+ enumerable: !0,
+ configurable: !0,
+ writable: !0
+ })
+ : (t[e] = n),
+ t
+ );
+ }
+ var tn;
+ const en = document.getElementById('toc-bar'),
+ nn = document.getElementById('toc-solo-trigger'),
+ on = document.getElementsByClassName('toc-trigger'),
+ rn = document.getElementById('toc-popup'),
+ sn = document.getElementById('toc-popup-close'),
+ an = 'overflow-hidden',
+ ln = 'closing';
+ class cn {
+ static initBar() {
+ new IntersectionObserver(
+ (t) => {
+ t.forEach((t) => {
+ en.classList.toggle('invisible', t.isIntersecting);
+ });
+ },
+ { rootMargin: `-${Je(cn, this, fn)._}px 0px 0px 0px` }
+ ).observe(nn),
+ (un._ = Je(cn, this, !1));
+ }
+ static listenAnchors() {
+ [...document.getElementsByClassName('toc-link')].forEach((t) => {
+ t.onclick = () => this.hidePopup();
+ });
+ }
+ static refresh() {
+ Je(cn, this, un)._ && this.initComponents(),
+ tocbot.refresh(this.options),
+ this.listenAnchors();
+ }
+ static get popupOpened() {
+ return rn.open;
+ }
+ static showPopup() {
+ this.lockScroll(!0), rn.showModal();
+ rn.querySelector('li.is-active-li').scrollIntoView({ block: 'center' });
+ }
+ static hidePopup() {
+ rn.toggleAttribute(ln),
+ rn.addEventListener(
+ 'animationend',
+ () => {
+ rn.toggleAttribute(ln), rn.close();
+ },
+ { once: !0 }
+ ),
+ this.lockScroll(!1);
+ }
+ static lockScroll(t) {
+ document.documentElement.classList.toggle(an, t),
+ document.body.classList.toggle(an, t);
+ }
+ static clickBackdrop(t) {
+ if (rn.hasAttribute(ln)) return;
+ const e = t.target.getBoundingClientRect();
+ (t.clientX < e.left ||
+ t.clientX > e.right ||
+ t.clientY < e.top ||
+ t.clientY > e.bottom) &&
+ this.hidePopup();
+ }
+ static initComponents() {
+ this.initBar(),
+ [...on].forEach((t) => {
+ t.onclick = () => this.showPopup();
+ }),
+ (rn.onclick = (t) => this.clickBackdrop(t)),
+ (sn.onclick = () => this.hidePopup()),
+ (rn.oncancel = (t) => {
+ t.preventDefault(), this.hidePopup();
+ });
+ }
+ static init() {
+ tocbot.init(this.options), this.listenAnchors(), this.initComponents();
+ }
+ }
+ var un = { _: !0 },
+ fn = { _: 48 };
+ Ze(cn, 'options', {
+ tocSelector: '#toc-popup-content',
+ contentSelector: '.content',
+ ignoreSelector: '[data-toc-skip]',
+ headingSelector: 'h2, h3, h4',
+ orderedList: !1,
+ scrollSmooth: !1,
+ collapseDepth: 4,
+ headingsOffset: Je((tn = cn), tn, fn)._
+ });
+ Ze(
+ class {
+ static refresh() {
+ tocbot.refresh(this.options);
+ }
+ static init() {
+ document.getElementById('toc-wrapper') && tocbot.init(this.options);
+ }
+ },
+ 'options',
+ {
+ tocSelector: '#toc',
+ contentSelector: '.content',
+ ignoreSelector: '[data-toc-skip]',
+ headingSelector: 'h2, h3, h4',
+ orderedList: !1,
+ scrollSmooth: !1,
+ headingsOffset: 32
+ }
+ ),
+ matchMedia('(min-width: 1200px)'),
+ Theme.getThemeMapper('default', 'dark');
+ const dn = document.getElementById('mode-toggle');
+ const pn = document.getElementById('sidebar'),
+ hn = document.getElementById('sidebar-trigger'),
+ mn = document.getElementById('mask');
+ class gn {
+ static toggle() {
+ (vn._ = Je(gn, this, !Je(gn, this, vn)._)),
+ document.body.toggleAttribute('sidebar-display', Je(gn, this, vn)._),
+ pn.classList.toggle('z-2', Je(gn, this, vn)._),
+ mn.classList.toggle('d-none', !Je(gn, this, vn)._);
+ }
+ }
+ var vn = { _: !1 };
+ const bn = document.getElementById('sidebar-trigger'),
+ yn = document.getElementById('search-trigger'),
+ _n = document.getElementById('search-cancel'),
+ wn = document.querySelectorAll('#main-wrapper>.container>.row'),
+ En = document.getElementById('topbar-title'),
+ On = document.getElementById('search'),
+ xn = document.getElementById('search-result-wrapper'),
+ An = document.getElementById('search-results'),
+ Cn = document.getElementById('search-input'),
+ Tn = document.getElementById('search-hints'),
+ Ln = 'd-block',
+ Sn = 'd-none',
+ jn = 'input-focus',
+ kn = 'd-flex';
+ class Dn {
+ static on() {
+ bn.classList.add(Sn),
+ En.classList.add(Sn),
+ yn.classList.add(Sn),
+ On.classList.add(kn),
+ _n.classList.add(Ln);
+ }
+ static off() {
+ _n.classList.remove(Ln),
+ On.classList.remove(kn),
+ bn.classList.remove(Sn),
+ En.classList.remove(Sn),
+ yn.classList.remove(Sn);
+ }
+ }
+ class Pn {
+ static on() {
+ this.resultVisible ||
+ (xn.classList.remove(Sn),
+ wn.forEach((t) => {
+ t.classList.add(Sn);
+ }),
+ (this.resultVisible = !0));
+ }
+ static off() {
+ this.resultVisible &&
+ ((An.innerHTML = ''),
+ Tn.classList.contains(Sn) && Tn.classList.remove(Sn),
+ xn.classList.add(Sn),
+ wn.forEach((t) => {
+ t.classList.remove(Sn);
+ }),
+ (Cn.textContent = ''),
+ (this.resultVisible = !1));
+ }
+ }
+ function Mn() {
+ return _n.classList.contains(Ln);
+ }
+ Ze(Pn, 'resultVisible', !1),
+ (hn.onclick = mn.onclick = () => gn.toggle()),
+ yn.addEventListener('click', () => {
+ Dn.on(), Pn.on(), Cn.focus();
+ }),
+ _n.addEventListener('click', () => {
+ Dn.off(), Pn.off();
+ }),
+ Cn.addEventListener('focus', () => {
+ On.classList.add(jn);
+ }),
+ Cn.addEventListener('focusout', () => {
+ On.classList.remove(jn);
+ }),
+ Cn.addEventListener('input', () => {
+ '' === Cn.value
+ ? Mn()
+ ? Tn.classList.remove(Sn)
+ : Pn.off()
+ : (Pn.on(), Mn() && Tn.classList.add(Sn));
+ }),
+ dayjs.locale(Ge.locale),
+ dayjs.extend(window.dayjs_plugin_localizedFormat),
+ document.querySelectorAll(`[${Ge.attrTimestamp}]`).forEach((t) => {
+ const e = dayjs.unix(Ge.getTimestamp(t)),
+ n = e.format(Ge.getDateFormat(t));
+ if (
+ ((t.textContent = n),
+ t.removeAttribute(Ge.attrTimestamp),
+ t.removeAttribute(Ge.attrDateFormat),
+ t.hasAttribute('data-bs-toggle') &&
+ 'tooltip' === t.getAttribute('data-bs-toggle'))
+ ) {
+ const n = e.format('llll');
+ t.setAttribute('data-bs-title', n);
+ }
+ }),
+ dn &&
+ dn.addEventListener('click', () => {
+ Theme.flip();
+ }),
+ (function () {
+ const t = document.getElementById('back-to-top');
+ window.addEventListener('scroll', () => {
+ window.scrollY > 50
+ ? t.classList.add('show')
+ : t.classList.remove('show');
+ }),
+ t.addEventListener('click', () => {
+ window.scrollTo({ top: 0 });
+ });
+ })(),
+ [...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map(
+ (t) => new Xe(t)
+ );
+})();
diff --git a/assets/js/dist/page.min.js b/assets/js/dist/page.min.js
index 76669b44d8b..be136d49ab2 100644
--- a/assets/js/dist/page.min.js
+++ b/assets/js/dist/page.min.js
@@ -1,4 +1,3354 @@
/*!
* jekyll-theme-chirpy v7.1.1 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/
*/
-!function(){"use strict";const e=new Map;var t={set(t,n,i){e.has(t)||e.set(t,new Map);const o=e.get(t);o.has(n)||0===o.size?o.set(n,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(o.keys())[0]}.`)},get:(t,n)=>e.has(t)&&e.get(t).get(n)||null,remove(t,n){if(!e.has(t))return;const i=e.get(t);i.delete(n),0===i.size&&e.delete(t)}};const n="transitionend",i=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,((e,t)=>`#${CSS.escape(t)}`))),e),o=e=>!(!e||"object"!=typeof e)&&(void 0!==e.jquery&&(e=e[0]),void 0!==e.nodeType),r=e=>o(e)?e.jquery?e[0]:e:"string"==typeof e&&e.length>0?document.querySelector(i(e)):null,s=e=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof e.getRootNode){const t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?s(e.parentNode):null},a=()=>{},l=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,c=[],u=()=>"rtl"===document.documentElement.dir,d=e=>{var t;t=()=>{const t=l();if(t){const n=e.NAME,i=t.fn[n];t.fn[n]=e.jQueryInterface,t.fn[n].Constructor=e,t.fn[n].noConflict=()=>(t.fn[n]=i,e.jQueryInterface)}},"loading"===document.readyState?(c.length||document.addEventListener("DOMContentLoaded",(()=>{for(const e of c)e()})),c.push(t)):t()},f=function(e){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e;return"function"==typeof e?e(...arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]):t},p=function(e,t){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void f(e);const i=(e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:n}=window.getComputedStyle(e);const i=Number.parseFloat(t),o=Number.parseFloat(n);return i||o?(t=t.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(t)+Number.parseFloat(n))):0})(t)+5;let o=!1;const r=i=>{let{target:s}=i;s===t&&(o=!0,t.removeEventListener(n,r),f(e))};t.addEventListener(n,r),setTimeout((()=>{o||t.dispatchEvent(new Event(n))}),i)},h=/[^.]*(?=\..*)\.|.*/,m=/\..*/,g=/::\d+$/,b={};let v=1;const y={mouseenter:"mouseover",mouseleave:"mouseout"},_=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function w(e,t){return t&&`${t}::${v++}`||e.uidEvent||v++}function E(e){const t=w(e);return e.uidEvent=t,b[t]=b[t]||{},b[t]}function A(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return Object.values(e).find((e=>e.callable===t&&e.delegationSelector===n))}function x(e,t,n){const i="string"==typeof t,o=i?n:t||n;let r=L(e);return _.has(r)||(r=e),[i,o,r]}function T(e,t,n,i,o){if("string"!=typeof t||!e)return;let[r,s,a]=x(t,n,i);if(t in y){const e=e=>function(t){if(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))return e.call(this,t)};s=e(s)}const l=E(e),c=l[a]||(l[a]={}),u=A(c,s,r?n:null);if(u)return void(u.oneOff=u.oneOff&&o);const d=w(s,t.replace(h,"")),f=r?function(e,t,n){return function i(o){const r=e.querySelectorAll(t);for(let{target:s}=o;s&&s!==this;s=s.parentNode)for(const a of r)if(a===s)return N(o,{delegateTarget:s}),i.oneOff&&S.off(e,o.type,t,n),n.apply(s,[o])}}(e,n,s):function(e,t){return function n(i){return N(i,{delegateTarget:e}),n.oneOff&&S.off(e,i.type,t),t.apply(e,[i])}}(e,s);f.delegationSelector=r?n:null,f.callable=s,f.oneOff=o,f.uidEvent=d,c[d]=f,e.addEventListener(a,f,r)}function C(e,t,n,i,o){const r=A(t[n],i,o);r&&(e.removeEventListener(n,r,Boolean(o)),delete t[n][r.uidEvent])}function O(e,t,n,i){const o=t[n]||{};for(const[r,s]of Object.entries(o))r.includes(i)&&C(e,t,n,s.callable,s.delegationSelector)}function L(e){return e=e.replace(m,""),y[e]||e}const S={on(e,t,n,i){T(e,t,n,i,!1)},one(e,t,n,i){T(e,t,n,i,!0)},off(e,t,n,i){if("string"!=typeof t||!e)return;const[o,r,s]=x(t,n,i),a=s!==t,l=E(e),c=l[s]||{},u=t.startsWith(".");if(void 0===r){if(u)for(const n of Object.keys(l))O(e,l,n,t.slice(1));for(const[n,i]of Object.entries(c)){const o=n.replace(g,"");a&&!t.includes(o)||C(e,l,s,i.callable,i.delegationSelector)}}else{if(!Object.keys(c).length)return;C(e,l,s,r,o?n:null)}},trigger(e,t,n){if("string"!=typeof t||!e)return null;const i=l();let o=null,r=!0,s=!0,a=!1;t!==L(t)&&i&&(o=i.Event(t,n),i(e).trigger(o),r=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());const c=N(new Event(t,{bubbles:r,cancelable:!0}),n);return a&&c.preventDefault(),s&&e.dispatchEvent(c),c.defaultPrevented&&o&&o.preventDefault(),c}};function N(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(const[n,i]of Object.entries(t))try{e[n]=i}catch{Object.defineProperty(e,n,{configurable:!0,get:()=>i})}return e}function k(e){if("true"===e)return!0;if("false"===e)return!1;if(e===Number(e).toString())return Number(e);if(""===e||"null"===e)return null;if("string"!=typeof e)return e;try{return JSON.parse(decodeURIComponent(e))}catch{return e}}function D(e){return e.replace(/[A-Z]/g,(e=>`-${e.toLowerCase()}`))}const j={setDataAttribute(e,t,n){e.setAttribute(`data-bs-${D(t)}`,n)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${D(t)}`)},getDataAttributes(e){if(!e)return{};const t={},n=Object.keys(e.dataset).filter((e=>e.startsWith("bs")&&!e.startsWith("bsConfig")));for(const i of n){let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),t[n]=k(e.dataset[i])}return t},getDataAttribute:(e,t)=>k(e.getAttribute(`data-bs-${D(t)}`))};class B{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(e){return e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e}_mergeConfigObj(e,t){const n=o(t)?j.getDataAttribute(t,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...o(t)?j.getDataAttributes(t):{},..."object"==typeof e?e:{}}}_typeCheckConfig(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[i,r]of Object.entries(t)){const t=e[i],s=o(t)?"element":null==(n=t)?`${n}`:Object.prototype.toString.call(n).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(r).test(s))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${i}" provided type "${s}" but expected type "${r}".`)}var n}}class P extends B{constructor(e,n){super(),(e=r(e))&&(this._element=e,this._config=this._getConfig(n),t.set(this._element,this.constructor.DATA_KEY,this))}dispose(){t.remove(this._element,this.constructor.DATA_KEY),S.off(this._element,this.constructor.EVENT_KEY);for(const e of Object.getOwnPropertyNames(this))this[e]=null}_queueCallback(e,t){p(e,t,!(arguments.length>2&&void 0!==arguments[2])||arguments[2])}_getConfig(e){return e=this._mergeConfigObj(e,this._element),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}static getInstance(e){return t.get(r(e),this.DATA_KEY)}static getOrCreateInstance(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getInstance(e)||new this(e,"object"==typeof t?t:null)}static get VERSION(){return"5.3.3"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(e){return`${e}${this.EVENT_KEY}`}}const M=e=>{let t=e.getAttribute("data-bs-target");if(!t||"#"===t){let n=e.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n=`#${n.split("#")[1]}`),t=n&&"#"!==n?n.trim():null}return t?t.split(",").map((e=>i(e))).join(","):null},I={find(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return[].concat(...Element.prototype.querySelectorAll.call(t,e))},findOne(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return Element.prototype.querySelector.call(t,e)},children:(e,t)=>[].concat(...e.children).filter((e=>e.matches(t))),parents(e,t){const n=[];let i=e.parentNode.closest(t);for(;i;)n.push(i),i=i.parentNode.closest(t);return n},prev(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return[n];n=n.previousElementSibling}return[]},next(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return[n];n=n.nextElementSibling}return[]},focusableChildren(e){const t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((e=>`${e}:not([tabindex^="-"])`)).join(",");return this.find(t,e).filter((e=>!(e=>!e||e.nodeType!==Node.ELEMENT_NODE||!!e.classList.contains("disabled")||(void 0!==e.disabled?e.disabled:e.hasAttribute("disabled")&&"false"!==e.getAttribute("disabled")))(e)&&(e=>{if(!o(e)||0===e.getClientRects().length)return!1;const t="visible"===getComputedStyle(e).getPropertyValue("visibility"),n=e.closest("details:not([open])");if(!n)return t;if(n!==e){const t=e.closest("summary");if(t&&t.parentNode!==n)return!1;if(null===t)return!1}return t})(e)))},getSelectorFromElement(e){const t=M(e);return t&&I.findOne(t)?t:null},getElementFromSelector(e){const t=M(e);return t?I.findOne(t):null},getMultipleElementsFromSelector(e){const t=M(e);return t?I.find(t):[]}},H=".bs.collapse",F=`show${H}`,q=`shown${H}`,$=`hide${H}`,z=`hidden${H}`,R=`click${H}.data-api`,W="show",V="collapse",U="collapsing",Y=`:scope .${V} .${V}`,K='[data-bs-toggle="collapse"]',Q={parent:null,toggle:!0},X={parent:"(null|element)",toggle:"boolean"};class G extends P{constructor(e,t){super(e,t),this._isTransitioning=!1,this._triggerArray=[];const n=I.find(K);for(const e of n){const t=I.getSelectorFromElement(e),n=I.find(t).filter((e=>e===this._element));null!==t&&n.length&&this._triggerArray.push(e)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Q}static get DefaultType(){return X}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let e=[];if(this._config.parent&&(e=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((e=>e!==this._element)).map((e=>G.getOrCreateInstance(e,{toggle:!1})))),e.length&&e[0]._isTransitioning)return;if(S.trigger(this._element,F).defaultPrevented)return;for(const t of e)t.hide();const t=this._getDimension();this._element.classList.remove(V),this._element.classList.add(U),this._element.style[t]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n=`scroll${t[0].toUpperCase()+t.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(U),this._element.classList.add(V,W),this._element.style[t]="",S.trigger(this._element,q)}),this._element,!0),this._element.style[t]=`${this._element[n]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(S.trigger(this._element,$).defaultPrevented)return;const e=this._getDimension();this._element.style[e]=`${this._element.getBoundingClientRect()[e]}px`,this._element.offsetHeight,this._element.classList.add(U),this._element.classList.remove(V,W);for(const e of this._triggerArray){const t=I.getElementFromSelector(e);t&&!this._isShown(t)&&this._addAriaAndCollapsedClass([e],!1)}this._isTransitioning=!0;this._element.style[e]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(U),this._element.classList.add(V),S.trigger(this._element,z)}),this._element,!0)}_isShown(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._element).classList.contains(W)}_configAfterMerge(e){return e.toggle=Boolean(e.toggle),e.parent=r(e.parent),e}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const e=this._getFirstLevelChildren(K);for(const t of e){const e=I.getElementFromSelector(t);e&&this._addAriaAndCollapsedClass([t],this._isShown(e))}}_getFirstLevelChildren(e){const t=I.find(Y,this._config.parent);return I.find(e,this._config.parent).filter((e=>!t.includes(e)))}_addAriaAndCollapsedClass(e,t){if(e.length)for(const n of e)n.classList.toggle("collapsed",!t),n.setAttribute("aria-expanded",t)}static jQueryInterface(e){const t={};return"string"==typeof e&&/show|hide/.test(e)&&(t.toggle=!1),this.each((function(){const n=G.getOrCreateInstance(this,t);if("string"==typeof e){if(void 0===n[e])throw new TypeError(`No method named "${e}"`);n[e]()}}))}}S.on(document,R,K,(function(e){("A"===e.target.tagName||e.delegateTarget&&"A"===e.delegateTarget.tagName)&&e.preventDefault();for(const e of I.getMultipleElementsFromSelector(this))G.getOrCreateInstance(e,{toggle:!1}).toggle()})),d(G),document.getElementsByClassName("collapse");var J="top",Z="bottom",ee="right",te="left",ne="auto",ie=[J,Z,ee,te],oe="start",re="end",se="clippingParents",ae="viewport",le="popper",ce="reference",ue=ie.reduce((function(e,t){return e.concat([t+"-"+oe,t+"-"+re])}),[]),de=[].concat(ie,[ne]).reduce((function(e,t){return e.concat([t,t+"-"+oe,t+"-"+re])}),[]),fe="beforeRead",pe="read",he="afterRead",me="beforeMain",ge="main",be="afterMain",ve="beforeWrite",ye="write",_e="afterWrite",we=[fe,pe,he,me,ge,be,ve,ye,_e];function Ee(e){return e?(e.nodeName||"").toLowerCase():null}function Ae(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function xe(e){return e instanceof Ae(e).Element||e instanceof Element}function Te(e){return e instanceof Ae(e).HTMLElement||e instanceof HTMLElement}function Ce(e){return"undefined"!=typeof ShadowRoot&&(e instanceof Ae(e).ShadowRoot||e instanceof ShadowRoot)}var Oe={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},i=t.attributes[e]||{},o=t.elements[e];Te(o)&&Ee(o)&&(Object.assign(o.style,n),Object.keys(i).forEach((function(e){var t=i[e];!1===t?o.removeAttribute(e):o.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var i=t.elements[e],o=t.attributes[e]||{},r=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{});Te(i)&&Ee(i)&&(Object.assign(i.style,r),Object.keys(o).forEach((function(e){i.removeAttribute(e)})))}))}},requires:["computeStyles"]};function Le(e){return e.split("-")[0]}var Se=Math.max,Ne=Math.min,ke=Math.round;function De(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map((function(e){return e.brand+"/"+e.version})).join(" "):navigator.userAgent}function je(){return!/^((?!chrome|android).)*safari/i.test(De())}function Be(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=!1);var i=e.getBoundingClientRect(),o=1,r=1;t&&Te(e)&&(o=e.offsetWidth>0&&ke(i.width)/e.offsetWidth||1,r=e.offsetHeight>0&&ke(i.height)/e.offsetHeight||1);var s=(xe(e)?Ae(e):window).visualViewport,a=!je()&&n,l=(i.left+(a&&s?s.offsetLeft:0))/o,c=(i.top+(a&&s?s.offsetTop:0))/r,u=i.width/o,d=i.height/r;return{width:u,height:d,top:c,right:l+u,bottom:c+d,left:l,x:l,y:c}}function Pe(e){var t=Be(e),n=e.offsetWidth,i=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-i)<=1&&(i=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:i}}function Me(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&Ce(n)){var i=t;do{if(i&&e.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function Ie(e){return Ae(e).getComputedStyle(e)}function He(e){return["table","td","th"].indexOf(Ee(e))>=0}function Fe(e){return((xe(e)?e.ownerDocument:e.document)||window.document).documentElement}function qe(e){return"html"===Ee(e)?e:e.assignedSlot||e.parentNode||(Ce(e)?e.host:null)||Fe(e)}function $e(e){return Te(e)&&"fixed"!==Ie(e).position?e.offsetParent:null}function ze(e){for(var t=Ae(e),n=$e(e);n&&He(n)&&"static"===Ie(n).position;)n=$e(n);return n&&("html"===Ee(n)||"body"===Ee(n)&&"static"===Ie(n).position)?t:n||function(e){var t=/firefox/i.test(De());if(/Trident/i.test(De())&&Te(e)&&"fixed"===Ie(e).position)return null;var n=qe(e);for(Ce(n)&&(n=n.host);Te(n)&&["html","body"].indexOf(Ee(n))<0;){var i=Ie(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||t&&"filter"===i.willChange||t&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(e)||t}function Re(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function We(e,t,n){return Se(e,Ne(t,n))}function Ve(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function Ue(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}var Ye={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,i=e.name,o=e.options,r=n.elements.arrow,s=n.modifiersData.popperOffsets,a=Le(n.placement),l=Re(a),c=[te,ee].indexOf(a)>=0?"height":"width";if(r&&s){var u=function(e,t){return Ve("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:Ue(e,ie))}(o.padding,n),d=Pe(r),f="y"===l?J:te,p="y"===l?Z:ee,h=n.rects.reference[c]+n.rects.reference[l]-s[l]-n.rects.popper[c],m=s[l]-n.rects.reference[l],g=ze(r),b=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,v=h/2-m/2,y=u[f],_=b-d[c]-u[p],w=b/2-d[c]/2+v,E=We(y,w,_),A=l;n.modifiersData[i]=((t={})[A]=E,t.centerOffset=E-w,t)}},effect:function(e){var t=e.state,n=e.options.element,i=void 0===n?"[data-popper-arrow]":n;null!=i&&("string"!=typeof i||(i=t.elements.popper.querySelector(i)))&&Me(t.elements.popper,i)&&(t.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Ke(e){return e.split("-")[1]}var Qe={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Xe(e){var t,n=e.popper,i=e.popperRect,o=e.placement,r=e.variation,s=e.offsets,a=e.position,l=e.gpuAcceleration,c=e.adaptive,u=e.roundOffsets,d=e.isFixed,f=s.x,p=void 0===f?0:f,h=s.y,m=void 0===h?0:h,g="function"==typeof u?u({x:p,y:m}):{x:p,y:m};p=g.x,m=g.y;var b=s.hasOwnProperty("x"),v=s.hasOwnProperty("y"),y=te,_=J,w=window;if(c){var E=ze(n),A="clientHeight",x="clientWidth";if(E===Ae(n)&&"static"!==Ie(E=Fe(n)).position&&"absolute"===a&&(A="scrollHeight",x="scrollWidth"),o===J||(o===te||o===ee)&&r===re)_=Z,m-=(d&&E===w&&w.visualViewport?w.visualViewport.height:E[A])-i.height,m*=l?1:-1;if(o===te||(o===J||o===Z)&&r===re)y=ee,p-=(d&&E===w&&w.visualViewport?w.visualViewport.width:E[x])-i.width,p*=l?1:-1}var T,C=Object.assign({position:a},c&&Qe),O=!0===u?function(e,t){var n=e.x,i=e.y,o=t.devicePixelRatio||1;return{x:ke(n*o)/o||0,y:ke(i*o)/o||0}}({x:p,y:m},Ae(n)):{x:p,y:m};return p=O.x,m=O.y,l?Object.assign({},C,((T={})[_]=v?"0":"",T[y]=b?"0":"",T.transform=(w.devicePixelRatio||1)<=1?"translate("+p+"px, "+m+"px)":"translate3d("+p+"px, "+m+"px, 0)",T)):Object.assign({},C,((t={})[_]=v?m+"px":"",t[y]=b?p+"px":"",t.transform="",t))}var Ge={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,i=n.gpuAcceleration,o=void 0===i||i,r=n.adaptive,s=void 0===r||r,a=n.roundOffsets,l=void 0===a||a,c={placement:Le(t.placement),variation:Ke(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,Xe(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:s,roundOffsets:l})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,Xe(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}},Je={passive:!0};var Ze={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,i=e.options,o=i.scroll,r=void 0===o||o,s=i.resize,a=void 0===s||s,l=Ae(t.elements.popper),c=[].concat(t.scrollParents.reference,t.scrollParents.popper);return r&&c.forEach((function(e){e.addEventListener("scroll",n.update,Je)})),a&&l.addEventListener("resize",n.update,Je),function(){r&&c.forEach((function(e){e.removeEventListener("scroll",n.update,Je)})),a&&l.removeEventListener("resize",n.update,Je)}},data:{}},et={left:"right",right:"left",bottom:"top",top:"bottom"};function tt(e){return e.replace(/left|right|bottom|top/g,(function(e){return et[e]}))}var nt={start:"end",end:"start"};function it(e){return e.replace(/start|end/g,(function(e){return nt[e]}))}function ot(e){var t=Ae(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function rt(e){return Be(Fe(e)).left+ot(e).scrollLeft}function st(e){var t=Ie(e),n=t.overflow,i=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function at(e){return["html","body","#document"].indexOf(Ee(e))>=0?e.ownerDocument.body:Te(e)&&st(e)?e:at(qe(e))}function lt(e,t){var n;void 0===t&&(t=[]);var i=at(e),o=i===(null==(n=e.ownerDocument)?void 0:n.body),r=Ae(i),s=o?[r].concat(r.visualViewport||[],st(i)?i:[]):i,a=t.concat(s);return o?a:a.concat(lt(qe(s)))}function ct(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function ut(e,t,n){return t===ae?ct(function(e,t){var n=Ae(e),i=Fe(e),o=n.visualViewport,r=i.clientWidth,s=i.clientHeight,a=0,l=0;if(o){r=o.width,s=o.height;var c=je();(c||!c&&"fixed"===t)&&(a=o.offsetLeft,l=o.offsetTop)}return{width:r,height:s,x:a+rt(e),y:l}}(e,n)):xe(t)?function(e,t){var n=Be(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(t,n):ct(function(e){var t,n=Fe(e),i=ot(e),o=null==(t=e.ownerDocument)?void 0:t.body,r=Se(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=Se(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-i.scrollLeft+rt(e),l=-i.scrollTop;return"rtl"===Ie(o||n).direction&&(a+=Se(n.clientWidth,o?o.clientWidth:0)-r),{width:r,height:s,x:a,y:l}}(Fe(e)))}function dt(e,t,n,i){var o="clippingParents"===t?function(e){var t=lt(qe(e)),n=["absolute","fixed"].indexOf(Ie(e).position)>=0&&Te(e)?ze(e):e;return xe(n)?t.filter((function(e){return xe(e)&&Me(e,n)&&"body"!==Ee(e)})):[]}(e):[].concat(t),r=[].concat(o,[n]),s=r[0],a=r.reduce((function(t,n){var o=ut(e,n,i);return t.top=Se(o.top,t.top),t.right=Ne(o.right,t.right),t.bottom=Ne(o.bottom,t.bottom),t.left=Se(o.left,t.left),t}),ut(e,s,i));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function ft(e){var t,n=e.reference,i=e.element,o=e.placement,r=o?Le(o):null,s=o?Ke(o):null,a=n.x+n.width/2-i.width/2,l=n.y+n.height/2-i.height/2;switch(r){case J:t={x:a,y:n.y-i.height};break;case Z:t={x:a,y:n.y+n.height};break;case ee:t={x:n.x+n.width,y:l};break;case te:t={x:n.x-i.width,y:l};break;default:t={x:n.x,y:n.y}}var c=r?Re(r):null;if(null!=c){var u="y"===c?"height":"width";switch(s){case oe:t[c]=t[c]-(n[u]/2-i[u]/2);break;case re:t[c]=t[c]+(n[u]/2-i[u]/2)}}return t}function pt(e,t){void 0===t&&(t={});var n=t,i=n.placement,o=void 0===i?e.placement:i,r=n.strategy,s=void 0===r?e.strategy:r,a=n.boundary,l=void 0===a?se:a,c=n.rootBoundary,u=void 0===c?ae:c,d=n.elementContext,f=void 0===d?le:d,p=n.altBoundary,h=void 0!==p&&p,m=n.padding,g=void 0===m?0:m,b=Ve("number"!=typeof g?g:Ue(g,ie)),v=f===le?ce:le,y=e.rects.popper,_=e.elements[h?v:f],w=dt(xe(_)?_:_.contextElement||Fe(e.elements.popper),l,u,s),E=Be(e.elements.reference),A=ft({reference:E,element:y,placement:o}),x=ct(Object.assign({},y,A)),T=f===le?x:E,C={top:w.top-T.top+b.top,bottom:T.bottom-w.bottom+b.bottom,left:w.left-T.left+b.left,right:T.right-w.right+b.right},O=e.modifiersData.offset;if(f===le&&O){var L=O[o];Object.keys(C).forEach((function(e){var t=[ee,Z].indexOf(e)>=0?1:-1,n=[J,Z].indexOf(e)>=0?"y":"x";C[e]+=L[n]*t}))}return C}function ht(e,t){void 0===t&&(t={});var n=t,i=n.placement,o=n.boundary,r=n.rootBoundary,s=n.padding,a=n.flipVariations,l=n.allowedAutoPlacements,c=void 0===l?de:l,u=Ke(i),d=u?a?ue:ue.filter((function(e){return Ke(e)===u})):ie,f=d.filter((function(e){return c.indexOf(e)>=0}));0===f.length&&(f=d);var p=f.reduce((function(t,n){return t[n]=pt(e,{placement:n,boundary:o,rootBoundary:r,padding:s})[Le(n)],t}),{});return Object.keys(p).sort((function(e,t){return p[e]-p[t]}))}var mt={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,i=e.name;if(!t.modifiersData[i]._skip){for(var o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0===s||s,l=n.fallbackPlacements,c=n.padding,u=n.boundary,d=n.rootBoundary,f=n.altBoundary,p=n.flipVariations,h=void 0===p||p,m=n.allowedAutoPlacements,g=t.options.placement,b=Le(g),v=l||(b===g||!h?[tt(g)]:function(e){if(Le(e)===ne)return[];var t=tt(e);return[it(e),t,it(t)]}(g)),y=[g].concat(v).reduce((function(e,n){return e.concat(Le(n)===ne?ht(t,{placement:n,boundary:u,rootBoundary:d,padding:c,flipVariations:h,allowedAutoPlacements:m}):n)}),[]),_=t.rects.reference,w=t.rects.popper,E=new Map,A=!0,x=y[0],T=0;T
',title:"",trigger:"hover focus"},Qt={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class Xt extends P{constructor(e,t){if(void 0===Nt)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(e,t),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Kt}static get DefaultType(){return Qt}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),S.off(this._element.closest(Rt),Wt,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const e=S.trigger(this._element,this.constructor.eventName("show")),t=(s(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(e.defaultPrevented||!t)return;this._disposePopper();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(n),S.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(n),n.classList.add($t),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))S.on(e,"mouseover",a);this._queueCallback((()=>{S.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(!this._isShown())return;if(S.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove($t),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))S.off(e,"mouseover",a);this._activeTrigger.click=!1,this._activeTrigger[Ut]=!1,this._activeTrigger[Vt]=!1,this._isHovered=null;this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),S.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(e){const t=this._getTemplateFactory(e).toHtml();if(!t)return null;t.classList.remove(qt,$t),t.classList.add(`bs-${this.constructor.NAME}-auto`);const n=(e=>{do{e+=Math.floor(1e6*Math.random())}while(document.getElementById(e));return e})(this.constructor.NAME).toString();return t.setAttribute("id",n),this._isAnimated()&&t.classList.add(qt),t}setContent(e){this._newContent=e,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(e){return this._templateFactory?this._templateFactory.changeContent(e):this._templateFactory=new Ht({...this._config,content:e,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[zt]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(e){return this.constructor.getOrCreateInstance(e.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(qt)}_isShown(){return this.tip&&this.tip.classList.contains($t)}_createPopper(e){const t=f(this._config.placement,[this,e,this._element]),n=Yt[t.toUpperCase()];return St(this._element,e,this._getPopperConfig(n))}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map((e=>Number.parseInt(e,10))):"function"==typeof e?t=>e(t,this._element):e}_resolvePossibleFunction(e){return f(e,[this._element])}_getPopperConfig(e){const t={placement:e,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:e=>{this._getTipElement().setAttribute("data-popper-placement",e.state.placement)}}]};return{...t,...f(this._config.popperConfig,[t])}}_setListeners(){const e=this._config.trigger.split(" ");for(const t of e)if("click"===t)S.on(this._element,this.constructor.eventName("click"),this._config.selector,(e=>{this._initializeOnDelegatedTarget(e).toggle()}));else if("manual"!==t){const e=t===Vt?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n=t===Vt?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");S.on(this._element,e,this._config.selector,(e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusin"===e.type?Ut:Vt]=!0,t._enter()})),S.on(this._element,n,this._config.selector,(e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusout"===e.type?Ut:Vt]=t._element.contains(e.relatedTarget),t._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},S.on(this._element.closest(Rt),Wt,this._hideModalHandler)}_fixTitle(){const e=this._element.getAttribute("title");e&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",e),this._element.setAttribute("data-bs-original-title",e),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(e,t){clearTimeout(this._timeout),this._timeout=setTimeout(e,t)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(e){const t=j.getDataAttributes(this._element);for(const e of Object.keys(t))Ft.has(e)&&delete t[e];return e={...t,..."object"==typeof e&&e?e:{}},e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e.container=!1===e.container?document.body:r(e.container),"number"==typeof e.delay&&(e.delay={show:e.delay,hide:e.delay}),"number"==typeof e.title&&(e.title=e.title.toString()),"number"==typeof e.content&&(e.content=e.content.toString()),e}_getDelegateConfig(){const e={};for(const[t,n]of Object.entries(this._config))this.constructor.Default[t]!==n&&(e[t]=n);return e.selector=!1,e.trigger="manual",e}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(e){return this.each((function(){const t=Xt.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}}))}}d(Xt);const Gt=".code-header>button.button-copy",Jt="iconfont icon-copy",Zt="iconfont icon-check",en="timeout",tn="data-title-succeed",nn="data-bs-original-title",on=2e3;function rn(e){if(e.hasAttribute(en)){let t=e.getAttribute(en);if(Number(t)>Date.now())return!0}return!1}function sn(e){e.setAttribute(en,Date.now()+on)}function an(e){e.removeAttribute(en)}function ln(){const e=document.querySelectorAll(Gt);if(0===e.length)return;const t=new ClipboardJS(Gt,{target:e=>e.parentNode.nextElementSibling.querySelector("code .rouge-code")});[...e].map((e=>new Xt(e,{placement:"left"}))),t.on("success",(e=>{const t=e.trigger;(e.clearSelection(),rn(t))||(t.children[0].setAttribute("class",Zt),function(e){const t=e.getAttribute(tn);e.setAttribute(nn,t),Xt.getInstance(e).show()}(t),sn(t),setTimeout((()=>{!function(e){Xt.getInstance(e).hide(),e.removeAttribute(nn)}(t),function(e){e.children[0].setAttribute("class",Jt)}(t),an(t)}),on))}))}const cn="data-src",un="data-lqip",dn={SHIMMER:"shimmer",BLUR:"blur"};function fn(e){this.parentElement.classList.remove(e)}function pn(){this.complete&&(this.hasAttribute(un)?fn.call(this,dn.BLUR):fn.call(this,dn.SHIMMER))}function hn(){const e=this.getAttribute(cn);this.setAttribute("src",encodeURI(e)),this.removeAttribute(cn)}const mn=".popup:not(.dark)",gn=".popup:not(.light)";let bn=mn;function vn(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}function yn(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var _n;const wn=document.getElementById("toc-bar"),En=document.getElementById("toc-solo-trigger"),An=document.getElementsByClassName("toc-trigger"),xn=document.getElementById("toc-popup"),Tn=document.getElementById("toc-popup-close"),Cn="overflow-hidden",On="closing";class Ln{static initBar(){new IntersectionObserver((e=>{e.forEach((e=>{wn.classList.toggle("invisible",e.isIntersecting)}))}),{rootMargin:`-${vn(Ln,this,Nn)._}px 0px 0px 0px`}).observe(En),Sn._=vn(Ln,this,!1)}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach((e=>{e.onclick=()=>this.hidePopup()}))}static refresh(){vn(Ln,this,Sn)._&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static get popupOpened(){return xn.open}static showPopup(){this.lockScroll(!0),xn.showModal();xn.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(){xn.toggleAttribute(On),xn.addEventListener("animationend",(()=>{xn.toggleAttribute(On),xn.close()}),{once:!0}),this.lockScroll(!1)}static lockScroll(e){document.documentElement.classList.toggle(Cn,e),document.body.classList.toggle(Cn,e)}static clickBackdrop(e){if(xn.hasAttribute(On))return;const t=e.target.getBoundingClientRect();(e.clientX
',
+ title: '',
+ trigger: 'hover focus'
+ },
+ Qt = {
+ allowList: 'object',
+ animation: 'boolean',
+ boundary: '(string|element)',
+ container: '(string|element|boolean)',
+ customClass: '(string|function)',
+ delay: '(number|object)',
+ fallbackPlacements: 'array',
+ html: 'boolean',
+ offset: '(array|string|function)',
+ placement: '(string|function)',
+ popperConfig: '(null|object|function)',
+ sanitize: 'boolean',
+ sanitizeFn: '(null|function)',
+ selector: '(string|boolean)',
+ template: 'string',
+ title: '(string|element|function)',
+ trigger: 'string'
+ };
+ class Xt extends P {
+ constructor(e, t) {
+ if (void 0 === Nt)
+ throw new TypeError(
+ "Bootstrap's tooltips require Popper (https://popper.js.org)"
+ );
+ super(e, t),
+ (this._isEnabled = !0),
+ (this._timeout = 0),
+ (this._isHovered = null),
+ (this._activeTrigger = {}),
+ (this._popper = null),
+ (this._templateFactory = null),
+ (this._newContent = null),
+ (this.tip = null),
+ this._setListeners(),
+ this._config.selector || this._fixTitle();
+ }
+ static get Default() {
+ return Kt;
+ }
+ static get DefaultType() {
+ return Qt;
+ }
+ static get NAME() {
+ return 'tooltip';
+ }
+ enable() {
+ this._isEnabled = !0;
+ }
+ disable() {
+ this._isEnabled = !1;
+ }
+ toggleEnabled() {
+ this._isEnabled = !this._isEnabled;
+ }
+ toggle() {
+ this._isEnabled &&
+ ((this._activeTrigger.click = !this._activeTrigger.click),
+ this._isShown() ? this._leave() : this._enter());
+ }
+ dispose() {
+ clearTimeout(this._timeout),
+ S.off(this._element.closest(Rt), Wt, this._hideModalHandler),
+ this._element.getAttribute('data-bs-original-title') &&
+ this._element.setAttribute(
+ 'title',
+ this._element.getAttribute('data-bs-original-title')
+ ),
+ this._disposePopper(),
+ super.dispose();
+ }
+ show() {
+ if ('none' === this._element.style.display)
+ throw new Error('Please use show on visible elements');
+ if (!this._isWithContent() || !this._isEnabled) return;
+ const e = S.trigger(this._element, this.constructor.eventName('show')),
+ t = (
+ s(this._element) || this._element.ownerDocument.documentElement
+ ).contains(this._element);
+ if (e.defaultPrevented || !t) return;
+ this._disposePopper();
+ const n = this._getTipElement();
+ this._element.setAttribute('aria-describedby', n.getAttribute('id'));
+ const { container: i } = this._config;
+ if (
+ (this._element.ownerDocument.documentElement.contains(this.tip) ||
+ (i.append(n),
+ S.trigger(this._element, this.constructor.eventName('inserted'))),
+ (this._popper = this._createPopper(n)),
+ n.classList.add($t),
+ 'ontouchstart' in document.documentElement)
+ )
+ for (const e of [].concat(...document.body.children))
+ S.on(e, 'mouseover', a);
+ this._queueCallback(
+ () => {
+ S.trigger(this._element, this.constructor.eventName('shown')),
+ !1 === this._isHovered && this._leave(),
+ (this._isHovered = !1);
+ },
+ this.tip,
+ this._isAnimated()
+ );
+ }
+ hide() {
+ if (!this._isShown()) return;
+ if (
+ S.trigger(this._element, this.constructor.eventName('hide'))
+ .defaultPrevented
+ )
+ return;
+ if (
+ (this._getTipElement().classList.remove($t),
+ 'ontouchstart' in document.documentElement)
+ )
+ for (const e of [].concat(...document.body.children))
+ S.off(e, 'mouseover', a);
+ (this._activeTrigger.click = !1),
+ (this._activeTrigger[Ut] = !1),
+ (this._activeTrigger[Vt] = !1),
+ (this._isHovered = null);
+ this._queueCallback(
+ () => {
+ this._isWithActiveTrigger() ||
+ (this._isHovered || this._disposePopper(),
+ this._element.removeAttribute('aria-describedby'),
+ S.trigger(this._element, this.constructor.eventName('hidden')));
+ },
+ this.tip,
+ this._isAnimated()
+ );
+ }
+ update() {
+ this._popper && this._popper.update();
+ }
+ _isWithContent() {
+ return Boolean(this._getTitle());
+ }
+ _getTipElement() {
+ return (
+ this.tip ||
+ (this.tip = this._createTipElement(
+ this._newContent || this._getContentForTemplate()
+ )),
+ this.tip
+ );
+ }
+ _createTipElement(e) {
+ const t = this._getTemplateFactory(e).toHtml();
+ if (!t) return null;
+ t.classList.remove(qt, $t),
+ t.classList.add(`bs-${this.constructor.NAME}-auto`);
+ const n = ((e) => {
+ do {
+ e += Math.floor(1e6 * Math.random());
+ } while (document.getElementById(e));
+ return e;
+ })(this.constructor.NAME).toString();
+ return (
+ t.setAttribute('id', n), this._isAnimated() && t.classList.add(qt), t
+ );
+ }
+ setContent(e) {
+ (this._newContent = e),
+ this._isShown() && (this._disposePopper(), this.show());
+ }
+ _getTemplateFactory(e) {
+ return (
+ this._templateFactory
+ ? this._templateFactory.changeContent(e)
+ : (this._templateFactory = new Ht({
+ ...this._config,
+ content: e,
+ extraClass: this._resolvePossibleFunction(
+ this._config.customClass
+ )
+ })),
+ this._templateFactory
+ );
+ }
+ _getContentForTemplate() {
+ return { [zt]: this._getTitle() };
+ }
+ _getTitle() {
+ return (
+ this._resolvePossibleFunction(this._config.title) ||
+ this._element.getAttribute('data-bs-original-title')
+ );
+ }
+ _initializeOnDelegatedTarget(e) {
+ return this.constructor.getOrCreateInstance(
+ e.delegateTarget,
+ this._getDelegateConfig()
+ );
+ }
+ _isAnimated() {
+ return (
+ this._config.animation || (this.tip && this.tip.classList.contains(qt))
+ );
+ }
+ _isShown() {
+ return this.tip && this.tip.classList.contains($t);
+ }
+ _createPopper(e) {
+ const t = f(this._config.placement, [this, e, this._element]),
+ n = Yt[t.toUpperCase()];
+ return St(this._element, e, this._getPopperConfig(n));
+ }
+ _getOffset() {
+ const { offset: e } = this._config;
+ return 'string' == typeof e
+ ? e.split(',').map((e) => Number.parseInt(e, 10))
+ : 'function' == typeof e
+ ? (t) => e(t, this._element)
+ : e;
+ }
+ _resolvePossibleFunction(e) {
+ return f(e, [this._element]);
+ }
+ _getPopperConfig(e) {
+ const t = {
+ placement: e,
+ modifiers: [
+ {
+ name: 'flip',
+ options: { fallbackPlacements: this._config.fallbackPlacements }
+ },
+ { name: 'offset', options: { offset: this._getOffset() } },
+ {
+ name: 'preventOverflow',
+ options: { boundary: this._config.boundary }
+ },
+ {
+ name: 'arrow',
+ options: { element: `.${this.constructor.NAME}-arrow` }
+ },
+ {
+ name: 'preSetPlacement',
+ enabled: !0,
+ phase: 'beforeMain',
+ fn: (e) => {
+ this._getTipElement().setAttribute(
+ 'data-popper-placement',
+ e.state.placement
+ );
+ }
+ }
+ ]
+ };
+ return { ...t, ...f(this._config.popperConfig, [t]) };
+ }
+ _setListeners() {
+ const e = this._config.trigger.split(' ');
+ for (const t of e)
+ if ('click' === t)
+ S.on(
+ this._element,
+ this.constructor.eventName('click'),
+ this._config.selector,
+ (e) => {
+ this._initializeOnDelegatedTarget(e).toggle();
+ }
+ );
+ else if ('manual' !== t) {
+ const e =
+ t === Vt
+ ? this.constructor.eventName('mouseenter')
+ : this.constructor.eventName('focusin'),
+ n =
+ t === Vt
+ ? this.constructor.eventName('mouseleave')
+ : this.constructor.eventName('focusout');
+ S.on(this._element, e, this._config.selector, (e) => {
+ const t = this._initializeOnDelegatedTarget(e);
+ (t._activeTrigger['focusin' === e.type ? Ut : Vt] = !0), t._enter();
+ }),
+ S.on(this._element, n, this._config.selector, (e) => {
+ const t = this._initializeOnDelegatedTarget(e);
+ (t._activeTrigger['focusout' === e.type ? Ut : Vt] =
+ t._element.contains(e.relatedTarget)),
+ t._leave();
+ });
+ }
+ (this._hideModalHandler = () => {
+ this._element && this.hide();
+ }),
+ S.on(this._element.closest(Rt), Wt, this._hideModalHandler);
+ }
+ _fixTitle() {
+ const e = this._element.getAttribute('title');
+ e &&
+ (this._element.getAttribute('aria-label') ||
+ this._element.textContent.trim() ||
+ this._element.setAttribute('aria-label', e),
+ this._element.setAttribute('data-bs-original-title', e),
+ this._element.removeAttribute('title'));
+ }
+ _enter() {
+ this._isShown() || this._isHovered
+ ? (this._isHovered = !0)
+ : ((this._isHovered = !0),
+ this._setTimeout(() => {
+ this._isHovered && this.show();
+ }, this._config.delay.show));
+ }
+ _leave() {
+ this._isWithActiveTrigger() ||
+ ((this._isHovered = !1),
+ this._setTimeout(() => {
+ this._isHovered || this.hide();
+ }, this._config.delay.hide));
+ }
+ _setTimeout(e, t) {
+ clearTimeout(this._timeout), (this._timeout = setTimeout(e, t));
+ }
+ _isWithActiveTrigger() {
+ return Object.values(this._activeTrigger).includes(!0);
+ }
+ _getConfig(e) {
+ const t = j.getDataAttributes(this._element);
+ for (const e of Object.keys(t)) Ft.has(e) && delete t[e];
+ return (
+ (e = { ...t, ...('object' == typeof e && e ? e : {}) }),
+ (e = this._mergeConfigObj(e)),
+ (e = this._configAfterMerge(e)),
+ this._typeCheckConfig(e),
+ e
+ );
+ }
+ _configAfterMerge(e) {
+ return (
+ (e.container = !1 === e.container ? document.body : r(e.container)),
+ 'number' == typeof e.delay &&
+ (e.delay = { show: e.delay, hide: e.delay }),
+ 'number' == typeof e.title && (e.title = e.title.toString()),
+ 'number' == typeof e.content && (e.content = e.content.toString()),
+ e
+ );
+ }
+ _getDelegateConfig() {
+ const e = {};
+ for (const [t, n] of Object.entries(this._config))
+ this.constructor.Default[t] !== n && (e[t] = n);
+ return (e.selector = !1), (e.trigger = 'manual'), e;
+ }
+ _disposePopper() {
+ this._popper && (this._popper.destroy(), (this._popper = null)),
+ this.tip && (this.tip.remove(), (this.tip = null));
+ }
+ static jQueryInterface(e) {
+ return this.each(function () {
+ const t = Xt.getOrCreateInstance(this, e);
+ if ('string' == typeof e) {
+ if (void 0 === t[e]) throw new TypeError(`No method named "${e}"`);
+ t[e]();
+ }
+ });
+ }
+ }
+ d(Xt);
+ const Gt = '.code-header>button.button-copy',
+ Jt = 'iconfont icon-copy',
+ Zt = 'iconfont icon-check',
+ en = 'timeout',
+ tn = 'data-title-succeed',
+ nn = 'data-bs-original-title',
+ on = 2e3;
+ function rn(e) {
+ if (e.hasAttribute(en)) {
+ let t = e.getAttribute(en);
+ if (Number(t) > Date.now()) return !0;
+ }
+ return !1;
+ }
+ function sn(e) {
+ e.setAttribute(en, Date.now() + on);
+ }
+ function an(e) {
+ e.removeAttribute(en);
+ }
+ function ln() {
+ const e = document.querySelectorAll(Gt);
+ if (0 === e.length) return;
+ const t = new ClipboardJS(Gt, {
+ target: (e) =>
+ e.parentNode.nextElementSibling.querySelector('code .rouge-code')
+ });
+ [...e].map((e) => new Xt(e, { placement: 'left' })),
+ t.on('success', (e) => {
+ const t = e.trigger;
+ (e.clearSelection(), rn(t)) ||
+ (t.children[0].setAttribute('class', Zt),
+ (function (e) {
+ const t = e.getAttribute(tn);
+ e.setAttribute(nn, t), Xt.getInstance(e).show();
+ })(t),
+ sn(t),
+ setTimeout(() => {
+ !(function (e) {
+ Xt.getInstance(e).hide(), e.removeAttribute(nn);
+ })(t),
+ (function (e) {
+ e.children[0].setAttribute('class', Jt);
+ })(t),
+ an(t);
+ }, on));
+ });
+ }
+ const cn = 'data-src',
+ un = 'data-lqip',
+ dn = { SHIMMER: 'shimmer', BLUR: 'blur' };
+ function fn(e) {
+ this.parentElement.classList.remove(e);
+ }
+ function pn() {
+ this.complete &&
+ (this.hasAttribute(un)
+ ? fn.call(this, dn.BLUR)
+ : fn.call(this, dn.SHIMMER));
+ }
+ function hn() {
+ const e = this.getAttribute(cn);
+ this.setAttribute('src', encodeURI(e)), this.removeAttribute(cn);
+ }
+ const mn = '.popup:not(.dark)',
+ gn = '.popup:not(.light)';
+ let bn = mn;
+ function vn(e, t, n) {
+ if ('function' == typeof e ? e === t : e.has(t))
+ return arguments.length < 3 ? t : n;
+ throw new TypeError('Private element is not present on this object');
+ }
+ function yn(e, t, n) {
+ return (
+ (t = (function (e) {
+ var t = (function (e, t) {
+ if ('object' != typeof e || !e) return e;
+ var n = e[Symbol.toPrimitive];
+ if (void 0 !== n) {
+ var i = n.call(e, t || 'default');
+ if ('object' != typeof i) return i;
+ throw new TypeError('@@toPrimitive must return a primitive value.');
+ }
+ return ('string' === t ? String : Number)(e);
+ })(e, 'string');
+ return 'symbol' == typeof t ? t : t + '';
+ })(t)) in e
+ ? Object.defineProperty(e, t, {
+ value: n,
+ enumerable: !0,
+ configurable: !0,
+ writable: !0
+ })
+ : (e[t] = n),
+ e
+ );
+ }
+ var _n;
+ const wn = document.getElementById('toc-bar'),
+ En = document.getElementById('toc-solo-trigger'),
+ An = document.getElementsByClassName('toc-trigger'),
+ xn = document.getElementById('toc-popup'),
+ Tn = document.getElementById('toc-popup-close'),
+ Cn = 'overflow-hidden',
+ On = 'closing';
+ class Ln {
+ static initBar() {
+ new IntersectionObserver(
+ (e) => {
+ e.forEach((e) => {
+ wn.classList.toggle('invisible', e.isIntersecting);
+ });
+ },
+ { rootMargin: `-${vn(Ln, this, Nn)._}px 0px 0px 0px` }
+ ).observe(En),
+ (Sn._ = vn(Ln, this, !1));
+ }
+ static listenAnchors() {
+ [...document.getElementsByClassName('toc-link')].forEach((e) => {
+ e.onclick = () => this.hidePopup();
+ });
+ }
+ static refresh() {
+ vn(Ln, this, Sn)._ && this.initComponents(),
+ tocbot.refresh(this.options),
+ this.listenAnchors();
+ }
+ static get popupOpened() {
+ return xn.open;
+ }
+ static showPopup() {
+ this.lockScroll(!0), xn.showModal();
+ xn.querySelector('li.is-active-li').scrollIntoView({ block: 'center' });
+ }
+ static hidePopup() {
+ xn.toggleAttribute(On),
+ xn.addEventListener(
+ 'animationend',
+ () => {
+ xn.toggleAttribute(On), xn.close();
+ },
+ { once: !0 }
+ ),
+ this.lockScroll(!1);
+ }
+ static lockScroll(e) {
+ document.documentElement.classList.toggle(Cn, e),
+ document.body.classList.toggle(Cn, e);
+ }
+ static clickBackdrop(e) {
+ if (xn.hasAttribute(On)) return;
+ const t = e.target.getBoundingClientRect();
+ (e.clientX < t.left ||
+ e.clientX > t.right ||
+ e.clientY < t.top ||
+ e.clientY > t.bottom) &&
+ this.hidePopup();
+ }
+ static initComponents() {
+ this.initBar(),
+ [...An].forEach((e) => {
+ e.onclick = () => this.showPopup();
+ }),
+ (xn.onclick = (e) => this.clickBackdrop(e)),
+ (Tn.onclick = () => this.hidePopup()),
+ (xn.oncancel = (e) => {
+ e.preventDefault(), this.hidePopup();
+ });
+ }
+ static init() {
+ tocbot.init(this.options), this.listenAnchors(), this.initComponents();
+ }
+ }
+ var Sn = { _: !0 },
+ Nn = { _: 48 };
+ yn(Ln, 'options', {
+ tocSelector: '#toc-popup-content',
+ contentSelector: '.content',
+ ignoreSelector: '[data-toc-skip]',
+ headingSelector: 'h2, h3, h4',
+ orderedList: !1,
+ scrollSmooth: !1,
+ collapseDepth: 4,
+ headingsOffset: vn((_n = Ln), _n, Nn)._
+ });
+ yn(
+ class {
+ static refresh() {
+ tocbot.refresh(this.options);
+ }
+ static init() {
+ document.getElementById('toc-wrapper') && tocbot.init(this.options);
+ }
+ },
+ 'options',
+ {
+ tocSelector: '#toc',
+ contentSelector: '.content',
+ ignoreSelector: '[data-toc-skip]',
+ headingSelector: 'h2, h3, h4',
+ orderedList: !1,
+ scrollSmooth: !1,
+ headingsOffset: 32
+ }
+ ),
+ matchMedia('(min-width: 1200px)');
+ const kn = 'mermaid',
+ Dn = Theme.getThemeMapper('default', 'dark');
+ function jn(e) {
+ if (e.source === window && e.data && e.data.id === Theme.ID) {
+ [...document.getElementsByClassName(kn)].forEach((e) => {
+ const t = e.previousSibling.children.item(0).innerHTML;
+ (e.textContent = t), e.removeAttribute('data-processed');
+ });
+ const e = Dn[Theme.visualState];
+ mermaid.initialize({ theme: e }), mermaid.init(null, `.${kn}`);
+ }
+ }
+ function Bn(e) {
+ const t = e.textContent,
+ n = e.parentElement;
+ n.classList.add('d-none');
+ const i = document.createElement('pre');
+ i.classList.add(kn);
+ const o = document.createTextNode(t);
+ i.appendChild(o), n.after(i);
+ }
+ const Pn = document.getElementById('mode-toggle');
+ const Mn = 'lock',
+ In = 2e4;
+ function Hn(e) {
+ e.removeAttribute(Mn),
+ e
+ .getElementsByTagName('i')[0]
+ .classList.replace('icon-loading1', 'icon-playfill');
+ }
+ const Fn = 'lock',
+ qn = 2e4;
+ function $n(e) {
+ e.removeAttribute(Fn),
+ e
+ .getElementsByTagName('i')[0]
+ .classList.replace('icon-loading1', 'icon-playfill');
+ }
+ function zn() {
+ console.logs.push(Array.from(arguments)),
+ console.stdlog.apply(console, arguments);
+ }
+ const Rn = 'lock',
+ Wn = 2e4;
+ function Vn(e) {
+ e.removeAttribute(Rn),
+ e
+ .getElementsByTagName('i')[0]
+ .classList.replace('icon-loading1', 'icon-playfill');
+ }
+ const Un = 'lock',
+ Yn = 2e4;
+ function Kn(e) {
+ e.removeAttribute(Un),
+ e
+ .getElementsByTagName('i')[0]
+ .classList.replace('icon-loading1', 'icon-playfill');
+ }
+ function Qn(e, t, n, i) {
+ let o,
+ r = e.getElementsByTagName('pre');
+ if (2 == r.length) o = r[1].innerText;
+ else {
+ if (1 != r.length) return void Kn(n);
+ o = r[0].innerText;
+ }
+ let s = { version: 'stable', optimize: '0', code: o, edition: '2021' };
+ -1 !== o.indexOf('#![feature') && (s.version = 'nightly'),
+ (function (e, t) {
+ let n =
+ arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 2e4;
+ return Promise.race([
+ fetch(e, t),
+ new Promise((e, t) => setTimeout(() => t(new Error('timeout')), n))
+ ]);
+ })('https://play.rust-lang.org/evaluate.json', {
+ headers: { 'Content-Type': 'application/json' },
+ method: 'POST',
+ mode: 'cors',
+ body: JSON.stringify(s)
+ })
+ .then((e) => e.json())
+ .then((e) => {
+ (t.innerText = e.result), Kn(n);
+ })
+ .catch((e) => {
+ (t.innerText = i + e.message), Kn(n);
+ });
+ }
+ const Xn = document.getElementById('sidebar'),
+ Gn = document.getElementById('sidebar-trigger'),
+ Jn = document.getElementById('mask');
+ class Zn {
+ static toggle() {
+ (ei._ = vn(Zn, this, !vn(Zn, this, ei)._)),
+ document.body.toggleAttribute('sidebar-display', vn(Zn, this, ei)._),
+ Xn.classList.toggle('z-2', vn(Zn, this, ei)._),
+ Jn.classList.toggle('d-none', !vn(Zn, this, ei)._);
+ }
+ }
+ var ei = { _: !1 };
+ const ti = document.getElementById('sidebar-trigger'),
+ ni = document.getElementById('search-trigger'),
+ ii = document.getElementById('search-cancel'),
+ oi = document.querySelectorAll('#main-wrapper>.container>.row'),
+ ri = document.getElementById('topbar-title'),
+ si = document.getElementById('search'),
+ ai = document.getElementById('search-result-wrapper'),
+ li = document.getElementById('search-results'),
+ ci = document.getElementById('search-input'),
+ ui = document.getElementById('search-hints'),
+ di = 'd-block',
+ fi = 'd-none',
+ pi = 'input-focus',
+ hi = 'd-flex';
+ class mi {
+ static on() {
+ ti.classList.add(fi),
+ ri.classList.add(fi),
+ ni.classList.add(fi),
+ si.classList.add(hi),
+ ii.classList.add(di);
+ }
+ static off() {
+ ii.classList.remove(di),
+ si.classList.remove(hi),
+ ti.classList.remove(fi),
+ ri.classList.remove(fi),
+ ni.classList.remove(fi);
+ }
+ }
+ class gi {
+ static on() {
+ this.resultVisible ||
+ (ai.classList.remove(fi),
+ oi.forEach((e) => {
+ e.classList.add(fi);
+ }),
+ (this.resultVisible = !0));
+ }
+ static off() {
+ this.resultVisible &&
+ ((li.innerHTML = ''),
+ ui.classList.contains(fi) && ui.classList.remove(fi),
+ ai.classList.add(fi),
+ oi.forEach((e) => {
+ e.classList.remove(fi);
+ }),
+ (ci.textContent = ''),
+ (this.resultVisible = !1));
+ }
+ }
+ function bi() {
+ return ii.classList.contains(di);
+ }
+ yn(gi, 'resultVisible', !1),
+ (function () {
+ const e = document.querySelectorAll('article img');
+ if (0 === e.length) return;
+ e.forEach((e) => {
+ e.addEventListener('load', pn);
+ }),
+ document
+ .querySelectorAll('article img[loading="lazy"]')
+ .forEach((e) => {
+ e.complete && fn.call(e, dn.SHIMMER);
+ });
+ const t = document.querySelectorAll(`article img[${un}="true"]`);
+ t.length &&
+ t.forEach((e) => {
+ hn.call(e);
+ });
+ })(),
+ (function () {
+ if (null === document.querySelector('.popup')) return;
+ const e = !(
+ null === document.querySelector('.popup.light') &&
+ null === document.querySelector('.popup.dark')
+ );
+ Theme.visualState === Theme.DARK && (bn = gn);
+ let t = GLightbox({ selector: `${bn}` });
+ if (e && Theme.switchable) {
+ let e = null;
+ window.addEventListener('message', (n) => {
+ n.source === window &&
+ n.data &&
+ n.data.id === Theme.ID &&
+ (function (e, t) {
+ (bn = bn === mn ? gn : mn),
+ null === t && (t = GLightbox({ selector: `${bn}` })),
+ ([e, t] = [t, e]);
+ })(t, e);
+ });
+ }
+ })(),
+ (Gn.onclick = Jn.onclick = () => Zn.toggle()),
+ ni.addEventListener('click', () => {
+ mi.on(), gi.on(), ci.focus();
+ }),
+ ii.addEventListener('click', () => {
+ mi.off(), gi.off();
+ }),
+ ci.addEventListener('focus', () => {
+ si.classList.add(pi);
+ }),
+ ci.addEventListener('focusout', () => {
+ si.classList.remove(pi);
+ }),
+ ci.addEventListener('input', () => {
+ '' === ci.value
+ ? bi()
+ ? ui.classList.remove(fi)
+ : gi.off()
+ : (gi.on(), bi() && ui.classList.add(fi));
+ }),
+ ln(),
+ (function () {
+ const e = document.getElementById('copy-link');
+ null !== e &&
+ (e.addEventListener('click', (e) => {
+ const t = e.target;
+ rn(t) ||
+ navigator.clipboard.writeText(window.location.href).then(() => {
+ const e = t.getAttribute(nn),
+ n = t.getAttribute(tn);
+ t.setAttribute(nn, n),
+ Xt.getInstance(t).show(),
+ sn(t),
+ setTimeout(() => {
+ t.setAttribute(nn, e), an(t);
+ }, on);
+ });
+ }),
+ e.addEventListener('mouseleave', (e) => {
+ Xt.getInstance(e.target).hide();
+ }));
+ })(),
+ (function () {
+ if (
+ 'undefined' == typeof mermaid ||
+ 'function' != typeof mermaid.initialize
+ )
+ return;
+ let e = { theme: Dn[Theme.visualState] };
+ [...document.getElementsByClassName('language-mermaid')].forEach(Bn),
+ mermaid.initialize(e),
+ Theme.switchable && window.addEventListener('message', jn);
+ })(),
+ Pn &&
+ Pn.addEventListener('click', () => {
+ Theme.flip();
+ }),
+ (function () {
+ const e = document.getElementById('back-to-top');
+ window.addEventListener('scroll', () => {
+ window.scrollY > 50
+ ? e.classList.add('show')
+ : e.classList.remove('show');
+ }),
+ e.addEventListener('click', () => {
+ window.scrollTo({ top: 0 });
+ });
+ })(),
+ [...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map(
+ (e) => new Xt(e)
+ ),
+ [...document.getElementsByClassName('highlighter-rouge')].forEach((e) => {
+ const t = e.getAttribute('highlight-lines');
+ if (t && t.length > 0) {
+ let n = [];
+ (',' + t).match(/(?<=\s|,)\d+(-\d+)?/g).forEach(function (e) {
+ let t = e.split('-'),
+ i = parseInt(t[0]);
+ if (t.length > 1) {
+ let e = parseInt(t[1]);
+ if (e >= i) for (let t = i; t <= e; t++) n.push(t);
+ } else 1 == t.length && n.push(i);
+ });
+ let i = e.getElementsByTagName('pre');
+ !(function (e, t) {
+ let n = null,
+ i = 1;
+ for (let o = e.firstChild; null != o; o = o.nextSibling) {
+ null == n && (n = o);
+ let r = o.textContent.split(/\n/g);
+ if ((r || []).length > 1) {
+ let s = r.length - 1,
+ a = [];
+ for (let t = 0; t < s + 1; t++) {
+ let n = o.cloneNode(!1);
+ (n.textContent = r[t]),
+ t != s && (n.textContent += '\n'),
+ e.insertBefore(n, o),
+ a.push(n);
+ }
+ e.removeChild(o), (o = a[s]);
+ for (let o = 0; o < s; o++) {
+ if (t.includes(i)) {
+ let t = document.createElement('span');
+ t.setAttribute('class', 'hll'), e.insertBefore(t, n);
+ for (let e = t.nextSibling; e != a[o]; e = t.nextSibling)
+ t.appendChild(e);
+ t.appendChild(a[o]);
+ }
+ (n = a[o + 1]), i++;
+ }
+ }
+ }
+ })(i[i.length - 1], n),
+ e.removeAttribute('highlight-lines');
+ }
+ }),
+ [
+ ...document.querySelectorAll('.code-header button.button-run-cpp')
+ ].forEach((e) => {
+ e.onclick = () => {
+ if (
+ (function (e) {
+ if (e.hasAttribute(Mn)) {
+ let t = e.getAttribute(Mn);
+ if (Number(t) + 5e3 > Date.now()) return !0;
+ }
+ return !1;
+ })(e)
+ )
+ return;
+ var t;
+ (t = e).setAttribute(Mn, Date.now() + In),
+ t
+ .getElementsByTagName('i')[0]
+ .classList.replace('icon-playfill', 'icon-loading1');
+ let n = (function (e) {
+ let t = e.parentNode.parentNode.nextElementSibling;
+ if (
+ null == t ||
+ 'DETAILS' != t.tagName ||
+ 'run-output' != t.className
+ ) {
+ let n = t;
+ (t = document.createElement('details')),
+ (t.className = 'run-output');
+ let i = document.createElement('summary');
+ (i.textContent = e.getAttribute('output-title')),
+ t.appendChild(i),
+ null == n
+ ? e.parentNode.parentNode.parentNode.appendChild(t)
+ : n.parentNode.insertBefore(t, n);
+ }
+ return t.setAttribute('open', 'open'), t;
+ })(e);
+ for (let e of n.getElementsByTagName('p')) n.removeChild(e);
+ let i = document.createElement('p');
+ (i.innerText = e.getAttribute('wait-message')),
+ n.appendChild(i),
+ (function (e, t, n, i) {
+ let o,
+ r = e.getElementsByTagName('pre');
+ if (2 == r.length) o = r[1].innerText;
+ else {
+ if (1 != r.length) return void Hn(n);
+ o = r[0].innerText;
+ }
+ let s = { cmd: 'g++ -std=c++20 main.cpp && ./a.out', src: o },
+ a = new XMLHttpRequest();
+ a.open('POST', 'https://coliru.stacked-crooked.com/compile', !0),
+ (a.onload = () => {
+ (t.innerText = a.responseText), Hn(n);
+ }),
+ (a.onerror = () => {
+ (t.innerText = i + a.responseText), Hn(n);
+ }),
+ a.send(JSON.stringify(s));
+ })(
+ e.parentNode.nextElementSibling,
+ i,
+ e,
+ e.getAttribute('error-prompt')
+ );
+ };
+ }),
+ [
+ ...document.querySelectorAll('.code-header button.button-run-javascript')
+ ].forEach((e) => {
+ e.onclick = () => {
+ if (
+ (function (e) {
+ if (e.hasAttribute(Fn)) {
+ let t = e.getAttribute(Fn);
+ if (Number(t) + 5e3 > Date.now()) return !0;
+ }
+ return !1;
+ })(e)
+ )
+ return;
+ var t;
+ (t = e).setAttribute(Fn, Date.now() + qn),
+ t
+ .getElementsByTagName('i')[0]
+ .classList.replace('icon-playfill', 'icon-loading1');
+ let n = (function (e) {
+ let t = e.parentNode.parentNode.nextElementSibling;
+ if (
+ null == t ||
+ 'DETAILS' != t.tagName ||
+ 'run-output' != t.className
+ ) {
+ let n = t;
+ (t = document.createElement('details')),
+ (t.className = 'run-output');
+ let i = document.createElement('summary');
+ (i.textContent = e.getAttribute('output-title')),
+ t.appendChild(i),
+ null == n
+ ? e.parentNode.parentNode.parentNode.appendChild(t)
+ : n.parentNode.insertBefore(t, n);
+ }
+ return t.setAttribute('open', 'open'), t;
+ })(e);
+ for (let e of n.getElementsByTagName('p')) n.removeChild(e);
+ let i = document.createElement('p');
+ (i.innerText = e.getAttribute('wait-message')), n.appendChild(i);
+ let o,
+ r = e.parentNode.nextElementSibling.getElementsByTagName('pre');
+ if (2 == r.length) o = r[1].innerText;
+ else {
+ if (1 != r.length) return void $n(e);
+ o = r[0].innerText;
+ }
+ let s = new Function(o);
+ console.log != zn &&
+ ((console.stdlog = console.log.bind(console)), (console.log = zn)),
+ (console.logs = []),
+ s(),
+ (i.innerText = console.logs.join('\n')),
+ $n(e);
+ };
+ }),
+ [
+ ...document.querySelectorAll('.code-header button.button-run-python')
+ ].forEach((e) => {
+ e.onclick = () => {
+ if (
+ (function (e) {
+ if (e.hasAttribute(Rn)) {
+ let t = e.getAttribute(Rn);
+ if (Number(t) + 5e3 > Date.now()) return !0;
+ }
+ return !1;
+ })(e)
+ )
+ return;
+ var t;
+ (t = e).setAttribute(Rn, Date.now() + Wn),
+ t
+ .getElementsByTagName('i')[0]
+ .classList.replace('icon-playfill', 'icon-loading1');
+ let n = (function (e) {
+ let t = e.parentNode.parentNode.nextElementSibling;
+ if (
+ null == t ||
+ 'DETAILS' != t.tagName ||
+ 'run-output' != t.className
+ ) {
+ let n = t;
+ (t = document.createElement('details')),
+ (t.className = 'run-output');
+ let i = document.createElement('summary');
+ (i.textContent = e.getAttribute('output-title')),
+ t.appendChild(i),
+ null == n
+ ? e.parentNode.parentNode.parentNode.appendChild(t)
+ : n.parentNode.insertBefore(t, n);
+ }
+ return t.setAttribute('open', 'open'), t;
+ })(e);
+ for (let e of n.getElementsByTagName('p')) n.removeChild(e);
+ let i = document.createElement('p');
+ (i.innerText = e.getAttribute('wait-message')),
+ n.appendChild(i),
+ (function (e, t, n, i) {
+ let o,
+ r = e.getElementsByTagName('pre');
+ if (2 == r.length) o = r[1].innerText;
+ else {
+ if (1 != r.length) return void Vn(n);
+ o = r[0].innerText;
+ }
+ let s = [{ code: o, file_name: 'main.py' }];
+ (socket = io('https://repl.online-cpp.com', {
+ transports: ['websocket'],
+ timeout: Wn,
+ 'connect timeout': 3e3,
+ reconnection: !1,
+ query: { type: 'script', lang: 'python3' }
+ })),
+ socket.emit('code', s, '', 'main.py'),
+ socket.on('exit', function (e, t) {
+ Vn(n);
+ }),
+ socket.on('output', function (e) {
+ let n = new TextDecoder().decode(new Uint8Array(e));
+ t.innerText = n;
+ }),
+ socket.on('err', function (e) {
+ let n = new TextDecoder().decode(new Uint8Array(e));
+ t.innerText = i + '\n' + n;
+ }),
+ socket.on('connect_error', function (e) {
+ (t.innerText = i + e.message), socket.close(), Vn(n);
+ });
+ })(
+ e.parentNode.nextElementSibling,
+ i,
+ e,
+ e.getAttribute('error-prompt')
+ );
+ };
+ }),
+ [
+ ...document.querySelectorAll('.code-header button.button-run-rust')
+ ].forEach((e) => {
+ e.onclick = () => {
+ if (
+ (function (e) {
+ if (e.hasAttribute(Un)) {
+ let t = e.getAttribute(Un);
+ if (Number(t) + 5e3 > Date.now()) return !0;
+ }
+ return !1;
+ })(e)
+ )
+ return;
+ var t;
+ (t = e).setAttribute(Un, Date.now() + Yn),
+ t
+ .getElementsByTagName('i')[0]
+ .classList.replace('icon-playfill', 'icon-loading1');
+ let n = (function (e) {
+ let t = e.parentNode.parentNode.nextElementSibling;
+ if (
+ null == t ||
+ 'DETAILS' != t.tagName ||
+ 'run-output' != t.className
+ ) {
+ let n = t;
+ (t = document.createElement('details')),
+ (t.className = 'run-output');
+ let i = document.createElement('summary');
+ (i.textContent = e.getAttribute('output-title')),
+ t.appendChild(i),
+ null == n
+ ? e.parentNode.parentNode.parentNode.appendChild(t)
+ : n.parentNode.insertBefore(t, n);
+ }
+ return t.setAttribute('open', 'open'), t;
+ })(e);
+ for (let e of n.getElementsByTagName('p')) n.removeChild(e);
+ let i = document.createElement('p');
+ (i.innerText = e.getAttribute('wait-message')),
+ n.appendChild(i),
+ Qn(
+ e.parentNode.nextElementSibling,
+ i,
+ e,
+ e.getAttribute('error-prompt')
+ );
+ };
+ });
+})();
diff --git a/assets/js/dist/post.min.js b/assets/js/dist/post.min.js
index f1130e6d1f6..5936de0095d 100644
--- a/assets/js/dist/post.min.js
+++ b/assets/js/dist/post.min.js
@@ -1,4 +1,3389 @@
/*!
* jekyll-theme-chirpy v7.1.1 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/
*/
-!function(){"use strict";const e=new Map;var t={set(t,n,i){e.has(t)||e.set(t,new Map);const o=e.get(t);o.has(n)||0===o.size?o.set(n,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(o.keys())[0]}.`)},get:(t,n)=>e.has(t)&&e.get(t).get(n)||null,remove(t,n){if(!e.has(t))return;const i=e.get(t);i.delete(n),0===i.size&&e.delete(t)}};const n="transitionend",i=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,((e,t)=>`#${CSS.escape(t)}`))),e),o=e=>!(!e||"object"!=typeof e)&&(void 0!==e.jquery&&(e=e[0]),void 0!==e.nodeType),r=e=>o(e)?e.jquery?e[0]:e:"string"==typeof e&&e.length>0?document.querySelector(i(e)):null,s=e=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof e.getRootNode){const t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?s(e.parentNode):null},a=()=>{},l=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,c=[],u=()=>"rtl"===document.documentElement.dir,d=e=>{var t;t=()=>{const t=l();if(t){const n=e.NAME,i=t.fn[n];t.fn[n]=e.jQueryInterface,t.fn[n].Constructor=e,t.fn[n].noConflict=()=>(t.fn[n]=i,e.jQueryInterface)}},"loading"===document.readyState?(c.length||document.addEventListener("DOMContentLoaded",(()=>{for(const e of c)e()})),c.push(t)):t()},f=function(e){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e;return"function"==typeof e?e(...arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]):t},p=function(e,t){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void f(e);const i=(e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:n}=window.getComputedStyle(e);const i=Number.parseFloat(t),o=Number.parseFloat(n);return i||o?(t=t.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(t)+Number.parseFloat(n))):0})(t)+5;let o=!1;const r=i=>{let{target:s}=i;s===t&&(o=!0,t.removeEventListener(n,r),f(e))};t.addEventListener(n,r),setTimeout((()=>{o||t.dispatchEvent(new Event(n))}),i)},h=/[^.]*(?=\..*)\.|.*/,m=/\..*/,g=/::\d+$/,b={};let v=1;const y={mouseenter:"mouseover",mouseleave:"mouseout"},_=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function w(e,t){return t&&`${t}::${v++}`||e.uidEvent||v++}function E(e){const t=w(e);return e.uidEvent=t,b[t]=b[t]||{},b[t]}function A(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return Object.values(e).find((e=>e.callable===t&&e.delegationSelector===n))}function x(e,t,n){const i="string"==typeof t,o=i?n:t||n;let r=L(e);return _.has(r)||(r=e),[i,o,r]}function T(e,t,n,i,o){if("string"!=typeof t||!e)return;let[r,s,a]=x(t,n,i);if(t in y){const e=e=>function(t){if(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))return e.call(this,t)};s=e(s)}const l=E(e),c=l[a]||(l[a]={}),u=A(c,s,r?n:null);if(u)return void(u.oneOff=u.oneOff&&o);const d=w(s,t.replace(h,"")),f=r?function(e,t,n){return function i(o){const r=e.querySelectorAll(t);for(let{target:s}=o;s&&s!==this;s=s.parentNode)for(const a of r)if(a===s)return N(o,{delegateTarget:s}),i.oneOff&&S.off(e,o.type,t,n),n.apply(s,[o])}}(e,n,s):function(e,t){return function n(i){return N(i,{delegateTarget:e}),n.oneOff&&S.off(e,i.type,t),t.apply(e,[i])}}(e,s);f.delegationSelector=r?n:null,f.callable=s,f.oneOff=o,f.uidEvent=d,c[d]=f,e.addEventListener(a,f,r)}function C(e,t,n,i,o){const r=A(t[n],i,o);r&&(e.removeEventListener(n,r,Boolean(o)),delete t[n][r.uidEvent])}function O(e,t,n,i){const o=t[n]||{};for(const[r,s]of Object.entries(o))r.includes(i)&&C(e,t,n,s.callable,s.delegationSelector)}function L(e){return e=e.replace(m,""),y[e]||e}const S={on(e,t,n,i){T(e,t,n,i,!1)},one(e,t,n,i){T(e,t,n,i,!0)},off(e,t,n,i){if("string"!=typeof t||!e)return;const[o,r,s]=x(t,n,i),a=s!==t,l=E(e),c=l[s]||{},u=t.startsWith(".");if(void 0===r){if(u)for(const n of Object.keys(l))O(e,l,n,t.slice(1));for(const[n,i]of Object.entries(c)){const o=n.replace(g,"");a&&!t.includes(o)||C(e,l,s,i.callable,i.delegationSelector)}}else{if(!Object.keys(c).length)return;C(e,l,s,r,o?n:null)}},trigger(e,t,n){if("string"!=typeof t||!e)return null;const i=l();let o=null,r=!0,s=!0,a=!1;t!==L(t)&&i&&(o=i.Event(t,n),i(e).trigger(o),r=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());const c=N(new Event(t,{bubbles:r,cancelable:!0}),n);return a&&c.preventDefault(),s&&e.dispatchEvent(c),c.defaultPrevented&&o&&o.preventDefault(),c}};function N(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(const[n,i]of Object.entries(t))try{e[n]=i}catch{Object.defineProperty(e,n,{configurable:!0,get:()=>i})}return e}function k(e){if("true"===e)return!0;if("false"===e)return!1;if(e===Number(e).toString())return Number(e);if(""===e||"null"===e)return null;if("string"!=typeof e)return e;try{return JSON.parse(decodeURIComponent(e))}catch{return e}}function D(e){return e.replace(/[A-Z]/g,(e=>`-${e.toLowerCase()}`))}const j={setDataAttribute(e,t,n){e.setAttribute(`data-bs-${D(t)}`,n)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${D(t)}`)},getDataAttributes(e){if(!e)return{};const t={},n=Object.keys(e.dataset).filter((e=>e.startsWith("bs")&&!e.startsWith("bsConfig")));for(const i of n){let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),t[n]=k(e.dataset[i])}return t},getDataAttribute:(e,t)=>k(e.getAttribute(`data-bs-${D(t)}`))};class B{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(e){return e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e}_mergeConfigObj(e,t){const n=o(t)?j.getDataAttribute(t,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...o(t)?j.getDataAttributes(t):{},..."object"==typeof e?e:{}}}_typeCheckConfig(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[i,r]of Object.entries(t)){const t=e[i],s=o(t)?"element":null==(n=t)?`${n}`:Object.prototype.toString.call(n).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(r).test(s))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${i}" provided type "${s}" but expected type "${r}".`)}var n}}class P extends B{constructor(e,n){super(),(e=r(e))&&(this._element=e,this._config=this._getConfig(n),t.set(this._element,this.constructor.DATA_KEY,this))}dispose(){t.remove(this._element,this.constructor.DATA_KEY),S.off(this._element,this.constructor.EVENT_KEY);for(const e of Object.getOwnPropertyNames(this))this[e]=null}_queueCallback(e,t){p(e,t,!(arguments.length>2&&void 0!==arguments[2])||arguments[2])}_getConfig(e){return e=this._mergeConfigObj(e,this._element),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}static getInstance(e){return t.get(r(e),this.DATA_KEY)}static getOrCreateInstance(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getInstance(e)||new this(e,"object"==typeof t?t:null)}static get VERSION(){return"5.3.3"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(e){return`${e}${this.EVENT_KEY}`}}const M=e=>{let t=e.getAttribute("data-bs-target");if(!t||"#"===t){let n=e.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n=`#${n.split("#")[1]}`),t=n&&"#"!==n?n.trim():null}return t?t.split(",").map((e=>i(e))).join(","):null},I={find(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return[].concat(...Element.prototype.querySelectorAll.call(t,e))},findOne(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return Element.prototype.querySelector.call(t,e)},children:(e,t)=>[].concat(...e.children).filter((e=>e.matches(t))),parents(e,t){const n=[];let i=e.parentNode.closest(t);for(;i;)n.push(i),i=i.parentNode.closest(t);return n},prev(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return[n];n=n.previousElementSibling}return[]},next(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return[n];n=n.nextElementSibling}return[]},focusableChildren(e){const t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((e=>`${e}:not([tabindex^="-"])`)).join(",");return this.find(t,e).filter((e=>!(e=>!e||e.nodeType!==Node.ELEMENT_NODE||!!e.classList.contains("disabled")||(void 0!==e.disabled?e.disabled:e.hasAttribute("disabled")&&"false"!==e.getAttribute("disabled")))(e)&&(e=>{if(!o(e)||0===e.getClientRects().length)return!1;const t="visible"===getComputedStyle(e).getPropertyValue("visibility"),n=e.closest("details:not([open])");if(!n)return t;if(n!==e){const t=e.closest("summary");if(t&&t.parentNode!==n)return!1;if(null===t)return!1}return t})(e)))},getSelectorFromElement(e){const t=M(e);return t&&I.findOne(t)?t:null},getElementFromSelector(e){const t=M(e);return t?I.findOne(t):null},getMultipleElementsFromSelector(e){const t=M(e);return t?I.find(t):[]}},F=".bs.collapse",H=`show${F}`,q=`shown${F}`,$=`hide${F}`,z=`hidden${F}`,R=`click${F}.data-api`,W="show",V="collapse",U="collapsing",Y=`:scope .${V} .${V}`,K='[data-bs-toggle="collapse"]',Q={parent:null,toggle:!0},X={parent:"(null|element)",toggle:"boolean"};class G extends P{constructor(e,t){super(e,t),this._isTransitioning=!1,this._triggerArray=[];const n=I.find(K);for(const e of n){const t=I.getSelectorFromElement(e),n=I.find(t).filter((e=>e===this._element));null!==t&&n.length&&this._triggerArray.push(e)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Q}static get DefaultType(){return X}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let e=[];if(this._config.parent&&(e=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((e=>e!==this._element)).map((e=>G.getOrCreateInstance(e,{toggle:!1})))),e.length&&e[0]._isTransitioning)return;if(S.trigger(this._element,H).defaultPrevented)return;for(const t of e)t.hide();const t=this._getDimension();this._element.classList.remove(V),this._element.classList.add(U),this._element.style[t]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n=`scroll${t[0].toUpperCase()+t.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(U),this._element.classList.add(V,W),this._element.style[t]="",S.trigger(this._element,q)}),this._element,!0),this._element.style[t]=`${this._element[n]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(S.trigger(this._element,$).defaultPrevented)return;const e=this._getDimension();this._element.style[e]=`${this._element.getBoundingClientRect()[e]}px`,this._element.offsetHeight,this._element.classList.add(U),this._element.classList.remove(V,W);for(const e of this._triggerArray){const t=I.getElementFromSelector(e);t&&!this._isShown(t)&&this._addAriaAndCollapsedClass([e],!1)}this._isTransitioning=!0;this._element.style[e]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(U),this._element.classList.add(V),S.trigger(this._element,z)}),this._element,!0)}_isShown(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._element).classList.contains(W)}_configAfterMerge(e){return e.toggle=Boolean(e.toggle),e.parent=r(e.parent),e}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const e=this._getFirstLevelChildren(K);for(const t of e){const e=I.getElementFromSelector(t);e&&this._addAriaAndCollapsedClass([t],this._isShown(e))}}_getFirstLevelChildren(e){const t=I.find(Y,this._config.parent);return I.find(e,this._config.parent).filter((e=>!t.includes(e)))}_addAriaAndCollapsedClass(e,t){if(e.length)for(const n of e)n.classList.toggle("collapsed",!t),n.setAttribute("aria-expanded",t)}static jQueryInterface(e){const t={};return"string"==typeof e&&/show|hide/.test(e)&&(t.toggle=!1),this.each((function(){const n=G.getOrCreateInstance(this,t);if("string"==typeof e){if(void 0===n[e])throw new TypeError(`No method named "${e}"`);n[e]()}}))}}S.on(document,R,K,(function(e){("A"===e.target.tagName||e.delegateTarget&&"A"===e.delegateTarget.tagName)&&e.preventDefault();for(const e of I.getMultipleElementsFromSelector(this))G.getOrCreateInstance(e,{toggle:!1}).toggle()})),d(G),document.getElementsByClassName("collapse");var J="top",Z="bottom",ee="right",te="left",ne="auto",ie=[J,Z,ee,te],oe="start",re="end",se="clippingParents",ae="viewport",le="popper",ce="reference",ue=ie.reduce((function(e,t){return e.concat([t+"-"+oe,t+"-"+re])}),[]),de=[].concat(ie,[ne]).reduce((function(e,t){return e.concat([t,t+"-"+oe,t+"-"+re])}),[]),fe="beforeRead",pe="read",he="afterRead",me="beforeMain",ge="main",be="afterMain",ve="beforeWrite",ye="write",_e="afterWrite",we=[fe,pe,he,me,ge,be,ve,ye,_e];function Ee(e){return e?(e.nodeName||"").toLowerCase():null}function Ae(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function xe(e){return e instanceof Ae(e).Element||e instanceof Element}function Te(e){return e instanceof Ae(e).HTMLElement||e instanceof HTMLElement}function Ce(e){return"undefined"!=typeof ShadowRoot&&(e instanceof Ae(e).ShadowRoot||e instanceof ShadowRoot)}var Oe={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},i=t.attributes[e]||{},o=t.elements[e];Te(o)&&Ee(o)&&(Object.assign(o.style,n),Object.keys(i).forEach((function(e){var t=i[e];!1===t?o.removeAttribute(e):o.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var i=t.elements[e],o=t.attributes[e]||{},r=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{});Te(i)&&Ee(i)&&(Object.assign(i.style,r),Object.keys(o).forEach((function(e){i.removeAttribute(e)})))}))}},requires:["computeStyles"]};function Le(e){return e.split("-")[0]}var Se=Math.max,Ne=Math.min,ke=Math.round;function De(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map((function(e){return e.brand+"/"+e.version})).join(" "):navigator.userAgent}function je(){return!/^((?!chrome|android).)*safari/i.test(De())}function Be(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=!1);var i=e.getBoundingClientRect(),o=1,r=1;t&&Te(e)&&(o=e.offsetWidth>0&&ke(i.width)/e.offsetWidth||1,r=e.offsetHeight>0&&ke(i.height)/e.offsetHeight||1);var s=(xe(e)?Ae(e):window).visualViewport,a=!je()&&n,l=(i.left+(a&&s?s.offsetLeft:0))/o,c=(i.top+(a&&s?s.offsetTop:0))/r,u=i.width/o,d=i.height/r;return{width:u,height:d,top:c,right:l+u,bottom:c+d,left:l,x:l,y:c}}function Pe(e){var t=Be(e),n=e.offsetWidth,i=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-i)<=1&&(i=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:i}}function Me(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&Ce(n)){var i=t;do{if(i&&e.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function Ie(e){return Ae(e).getComputedStyle(e)}function Fe(e){return["table","td","th"].indexOf(Ee(e))>=0}function He(e){return((xe(e)?e.ownerDocument:e.document)||window.document).documentElement}function qe(e){return"html"===Ee(e)?e:e.assignedSlot||e.parentNode||(Ce(e)?e.host:null)||He(e)}function $e(e){return Te(e)&&"fixed"!==Ie(e).position?e.offsetParent:null}function ze(e){for(var t=Ae(e),n=$e(e);n&&Fe(n)&&"static"===Ie(n).position;)n=$e(n);return n&&("html"===Ee(n)||"body"===Ee(n)&&"static"===Ie(n).position)?t:n||function(e){var t=/firefox/i.test(De());if(/Trident/i.test(De())&&Te(e)&&"fixed"===Ie(e).position)return null;var n=qe(e);for(Ce(n)&&(n=n.host);Te(n)&&["html","body"].indexOf(Ee(n))<0;){var i=Ie(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||t&&"filter"===i.willChange||t&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(e)||t}function Re(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function We(e,t,n){return Se(e,Ne(t,n))}function Ve(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function Ue(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}var Ye={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,i=e.name,o=e.options,r=n.elements.arrow,s=n.modifiersData.popperOffsets,a=Le(n.placement),l=Re(a),c=[te,ee].indexOf(a)>=0?"height":"width";if(r&&s){var u=function(e,t){return Ve("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:Ue(e,ie))}(o.padding,n),d=Pe(r),f="y"===l?J:te,p="y"===l?Z:ee,h=n.rects.reference[c]+n.rects.reference[l]-s[l]-n.rects.popper[c],m=s[l]-n.rects.reference[l],g=ze(r),b=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,v=h/2-m/2,y=u[f],_=b-d[c]-u[p],w=b/2-d[c]/2+v,E=We(y,w,_),A=l;n.modifiersData[i]=((t={})[A]=E,t.centerOffset=E-w,t)}},effect:function(e){var t=e.state,n=e.options.element,i=void 0===n?"[data-popper-arrow]":n;null!=i&&("string"!=typeof i||(i=t.elements.popper.querySelector(i)))&&Me(t.elements.popper,i)&&(t.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Ke(e){return e.split("-")[1]}var Qe={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Xe(e){var t,n=e.popper,i=e.popperRect,o=e.placement,r=e.variation,s=e.offsets,a=e.position,l=e.gpuAcceleration,c=e.adaptive,u=e.roundOffsets,d=e.isFixed,f=s.x,p=void 0===f?0:f,h=s.y,m=void 0===h?0:h,g="function"==typeof u?u({x:p,y:m}):{x:p,y:m};p=g.x,m=g.y;var b=s.hasOwnProperty("x"),v=s.hasOwnProperty("y"),y=te,_=J,w=window;if(c){var E=ze(n),A="clientHeight",x="clientWidth";if(E===Ae(n)&&"static"!==Ie(E=He(n)).position&&"absolute"===a&&(A="scrollHeight",x="scrollWidth"),o===J||(o===te||o===ee)&&r===re)_=Z,m-=(d&&E===w&&w.visualViewport?w.visualViewport.height:E[A])-i.height,m*=l?1:-1;if(o===te||(o===J||o===Z)&&r===re)y=ee,p-=(d&&E===w&&w.visualViewport?w.visualViewport.width:E[x])-i.width,p*=l?1:-1}var T,C=Object.assign({position:a},c&&Qe),O=!0===u?function(e,t){var n=e.x,i=e.y,o=t.devicePixelRatio||1;return{x:ke(n*o)/o||0,y:ke(i*o)/o||0}}({x:p,y:m},Ae(n)):{x:p,y:m};return p=O.x,m=O.y,l?Object.assign({},C,((T={})[_]=v?"0":"",T[y]=b?"0":"",T.transform=(w.devicePixelRatio||1)<=1?"translate("+p+"px, "+m+"px)":"translate3d("+p+"px, "+m+"px, 0)",T)):Object.assign({},C,((t={})[_]=v?m+"px":"",t[y]=b?p+"px":"",t.transform="",t))}var Ge={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,i=n.gpuAcceleration,o=void 0===i||i,r=n.adaptive,s=void 0===r||r,a=n.roundOffsets,l=void 0===a||a,c={placement:Le(t.placement),variation:Ke(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,Xe(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:s,roundOffsets:l})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,Xe(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}},Je={passive:!0};var Ze={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,i=e.options,o=i.scroll,r=void 0===o||o,s=i.resize,a=void 0===s||s,l=Ae(t.elements.popper),c=[].concat(t.scrollParents.reference,t.scrollParents.popper);return r&&c.forEach((function(e){e.addEventListener("scroll",n.update,Je)})),a&&l.addEventListener("resize",n.update,Je),function(){r&&c.forEach((function(e){e.removeEventListener("scroll",n.update,Je)})),a&&l.removeEventListener("resize",n.update,Je)}},data:{}},et={left:"right",right:"left",bottom:"top",top:"bottom"};function tt(e){return e.replace(/left|right|bottom|top/g,(function(e){return et[e]}))}var nt={start:"end",end:"start"};function it(e){return e.replace(/start|end/g,(function(e){return nt[e]}))}function ot(e){var t=Ae(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function rt(e){return Be(He(e)).left+ot(e).scrollLeft}function st(e){var t=Ie(e),n=t.overflow,i=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function at(e){return["html","body","#document"].indexOf(Ee(e))>=0?e.ownerDocument.body:Te(e)&&st(e)?e:at(qe(e))}function lt(e,t){var n;void 0===t&&(t=[]);var i=at(e),o=i===(null==(n=e.ownerDocument)?void 0:n.body),r=Ae(i),s=o?[r].concat(r.visualViewport||[],st(i)?i:[]):i,a=t.concat(s);return o?a:a.concat(lt(qe(s)))}function ct(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function ut(e,t,n){return t===ae?ct(function(e,t){var n=Ae(e),i=He(e),o=n.visualViewport,r=i.clientWidth,s=i.clientHeight,a=0,l=0;if(o){r=o.width,s=o.height;var c=je();(c||!c&&"fixed"===t)&&(a=o.offsetLeft,l=o.offsetTop)}return{width:r,height:s,x:a+rt(e),y:l}}(e,n)):xe(t)?function(e,t){var n=Be(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(t,n):ct(function(e){var t,n=He(e),i=ot(e),o=null==(t=e.ownerDocument)?void 0:t.body,r=Se(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=Se(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-i.scrollLeft+rt(e),l=-i.scrollTop;return"rtl"===Ie(o||n).direction&&(a+=Se(n.clientWidth,o?o.clientWidth:0)-r),{width:r,height:s,x:a,y:l}}(He(e)))}function dt(e,t,n,i){var o="clippingParents"===t?function(e){var t=lt(qe(e)),n=["absolute","fixed"].indexOf(Ie(e).position)>=0&&Te(e)?ze(e):e;return xe(n)?t.filter((function(e){return xe(e)&&Me(e,n)&&"body"!==Ee(e)})):[]}(e):[].concat(t),r=[].concat(o,[n]),s=r[0],a=r.reduce((function(t,n){var o=ut(e,n,i);return t.top=Se(o.top,t.top),t.right=Ne(o.right,t.right),t.bottom=Ne(o.bottom,t.bottom),t.left=Se(o.left,t.left),t}),ut(e,s,i));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function ft(e){var t,n=e.reference,i=e.element,o=e.placement,r=o?Le(o):null,s=o?Ke(o):null,a=n.x+n.width/2-i.width/2,l=n.y+n.height/2-i.height/2;switch(r){case J:t={x:a,y:n.y-i.height};break;case Z:t={x:a,y:n.y+n.height};break;case ee:t={x:n.x+n.width,y:l};break;case te:t={x:n.x-i.width,y:l};break;default:t={x:n.x,y:n.y}}var c=r?Re(r):null;if(null!=c){var u="y"===c?"height":"width";switch(s){case oe:t[c]=t[c]-(n[u]/2-i[u]/2);break;case re:t[c]=t[c]+(n[u]/2-i[u]/2)}}return t}function pt(e,t){void 0===t&&(t={});var n=t,i=n.placement,o=void 0===i?e.placement:i,r=n.strategy,s=void 0===r?e.strategy:r,a=n.boundary,l=void 0===a?se:a,c=n.rootBoundary,u=void 0===c?ae:c,d=n.elementContext,f=void 0===d?le:d,p=n.altBoundary,h=void 0!==p&&p,m=n.padding,g=void 0===m?0:m,b=Ve("number"!=typeof g?g:Ue(g,ie)),v=f===le?ce:le,y=e.rects.popper,_=e.elements[h?v:f],w=dt(xe(_)?_:_.contextElement||He(e.elements.popper),l,u,s),E=Be(e.elements.reference),A=ft({reference:E,element:y,placement:o}),x=ct(Object.assign({},y,A)),T=f===le?x:E,C={top:w.top-T.top+b.top,bottom:T.bottom-w.bottom+b.bottom,left:w.left-T.left+b.left,right:T.right-w.right+b.right},O=e.modifiersData.offset;if(f===le&&O){var L=O[o];Object.keys(C).forEach((function(e){var t=[ee,Z].indexOf(e)>=0?1:-1,n=[J,Z].indexOf(e)>=0?"y":"x";C[e]+=L[n]*t}))}return C}function ht(e,t){void 0===t&&(t={});var n=t,i=n.placement,o=n.boundary,r=n.rootBoundary,s=n.padding,a=n.flipVariations,l=n.allowedAutoPlacements,c=void 0===l?de:l,u=Ke(i),d=u?a?ue:ue.filter((function(e){return Ke(e)===u})):ie,f=d.filter((function(e){return c.indexOf(e)>=0}));0===f.length&&(f=d);var p=f.reduce((function(t,n){return t[n]=pt(e,{placement:n,boundary:o,rootBoundary:r,padding:s})[Le(n)],t}),{});return Object.keys(p).sort((function(e,t){return p[e]-p[t]}))}var mt={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,i=e.name;if(!t.modifiersData[i]._skip){for(var o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0===s||s,l=n.fallbackPlacements,c=n.padding,u=n.boundary,d=n.rootBoundary,f=n.altBoundary,p=n.flipVariations,h=void 0===p||p,m=n.allowedAutoPlacements,g=t.options.placement,b=Le(g),v=l||(b===g||!h?[tt(g)]:function(e){if(Le(e)===ne)return[];var t=tt(e);return[it(e),t,it(t)]}(g)),y=[g].concat(v).reduce((function(e,n){return e.concat(Le(n)===ne?ht(t,{placement:n,boundary:u,rootBoundary:d,padding:c,flipVariations:h,allowedAutoPlacements:m}):n)}),[]),_=t.rects.reference,w=t.rects.popper,E=new Map,A=!0,x=y[0],T=0;T
',title:"",trigger:"hover focus"},Qt={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class Xt extends P{constructor(e,t){if(void 0===Nt)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(e,t),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Kt}static get DefaultType(){return Qt}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),S.off(this._element.closest(Rt),Wt,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const e=S.trigger(this._element,this.constructor.eventName("show")),t=(s(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(e.defaultPrevented||!t)return;this._disposePopper();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(n),S.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(n),n.classList.add($t),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))S.on(e,"mouseover",a);this._queueCallback((()=>{S.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(!this._isShown())return;if(S.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove($t),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))S.off(e,"mouseover",a);this._activeTrigger.click=!1,this._activeTrigger[Ut]=!1,this._activeTrigger[Vt]=!1,this._isHovered=null;this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),S.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(e){const t=this._getTemplateFactory(e).toHtml();if(!t)return null;t.classList.remove(qt,$t),t.classList.add(`bs-${this.constructor.NAME}-auto`);const n=(e=>{do{e+=Math.floor(1e6*Math.random())}while(document.getElementById(e));return e})(this.constructor.NAME).toString();return t.setAttribute("id",n),this._isAnimated()&&t.classList.add(qt),t}setContent(e){this._newContent=e,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(e){return this._templateFactory?this._templateFactory.changeContent(e):this._templateFactory=new Ft({...this._config,content:e,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[zt]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(e){return this.constructor.getOrCreateInstance(e.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(qt)}_isShown(){return this.tip&&this.tip.classList.contains($t)}_createPopper(e){const t=f(this._config.placement,[this,e,this._element]),n=Yt[t.toUpperCase()];return St(this._element,e,this._getPopperConfig(n))}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map((e=>Number.parseInt(e,10))):"function"==typeof e?t=>e(t,this._element):e}_resolvePossibleFunction(e){return f(e,[this._element])}_getPopperConfig(e){const t={placement:e,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:e=>{this._getTipElement().setAttribute("data-popper-placement",e.state.placement)}}]};return{...t,...f(this._config.popperConfig,[t])}}_setListeners(){const e=this._config.trigger.split(" ");for(const t of e)if("click"===t)S.on(this._element,this.constructor.eventName("click"),this._config.selector,(e=>{this._initializeOnDelegatedTarget(e).toggle()}));else if("manual"!==t){const e=t===Vt?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n=t===Vt?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");S.on(this._element,e,this._config.selector,(e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusin"===e.type?Ut:Vt]=!0,t._enter()})),S.on(this._element,n,this._config.selector,(e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusout"===e.type?Ut:Vt]=t._element.contains(e.relatedTarget),t._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},S.on(this._element.closest(Rt),Wt,this._hideModalHandler)}_fixTitle(){const e=this._element.getAttribute("title");e&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",e),this._element.setAttribute("data-bs-original-title",e),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(e,t){clearTimeout(this._timeout),this._timeout=setTimeout(e,t)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(e){const t=j.getDataAttributes(this._element);for(const e of Object.keys(t))Ht.has(e)&&delete t[e];return e={...t,..."object"==typeof e&&e?e:{}},e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e.container=!1===e.container?document.body:r(e.container),"number"==typeof e.delay&&(e.delay={show:e.delay,hide:e.delay}),"number"==typeof e.title&&(e.title=e.title.toString()),"number"==typeof e.content&&(e.content=e.content.toString()),e}_getDelegateConfig(){const e={};for(const[t,n]of Object.entries(this._config))this.constructor.Default[t]!==n&&(e[t]=n);return e.selector=!1,e.trigger="manual",e}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(e){return this.each((function(){const t=Xt.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}}))}}d(Xt);const Gt=".code-header>button.button-copy",Jt="iconfont icon-copy",Zt="iconfont icon-check",en="timeout",tn="data-title-succeed",nn="data-bs-original-title",on=2e3;function rn(e){if(e.hasAttribute(en)){let t=e.getAttribute(en);if(Number(t)>Date.now())return!0}return!1}function sn(e){e.setAttribute(en,Date.now()+on)}function an(e){e.removeAttribute(en)}function ln(){const e=document.querySelectorAll(Gt);if(0===e.length)return;const t=new ClipboardJS(Gt,{target:e=>e.parentNode.nextElementSibling.querySelector("code .rouge-code")});[...e].map((e=>new Xt(e,{placement:"left"}))),t.on("success",(e=>{const t=e.trigger;(e.clearSelection(),rn(t))||(t.children[0].setAttribute("class",Zt),function(e){const t=e.getAttribute(tn);e.setAttribute(nn,t),Xt.getInstance(e).show()}(t),sn(t),setTimeout((()=>{!function(e){Xt.getInstance(e).hide(),e.removeAttribute(nn)}(t),function(e){e.children[0].setAttribute("class",Jt)}(t),an(t)}),on))}))}const cn="data-src",un="data-lqip",dn={SHIMMER:"shimmer",BLUR:"blur"};function fn(e){this.parentElement.classList.remove(e)}function pn(){this.complete&&(this.hasAttribute(un)?fn.call(this,dn.BLUR):fn.call(this,dn.SHIMMER))}function hn(){const e=this.getAttribute(cn);this.setAttribute("src",encodeURI(e)),this.removeAttribute(cn)}const mn=".popup:not(.dark)",gn=".popup:not(.light)";let bn=mn;class vn{static get attrTimestamp(){return"data-ts"}static get attrDateFormat(){return"data-df"}static get locale(){return document.documentElement.getAttribute("lang").substring(0,2)}static getTimestamp(e){return Number(e.getAttribute(this.attrTimestamp))}static getDateFormat(e){return e.getAttribute(this.attrDateFormat)}}function yn(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}function _n(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var wn;const En=document.getElementById("toc-bar"),An=document.getElementById("toc-solo-trigger"),xn=document.getElementsByClassName("toc-trigger"),Tn=document.getElementById("toc-popup"),Cn=document.getElementById("toc-popup-close"),On="overflow-hidden",Ln="closing";class Sn{static initBar(){new IntersectionObserver((e=>{e.forEach((e=>{En.classList.toggle("invisible",e.isIntersecting)}))}),{rootMargin:`-${yn(Sn,this,kn)._}px 0px 0px 0px`}).observe(An),Nn._=yn(Sn,this,!1)}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach((e=>{e.onclick=()=>this.hidePopup()}))}static refresh(){yn(Sn,this,Nn)._&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static get popupOpened(){return Tn.open}static showPopup(){this.lockScroll(!0),Tn.showModal();Tn.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(){Tn.toggleAttribute(Ln),Tn.addEventListener("animationend",(()=>{Tn.toggleAttribute(Ln),Tn.close()}),{once:!0}),this.lockScroll(!1)}static lockScroll(e){document.documentElement.classList.toggle(On,e),document.body.classList.toggle(On,e)}static clickBackdrop(e){if(Tn.hasAttribute(Ln))return;const t=e.target.getBoundingClientRect();(e.clientX
',
+ title: '',
+ trigger: 'hover focus'
+ },
+ Qt = {
+ allowList: 'object',
+ animation: 'boolean',
+ boundary: '(string|element)',
+ container: '(string|element|boolean)',
+ customClass: '(string|function)',
+ delay: '(number|object)',
+ fallbackPlacements: 'array',
+ html: 'boolean',
+ offset: '(array|string|function)',
+ placement: '(string|function)',
+ popperConfig: '(null|object|function)',
+ sanitize: 'boolean',
+ sanitizeFn: '(null|function)',
+ selector: '(string|boolean)',
+ template: 'string',
+ title: '(string|element|function)',
+ trigger: 'string'
+ };
+ class Xt extends P {
+ constructor(e, t) {
+ if (void 0 === Nt)
+ throw new TypeError(
+ "Bootstrap's tooltips require Popper (https://popper.js.org)"
+ );
+ super(e, t),
+ (this._isEnabled = !0),
+ (this._timeout = 0),
+ (this._isHovered = null),
+ (this._activeTrigger = {}),
+ (this._popper = null),
+ (this._templateFactory = null),
+ (this._newContent = null),
+ (this.tip = null),
+ this._setListeners(),
+ this._config.selector || this._fixTitle();
+ }
+ static get Default() {
+ return Kt;
+ }
+ static get DefaultType() {
+ return Qt;
+ }
+ static get NAME() {
+ return 'tooltip';
+ }
+ enable() {
+ this._isEnabled = !0;
+ }
+ disable() {
+ this._isEnabled = !1;
+ }
+ toggleEnabled() {
+ this._isEnabled = !this._isEnabled;
+ }
+ toggle() {
+ this._isEnabled &&
+ ((this._activeTrigger.click = !this._activeTrigger.click),
+ this._isShown() ? this._leave() : this._enter());
+ }
+ dispose() {
+ clearTimeout(this._timeout),
+ S.off(this._element.closest(Rt), Wt, this._hideModalHandler),
+ this._element.getAttribute('data-bs-original-title') &&
+ this._element.setAttribute(
+ 'title',
+ this._element.getAttribute('data-bs-original-title')
+ ),
+ this._disposePopper(),
+ super.dispose();
+ }
+ show() {
+ if ('none' === this._element.style.display)
+ throw new Error('Please use show on visible elements');
+ if (!this._isWithContent() || !this._isEnabled) return;
+ const e = S.trigger(this._element, this.constructor.eventName('show')),
+ t = (
+ s(this._element) || this._element.ownerDocument.documentElement
+ ).contains(this._element);
+ if (e.defaultPrevented || !t) return;
+ this._disposePopper();
+ const n = this._getTipElement();
+ this._element.setAttribute('aria-describedby', n.getAttribute('id'));
+ const { container: i } = this._config;
+ if (
+ (this._element.ownerDocument.documentElement.contains(this.tip) ||
+ (i.append(n),
+ S.trigger(this._element, this.constructor.eventName('inserted'))),
+ (this._popper = this._createPopper(n)),
+ n.classList.add($t),
+ 'ontouchstart' in document.documentElement)
+ )
+ for (const e of [].concat(...document.body.children))
+ S.on(e, 'mouseover', a);
+ this._queueCallback(
+ () => {
+ S.trigger(this._element, this.constructor.eventName('shown')),
+ !1 === this._isHovered && this._leave(),
+ (this._isHovered = !1);
+ },
+ this.tip,
+ this._isAnimated()
+ );
+ }
+ hide() {
+ if (!this._isShown()) return;
+ if (
+ S.trigger(this._element, this.constructor.eventName('hide'))
+ .defaultPrevented
+ )
+ return;
+ if (
+ (this._getTipElement().classList.remove($t),
+ 'ontouchstart' in document.documentElement)
+ )
+ for (const e of [].concat(...document.body.children))
+ S.off(e, 'mouseover', a);
+ (this._activeTrigger.click = !1),
+ (this._activeTrigger[Ut] = !1),
+ (this._activeTrigger[Vt] = !1),
+ (this._isHovered = null);
+ this._queueCallback(
+ () => {
+ this._isWithActiveTrigger() ||
+ (this._isHovered || this._disposePopper(),
+ this._element.removeAttribute('aria-describedby'),
+ S.trigger(this._element, this.constructor.eventName('hidden')));
+ },
+ this.tip,
+ this._isAnimated()
+ );
+ }
+ update() {
+ this._popper && this._popper.update();
+ }
+ _isWithContent() {
+ return Boolean(this._getTitle());
+ }
+ _getTipElement() {
+ return (
+ this.tip ||
+ (this.tip = this._createTipElement(
+ this._newContent || this._getContentForTemplate()
+ )),
+ this.tip
+ );
+ }
+ _createTipElement(e) {
+ const t = this._getTemplateFactory(e).toHtml();
+ if (!t) return null;
+ t.classList.remove(qt, $t),
+ t.classList.add(`bs-${this.constructor.NAME}-auto`);
+ const n = ((e) => {
+ do {
+ e += Math.floor(1e6 * Math.random());
+ } while (document.getElementById(e));
+ return e;
+ })(this.constructor.NAME).toString();
+ return (
+ t.setAttribute('id', n), this._isAnimated() && t.classList.add(qt), t
+ );
+ }
+ setContent(e) {
+ (this._newContent = e),
+ this._isShown() && (this._disposePopper(), this.show());
+ }
+ _getTemplateFactory(e) {
+ return (
+ this._templateFactory
+ ? this._templateFactory.changeContent(e)
+ : (this._templateFactory = new Ft({
+ ...this._config,
+ content: e,
+ extraClass: this._resolvePossibleFunction(
+ this._config.customClass
+ )
+ })),
+ this._templateFactory
+ );
+ }
+ _getContentForTemplate() {
+ return { [zt]: this._getTitle() };
+ }
+ _getTitle() {
+ return (
+ this._resolvePossibleFunction(this._config.title) ||
+ this._element.getAttribute('data-bs-original-title')
+ );
+ }
+ _initializeOnDelegatedTarget(e) {
+ return this.constructor.getOrCreateInstance(
+ e.delegateTarget,
+ this._getDelegateConfig()
+ );
+ }
+ _isAnimated() {
+ return (
+ this._config.animation || (this.tip && this.tip.classList.contains(qt))
+ );
+ }
+ _isShown() {
+ return this.tip && this.tip.classList.contains($t);
+ }
+ _createPopper(e) {
+ const t = f(this._config.placement, [this, e, this._element]),
+ n = Yt[t.toUpperCase()];
+ return St(this._element, e, this._getPopperConfig(n));
+ }
+ _getOffset() {
+ const { offset: e } = this._config;
+ return 'string' == typeof e
+ ? e.split(',').map((e) => Number.parseInt(e, 10))
+ : 'function' == typeof e
+ ? (t) => e(t, this._element)
+ : e;
+ }
+ _resolvePossibleFunction(e) {
+ return f(e, [this._element]);
+ }
+ _getPopperConfig(e) {
+ const t = {
+ placement: e,
+ modifiers: [
+ {
+ name: 'flip',
+ options: { fallbackPlacements: this._config.fallbackPlacements }
+ },
+ { name: 'offset', options: { offset: this._getOffset() } },
+ {
+ name: 'preventOverflow',
+ options: { boundary: this._config.boundary }
+ },
+ {
+ name: 'arrow',
+ options: { element: `.${this.constructor.NAME}-arrow` }
+ },
+ {
+ name: 'preSetPlacement',
+ enabled: !0,
+ phase: 'beforeMain',
+ fn: (e) => {
+ this._getTipElement().setAttribute(
+ 'data-popper-placement',
+ e.state.placement
+ );
+ }
+ }
+ ]
+ };
+ return { ...t, ...f(this._config.popperConfig, [t]) };
+ }
+ _setListeners() {
+ const e = this._config.trigger.split(' ');
+ for (const t of e)
+ if ('click' === t)
+ S.on(
+ this._element,
+ this.constructor.eventName('click'),
+ this._config.selector,
+ (e) => {
+ this._initializeOnDelegatedTarget(e).toggle();
+ }
+ );
+ else if ('manual' !== t) {
+ const e =
+ t === Vt
+ ? this.constructor.eventName('mouseenter')
+ : this.constructor.eventName('focusin'),
+ n =
+ t === Vt
+ ? this.constructor.eventName('mouseleave')
+ : this.constructor.eventName('focusout');
+ S.on(this._element, e, this._config.selector, (e) => {
+ const t = this._initializeOnDelegatedTarget(e);
+ (t._activeTrigger['focusin' === e.type ? Ut : Vt] = !0), t._enter();
+ }),
+ S.on(this._element, n, this._config.selector, (e) => {
+ const t = this._initializeOnDelegatedTarget(e);
+ (t._activeTrigger['focusout' === e.type ? Ut : Vt] =
+ t._element.contains(e.relatedTarget)),
+ t._leave();
+ });
+ }
+ (this._hideModalHandler = () => {
+ this._element && this.hide();
+ }),
+ S.on(this._element.closest(Rt), Wt, this._hideModalHandler);
+ }
+ _fixTitle() {
+ const e = this._element.getAttribute('title');
+ e &&
+ (this._element.getAttribute('aria-label') ||
+ this._element.textContent.trim() ||
+ this._element.setAttribute('aria-label', e),
+ this._element.setAttribute('data-bs-original-title', e),
+ this._element.removeAttribute('title'));
+ }
+ _enter() {
+ this._isShown() || this._isHovered
+ ? (this._isHovered = !0)
+ : ((this._isHovered = !0),
+ this._setTimeout(() => {
+ this._isHovered && this.show();
+ }, this._config.delay.show));
+ }
+ _leave() {
+ this._isWithActiveTrigger() ||
+ ((this._isHovered = !1),
+ this._setTimeout(() => {
+ this._isHovered || this.hide();
+ }, this._config.delay.hide));
+ }
+ _setTimeout(e, t) {
+ clearTimeout(this._timeout), (this._timeout = setTimeout(e, t));
+ }
+ _isWithActiveTrigger() {
+ return Object.values(this._activeTrigger).includes(!0);
+ }
+ _getConfig(e) {
+ const t = j.getDataAttributes(this._element);
+ for (const e of Object.keys(t)) Ht.has(e) && delete t[e];
+ return (
+ (e = { ...t, ...('object' == typeof e && e ? e : {}) }),
+ (e = this._mergeConfigObj(e)),
+ (e = this._configAfterMerge(e)),
+ this._typeCheckConfig(e),
+ e
+ );
+ }
+ _configAfterMerge(e) {
+ return (
+ (e.container = !1 === e.container ? document.body : r(e.container)),
+ 'number' == typeof e.delay &&
+ (e.delay = { show: e.delay, hide: e.delay }),
+ 'number' == typeof e.title && (e.title = e.title.toString()),
+ 'number' == typeof e.content && (e.content = e.content.toString()),
+ e
+ );
+ }
+ _getDelegateConfig() {
+ const e = {};
+ for (const [t, n] of Object.entries(this._config))
+ this.constructor.Default[t] !== n && (e[t] = n);
+ return (e.selector = !1), (e.trigger = 'manual'), e;
+ }
+ _disposePopper() {
+ this._popper && (this._popper.destroy(), (this._popper = null)),
+ this.tip && (this.tip.remove(), (this.tip = null));
+ }
+ static jQueryInterface(e) {
+ return this.each(function () {
+ const t = Xt.getOrCreateInstance(this, e);
+ if ('string' == typeof e) {
+ if (void 0 === t[e]) throw new TypeError(`No method named "${e}"`);
+ t[e]();
+ }
+ });
+ }
+ }
+ d(Xt);
+ const Gt = '.code-header>button.button-copy',
+ Jt = 'iconfont icon-copy',
+ Zt = 'iconfont icon-check',
+ en = 'timeout',
+ tn = 'data-title-succeed',
+ nn = 'data-bs-original-title',
+ on = 2e3;
+ function rn(e) {
+ if (e.hasAttribute(en)) {
+ let t = e.getAttribute(en);
+ if (Number(t) > Date.now()) return !0;
+ }
+ return !1;
+ }
+ function sn(e) {
+ e.setAttribute(en, Date.now() + on);
+ }
+ function an(e) {
+ e.removeAttribute(en);
+ }
+ function ln() {
+ const e = document.querySelectorAll(Gt);
+ if (0 === e.length) return;
+ const t = new ClipboardJS(Gt, {
+ target: (e) =>
+ e.parentNode.nextElementSibling.querySelector('code .rouge-code')
+ });
+ [...e].map((e) => new Xt(e, { placement: 'left' })),
+ t.on('success', (e) => {
+ const t = e.trigger;
+ (e.clearSelection(), rn(t)) ||
+ (t.children[0].setAttribute('class', Zt),
+ (function (e) {
+ const t = e.getAttribute(tn);
+ e.setAttribute(nn, t), Xt.getInstance(e).show();
+ })(t),
+ sn(t),
+ setTimeout(() => {
+ !(function (e) {
+ Xt.getInstance(e).hide(), e.removeAttribute(nn);
+ })(t),
+ (function (e) {
+ e.children[0].setAttribute('class', Jt);
+ })(t),
+ an(t);
+ }, on));
+ });
+ }
+ const cn = 'data-src',
+ un = 'data-lqip',
+ dn = { SHIMMER: 'shimmer', BLUR: 'blur' };
+ function fn(e) {
+ this.parentElement.classList.remove(e);
+ }
+ function pn() {
+ this.complete &&
+ (this.hasAttribute(un)
+ ? fn.call(this, dn.BLUR)
+ : fn.call(this, dn.SHIMMER));
+ }
+ function hn() {
+ const e = this.getAttribute(cn);
+ this.setAttribute('src', encodeURI(e)), this.removeAttribute(cn);
+ }
+ const mn = '.popup:not(.dark)',
+ gn = '.popup:not(.light)';
+ let bn = mn;
+ class vn {
+ static get attrTimestamp() {
+ return 'data-ts';
+ }
+ static get attrDateFormat() {
+ return 'data-df';
+ }
+ static get locale() {
+ return document.documentElement.getAttribute('lang').substring(0, 2);
+ }
+ static getTimestamp(e) {
+ return Number(e.getAttribute(this.attrTimestamp));
+ }
+ static getDateFormat(e) {
+ return e.getAttribute(this.attrDateFormat);
+ }
+ }
+ function yn(e, t, n) {
+ if ('function' == typeof e ? e === t : e.has(t))
+ return arguments.length < 3 ? t : n;
+ throw new TypeError('Private element is not present on this object');
+ }
+ function _n(e, t, n) {
+ return (
+ (t = (function (e) {
+ var t = (function (e, t) {
+ if ('object' != typeof e || !e) return e;
+ var n = e[Symbol.toPrimitive];
+ if (void 0 !== n) {
+ var i = n.call(e, t || 'default');
+ if ('object' != typeof i) return i;
+ throw new TypeError('@@toPrimitive must return a primitive value.');
+ }
+ return ('string' === t ? String : Number)(e);
+ })(e, 'string');
+ return 'symbol' == typeof t ? t : t + '';
+ })(t)) in e
+ ? Object.defineProperty(e, t, {
+ value: n,
+ enumerable: !0,
+ configurable: !0,
+ writable: !0
+ })
+ : (e[t] = n),
+ e
+ );
+ }
+ var wn;
+ const En = document.getElementById('toc-bar'),
+ An = document.getElementById('toc-solo-trigger'),
+ xn = document.getElementsByClassName('toc-trigger'),
+ Tn = document.getElementById('toc-popup'),
+ Cn = document.getElementById('toc-popup-close'),
+ On = 'overflow-hidden',
+ Ln = 'closing';
+ class Sn {
+ static initBar() {
+ new IntersectionObserver(
+ (e) => {
+ e.forEach((e) => {
+ En.classList.toggle('invisible', e.isIntersecting);
+ });
+ },
+ { rootMargin: `-${yn(Sn, this, kn)._}px 0px 0px 0px` }
+ ).observe(An),
+ (Nn._ = yn(Sn, this, !1));
+ }
+ static listenAnchors() {
+ [...document.getElementsByClassName('toc-link')].forEach((e) => {
+ e.onclick = () => this.hidePopup();
+ });
+ }
+ static refresh() {
+ yn(Sn, this, Nn)._ && this.initComponents(),
+ tocbot.refresh(this.options),
+ this.listenAnchors();
+ }
+ static get popupOpened() {
+ return Tn.open;
+ }
+ static showPopup() {
+ this.lockScroll(!0), Tn.showModal();
+ Tn.querySelector('li.is-active-li').scrollIntoView({ block: 'center' });
+ }
+ static hidePopup() {
+ Tn.toggleAttribute(Ln),
+ Tn.addEventListener(
+ 'animationend',
+ () => {
+ Tn.toggleAttribute(Ln), Tn.close();
+ },
+ { once: !0 }
+ ),
+ this.lockScroll(!1);
+ }
+ static lockScroll(e) {
+ document.documentElement.classList.toggle(On, e),
+ document.body.classList.toggle(On, e);
+ }
+ static clickBackdrop(e) {
+ if (Tn.hasAttribute(Ln)) return;
+ const t = e.target.getBoundingClientRect();
+ (e.clientX < t.left ||
+ e.clientX > t.right ||
+ e.clientY < t.top ||
+ e.clientY > t.bottom) &&
+ this.hidePopup();
+ }
+ static initComponents() {
+ this.initBar(),
+ [...xn].forEach((e) => {
+ e.onclick = () => this.showPopup();
+ }),
+ (Tn.onclick = (e) => this.clickBackdrop(e)),
+ (Cn.onclick = () => this.hidePopup()),
+ (Tn.oncancel = (e) => {
+ e.preventDefault(), this.hidePopup();
+ });
+ }
+ static init() {
+ tocbot.init(this.options), this.listenAnchors(), this.initComponents();
+ }
+ }
+ var Nn = { _: !0 },
+ kn = { _: 48 };
+ _n(Sn, 'options', {
+ tocSelector: '#toc-popup-content',
+ contentSelector: '.content',
+ ignoreSelector: '[data-toc-skip]',
+ headingSelector: 'h2, h3, h4',
+ orderedList: !1,
+ scrollSmooth: !1,
+ collapseDepth: 4,
+ headingsOffset: yn((wn = Sn), wn, kn)._
+ });
+ class Dn {
+ static refresh() {
+ tocbot.refresh(this.options);
+ }
+ static init() {
+ document.getElementById('toc-wrapper') && tocbot.init(this.options);
+ }
+ }
+ _n(Dn, 'options', {
+ tocSelector: '#toc',
+ contentSelector: '.content',
+ ignoreSelector: '[data-toc-skip]',
+ headingSelector: 'h2, h3, h4',
+ orderedList: !1,
+ scrollSmooth: !1,
+ headingsOffset: 32
+ });
+ const jn = matchMedia('(min-width: 1200px)');
+ function Bn(e) {
+ e.matches ? (Sn.popupOpened && Sn.hidePopup(), Dn.refresh()) : Sn.refresh();
+ }
+ const Pn = 'mermaid',
+ Mn = Theme.getThemeMapper('default', 'dark');
+ function In(e) {
+ if (e.source === window && e.data && e.data.id === Theme.ID) {
+ [...document.getElementsByClassName(Pn)].forEach((e) => {
+ const t = e.previousSibling.children.item(0).innerHTML;
+ (e.textContent = t), e.removeAttribute('data-processed');
+ });
+ const e = Mn[Theme.visualState];
+ mermaid.initialize({ theme: e }), mermaid.init(null, `.${Pn}`);
+ }
+ }
+ function Fn(e) {
+ const t = e.textContent,
+ n = e.parentElement;
+ n.classList.add('d-none');
+ const i = document.createElement('pre');
+ i.classList.add(Pn);
+ const o = document.createTextNode(t);
+ i.appendChild(o), n.after(i);
+ }
+ const Hn = document.getElementById('mode-toggle');
+ const qn = 'lock',
+ $n = 2e4;
+ function zn(e) {
+ e.removeAttribute(qn),
+ e
+ .getElementsByTagName('i')[0]
+ .classList.replace('icon-loading1', 'icon-playfill');
+ }
+ const Rn = 'lock',
+ Wn = 2e4;
+ function Vn(e) {
+ e.removeAttribute(Rn),
+ e
+ .getElementsByTagName('i')[0]
+ .classList.replace('icon-loading1', 'icon-playfill');
+ }
+ function Un() {
+ console.logs.push(Array.from(arguments)),
+ console.stdlog.apply(console, arguments);
+ }
+ const Yn = 'lock',
+ Kn = 2e4;
+ function Qn(e) {
+ e.removeAttribute(Yn),
+ e
+ .getElementsByTagName('i')[0]
+ .classList.replace('icon-loading1', 'icon-playfill');
+ }
+ const Xn = 'lock',
+ Gn = 2e4;
+ function Jn(e) {
+ e.removeAttribute(Xn),
+ e
+ .getElementsByTagName('i')[0]
+ .classList.replace('icon-loading1', 'icon-playfill');
+ }
+ function Zn(e, t, n, i) {
+ let o,
+ r = e.getElementsByTagName('pre');
+ if (2 == r.length) o = r[1].innerText;
+ else {
+ if (1 != r.length) return void Jn(n);
+ o = r[0].innerText;
+ }
+ let s = { version: 'stable', optimize: '0', code: o, edition: '2021' };
+ -1 !== o.indexOf('#![feature') && (s.version = 'nightly'),
+ (function (e, t) {
+ let n =
+ arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 2e4;
+ return Promise.race([
+ fetch(e, t),
+ new Promise((e, t) => setTimeout(() => t(new Error('timeout')), n))
+ ]);
+ })('https://play.rust-lang.org/evaluate.json', {
+ headers: { 'Content-Type': 'application/json' },
+ method: 'POST',
+ mode: 'cors',
+ body: JSON.stringify(s)
+ })
+ .then((e) => e.json())
+ .then((e) => {
+ (t.innerText = e.result), Jn(n);
+ })
+ .catch((e) => {
+ (t.innerText = i + e.message), Jn(n);
+ });
+ }
+ const ei = document.getElementById('sidebar'),
+ ti = document.getElementById('sidebar-trigger'),
+ ni = document.getElementById('mask');
+ class ii {
+ static toggle() {
+ (oi._ = yn(ii, this, !yn(ii, this, oi)._)),
+ document.body.toggleAttribute('sidebar-display', yn(ii, this, oi)._),
+ ei.classList.toggle('z-2', yn(ii, this, oi)._),
+ ni.classList.toggle('d-none', !yn(ii, this, oi)._);
+ }
+ }
+ var oi = { _: !1 };
+ const ri = document.getElementById('sidebar-trigger'),
+ si = document.getElementById('search-trigger'),
+ ai = document.getElementById('search-cancel'),
+ li = document.querySelectorAll('#main-wrapper>.container>.row'),
+ ci = document.getElementById('topbar-title'),
+ ui = document.getElementById('search'),
+ di = document.getElementById('search-result-wrapper'),
+ fi = document.getElementById('search-results'),
+ pi = document.getElementById('search-input'),
+ hi = document.getElementById('search-hints'),
+ mi = 'd-block',
+ gi = 'd-none',
+ bi = 'input-focus',
+ vi = 'd-flex';
+ class yi {
+ static on() {
+ ri.classList.add(gi),
+ ci.classList.add(gi),
+ si.classList.add(gi),
+ ui.classList.add(vi),
+ ai.classList.add(mi);
+ }
+ static off() {
+ ai.classList.remove(mi),
+ ui.classList.remove(vi),
+ ri.classList.remove(gi),
+ ci.classList.remove(gi),
+ si.classList.remove(gi);
+ }
+ }
+ class _i {
+ static on() {
+ this.resultVisible ||
+ (di.classList.remove(gi),
+ li.forEach((e) => {
+ e.classList.add(gi);
+ }),
+ (this.resultVisible = !0));
+ }
+ static off() {
+ this.resultVisible &&
+ ((fi.innerHTML = ''),
+ hi.classList.contains(gi) && hi.classList.remove(gi),
+ di.classList.add(gi),
+ li.forEach((e) => {
+ e.classList.remove(gi);
+ }),
+ (pi.textContent = ''),
+ (this.resultVisible = !1));
+ }
+ }
+ function wi() {
+ return ai.classList.contains(mi);
+ }
+ _n(_i, 'resultVisible', !1),
+ (function () {
+ const e = document.querySelectorAll('article img');
+ if (0 === e.length) return;
+ e.forEach((e) => {
+ e.addEventListener('load', pn);
+ }),
+ document
+ .querySelectorAll('article img[loading="lazy"]')
+ .forEach((e) => {
+ e.complete && fn.call(e, dn.SHIMMER);
+ });
+ const t = document.querySelectorAll(`article img[${un}="true"]`);
+ t.length &&
+ t.forEach((e) => {
+ hn.call(e);
+ });
+ })(),
+ null !== document.querySelector('main>article[data-toc="true"]') &&
+ (jn.matches ? Dn.init() : Sn.init(), (jn.onchange = Bn)),
+ (function () {
+ if (null === document.querySelector('.popup')) return;
+ const e = !(
+ null === document.querySelector('.popup.light') &&
+ null === document.querySelector('.popup.dark')
+ );
+ Theme.visualState === Theme.DARK && (bn = gn);
+ let t = GLightbox({ selector: `${bn}` });
+ if (e && Theme.switchable) {
+ let e = null;
+ window.addEventListener('message', (n) => {
+ n.source === window &&
+ n.data &&
+ n.data.id === Theme.ID &&
+ (function (e, t) {
+ (bn = bn === mn ? gn : mn),
+ null === t && (t = GLightbox({ selector: `${bn}` })),
+ ([e, t] = [t, e]);
+ })(t, e);
+ });
+ }
+ })(),
+ (ti.onclick = ni.onclick = () => ii.toggle()),
+ dayjs.locale(vn.locale),
+ dayjs.extend(window.dayjs_plugin_localizedFormat),
+ document.querySelectorAll(`[${vn.attrTimestamp}]`).forEach((e) => {
+ const t = dayjs.unix(vn.getTimestamp(e)),
+ n = t.format(vn.getDateFormat(e));
+ if (
+ ((e.textContent = n),
+ e.removeAttribute(vn.attrTimestamp),
+ e.removeAttribute(vn.attrDateFormat),
+ e.hasAttribute('data-bs-toggle') &&
+ 'tooltip' === e.getAttribute('data-bs-toggle'))
+ ) {
+ const n = t.format('llll');
+ e.setAttribute('data-bs-title', n);
+ }
+ }),
+ ln(),
+ (function () {
+ const e = document.getElementById('copy-link');
+ null !== e &&
+ (e.addEventListener('click', (e) => {
+ const t = e.target;
+ rn(t) ||
+ navigator.clipboard.writeText(window.location.href).then(() => {
+ const e = t.getAttribute(nn),
+ n = t.getAttribute(tn);
+ t.setAttribute(nn, n),
+ Xt.getInstance(t).show(),
+ sn(t),
+ setTimeout(() => {
+ t.setAttribute(nn, e), an(t);
+ }, on);
+ });
+ }),
+ e.addEventListener('mouseleave', (e) => {
+ Xt.getInstance(e.target).hide();
+ }));
+ })(),
+ si.addEventListener('click', () => {
+ yi.on(), _i.on(), pi.focus();
+ }),
+ ai.addEventListener('click', () => {
+ yi.off(), _i.off();
+ }),
+ pi.addEventListener('focus', () => {
+ ui.classList.add(bi);
+ }),
+ pi.addEventListener('focusout', () => {
+ ui.classList.remove(bi);
+ }),
+ pi.addEventListener('input', () => {
+ '' === pi.value
+ ? wi()
+ ? hi.classList.remove(gi)
+ : _i.off()
+ : (_i.on(), wi() && hi.classList.add(gi));
+ }),
+ (function () {
+ if (
+ 'undefined' == typeof mermaid ||
+ 'function' != typeof mermaid.initialize
+ )
+ return;
+ let e = { theme: Mn[Theme.visualState] };
+ [...document.getElementsByClassName('language-mermaid')].forEach(Fn),
+ mermaid.initialize(e),
+ Theme.switchable && window.addEventListener('message', In);
+ })(),
+ Hn &&
+ Hn.addEventListener('click', () => {
+ Theme.flip();
+ }),
+ (function () {
+ const e = document.getElementById('back-to-top');
+ window.addEventListener('scroll', () => {
+ window.scrollY > 50
+ ? e.classList.add('show')
+ : e.classList.remove('show');
+ }),
+ e.addEventListener('click', () => {
+ window.scrollTo({ top: 0 });
+ });
+ })(),
+ [...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map(
+ (e) => new Xt(e)
+ ),
+ [...document.getElementsByClassName('highlighter-rouge')].forEach((e) => {
+ const t = e.getAttribute('highlight-lines');
+ if (t && t.length > 0) {
+ let n = [];
+ (',' + t).match(/(?<=\s|,)\d+(-\d+)?/g).forEach(function (e) {
+ let t = e.split('-'),
+ i = parseInt(t[0]);
+ if (t.length > 1) {
+ let e = parseInt(t[1]);
+ if (e >= i) for (let t = i; t <= e; t++) n.push(t);
+ } else 1 == t.length && n.push(i);
+ });
+ let i = e.getElementsByTagName('pre');
+ !(function (e, t) {
+ let n = null,
+ i = 1;
+ for (let o = e.firstChild; null != o; o = o.nextSibling) {
+ null == n && (n = o);
+ let r = o.textContent.split(/\n/g);
+ if ((r || []).length > 1) {
+ let s = r.length - 1,
+ a = [];
+ for (let t = 0; t < s + 1; t++) {
+ let n = o.cloneNode(!1);
+ (n.textContent = r[t]),
+ t != s && (n.textContent += '\n'),
+ e.insertBefore(n, o),
+ a.push(n);
+ }
+ e.removeChild(o), (o = a[s]);
+ for (let o = 0; o < s; o++) {
+ if (t.includes(i)) {
+ let t = document.createElement('span');
+ t.setAttribute('class', 'hll'), e.insertBefore(t, n);
+ for (let e = t.nextSibling; e != a[o]; e = t.nextSibling)
+ t.appendChild(e);
+ t.appendChild(a[o]);
+ }
+ (n = a[o + 1]), i++;
+ }
+ }
+ }
+ })(i[i.length - 1], n),
+ e.removeAttribute('highlight-lines');
+ }
+ }),
+ [
+ ...document.querySelectorAll('.code-header button.button-run-cpp')
+ ].forEach((e) => {
+ e.onclick = () => {
+ if (
+ (function (e) {
+ if (e.hasAttribute(qn)) {
+ let t = e.getAttribute(qn);
+ if (Number(t) + 5e3 > Date.now()) return !0;
+ }
+ return !1;
+ })(e)
+ )
+ return;
+ var t;
+ (t = e).setAttribute(qn, Date.now() + $n),
+ t
+ .getElementsByTagName('i')[0]
+ .classList.replace('icon-playfill', 'icon-loading1');
+ let n = (function (e) {
+ let t = e.parentNode.parentNode.nextElementSibling;
+ if (
+ null == t ||
+ 'DETAILS' != t.tagName ||
+ 'run-output' != t.className
+ ) {
+ let n = t;
+ (t = document.createElement('details')),
+ (t.className = 'run-output');
+ let i = document.createElement('summary');
+ (i.textContent = e.getAttribute('output-title')),
+ t.appendChild(i),
+ null == n
+ ? e.parentNode.parentNode.parentNode.appendChild(t)
+ : n.parentNode.insertBefore(t, n);
+ }
+ return t.setAttribute('open', 'open'), t;
+ })(e);
+ for (let e of n.getElementsByTagName('p')) n.removeChild(e);
+ let i = document.createElement('p');
+ (i.innerText = e.getAttribute('wait-message')),
+ n.appendChild(i),
+ (function (e, t, n, i) {
+ let o,
+ r = e.getElementsByTagName('pre');
+ if (2 == r.length) o = r[1].innerText;
+ else {
+ if (1 != r.length) return void zn(n);
+ o = r[0].innerText;
+ }
+ let s = { cmd: 'g++ -std=c++20 main.cpp && ./a.out', src: o },
+ a = new XMLHttpRequest();
+ a.open('POST', 'https://coliru.stacked-crooked.com/compile', !0),
+ (a.onload = () => {
+ (t.innerText = a.responseText), zn(n);
+ }),
+ (a.onerror = () => {
+ (t.innerText = i + a.responseText), zn(n);
+ }),
+ a.send(JSON.stringify(s));
+ })(
+ e.parentNode.nextElementSibling,
+ i,
+ e,
+ e.getAttribute('error-prompt')
+ );
+ };
+ }),
+ [
+ ...document.querySelectorAll('.code-header button.button-run-javascript')
+ ].forEach((e) => {
+ e.onclick = () => {
+ if (
+ (function (e) {
+ if (e.hasAttribute(Rn)) {
+ let t = e.getAttribute(Rn);
+ if (Number(t) + 5e3 > Date.now()) return !0;
+ }
+ return !1;
+ })(e)
+ )
+ return;
+ var t;
+ (t = e).setAttribute(Rn, Date.now() + Wn),
+ t
+ .getElementsByTagName('i')[0]
+ .classList.replace('icon-playfill', 'icon-loading1');
+ let n = (function (e) {
+ let t = e.parentNode.parentNode.nextElementSibling;
+ if (
+ null == t ||
+ 'DETAILS' != t.tagName ||
+ 'run-output' != t.className
+ ) {
+ let n = t;
+ (t = document.createElement('details')),
+ (t.className = 'run-output');
+ let i = document.createElement('summary');
+ (i.textContent = e.getAttribute('output-title')),
+ t.appendChild(i),
+ null == n
+ ? e.parentNode.parentNode.parentNode.appendChild(t)
+ : n.parentNode.insertBefore(t, n);
+ }
+ return t.setAttribute('open', 'open'), t;
+ })(e);
+ for (let e of n.getElementsByTagName('p')) n.removeChild(e);
+ let i = document.createElement('p');
+ (i.innerText = e.getAttribute('wait-message')), n.appendChild(i);
+ let o,
+ r = e.parentNode.nextElementSibling.getElementsByTagName('pre');
+ if (2 == r.length) o = r[1].innerText;
+ else {
+ if (1 != r.length) return void Vn(e);
+ o = r[0].innerText;
+ }
+ let s = new Function(o);
+ console.log != Un &&
+ ((console.stdlog = console.log.bind(console)), (console.log = Un)),
+ (console.logs = []),
+ s(),
+ (i.innerText = console.logs.join('\n')),
+ Vn(e);
+ };
+ }),
+ [
+ ...document.querySelectorAll('.code-header button.button-run-python')
+ ].forEach((e) => {
+ e.onclick = () => {
+ if (
+ (function (e) {
+ if (e.hasAttribute(Yn)) {
+ let t = e.getAttribute(Yn);
+ if (Number(t) + 5e3 > Date.now()) return !0;
+ }
+ return !1;
+ })(e)
+ )
+ return;
+ var t;
+ (t = e).setAttribute(Yn, Date.now() + Kn),
+ t
+ .getElementsByTagName('i')[0]
+ .classList.replace('icon-playfill', 'icon-loading1');
+ let n = (function (e) {
+ let t = e.parentNode.parentNode.nextElementSibling;
+ if (
+ null == t ||
+ 'DETAILS' != t.tagName ||
+ 'run-output' != t.className
+ ) {
+ let n = t;
+ (t = document.createElement('details')),
+ (t.className = 'run-output');
+ let i = document.createElement('summary');
+ (i.textContent = e.getAttribute('output-title')),
+ t.appendChild(i),
+ null == n
+ ? e.parentNode.parentNode.parentNode.appendChild(t)
+ : n.parentNode.insertBefore(t, n);
+ }
+ return t.setAttribute('open', 'open'), t;
+ })(e);
+ for (let e of n.getElementsByTagName('p')) n.removeChild(e);
+ let i = document.createElement('p');
+ (i.innerText = e.getAttribute('wait-message')),
+ n.appendChild(i),
+ (function (e, t, n, i) {
+ let o,
+ r = e.getElementsByTagName('pre');
+ if (2 == r.length) o = r[1].innerText;
+ else {
+ if (1 != r.length) return void Qn(n);
+ o = r[0].innerText;
+ }
+ let s = [{ code: o, file_name: 'main.py' }];
+ (socket = io('https://repl.online-cpp.com', {
+ transports: ['websocket'],
+ timeout: Kn,
+ 'connect timeout': 3e3,
+ reconnection: !1,
+ query: { type: 'script', lang: 'python3' }
+ })),
+ socket.emit('code', s, '', 'main.py'),
+ socket.on('exit', function (e, t) {
+ Qn(n);
+ }),
+ socket.on('output', function (e) {
+ let n = new TextDecoder().decode(new Uint8Array(e));
+ t.innerText = n;
+ }),
+ socket.on('err', function (e) {
+ let n = new TextDecoder().decode(new Uint8Array(e));
+ t.innerText = i + '\n' + n;
+ }),
+ socket.on('connect_error', function (e) {
+ (t.innerText = i + e.message), socket.close(), Qn(n);
+ });
+ })(
+ e.parentNode.nextElementSibling,
+ i,
+ e,
+ e.getAttribute('error-prompt')
+ );
+ };
+ }),
+ [
+ ...document.querySelectorAll('.code-header button.button-run-rust')
+ ].forEach((e) => {
+ e.onclick = () => {
+ if (
+ (function (e) {
+ if (e.hasAttribute(Xn)) {
+ let t = e.getAttribute(Xn);
+ if (Number(t) + 5e3 > Date.now()) return !0;
+ }
+ return !1;
+ })(e)
+ )
+ return;
+ var t;
+ (t = e).setAttribute(Xn, Date.now() + Gn),
+ t
+ .getElementsByTagName('i')[0]
+ .classList.replace('icon-playfill', 'icon-loading1');
+ let n = (function (e) {
+ let t = e.parentNode.parentNode.nextElementSibling;
+ if (
+ null == t ||
+ 'DETAILS' != t.tagName ||
+ 'run-output' != t.className
+ ) {
+ let n = t;
+ (t = document.createElement('details')),
+ (t.className = 'run-output');
+ let i = document.createElement('summary');
+ (i.textContent = e.getAttribute('output-title')),
+ t.appendChild(i),
+ null == n
+ ? e.parentNode.parentNode.parentNode.appendChild(t)
+ : n.parentNode.insertBefore(t, n);
+ }
+ return t.setAttribute('open', 'open'), t;
+ })(e);
+ for (let e of n.getElementsByTagName('p')) n.removeChild(e);
+ let i = document.createElement('p');
+ (i.innerText = e.getAttribute('wait-message')),
+ n.appendChild(i),
+ Zn(
+ e.parentNode.nextElementSibling,
+ i,
+ e,
+ e.getAttribute('error-prompt')
+ );
+ };
+ });
+})();
diff --git a/assets/lib b/assets/lib
index 897439a25d9..a231bc7e2c6 160000
--- a/assets/lib
+++ b/assets/lib
@@ -1 +1 @@
-Subproject commit 897439a25d99ca74eaec34a26ac18438df47d24b
+Subproject commit a231bc7e2c67198e604950cb2be9147a0b2020c0
diff --git a/avatar.png b/avatar.png
deleted file mode 100755
index 0da04776b5a..00000000000
Binary files a/avatar.png and /dev/null differ
diff --git a/favicon.ico b/favicon.ico
index 8c537e026a7..c35a2b50a40 100644
Binary files a/favicon.ico and b/favicon.ico differ
diff --git a/kagula.png b/kagula.png
new file mode 100644
index 00000000000..045a10c7525
Binary files /dev/null and b/kagula.png differ
diff --git a/tools/init.sh b/tools/init.sh
deleted file mode 100755
index 2ad72ab9bea..00000000000
--- a/tools/init.sh
+++ /dev/null
@@ -1,130 +0,0 @@
-#!/usr/bin/env bash
-#
-# Init the environment for new user.
-
-set -eu
-
-# CLI Dependencies
-CLI=("git" "npm")
-
-ACTIONS_WORKFLOW=pages-deploy.yml
-
-RELEASE_HASH=$(git log --grep="chore(release):" -1 --pretty="%H")
-
-# temporary file suffixes that make `sed -i` compatible with BSD and Linux
-TEMP_SUFFIX="to-delete"
-
-_no_gh=false
-
-help() {
- echo "Usage:"
- echo
- echo " bash /path/to/init [options]"
- echo
- echo "Options:"
- echo " --no-gh Do not deploy to Github."
- echo " -h, --help Print this help information."
-}
-
-# BSD and GNU compatible sed
-_sedi() {
- regex=$1
- file=$2
- sed -i.$TEMP_SUFFIX -E "$regex" "$file"
- rm -f "$file".$TEMP_SUFFIX
-}
-
-_check_cli() {
- for i in "${!CLI[@]}"; do
- cli="${CLI[$i]}"
- if ! command -v "$cli" &>/dev/null; then
- echo "Command '$cli' not found! Hint: you should install it."
- exit 1
- fi
- done
-}
-
-_check_status() {
- if [[ -n $(git status . -s) ]]; then
- echo "Error: Commit unstaged files first, and then run this tool again."
- exit 1
- fi
-}
-
-_check_init() {
- if [[ $(git rev-parse HEAD^1) == "$RELEASE_HASH" ]]; then
- echo "Already initialized."
- exit 0
- fi
-}
-
-check_env() {
- _check_cli
- _check_status
- _check_init
-}
-
-reset_latest() {
- git reset --hard "$RELEASE_HASH"
- git clean -fd
- git submodule update --init --recursive
-}
-
-init_files() {
- if $_no_gh; then
- rm -rf .github
- else
- ## Change the files of `.github/`
- temp="$(mktemp -d)"
- find .github/workflows -type f -name "*$ACTIONS_WORKFLOW*" -exec mv {} "$temp/$ACTIONS_WORKFLOW" \;
- rm -rf .github && mkdir -p .github/workflows
- mv "$temp/$ACTIONS_WORKFLOW" .github/workflows/"$ACTIONS_WORKFLOW"
- rm -rf "$temp"
- fi
-
- # Cleanup image settings in site config
- _sedi "s/(^timezone:).*/\1/;s/(^.*cdn:).*/\1/;s/(^avatar:).*/\1/" _config.yml
-
- # remove the other files
- rm -rf tools/init.sh tools/release.sh _posts/*
-
- # build assets
- npm i && npm run build
-
- # track the CSS/JS output
- _sedi "/.*\/dist$/d" .gitignore
-}
-
-commit() {
- git add -A
- git commit -m "chore: initialize the environment" -q
- echo -e "\n> Initialization successful!\n"
-}
-
-main() {
- check_env
- reset_latest
- init_files
- commit
-}
-
-while (($#)); do
- opt="$1"
- case $opt in
- --no-gh)
- _no_gh=true
- shift
- ;;
- -h | --help)
- help
- exit 0
- ;;
- *)
- # unknown option
- help
- exit 1
- ;;
- esac
-done
-
-main
diff --git a/tools/release.sh b/tools/release.sh
deleted file mode 100755
index 522c892c827..00000000000
--- a/tools/release.sh
+++ /dev/null
@@ -1,186 +0,0 @@
-#!/usr/bin/env bash
-#
-# Requires: Git, NPM and RubyGems
-
-set -eu
-
-opt_pre=false # option for bump gem version
-opt_pkg=false # option for building gem package
-
-MAIN_BRANCH="master"
-RELEASE_BRANCH="production"
-
-GEM_SPEC="jekyll-theme-chirpy.gemspec"
-NODE_SPEC="package.json"
-CHANGELOG="docs/CHANGELOG.md"
-CONFIG="_config.yml"
-
-CSS_DIST="_sass/dist"
-JS_DIST="assets/js/dist"
-
-FILES=(
- "$GEM_SPEC"
- "$NODE_SPEC"
- "$CHANGELOG"
- "$CONFIG"
-)
-
-TOOLS=(
- "git"
- "npm"
- "gem"
-)
-
-help() {
- echo -e "A tool to release new version Chirpy gem.\nThis tool will:"
- echo " 1. Build a new gem and publish it to RubyGems.org"
- echo " 2. Merge the release branch into the default branch"
- echo
- echo "Usage:"
- echo " bash $0 [options]"
- echo
- echo "Options:"
- echo " --prepare Preparation for release"
- echo " -p, --package Build a gem package only, for local packaging in case of auto-publishing failure"
- echo " -h, --help Display this help message"
-}
-
-_check_cli() {
- for i in "${!TOOLS[@]}"; do
- cli="${TOOLS[$i]}"
- if ! command -v "$cli" &>/dev/null; then
- echo "> Command '$cli' not found!"
- exit 1
- fi
- done
-}
-
-_check_git() {
- $opt_pre || (
- # ensure that changes have been committed
- if [[ -n $(git status . -s) ]]; then
- echo "> Abort: Commit the staged files first, and then run this tool again."
- exit 1
- fi
- )
-
- $opt_pkg || (
- if [[ "$(git branch --show-current)" != "$RELEASE_BRANCH" ]]; then
- echo "> Abort: Please run the tool in the '$RELEASE_BRANCH' branch."
- exit 1
- fi
- )
-}
-
-_check_src() {
- for i in "${!FILES[@]}"; do
- _src="${FILES[$i]}"
- if [[ ! -f $_src && ! -d $_src ]]; then
- echo -e "> Error: Missing file \"$_src\"!\n"
- exit 1
- fi
- done
-}
-
-init() {
- _check_cli
- _check_git
- _check_src
- echo -e "> npm install\n"
- npm i
-}
-
-## Bump new version to gem-spec file
-_bump_version() {
- _version="$(grep '"version":' "$NODE_SPEC" | sed 's/.*: "//;s/".*//')"
- sed -i "s/[[:digit:]]\+\.[[:digit:]]\+\.[[:digit:]]\+/$_version/" "$GEM_SPEC"
- echo "> Bump gem version to $_version"
-}
-
-_improve_changelog() {
- # Replace multiple empty lines with a single empty line
- sed -i '/^$/N;/^\n$/D' "$CHANGELOG"
- # Escape left angle brackets of HTML tag in the changelog as they break the markdown structure. e.g., '
' - sed -i -E 's/\s(<[a-z])/ \\\1/g' "$CHANGELOG" -} - -prepare() { - _bump_version - _improve_changelog -} - -## Build a Gem package -build_gem() { - # Remove unnecessary theme settings - sed -i -E "s/(^timezone:).*/\1/;s/(^cdn:).*/\1/;s/(^avatar:).*/\1/" $CONFIG - rm -f ./*.gem - - npm run build - # add CSS/JS distribution files to gem package - git add "$CSS_DIST" "$JS_DIST" -f - - echo -e "\n> gem build $GEM_SPEC\n" - gem build "$GEM_SPEC" - - echo -e "\n> Resume file changes ...\n" - git reset - git checkout . -} - -# Push the gem to RubyGems.org (using $GEM_HOST_API_KEY) -push_gem() { - gem push ./*.gem -} - -## Merge the release branch into the default branch -merge() { - git fetch origin "$MAIN_BRANCH" - git checkout -b "$MAIN_BRANCH" origin/"$MAIN_BRANCH" - - git merge --no-ff --no-edit "$RELEASE_BRANCH" || ( - git merge --abort - echo -e "\n> Conflict detected. Aborting merge.\n" - exit 0 - ) - - git push origin "$MAIN_BRANCH" -} - -main() { - init - - if $opt_pre; then - prepare - exit 0 - fi - - build_gem - $opt_pkg && exit 0 - push_gem - merge -} - -while (($#)); do - opt="$1" - case $opt in - --prepare) - opt_pre=true - shift - ;; - -p | --package) - opt_pkg=true - shift - ;; - -h | --help) - help - exit 0 - ;; - *) - # unknown option - help - exit 1 - ;; - esac -done - -main