From 38e5ce5ed78ba1304f55c8a3b2458136b94203bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A2=E8=8B=B1=E8=B1=AA?= <1029214205@qq.com> Date: Tue, 28 May 2024 23:50:07 +0800 Subject: [PATCH] first commit --- .idea/.gitignore | 8 - .idea/DjangoBlogs.iml | 30 - .../inspectionProfiles/profiles_settings.xml | 6 - .idea/misc.xml | 7 - .idea/modules.xml | 8 - DjangoBlogs/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 145 -> 0 bytes .../__pycache__/settings.cpython-312.pyc | Bin 2971 -> 0 bytes DjangoBlogs/__pycache__/urls.cpython-312.pyc | Bin 1206 -> 0 bytes DjangoBlogs/__pycache__/wsgi.cpython-312.pyc | Bin 641 -> 0 bytes DjangoBlogs/asgi.py | 16 - DjangoBlogs/settings.py | 145 - .../templates}/huixia.html | 0 DjangoBlogs/urls.py | 27 - DjangoBlogs/wsgi.py | 16 - README.md | 2 - auth1/__init__.py | 0 auth1/__pycache__/__init__.cpython-312.pyc | Bin 139 -> 0 bytes auth1/__pycache__/admin.cpython-312.pyc | Bin 183 -> 0 bytes auth1/__pycache__/apps.cpython-312.pyc | Bin 443 -> 0 bytes auth1/__pycache__/models.cpython-312.pyc | Bin 676 -> 0 bytes auth1/__pycache__/urls.cpython-312.pyc | Bin 515 -> 0 bytes auth1/__pycache__/views.cpython-312.pyc | Bin 1581 -> 0 bytes auth1/admin.py | 3 - auth1/apps.py | 6 - auth1/migrations/0001_initial.py | 23 - .../0002_alter_captchamodel_email.py | 18 - auth1/migrations/__init__.py | 0 .../__pycache__/0001_initial.cpython-312.pyc | Bin 1052 -> 0 bytes ...2_alter_captchamodel_email.cpython-312.pyc | Bin 744 -> 0 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 150 -> 0 bytes auth1/models.py | 8 - auth1/tests.py | 3 - auth1/urls.py | 10 - auth1/views.py | 26 - blog/__init__.py | 0 blog/__pycache__/__init__.cpython-312.pyc | Bin 138 -> 0 bytes blog/__pycache__/admin.cpython-312.pyc | Bin 182 -> 0 bytes blog/__pycache__/apps.cpython-312.pyc | Bin 440 -> 0 bytes blog/__pycache__/models.cpython-312.pyc | Bin 179 -> 0 bytes blog/__pycache__/urls.cpython-312.pyc | Bin 526 -> 0 bytes blog/__pycache__/views.cpython-312.pyc | Bin 657 -> 0 bytes blog/admin.py | 3 - blog/apps.py | 6 - blog/migrations/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 149 -> 0 bytes blog/models.py | 3 - blog/tests.py | 3 - blog/urls.py | 10 - blog/views.py | 11 - db.sqlite3 | 0 manage.py | 22 - my.cnf | 5 - static/bootstrap5/bootstrap.min.css | 6 - static/bootstrap5/bootstrap.min.js | 7 - static/bootstrap5/popper.min.js | 6 - static/css/base.css | 3 - static/image/logo1.png | Bin 10955 -> 0 bytes static/image/profile.png | Bin 24312 -> 0 bytes static/jquery/jquery-3.7.1.min.js | 2 - static/js/pub_blog.js | 28 - static/js/register.js | 45 - static/wangeditor/index.js | 24129 ---------------- static/wangeditor/style.css | 27 - templates/base.html | 44 - templates/blog_detail.html | 46 - templates/index.html | 26 - templates/login.html | 28 - templates/pub_blog.html | 56 - templates/register.html | 56 - 70 files changed, 24934 deletions(-) delete mode 100644 .idea/.gitignore delete mode 100644 .idea/DjangoBlogs.iml delete mode 100644 .idea/inspectionProfiles/profiles_settings.xml delete mode 100644 .idea/misc.xml delete mode 100644 .idea/modules.xml delete mode 100644 DjangoBlogs/__init__.py delete mode 100644 DjangoBlogs/__pycache__/__init__.cpython-312.pyc delete mode 100644 DjangoBlogs/__pycache__/settings.cpython-312.pyc delete mode 100644 DjangoBlogs/__pycache__/urls.cpython-312.pyc delete mode 100644 DjangoBlogs/__pycache__/wsgi.cpython-312.pyc delete mode 100644 DjangoBlogs/asgi.py delete mode 100644 DjangoBlogs/settings.py rename {templates => DjangoBlogs/templates}/huixia.html (100%) delete mode 100644 DjangoBlogs/urls.py delete mode 100644 DjangoBlogs/wsgi.py delete mode 100644 README.md delete mode 100644 auth1/__init__.py delete mode 100644 auth1/__pycache__/__init__.cpython-312.pyc delete mode 100644 auth1/__pycache__/admin.cpython-312.pyc delete mode 100644 auth1/__pycache__/apps.cpython-312.pyc delete mode 100644 auth1/__pycache__/models.cpython-312.pyc delete mode 100644 auth1/__pycache__/urls.cpython-312.pyc delete mode 100644 auth1/__pycache__/views.cpython-312.pyc delete mode 100644 auth1/admin.py delete mode 100644 auth1/apps.py delete mode 100644 auth1/migrations/0001_initial.py delete mode 100644 auth1/migrations/0002_alter_captchamodel_email.py delete mode 100644 auth1/migrations/__init__.py delete mode 100644 auth1/migrations/__pycache__/0001_initial.cpython-312.pyc delete mode 100644 auth1/migrations/__pycache__/0002_alter_captchamodel_email.cpython-312.pyc delete mode 100644 auth1/migrations/__pycache__/__init__.cpython-312.pyc delete mode 100644 auth1/models.py delete mode 100644 auth1/tests.py delete mode 100644 auth1/urls.py delete mode 100644 auth1/views.py delete mode 100644 blog/__init__.py delete mode 100644 blog/__pycache__/__init__.cpython-312.pyc delete mode 100644 blog/__pycache__/admin.cpython-312.pyc delete mode 100644 blog/__pycache__/apps.cpython-312.pyc delete mode 100644 blog/__pycache__/models.cpython-312.pyc delete mode 100644 blog/__pycache__/urls.cpython-312.pyc delete mode 100644 blog/__pycache__/views.cpython-312.pyc delete mode 100644 blog/admin.py delete mode 100644 blog/apps.py delete mode 100644 blog/migrations/__init__.py delete mode 100644 blog/migrations/__pycache__/__init__.cpython-312.pyc delete mode 100644 blog/models.py delete mode 100644 blog/tests.py delete mode 100644 blog/urls.py delete mode 100644 blog/views.py delete mode 100644 db.sqlite3 delete mode 100644 manage.py delete mode 100644 my.cnf delete mode 100644 static/bootstrap5/bootstrap.min.css delete mode 100644 static/bootstrap5/bootstrap.min.js delete mode 100644 static/bootstrap5/popper.min.js delete mode 100644 static/css/base.css delete mode 100644 static/image/logo1.png delete mode 100644 static/image/profile.png delete mode 100644 static/jquery/jquery-3.7.1.min.js delete mode 100644 static/js/pub_blog.js delete mode 100644 static/js/register.js delete mode 100644 static/wangeditor/index.js delete mode 100644 static/wangeditor/style.css delete mode 100644 templates/base.html delete mode 100644 templates/blog_detail.html delete mode 100644 templates/index.html delete mode 100644 templates/login.html delete mode 100644 templates/pub_blog.html delete mode 100644 templates/register.html diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 35410ca..0000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -# 默认忽略的文件 -/shelf/ -/workspace.xml -# 基于编辑器的 HTTP 客户端请求 -/httpRequests/ -# Datasource local storage ignored files -/dataSources/ -/dataSources.local.xml diff --git a/.idea/DjangoBlogs.iml b/.idea/DjangoBlogs.iml deleted file mode 100644 index 700baa8..0000000 --- a/.idea/DjangoBlogs.iml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml deleted file mode 100644 index 105ce2d..0000000 --- a/.idea/inspectionProfiles/profiles_settings.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index f0e0ef6..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index dc9591b..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/DjangoBlogs/__init__.py b/DjangoBlogs/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/DjangoBlogs/__pycache__/__init__.cpython-312.pyc b/DjangoBlogs/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 03a3d9e81f38e8869816e977820f4d5bfa7c4fba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 145 zcmX@j%ge<81V7)qrh(|kAOanHW&w&!XQ*V*Wb|9fP{ah}eFmxdW#D2J6HpmYl%JKF zToU7wm6(^F@063DUW~$ykI&4@EQycTE2#X%VUwGmQks)$SHuc5fDwp`L5z>gjEsy$ H%s>_ZKEfjA diff --git a/DjangoBlogs/__pycache__/settings.cpython-312.pyc b/DjangoBlogs/__pycache__/settings.cpython-312.pyc deleted file mode 100644 index d7d4dfad70f99f9a02e53f3b52a03841dfa9e463..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2971 zcmb6b&2QV*os{+cWl2_SIiE_CHntm6&TMyCv1X+u+R-9Qnj|M1QGlTIo@hG!kV&ex zdD3OTfL(Um4mk|H4gFJgvC%_}cQVjZZ%T?@dfJbqWUESmW`y+K`+a{u^1q2hl!E8@ zuhs6uS&I7J0me^obolW$O;P`(5XDo7Mm~jBeY}sRd=&QKnQwvSJO>ePpIpBk0SB&) zNeb}42ge7|3?D*%J}gmuM50jO8=8;89)vxHLVO&BaS%o97)41m@&hIM4UJ-Oj=%Du z#4Eo<^9hvXlV}#DP#R@q8qK}($uvKUvgjH>Sv2pi3+|eeY01y0&?28k*ZB-so`ZiD z-Qcf*otvH=ejeT87tn1!2ed_Whrf>U{0(%MzllELZ^3^1)orML=Axd!lMaQW`x|Tb?|r=4 z7P^`u^w-+`jpI*yD;v@mt>v(t_0%vOU9$|i&A3Um=cciJuy|t%>4;#>vQB!~v=^p` zCN@n-^ScBU2%-cM*QX^cC``vGhe`ZxXaEur!R({uki9x$Rb_+}d?Xr}af6nv6Q=1z z4~N}Ln!PctdE^T-A>Z_H6H?3X8iBH_y2cdU?N?Y$qstUwc`oCl3D)0E`Qn5$=?4oi zBvJ0TT{$5*9mF_qlft`RE+?cudruIG+1S1&Ip(ja;cI#Q|{a` zeM2$r!bp>a)t&;Q$FxBO*3ft~7*C=#BAX;K<}{c6_R_Sp+bqYH029>#uXO|T;C5fK zS3ZE#z=tq7mi_67_p(`?WWGnUlVp2+iup2u?-3Z&E}L>3izP}X16K?bXxT?H?~0Oe zyDuwne?inFw8a*man%y>m&%PM3A6RO;GROYdaGQkHtn0Gi98>flFW#`9u&x}J_#Y* z75j>1=SIGx_Ep-|6Z23ZX#nTD)|#y*NtUb47N7tDz1bwu z-Eyf^;a;!}j>H?aT1(h#REo9gHi@*j-Fk&>aZQqX(cCFJ{FQQ%b=sIjN^FaD%r;4m z-D^D+>TI+5qSh!0&)G^Dh&AZ`M1`&H?6EtXP^^_WP*~pO1in_~NO%t%E9o{|Nv6$?MqNv)JA5 zV)tIhR?cE8uVatSVvh#lVUkKV=s|QCq#}ty;3Ab7B;H0N8Q&oJc0Qc+0VPYNJ{rV_ zVJgef=jp|NJv&Q3I87~GWOHx*fqTheidx(}UD$jx7tKcB#8QFaa3+)R4I;xOD*KyL zDg`D2$@9#^i};;?=Y}&r;0gp%z!h@2Zc~xj(-aQ`kPN#(eG>T7B+&4HYl)k_Qz|$7 zgi7ZIiHmr85V?rW4#F1@LvR?Uk_&D`fyCdA&-@D@lLdCik@?M2Dg&{mp9~V`sVpps f>x1ZdA_Yt4ljA6h1q4k~)-DU0}R|kYg#>6sd~^R6wa(3970BA%#k*YhPkVw$Hjd1IY$c zSx`HbAHah86Zi>?nXrTynAloXES

Y?@X=f*a27-o5+Y_r81QFVoW+-~)Yr(tWQ0 z@Ix%hQ7?>>kK8x_9%utk^5js8SdD7!ngnEk6i-ERf3^fW z`}XI~?9w`v$5wu>%4gN99ZF;0xxIS6H+6BZS7~bl&1g7pIgs{j^D%UB+zomuaae$3 z*u?}c_no+hAB4C^VM1^pxy;nGr#^z)DG3vYF+^gz4a0ykNN~y!g&c`OhT+Qqy`m;u z;V=;<2nI1njKUyiF%f}IF!Ptq=U0v9^p*;*8N^kD)!n_I8zp=o~M??@YbH*i|RgU#P zY(%{2(2f9U8W$L?#cr5-LEPgahYSg!GPm_qQ9 zWD(oSMfqp8JG_l7E?}8S7mgfPHw^8k=v+g}RL6^g*pM?tD4x}dXufl4m0$cOq6v;E z8dmc-D+9x+KR83xNttgAHSt-L9-!mYp zaL*QQ>hsodQ$|TuxD^^Olqo`utTE9cpTG&<2B)oMduwB`F@7ss%V+QBoGp%<$>6kp zC&FGDqI*OjgG^dZ0=2150k_@Vp;`t4)# diff --git a/DjangoBlogs/__pycache__/wsgi.cpython-312.pyc b/DjangoBlogs/__pycache__/wsgi.cpython-312.pyc deleted file mode 100644 index 078eeac18473b200bf214570b20256ff957bb19a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 641 zcmY*XL2DC16rS0QP1)EW()K)vmq6W(2QNhgC25FgT1cf33Y+cD+s%a8nPq31n%;Wy zCwTNM{V8553c`9(#Dgc5oZ6GK*@nhO?K z*^vQn5k&(;F|{}zU~}8tO6-A+5#aIaf^u_@Yd3g-XocQ7x5^A73xR!pT^g)Rt;Wjf zSLdML>5@>2h{Yt58EK6J5zA*>#)_nw97CvG$LVSUuT!Z&5j_G@k^;_yBMu}`Bp`{T z#~dDTm;fh}AY=2A2oj)VI1JL1voO$1is8`o+c8Rs%z!XqM3Z@eNMV{YMIy#wizonR zq;;ycJ&(#zxpeMq;VG1f2f};gHocKN(bA)kayd;vXzxVD%yWJfqxKp&Uynii#hbrm zBj0R2f7;`87y2&GE;^82`1ZxH7wou=5i={D!PI&YANCZG1!<7n|-ybLTVae6Qd8RKI^# I%WfOeKR!*ofdBvi diff --git a/DjangoBlogs/asgi.py b/DjangoBlogs/asgi.py deleted file mode 100644 index 8ffe5c0..0000000 --- a/DjangoBlogs/asgi.py +++ /dev/null @@ -1,16 +0,0 @@ -""" -ASGI config for DjangoBlogs project. - -It exposes the ASGI callable as a module-level variable named ``application``. - -For more information on this file, see -https://docs.djangoproject.com/en/5.0/howto/deployment/asgi/ -""" - -import os - -from django.core.asgi import get_asgi_application - -os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'DjangoBlogs.settings') - -application = get_asgi_application() diff --git a/DjangoBlogs/settings.py b/DjangoBlogs/settings.py deleted file mode 100644 index 0c46f9f..0000000 --- a/DjangoBlogs/settings.py +++ /dev/null @@ -1,145 +0,0 @@ -""" -Django settings for DjangoBlogs project. - -Generated by 'django-admin startproject' using Django 5.0.6. - -For more information on this file, see -https://docs.djangoproject.com/en/5.0/topics/settings/ - -For the full list of settings and their values, see -https://docs.djangoproject.com/en/5.0/ref/settings/ -""" - -from pathlib import Path - -# Build paths inside the project like this: BASE_DIR / 'subdir'. -BASE_DIR = Path(__file__).resolve().parent.parent - - -# Quick-start development settings - unsuitable for production -# See https://docs.djangoproject.com/en/5.0/howto/deployment/checklist/ - -# SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = 'django-insecure-atkxm8*x$-8&nk=_ehs(pgq_w$40$#%5b_fnl_u0bu4x+p*4g=' - -# SECURITY WARNING: don't run with debug turned on in production! -DEBUG = True - -ALLOWED_HOSTS = [] - - -# Application definition - -INSTALLED_APPS = [ - 'django.contrib.admin', - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.sessions', - 'django.contrib.messages', - 'django.contrib.staticfiles', - 'blog', - 'auth1' -] - -MIDDLEWARE = [ - 'django.middleware.security.SecurityMiddleware', - 'django.contrib.sessions.middleware.SessionMiddleware', - 'django.middleware.common.CommonMiddleware', - 'django.middleware.csrf.CsrfViewMiddleware', - 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.contrib.messages.middleware.MessageMiddleware', - 'django.middleware.clickjacking.XFrameOptionsMiddleware', -] - -ROOT_URLCONF = 'DjangoBlogs.urls' - -TEMPLATES = [ - { - 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'DIRS': [BASE_DIR / 'templates'] - , - 'APP_DIRS': True, - 'OPTIONS': { - 'context_processors': [ - 'django.template.context_processors.debug', - 'django.template.context_processors.request', - 'django.contrib.auth.context_processors.auth', - 'django.contrib.messages.context_processors.messages', - ], - - #加载静态文件static - 'builtins':['django.templatetags.static'] - }, - }, -] - -WSGI_APPLICATION = 'DjangoBlogs.wsgi.application' - - -# Database -# https://docs.djangoproject.com/en/5.0/ref/settings/#databases - -DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.mysql', - 'OPTIONS': { - 'read_default_file': 'my.cnf', - }, - } -} - - -# Password validation -# https://docs.djangoproject.com/en/5.0/ref/settings/#auth-password-validators - -AUTH_PASSWORD_VALIDATORS = [ - { - 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', - }, -] - - -# Internationalization -# https://docs.djangoproject.com/en/5.0/topics/i18n/ - -LANGUAGE_CODE = 'en-us' - -TIME_ZONE = 'UTC' - -USE_I18N = True - -USE_TZ = True - - -# Static files (CSS, JavaScript, Images) -# https://docs.djangoproject.com/en/5.0/howto/static-files/ - -STATIC_URL = 'static/' -#静态文件加载路径 -STATICFILES_DIRS = [ - BASE_DIR / 'static' -] - -# Default primary key field type -# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field - -DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' - - -EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' -EMAIL_USE_TLS = True -EMAIL_HOST = 'smtp.qq.com' -EMAIL_PORT = 587 -EMAIL_HOST_USER = '3485393348@qq.com' -EMAIL_HOST_PASSWORD = 'grjwnwpflcohdagg' -DEFAULT_FROM_EMAIL = '3485393348@qq.com' - diff --git a/templates/huixia.html b/DjangoBlogs/templates/huixia.html similarity index 100% rename from templates/huixia.html rename to DjangoBlogs/templates/huixia.html diff --git a/DjangoBlogs/urls.py b/DjangoBlogs/urls.py deleted file mode 100644 index 7ad4c0c..0000000 --- a/DjangoBlogs/urls.py +++ /dev/null @@ -1,27 +0,0 @@ -""" -URL configuration for DjangoBlogs project. - -The `urlpatterns` list routes URLs to views. For more information please see: - https://docs.djangoproject.com/en/5.0/topics/http/urls/ -Examples: -Function views - 1. Add an import: from my_app import views - 2. Add a URL to urlpatterns: path('', views.home, name='home') -Class-based views - 1. Add an import: from other_app.views import Home - 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') -Including another URLconf - 1. Import the include() function: from django.urls import include, path - 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) -""" -from django.contrib import admin -from django.urls import path, include -from django.shortcuts import HttpResponse -##HttpResponse 对象是一个非常常见的响应类型,表示一个简单的文本或 HTML 响应。可以使用 HttpResponse 对象返回字符串、HTML 页面或任何其他类型的文本数据,例如 JSON 数据、XML 数据等。 - - -urlpatterns = [ - path('admin/', admin.site.urls), - path('', include('blog.urls')), - path('auth/', include('auth1.urls')) -] diff --git a/DjangoBlogs/wsgi.py b/DjangoBlogs/wsgi.py deleted file mode 100644 index 2a341f4..0000000 --- a/DjangoBlogs/wsgi.py +++ /dev/null @@ -1,16 +0,0 @@ -""" -WSGI config for DjangoBlogs project. - -It exposes the WSGI callable as a module-level variable named ``application``. - -For more information on this file, see -https://docs.djangoproject.com/en/5.0/howto/deployment/wsgi/ -""" - -import os - -from django.core.wsgi import get_wsgi_application - -os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'DjangoBlogs.settings') - -application = get_wsgi_application() diff --git a/README.md b/README.md deleted file mode 100644 index 147914f..0000000 --- a/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# DjangoBlogs - diff --git a/auth1/__init__.py b/auth1/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/auth1/__pycache__/__init__.cpython-312.pyc b/auth1/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 27752fe54d78365f5ff023007a00f631785d3496..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 139 zcmX@j%ge<81gm%Yrh(|kAOanHW&w&!XQ*V*Wb|9fP{ah}eFmxdrR8E36HpmYl%JKF zToU7wm6(^F@063DUL2EHT9RQH6Ca2KczG$)vkyYsFe|ji$RQ! M%#4hTMa)1J00yle{Qv*} diff --git a/auth1/__pycache__/admin.cpython-312.pyc b/auth1/__pycache__/admin.cpython-312.pyc deleted file mode 100644 index 7b3940c6a77e3d77a8de981851fa88c6cddbc7f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 183 zcmX@j%ge<81gm%Yra1xW#~=<2FhLog1%Qm{3@HpLj5!Rsj8Tk?43$ip%r8OGnvAzt z6H{_C^ZYcKZtm}#sl@w(r6)^)9tYr8MQuj;U#VRJCGN33wD>bV!Z diff --git a/auth1/__pycache__/apps.cpython-312.pyc b/auth1/__pycache__/apps.cpython-312.pyc deleted file mode 100644 index 6385cdb2b9c23353362078480354644bce073da4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 443 zcmXv~ze~eF6n>WSgo0lgj*XL?*#3;tsiWrkqfgI{k4Z1pI1D87a&_Y6rGiG%%h8Q;KoX#8^l( zCUFbn`z&B}r9)^KWNeOwi{nteV944Flyb05*FE!x`7q%VI-2{gYTai%N`2MG58^m= z;yjV7QNa)(ZHusg_2KEeaj>>Jk8UDwRDEFUg;jq+niILK%HEPl33mkAG|sD`FOpqB a<(^Wxqi-D{^Z~~|TN>JXvVTD&<@y7;wQhd^ diff --git a/auth1/__pycache__/models.cpython-312.pyc b/auth1/__pycache__/models.cpython-312.pyc deleted file mode 100644 index 09d45fbfef8877c3421f288f9b74ff33d284d7f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 676 zcmZvZy=xmW6u_VEe6f9;P2n2oP#ZeAS4yBuD6Z+yILXom51tN#P)~|KxR2y~N9&~| zkRd~dWb&G^B_8^JbTSxh1f4o%E4W!QRXW8hSr;${3KaPeAQvIfU>B%%0#s*ckXvoIUoUmVu0F~+#+3{l#Mgp|GJojZdjPj0 zEWe2C7#O&Sf~#r3^g-c&Q87gm?Gh<=jm)whu=Gjp&dO)jqX#TBG48D5XwAuUYl|Et zUXOf`g|=nMY1ltZ*_G^3gl0fKW1ofHq$eVaq)CLs=o2QC?l~qeU>uTwVa!d8MYE|d z*~0iRCBFI+%Z9nR9gx1i(`P>A29wN-TRjr1Ox{yf@KTc`tlbZo%3EH{M1tZ(q`t#a zwsiBnS?{z)tvDJmFX=P~Bgo5;-AUJiabnE0@+9DO-aQD8)=Y8LM_m)g10FU9OafKiNUqUQHStQeYp7a3* z7&^d(CWHXTu;j#C$&`4GOcVnIVwp&d$Zcsbzp?zX_AJfwh*LPXzRC!Nl|P)yxs89g z_%BzLOtqcJYGZ+AAw#|$*2a7hA>`{ixe1tTx5C;1lbvR@?g_@TUBXmKs`VfwlqnV4 z4=XjBC5da-o$^8&**Md1!}hApe2Y2(6)P}6WpSyt@0W!S6`w@o;!O{Ths!G-OyiY& zB;Ljgp1_o2V76B{wo2_1Z8k_HvA8Y)DyRfTMjv;DPAUa3NHCE zksyR4usZ_!r>5Vk-)lgQcecA*{Y)?Oa5O;sL!@@n-D2P98IS1!Iuv@RTl`4n-cz~P RvjMu8C@2}b)2Pn? zq--&f3XLd9QQXiUjL=$YYZ9NTg5qPqmkBEr#{>#ylk8hD_|hlOy}Of;JbIWp=iGD7 zz4x5&o_l|f#li?^-;3RYmqdjAW&@9ey0U&2loC>qf^}rzB*sh^biojlBG*M-N=jf8 zbzjm4QquiKAQ=FkPx0$PBa{q*9=M2-VI>GWqJ)4)M?^VXWt-f_uAh>eLa2=0=v$VV zJ58*-nX^bY7(y1fQbtvMn|({;1{Hs{_3wz0}l5#vVAPrE^*HD9o}3 z(gl0y;J^ne`Or$_M_eCYipF482!5*(*eF_z?3iqsI$Vw%aHIq4U_$>l)fgpN)v^iQ z%$BlqtK~_fpt?aXhBm>FnYN_yMmf^zNUgL199z=xgMlM<0*Wr7BGSOHoirA)jR4O& zx)*Q}TMf3)3s3|_RHSQy=kJ3)&;p)!Q`!tHP8#n*Z&Z^utAUfolHNv&-#bljmkWZ; zD(9r_^t4T>?b*~lt%#LCQBd*Sptl-E_Fm7cgp_bmxQea|MV!S-n|XP+N?IF zG;FO_ZtQk_gf*->2@n-nJFLy#Tl@8k$|pCgAJ44L{2&Xil!5Mb0|v3Ibe6cN%GP!R znObYh0%bM0L4^#a3%YF;_QP=Hr>`oXmn!#eF8_F?a^qIz`)}7~ey&``wb`-N z>9GQvwEWBT>XnNdww0;b^E=uOz1-gRN*jpI;o(HaG-Q$PW*an6l2P+2$=N9#ddv+E zQqxHB?5pz-P+-SUnYdgX9b36HS^4y9IqHgC$IrN8me`b`;7XdQ=HLdWbBbxWek*O{ zbpq0+YA);g6*a5c77en{fcYM~OqSbJ$SY}^q)eL1Py!ldjR;9aK=9HjI|qw3UOXPJ z_4rQy67bwob)4w45WoPoO29_ZgXpe_Q{$&5dd7REy2{aKMvwm)X=m(zL1k>o$5cNV3X({Rw~=y7`c=SQ5^-gVy3JKFF=gg(Njg?|z9^$ClSz0EQ+6t?&i)*z2dnjUzm(bHo=!L&f a48A4w+!BiaA6q6=$UsrCTRdMHJ>?D#EnWIi`5nDHKBNd#35qq)Vb(cXHri zw|Ud!uA@Ed=yAuvE-4f$?<8y&Zv`C#4`VM$yKc~T`11Sme&4^}`@Y5FJfLU%!Os2( z1HgCB>78&FT(44a3J^e02Nfv63L`NPFkllP<`|$5hGni7)c@8)0hU5FHW$9~oE$^= zil$nMqnU~d1C{3uo3U)Q`yFFoeJ$8 z6-q+wPEI7T?Vctth_J3yonlGZ_M{<V{nAZ!#hY+K$|kfC*d4u421XkkrLAJYjpyc&dm;x!)N*m_B^0vONJ;a|`myDYPc zySwxWT+_VZ_ECPRuv^=;%rY)Ig?w2tRC7%?Rl7jtD=ifI+gF&MpI?x>J}*M9q!P5h#`NtIke|X>Z=&caL=Rp t+$=@6(UstVR;?-OdYf&hsp*6ugugfdb2nT9awmLS%r?dBPe2_%`VU@P4)y>5 diff --git a/auth1/migrations/__pycache__/0002_alter_captchamodel_email.cpython-312.pyc b/auth1/migrations/__pycache__/0002_alter_captchamodel_email.cpython-312.pyc deleted file mode 100644 index 7c0adcd7bd59f21920460e42b8373c670d291027..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 744 zcmY*XO=}ZD7=C9zrn^fjH3(L*9!wSX(x&1`q<&BpiiRFMErDU0nQk`hN4mQKbFP$t8DIc zXc}g(;w&th+GBI^5KZa!F`;Taxo(wcryJdVuAWy11&Ze~9K#rc`(SJuxA3QTV-MW> zpS_{8HgMKPw;zsfu8yj;lSjj9ZBVU!ExtebS$%Q2WVznh#8rH>o8OsFZ1|RNnO3*K z_O(@QZ+hmcD$})hCAxB+P48KLkdF*V-7mQTYM>5iFxVyddc~DB}JJ@Ma)12D;Yk6)csO(v5E<(3@FOaN=+__aRDoI y%E?bJj!6QNF<>+F3Mzkb*yQG?l;)(`6>$KyF#>Thi1C4$k&*EpgF+D-kOKhI6f2_u diff --git a/blog/__pycache__/apps.cpython-312.pyc b/blog/__pycache__/apps.cpython-312.pyc deleted file mode 100644 index a3a715a952d1e472a14d59ff8b53554c46f1a7bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 440 zcmXv~ze~eF6n>YaQu{-+h|s~oK_N?Kk)pH)U8Hmlfg|l*Ldvy?Ni)Pv=pP_1{TswT z#l^7%oSfW*>e9)3xp>2S-*@l(?!9|&?REp?>0RCV&oX}^`9HM^Y|bQD0Ru(^%!oq> zXmATmTLRNLdDWH9(Q?DAeIYSPvD=U1>uBzW!9e93$6F zqi7676e#b*F`IhxAhOulnnjF@)Eb0AKU+jMAs4JL#!@;oYek*Xxi{mK77a?JG82ef zl-_5as45-CeJ>LW>PbKK)dN_2fenteJ+&{~Q9eqdDW5D{yX=g!q%O8`y*N&-I8Sgd zWiTX2+cGR+-93Ldj@HeCM?1lrvOYBRqFH?a%?WNw*;|N8;hsd>dQZ)Kne0o7OGksV4Y`_2j diff --git a/blog/__pycache__/models.cpython-312.pyc b/blog/__pycache__/models.cpython-312.pyc deleted file mode 100644 index e92a6ce197f08170e34fb7fc821bba9c4864385a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 179 zcmX@j%ge<81UB|QX*NLmF^B^LOi;#W0U%>KLkdF*V-7aRq s$0PyC7>Itog34bUHb8c1PO4oI2T&g)5Ep|OAD9^#8SgR36tMw004L=tVE_OC diff --git a/blog/__pycache__/urls.cpython-312.pyc b/blog/__pycache__/urls.cpython-312.pyc deleted file mode 100644 index 80edab6d614fae104ab21f41bcbd0b6007930142..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 526 zcmX@j%ge<81iH6;(zqEJ7#@Q-Fu)FFe4YbjOlL@8NMX!j$YqRTWMoKTN@31n%4LpX z2C`YASeO`68Bb$@@VqD1S!*Gyv0(GSd#G)=n)WywJbBWy!aMNQciyQErwgHnRzLx6(B`M%p83i5GOt}#qJh2m<188;sC2DC{4P>0VLum&TihvGiFxVydZk4< z#YG^W6@h}Ph!sfO;z%qghzD6v!~qfmg+~!LNP-)v8tA%`)S|rNl?~wVqCzcIsq*yjsaN}12SK)pz;@oO>TZlX-=wLkq}T9$alp)K;i>4BO~Ko z2AR7I!VkCw8#q3)F|cxW2z7+^M|VcgD8Is@ev^gc0;j?P)$2;e7nO{6=w4y*019U*=nW$K^-?#VEJW0$cb3Y3b>9@t|7nm$}!rEx%f9*Sk&c$n~0{+5oJcJNAXh z_xh8FRN^Z@LVvLea6?{3ObXh zymgpB^>muY@X+`{;R!gwR*?jl4K_;cjg8z$%W?cO|IIMb3mP@FT8_nabdmvnj}n{r zaLfhWeg(8YHnJlvE5|6Akx7!tob#gPao-Aj!7(Wru6&4884}qq4W_X|$76wOAM$nR ZL}#%9@S##lU&+>|PN|8I4*_;1@e7udh1viB diff --git a/blog/admin.py b/blog/admin.py deleted file mode 100644 index 8c38f3f..0000000 --- a/blog/admin.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.contrib import admin - -# Register your models here. diff --git a/blog/apps.py b/blog/apps.py deleted file mode 100644 index 94788a5..0000000 --- a/blog/apps.py +++ /dev/null @@ -1,6 +0,0 @@ -from django.apps import AppConfig - - -class BlogConfig(AppConfig): - default_auto_field = 'django.db.models.BigAutoField' - name = 'blog' diff --git a/blog/migrations/__init__.py b/blog/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/blog/migrations/__pycache__/__init__.cpython-312.pyc b/blog/migrations/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 6b098cfe817179cc84f87bba8e80fdc42554a6df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 149 zcmX@j%ge<81UB|QX(0MBh(HIQS%4zb87dhx8U0o=6fpsLpFwJVnYdWR1XKnTC^rFO)%>2CKnE3e2yv&mLc)fzkUmP~M`6;D2sdh!I VKtmXTxERFv$jr#dSi}ru0RTJjBX', views.blog_detail, name='blog_detail'), - path('blog/pub', views.pub_blog, name='pub_blog'), -] diff --git a/blog/views.py b/blog/views.py deleted file mode 100644 index 36e1fca..0000000 --- a/blog/views.py +++ /dev/null @@ -1,11 +0,0 @@ -from django.shortcuts import render - -# Create your views here. -def index(request): - return render(request, 'index.html') - -def blog_detail(request, blog_id): - return render(request,'blog_detail.html') - -def pub_blog(request): - return render(request,'pub_blog.html') \ No newline at end of file diff --git a/db.sqlite3 b/db.sqlite3 deleted file mode 100644 index e69de29..0000000 diff --git a/manage.py b/manage.py deleted file mode 100644 index d779bc3..0000000 --- a/manage.py +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env python -"""Django's command-line utility for administrative tasks.""" -import os -import sys - - -def main(): - """Run administrative tasks.""" - os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'DjangoBlogs.settings') - try: - from django.core.management import execute_from_command_line - except ImportError as exc: - raise ImportError( - "Couldn't import Django. Are you sure it's installed and " - "available on your PYTHONPATH environment variable? Did you " - "forget to activate a virtual environment?" - ) from exc - execute_from_command_line(sys.argv) - - -if __name__ == '__main__': - main() diff --git a/my.cnf b/my.cnf deleted file mode 100644 index 8b843bf..0000000 --- a/my.cnf +++ /dev/null @@ -1,5 +0,0 @@ -[client] -database = djangoblog -user = root -password = huixia1222 -default-character-set = utf8 \ No newline at end of file diff --git a/static/bootstrap5/bootstrap.min.css b/static/bootstrap5/bootstrap.min.css deleted file mode 100644 index 3993414..0000000 --- a/static/bootstrap5/bootstrap.min.css +++ /dev/null @@ -1,6 +0,0 @@ -@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,[data-bs-theme=light]{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-primary-text-emphasis:#052c65;--bs-secondary-text-emphasis:#2b2f32;--bs-success-text-emphasis:#0a3622;--bs-info-text-emphasis:#055160;--bs-warning-text-emphasis:#664d03;--bs-danger-text-emphasis:#58151c;--bs-light-text-emphasis:#495057;--bs-dark-text-emphasis:#495057;--bs-primary-bg-subtle:#cfe2ff;--bs-secondary-bg-subtle:#e2e3e5;--bs-success-bg-subtle:#d1e7dd;--bs-info-bg-subtle:#cff4fc;--bs-warning-bg-subtle:#fff3cd;--bs-danger-bg-subtle:#f8d7da;--bs-light-bg-subtle:#fcfcfd;--bs-dark-bg-subtle:#ced4da;--bs-primary-border-subtle:#9ec5fe;--bs-secondary-border-subtle:#c4c8cb;--bs-success-border-subtle:#a3cfbb;--bs-info-border-subtle:#9eeaf9;--bs-warning-border-subtle:#ffe69c;--bs-danger-border-subtle:#f1aeb5;--bs-light-border-subtle:#e9ecef;--bs-dark-border-subtle:#adb5bd;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--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-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--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-emphasis-color-rgb:0,0,0;--bs-secondary-color:rgba(33, 37, 41, 0.75);--bs-secondary-color-rgb:33,37,41;--bs-secondary-bg:#e9ecef;--bs-secondary-bg-rgb:233,236,239;--bs-tertiary-color:rgba(33, 37, 41, 0.5);--bs-tertiary-color-rgb:33,37,41;--bs-tertiary-bg:#f8f9fa;--bs-tertiary-bg-rgb:248,249,250;--bs-heading-color:inherit;--bs-link-color:#0d6efd;--bs-link-color-rgb:13,110,253;--bs-link-decoration:underline;--bs-link-hover-color:#0a58ca;--bs-link-hover-color-rgb:10,88,202;--bs-code-color:#d63384;--bs-highlight-color:#212529;--bs-highlight-bg:#fff3cd;--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-border-radius-xl:1rem;--bs-border-radius-xxl:2rem;--bs-border-radius-2xl:var(--bs-border-radius-xxl);--bs-border-radius-pill:50rem;--bs-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-box-shadow-sm:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-box-shadow-lg:0 1rem 3rem rgba(0, 0, 0, 0.175);--bs-box-shadow-inset:inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-focus-ring-width:0.25rem;--bs-focus-ring-opacity:0.25;--bs-focus-ring-color:rgba(13, 110, 253, 0.25);--bs-form-valid-color:#198754;--bs-form-valid-border-color:#198754;--bs-form-invalid-color:#dc3545;--bs-form-invalid-border-color:#dc3545}[data-bs-theme=dark]{color-scheme:dark;--bs-body-color:#dee2e6;--bs-body-color-rgb:222,226,230;--bs-body-bg:#212529;--bs-body-bg-rgb:33,37,41;--bs-emphasis-color:#fff;--bs-emphasis-color-rgb:255,255,255;--bs-secondary-color:rgba(222, 226, 230, 0.75);--bs-secondary-color-rgb:222,226,230;--bs-secondary-bg:#343a40;--bs-secondary-bg-rgb:52,58,64;--bs-tertiary-color:rgba(222, 226, 230, 0.5);--bs-tertiary-color-rgb:222,226,230;--bs-tertiary-bg:#2b3035;--bs-tertiary-bg-rgb:43,48,53;--bs-primary-text-emphasis:#6ea8fe;--bs-secondary-text-emphasis:#a7acb1;--bs-success-text-emphasis:#75b798;--bs-info-text-emphasis:#6edff6;--bs-warning-text-emphasis:#ffda6a;--bs-danger-text-emphasis:#ea868f;--bs-light-text-emphasis:#f8f9fa;--bs-dark-text-emphasis:#dee2e6;--bs-primary-bg-subtle:#031633;--bs-secondary-bg-subtle:#161719;--bs-success-bg-subtle:#051b11;--bs-info-bg-subtle:#032830;--bs-warning-bg-subtle:#332701;--bs-danger-bg-subtle:#2c0b0e;--bs-light-bg-subtle:#343a40;--bs-dark-bg-subtle:#1a1d20;--bs-primary-border-subtle:#084298;--bs-secondary-border-subtle:#41464b;--bs-success-border-subtle:#0f5132;--bs-info-border-subtle:#087990;--bs-warning-border-subtle:#997404;--bs-danger-border-subtle:#842029;--bs-light-border-subtle:#495057;--bs-dark-border-subtle:#343a40;--bs-heading-color:inherit;--bs-link-color:#6ea8fe;--bs-link-hover-color:#8bb9fe;--bs-link-color-rgb:110,168,254;--bs-link-hover-color-rgb:139,185,254;--bs-code-color:#e685b5;--bs-highlight-color:#dee2e6;--bs-highlight-bg:#664d03;--bs-border-color:#495057;--bs-border-color-translucent:rgba(255, 255, 255, 0.15);--bs-form-valid-color:#75b798;--bs-form-valid-border-color:#75b798;--bs-form-invalid-color:#ea868f;--bs-form-invalid-border-color:#ea868f}*,::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}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}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}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.1875em;color:var(--bs-highlight-color);background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}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,samp{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,svg{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,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[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],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-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}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:var(--bs-body-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:var(--bs-secondary-color)}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--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,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}:root{--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:992px;--bs-breakpoint-xl:1200px;--bs-breakpoint-xxl:1400px}.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-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.66666667%}.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%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.66666667%}.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%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.66666667%}.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%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.66666667%}.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%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.66666667%}.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%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.66666667%}.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%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.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;--bs-table-striped-color:var(--bs-emphasis-color);--bs-table-striped-bg:rgba(var(--bs-emphasis-color-rgb), 0.05);--bs-table-active-color:var(--bs-emphasis-color);--bs-table-active-bg:rgba(var(--bs-emphasis-color-rgb), 0.1);--bs-table-hover-color:var(--bs-emphasis-color);--bs-table-hover-bg:rgba(var(--bs-emphasis-color-rgb), 0.075);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}.table-group-divider{border-top:calc(var(--bs-border-width) * 2) solid currentcolor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:var(--bs-border-width) 0}.table-bordered>:not(caption)>*>*{border-width:0 var(--bs-border-width)}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-color-type:var(--bs-table-striped-color);--bs-table-bg-type:var(--bs-table-striped-bg)}.table-striped-columns>:not(caption)>tr>:nth-child(2n){--bs-table-color-type:var(--bs-table-striped-color);--bs-table-bg-type:var(--bs-table-striped-bg)}.table-active{--bs-table-color-state:var(--bs-table-active-color);--bs-table-bg-state:var(--bs-table-active-bg)}.table-hover>tbody>tr:hover>*{--bs-table-color-state:var(--bs-table-hover-color);--bs-table-bg-state:var(--bs-table-hover-bg)}.table-primary{--bs-table-color:#000;--bs-table-bg:#cfe2ff;--bs-table-border-color:#a6b5cc;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color:#000;--bs-table-bg:#e2e3e5;--bs-table-border-color:#b5b6b7;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color:#000;--bs-table-bg:#d1e7dd;--bs-table-border-color:#a7b9b1;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color:#000;--bs-table-bg:#cff4fc;--bs-table-border-color:#a6c3ca;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color:#000;--bs-table-bg:#fff3cd;--bs-table-border-color:#ccc2a4;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color:#000;--bs-table-bg:#f8d7da;--bs-table-border-color:#c6acae;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color:#000;--bs-table-bg:#f8f9fa;--bs-table-border-color:#c6c7c8;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color:#fff;--bs-table-bg:#212529;--bs-table-border-color:#4d5154;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.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-text{margin-top:.25rem;font-size:.875em;color:var(--bs-secondary-color)}.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)}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:var(--bs-body-color);background-color:transparent;border:solid transparent;border-width:var(--bs-border-width) 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2));padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + calc(var(--bs-border-width) * 2))}textarea.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}textarea.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.form-control-color{width:3rem;height:calc(1.5em + .75rem + calc(var(--bs-border-width) * 2));padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0!important;border-radius:var(--bs-border-radius)}.form-control-color::-webkit-color-swatch{border:0!important;border-radius:var(--bs-border-radius)}.form-control-color.form-control-sm{height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.form-select{--bs-form-select-bg-img:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");display:block;width:100%;padding:.375rem 2.25rem .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-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon,none);background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;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-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:var(--bs-secondary-bg)}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--bs-body-color)}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}[data-bs-theme=dark] .form-select{--bs-form-select-bg-img:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-reverse{padding-right:1.5em;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:-1.5em;margin-left:0}.form-check-input{--bs-form-check-bg:var(--bs-body-bg);flex-shrink:0;width:1em;height:1em;margin-top:.25em;vertical-align:top;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:var(--bs-border-width) solid var(--bs-border-color);-webkit-print-color-adjust:exact;color-adjust:exact;print-color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{--bs-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{--bs-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;--bs-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{cursor:default;opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");width:2em;margin-left:-2.5em;background-image:var(--bs-form-switch-bg);background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e")}.form-range{width:100%;height:1.5rem;padding:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;-webkit-appearance:none;appearance:none;background-color:#0d6efd;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:var(--bs-secondary-bg);border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;-moz-appearance:none;appearance:none;background-color:#0d6efd;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:var(--bs-secondary-bg);border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:var(--bs-secondary-color)}.form-range:disabled::-moz-range-thumb{background-color:var(--bs-secondary-color)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(var(--bs-border-width) * 2));min-height:calc(3.5rem + calc(var(--bs-border-width) * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;z-index:2;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:var(--bs-border-width) solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control-plaintext::-moz-placeholder,.form-floating>.form-control::-moz-placeholder{color:transparent}.form-floating>.form-control-plaintext::placeholder,.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control-plaintext:not(:-moz-placeholder-shown),.form-floating>.form-control:not(:-moz-placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:-webkit-autofill,.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-moz-placeholder-shown)~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control-plaintext~label,.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:not(:-moz-placeholder-shown)~label::after{position:absolute;inset:1rem 0.375rem;z-index:-1;height:1.5em;content:"";background-color:var(--bs-body-bg);border-radius:var(--bs-border-radius)}.form-floating>.form-control-plaintext~label::after,.form-floating>.form-control:focus~label::after,.form-floating>.form-control:not(:placeholder-shown)~label::after,.form-floating>.form-select~label::after{position:absolute;inset:1rem 0.375rem;z-index:-1;height:1.5em;content:"";background-color:var(--bs-body-bg);border-radius:var(--bs-border-radius)}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control-plaintext~label{border-width:var(--bs-border-width) 0}.form-floating>.form-control:disabled~label,.form-floating>:disabled~label{color:#6c757d}.form-floating>.form-control:disabled~label::after,.form-floating>:disabled~label::after{background-color:var(--bs-secondary-bg)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-floating,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-floating:focus-within,.input-group>.form-select:focus{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);text-align:center;white-space:nowrap;background-color:var(--bs-tertiary-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius)}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select,.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select,.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(var(--bs-border-width) * -1);border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--bs-form-valid-color)}.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-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:var(--bs-form-valid-border-color);padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:var(--bs-form-valid-border-color)}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{--bs-form-select-bg-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.form-control-color.is-valid,.was-validated .form-control-color:valid{width:calc(3rem + calc(1.5em + .75rem))}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:var(--bs-form-valid-border-color)}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:var(--bs-form-valid-color)}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:var(--bs-form-valid-color)}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-valid,.input-group>.form-floating:not(:focus-within).is-valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-control:not(:focus):valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.was-validated .input-group>.form-select:not(:focus):valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--bs-form-invalid-color)}.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-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:var(--bs-form-invalid-border-color);padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:var(--bs-form-invalid-border-color)}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{--bs-form-select-bg-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.form-control-color.is-invalid,.was-validated .form-control-color:invalid{width:calc(3rem + calc(1.5em + .75rem))}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:var(--bs-form-invalid-border-color)}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:var(--bs-form-invalid-color)}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:var(--bs-form-invalid-color)}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-invalid,.input-group>.form-floating:not(:focus-within).is-invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-control:not(:focus):invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.was-validated .input-group>.form-select:not(:focus):invalid{z-index:4}.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-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.15),0 1px 1px rgba(0, 0, 0, 0.075);--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-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-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-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,.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-check:checked+.btn:focus-visible,.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-check:checked:focus-visible+.btn{box-shadow:var(--bs-btn-focus-box-shadow)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{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-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#0d6efd;--bs-btn-disabled-border-color:#0d6efd}.btn-secondary{--bs-btn-color:#fff;--bs-btn-bg:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#5c636a;--bs-btn-hover-border-color:#565e64;--bs-btn-focus-shadow-rgb:130,138,145;--bs-btn-active-color:#fff;--bs-btn-active-bg:#565e64;--bs-btn-active-border-color:#51585e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#6c757d;--bs-btn-disabled-border-color:#6c757d}.btn-success{--bs-btn-color:#fff;--bs-btn-bg:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#157347;--bs-btn-hover-border-color:#146c43;--bs-btn-focus-shadow-rgb:60,153,110;--bs-btn-active-color:#fff;--bs-btn-active-bg:#146c43;--bs-btn-active-border-color:#13653f;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#198754;--bs-btn-disabled-border-color:#198754}.btn-info{--bs-btn-color:#000;--bs-btn-bg:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#31d2f2;--bs-btn-hover-border-color:#25cff2;--bs-btn-focus-shadow-rgb:11,172,204;--bs-btn-active-color:#000;--bs-btn-active-bg:#3dd5f3;--bs-btn-active-border-color:#25cff2;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#0dcaf0;--bs-btn-disabled-border-color:#0dcaf0}.btn-warning{--bs-btn-color:#000;--bs-btn-bg:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffca2c;--bs-btn-hover-border-color:#ffc720;--bs-btn-focus-shadow-rgb:217,164,6;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffcd39;--bs-btn-active-border-color:#ffc720;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#ffc107;--bs-btn-disabled-border-color:#ffc107}.btn-danger{--bs-btn-color:#fff;--bs-btn-bg:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#bb2d3b;--bs-btn-hover-border-color:#b02a37;--bs-btn-focus-shadow-rgb:225,83,97;--bs-btn-active-color:#fff;--bs-btn-active-bg:#b02a37;--bs-btn-active-border-color:#a52834;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#dc3545;--bs-btn-disabled-border-color:#dc3545}.btn-light{--bs-btn-color:#000;--bs-btn-bg:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#d3d4d5;--bs-btn-hover-border-color:#c6c7c8;--bs-btn-focus-shadow-rgb:211,212,213;--bs-btn-active-color:#000;--bs-btn-active-bg:#c6c7c8;--bs-btn-active-border-color:#babbbc;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#f8f9fa;--bs-btn-disabled-border-color:#f8f9fa}.btn-dark{--bs-btn-color:#fff;--bs-btn-bg:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#424649;--bs-btn-hover-border-color:#373b3e;--bs-btn-focus-shadow-rgb:66,70,73;--bs-btn-active-color:#fff;--bs-btn-active-bg:#4d5154;--bs-btn-active-border-color:#373b3e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#212529;--bs-btn-disabled-border-color:#212529}.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-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#0d6efd;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0d6efd;--bs-gradient:none}.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-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#6c757d;--bs-gradient:none}.btn-outline-success{--bs-btn-color:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#198754;--bs-btn-hover-border-color:#198754;--bs-btn-focus-shadow-rgb:25,135,84;--bs-btn-active-color:#fff;--bs-btn-active-bg:#198754;--bs-btn-active-border-color:#198754;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#198754;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#198754;--bs-gradient:none}.btn-outline-info{--bs-btn-color:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#0dcaf0;--bs-btn-hover-border-color:#0dcaf0;--bs-btn-focus-shadow-rgb:13,202,240;--bs-btn-active-color:#000;--bs-btn-active-bg:#0dcaf0;--bs-btn-active-border-color:#0dcaf0;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#0dcaf0;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0dcaf0;--bs-gradient:none}.btn-outline-warning{--bs-btn-color:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffc107;--bs-btn-hover-border-color:#ffc107;--bs-btn-focus-shadow-rgb:255,193,7;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffc107;--bs-btn-active-border-color:#ffc107;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#ffc107;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#ffc107;--bs-gradient:none}.btn-outline-danger{--bs-btn-color:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#dc3545;--bs-btn-hover-border-color:#dc3545;--bs-btn-focus-shadow-rgb:220,53,69;--bs-btn-active-color:#fff;--bs-btn-active-bg:#dc3545;--bs-btn-active-border-color:#dc3545;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#dc3545;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#dc3545;--bs-gradient:none}.btn-outline-light{--bs-btn-color:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#f8f9fa;--bs-btn-hover-border-color:#f8f9fa;--bs-btn-focus-shadow-rgb:248,249,250;--bs-btn-active-color:#000;--bs-btn-active-bg:#f8f9fa;--bs-btn-active-border-color:#f8f9fa;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#f8f9fa;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#f8f9fa;--bs-gradient:none}.btn-outline-dark{--bs-btn-color:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#212529;--bs-btn-hover-border-color:#212529;--bs-btn-focus-shadow-rgb:33,37,41;--bs-btn-active-color:#fff;--bs-btn-active-bg:#212529;--bs-btn-active-border-color:#212529;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#212529;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#212529;--bs-gradient:none}.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-box-shadow:0 0 0 #000;--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-group-lg>.btn,.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-group-sm>.btn,.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)}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.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}}.dropdown,.dropdown-center,.dropend,.dropstart,.dropup,.dropup-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex:1000;--bs-dropdown-min-width:10rem;--bs-dropdown-padding-x:0;--bs-dropdown-padding-y:0.5rem;--bs-dropdown-spacer:0.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color:var(--bs-body-color);--bs-dropdown-bg:var(--bs-body-bg);--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-border-radius:var(--bs-border-radius);--bs-dropdown-border-width:var(--bs-border-width);--bs-dropdown-inner-border-radius:calc(var(--bs-border-radius) - var(--bs-border-width));--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y:0.5rem;--bs-dropdown-box-shadow:var(--bs-box-shadow);--bs-dropdown-link-color:var(--bs-body-color);--bs-dropdown-link-hover-color:var(--bs-body-color);--bs-dropdown-link-hover-bg:var(--bs-tertiary-bg);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:var(--bs-tertiary-color);--bs-dropdown-item-padding-x:1rem;--bs-dropdown-item-padding-y:0.25rem;--bs-dropdown-header-color:#6c757d;--bs-dropdown-header-padding-x:1rem;--bs-dropdown-header-padding-y:0.5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0;border-radius:var(--bs-dropdown-item-border-radius,0)}.dropdown-item:focus,.dropdown-item:hover{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color:#dee2e6;--bs-dropdown-bg:#343a40;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color:#dee2e6;--bs-dropdown-link-hover-color:#fff;--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg:rgba(255, 255, 255, 0.15);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:#adb5bd;--bs-dropdown-header-color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:var(--bs-border-radius)}.btn-group>.btn-group:not(:first-child),.btn-group>:not(.btn-check:first-child)+.btn{margin-left:calc(var(--bs-border-width) * -1)}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:calc(var(--bs-border-width) * -1)}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.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}.nav-tabs{--bs-nav-tabs-border-width:var(--bs-border-width);--bs-nav-tabs-border-color:var(--bs-border-color);--bs-nav-tabs-border-radius:var(--bs-border-radius);--bs-nav-tabs-link-hover-border-color:var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);--bs-nav-tabs-link-active-color:var(--bs-emphasis-color);--bs-nav-tabs-link-active-bg:var(--bs-body-bg);--bs-nav-tabs-link-active-border-color:var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1 * var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius:var(--bs-border-radius);--bs-nav-pills-link-active-color:#fff;--bs-nav-pills-link-active-bg:#0d6efd}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-underline{--bs-nav-underline-gap:1rem;--bs-nav-underline-border-width:0.125rem;--bs-nav-underline-link-active-color:var(--bs-emphasis-color);gap:var(--bs-nav-underline-gap)}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid transparent}.nav-underline .nav-link:focus,.nav-underline .nav-link:hover{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x:0;--bs-navbar-padding-y:0.5rem;--bs-navbar-color:rgba(var(--bs-emphasis-color-rgb), 0.65);--bs-navbar-hover-color:rgba(var(--bs-emphasis-color-rgb), 0.8);--bs-navbar-disabled-color:rgba(var(--bs-emphasis-color-rgb), 0.3);--bs-navbar-active-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-padding-y:0.3125rem;--bs-navbar-brand-margin-end:1rem;--bs-navbar-brand-font-size:1.25rem;--bs-navbar-brand-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-hover-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-nav-link-padding-x:0.5rem;--bs-navbar-toggler-padding-y:0.25rem;--bs-navbar-toggler-padding-x:0.75rem;--bs-navbar-toggler-font-size:1.25rem;--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 37, 41, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color:rgba(var(--bs-emphasis-color-rgb), 0.15);--bs-navbar-toggler-border-radius:var(--bs-border-radius);--bs-navbar-toggler-focus-width:0.25rem;--bs-navbar-toggler-transition:box-shadow 0.15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x:0;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-navbar-color);--bs-nav-link-hover-color:var(--bs-navbar-hover-color);--bs-nav-link-disabled-color:var(--bs-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:focus,.navbar-text a:hover{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme=dark]{--bs-navbar-color:rgba(255, 255, 255, 0.55);--bs-navbar-hover-color:rgba(255, 255, 255, 0.75);--bs-navbar-disabled-color:rgba(255, 255, 255, 0.25);--bs-navbar-active-color:#fff;--bs-navbar-brand-color:#fff;--bs-navbar-brand-hover-color:#fff;--bs-navbar-toggler-border-color:rgba(255, 255, 255, 0.1);--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}[data-bs-theme=dark] .navbar-toggler-icon{--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y:1rem;--bs-card-spacer-x:1rem;--bs-card-title-spacer-y:0.5rem;--bs-card-title-color: ;--bs-card-subtitle-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-box-shadow: ;--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);--bs-card-img-overlay-padding:1rem;--bs-card-group-margin:0.75rem;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,.card>.list-group+.card-footer{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-subtitle{margin-top:calc(-.5 * var(--bs-card-title-spacer-y));margin-bottom:0;color:var(--bs-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.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}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-bottom:calc(-1 * var(--bs-card-cap-padding-y));margin-left:calc(-.5 * var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-left:calc(-.5 * var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion{--bs-accordion-color:var(--bs-body-color);--bs-accordion-bg:var(--bs-body-bg);--bs-accordion-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,border-radius 0.15s ease;--bs-accordion-border-color:var(--bs-border-color);--bs-accordion-border-width:var(--bs-border-width);--bs-accordion-border-radius:var(--bs-border-radius);--bs-accordion-inner-border-radius:calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-accordion-btn-padding-x:1.25rem;--bs-accordion-btn-padding-y:1rem;--bs-accordion-btn-color:var(--bs-body-color);--bs-accordion-btn-bg:var(--bs-accordion-bg);--bs-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23212529' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M2 5L8 11L14 5'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width:1.25rem;--bs-accordion-btn-icon-transform:rotate(-180deg);--bs-accordion-btn-icon-transition:transform 0.2s ease-in-out;--bs-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23052c65' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M2 5L8 11L14 5'/%3e%3c/svg%3e");--bs-accordion-btn-focus-box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-accordion-body-padding-x:1.25rem;--bs-accordion-body-padding-y:1rem;--bs-accordion-active-color:var(--bs-primary-text-emphasis);--bs-accordion-active-bg:var(--bs-primary-bg-subtle)}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed)::after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button::after{flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media (prefers-reduced-motion:reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type>.accordion-header .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type>.accordion-header .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type>.accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush>.accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush>.accordion-item:first-child{border-top:0}.accordion-flush>.accordion-item:last-child{border-bottom:0}.accordion-flush>.accordion-item>.accordion-header .accordion-button,.accordion-flush>.accordion-item>.accordion-header .accordion-button.collapsed{border-radius:0}.accordion-flush>.accordion-item>.accordion-collapse{border-radius:0}[data-bs-theme=dark] .accordion-button::after{--bs-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.breadcrumb{--bs-breadcrumb-padding-x:0;--bs-breadcrumb-padding-y:0;--bs-breadcrumb-margin-bottom:1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color:var(--bs-secondary-color);--bs-breadcrumb-item-padding-x:0.5rem;--bs-breadcrumb-item-active-color:var(--bs-secondary-color);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)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.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)}.pagination-lg{--bs-pagination-padding-x:1.5rem;--bs-pagination-padding-y:0.75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius:var(--bs-border-radius-lg)}.pagination-sm{--bs-pagination-padding-x:0.5rem;--bs-pagination-padding-y:0.25rem;--bs-pagination-font-size:0.875rem;--bs-pagination-border-radius:var(--bs-border-radius-sm)}.badge{--bs-badge-padding-x:0.65em;--bs-badge-padding-y:0.35em;--bs-badge-font-size:0.75em;--bs-badge-font-weight:700;--bs-badge-color:#fff;--bs-badge-border-radius:var(--bs-border-radius);display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.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);--bs-alert-link-color:inherit;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)}.alert-heading{color:inherit}.alert-link{font-weight:700;color:var(--bs-alert-link-color)}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{--bs-alert-color:var(--bs-primary-text-emphasis);--bs-alert-bg:var(--bs-primary-bg-subtle);--bs-alert-border-color:var(--bs-primary-border-subtle);--bs-alert-link-color:var(--bs-primary-text-emphasis)}.alert-secondary{--bs-alert-color:var(--bs-secondary-text-emphasis);--bs-alert-bg:var(--bs-secondary-bg-subtle);--bs-alert-border-color:var(--bs-secondary-border-subtle);--bs-alert-link-color:var(--bs-secondary-text-emphasis)}.alert-success{--bs-alert-color:var(--bs-success-text-emphasis);--bs-alert-bg:var(--bs-success-bg-subtle);--bs-alert-border-color:var(--bs-success-border-subtle);--bs-alert-link-color:var(--bs-success-text-emphasis)}.alert-info{--bs-alert-color:var(--bs-info-text-emphasis);--bs-alert-bg:var(--bs-info-bg-subtle);--bs-alert-border-color:var(--bs-info-border-subtle);--bs-alert-link-color:var(--bs-info-text-emphasis)}.alert-warning{--bs-alert-color:var(--bs-warning-text-emphasis);--bs-alert-bg:var(--bs-warning-bg-subtle);--bs-alert-border-color:var(--bs-warning-border-subtle);--bs-alert-link-color:var(--bs-warning-text-emphasis)}.alert-danger{--bs-alert-color:var(--bs-danger-text-emphasis);--bs-alert-bg:var(--bs-danger-bg-subtle);--bs-alert-border-color:var(--bs-danger-border-subtle);--bs-alert-link-color:var(--bs-danger-text-emphasis)}.alert-light{--bs-alert-color:var(--bs-light-text-emphasis);--bs-alert-bg:var(--bs-light-bg-subtle);--bs-alert-border-color:var(--bs-light-border-subtle);--bs-alert-link-color:var(--bs-light-text-emphasis)}.alert-dark{--bs-alert-color:var(--bs-dark-text-emphasis);--bs-alert-bg:var(--bs-dark-bg-subtle);--bs-alert-border-color:var(--bs-dark-border-subtle);--bs-alert-link-color:var(--bs-dark-text-emphasis)}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress,.progress-stacked{--bs-progress-height:1rem;--bs-progress-font-size:0.75rem;--bs-progress-bg:var(--bs-secondary-bg);--bs-progress-border-radius:var(--bs-border-radius);--bs-progress-box-shadow:var(--bs-box-shadow-inset);--bs-progress-bar-color:#fff;--bs-progress-bar-bg:#0d6efd;--bs-progress-bar-transition:width 0.6s ease;display:flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{animation:none}}.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-action-color:var(--bs-secondary-color);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-tertiary-bg);--bs-list-group-action-active-color:var(--bs-body-color);--bs-list-group-action-active-bg:var(--bs-secondary-bg);--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-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.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)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{--bs-list-group-color:var(--bs-primary-text-emphasis);--bs-list-group-bg:var(--bs-primary-bg-subtle);--bs-list-group-border-color:var(--bs-primary-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-primary-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-primary-border-subtle);--bs-list-group-active-color:var(--bs-primary-bg-subtle);--bs-list-group-active-bg:var(--bs-primary-text-emphasis);--bs-list-group-active-border-color:var(--bs-primary-text-emphasis)}.list-group-item-secondary{--bs-list-group-color:var(--bs-secondary-text-emphasis);--bs-list-group-bg:var(--bs-secondary-bg-subtle);--bs-list-group-border-color:var(--bs-secondary-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-secondary-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-secondary-border-subtle);--bs-list-group-active-color:var(--bs-secondary-bg-subtle);--bs-list-group-active-bg:var(--bs-secondary-text-emphasis);--bs-list-group-active-border-color:var(--bs-secondary-text-emphasis)}.list-group-item-success{--bs-list-group-color:var(--bs-success-text-emphasis);--bs-list-group-bg:var(--bs-success-bg-subtle);--bs-list-group-border-color:var(--bs-success-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-success-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-success-border-subtle);--bs-list-group-active-color:var(--bs-success-bg-subtle);--bs-list-group-active-bg:var(--bs-success-text-emphasis);--bs-list-group-active-border-color:var(--bs-success-text-emphasis)}.list-group-item-info{--bs-list-group-color:var(--bs-info-text-emphasis);--bs-list-group-bg:var(--bs-info-bg-subtle);--bs-list-group-border-color:var(--bs-info-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-info-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-info-border-subtle);--bs-list-group-active-color:var(--bs-info-bg-subtle);--bs-list-group-active-bg:var(--bs-info-text-emphasis);--bs-list-group-active-border-color:var(--bs-info-text-emphasis)}.list-group-item-warning{--bs-list-group-color:var(--bs-warning-text-emphasis);--bs-list-group-bg:var(--bs-warning-bg-subtle);--bs-list-group-border-color:var(--bs-warning-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-warning-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-warning-border-subtle);--bs-list-group-active-color:var(--bs-warning-bg-subtle);--bs-list-group-active-bg:var(--bs-warning-text-emphasis);--bs-list-group-active-border-color:var(--bs-warning-text-emphasis)}.list-group-item-danger{--bs-list-group-color:var(--bs-danger-text-emphasis);--bs-list-group-bg:var(--bs-danger-bg-subtle);--bs-list-group-border-color:var(--bs-danger-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-danger-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-danger-border-subtle);--bs-list-group-active-color:var(--bs-danger-bg-subtle);--bs-list-group-active-bg:var(--bs-danger-text-emphasis);--bs-list-group-active-border-color:var(--bs-danger-text-emphasis)}.list-group-item-light{--bs-list-group-color:var(--bs-light-text-emphasis);--bs-list-group-bg:var(--bs-light-bg-subtle);--bs-list-group-border-color:var(--bs-light-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-light-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-light-border-subtle);--bs-list-group-active-color:var(--bs-light-bg-subtle);--bs-list-group-active-bg:var(--bs-light-text-emphasis);--bs-list-group-active-border-color:var(--bs-light-text-emphasis)}.list-group-item-dark{--bs-list-group-color:var(--bs-dark-text-emphasis);--bs-list-group-bg:var(--bs-dark-bg-subtle);--bs-list-group-border-color:var(--bs-dark-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-dark-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-dark-border-subtle);--bs-list-group-active-color:var(--bs-dark-bg-subtle);--bs-list-group-active-bg:var(--bs-dark-text-emphasis);--bs-list-group-active-border-color:var(--bs-dark-text-emphasis)}.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;--bs-btn-close-white-filter:invert(1) grayscale(100%) brightness(200%);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)}.btn-close-white{filter:var(--bs-btn-close-white-filter)}[data-bs-theme=dark] .btn-close{filter:var(--bs-btn-close-white-filter)}.toast{--bs-toast-zindex:1090;--bs-toast-padding-x:0.75rem;--bs-toast-padding-y:0.5rem;--bs-toast-spacing:1.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.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex:1090;position:absolute;z-index:var(--bs-toast-zindex);width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.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}.modal{--bs-modal-zindex:1055;--bs-modal-width:500px;--bs-modal-padding:1rem;--bs-modal-margin:0.5rem;--bs-modal-color: ;--bs-modal-bg:var(--bs-body-bg);--bs-modal-border-color:var(--bs-border-color-translucent);--bs-modal-border-width:var(--bs-border-width);--bs-modal-border-radius:var(--bs-border-radius-lg);--bs-modal-box-shadow:var(--bs-box-shadow-sm);--bs-modal-inner-border-radius:calc(var(--bs-border-radius-lg) - (var(--bs-border-width)));--bs-modal-header-padding-x:1rem;--bs-modal-header-padding-y:1rem;--bs-modal-header-padding:1rem 1rem;--bs-modal-header-border-color:var(--bs-border-color);--bs-modal-header-border-width:var(--bs-border-width);--bs-modal-title-line-height:1.5;--bs-modal-footer-gap:0.5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color:var(--bs-border-color);--bs-modal-footer-border-width:var(--bs-border-width);position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin) * 2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - var(--bs-modal-margin) * 2)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-backdrop{--bs-backdrop-zindex:1050;--bs-backdrop-bg:#000;--bs-backdrop-opacity:0.5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;flex-shrink:0;align-items:center;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y) * .5) calc(var(--bs-modal-header-padding-x) * .5);margin:calc(-.5 * var(--bs-modal-header-padding-y)) calc(-.5 * var(--bs-modal-header-padding-x)) calc(-.5 * var(--bs-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * .5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap) * .5)}@media (min-width:576px){.modal{--bs-modal-margin:1.75rem;--bs-modal-box-shadow:var(--bs-box-shadow)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{--bs-modal-width:800px}}@media (min-width:1200px){.modal-xl{--bs-modal-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-footer,.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-footer,.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-footer,.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-footer,.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-footer,.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-footer,.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.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)}.popover{--bs-popover-zindex:1070;--bs-popover-max-width:276px;--bs-popover-font-size:0.875rem;--bs-popover-bg:var(--bs-body-bg);--bs-popover-border-width:var(--bs-border-width);--bs-popover-border-color:var(--bs-border-color-translucent);--bs-popover-border-radius:var(--bs-border-radius-lg);--bs-popover-inner-border-radius:calc(var(--bs-border-radius-lg) - var(--bs-border-width));--bs-popover-box-shadow:var(--bs-box-shadow);--bs-popover-header-padding-x:1rem;--bs-popover-header-padding-y:0.5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color:inherit;--bs-popover-header-bg:var(--bs-secondary-bg);--bs-popover-body-padding-x:1rem;--bs-popover-body-padding-y:1rem;--bs-popover-body-color:var(--bs-body-color);--bs-popover-arrow-width:1rem;--bs-popover-arrow-height:0.5rem;--bs-popover-arrow-border:var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);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-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow::after,.popover .popover-arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid;border-width:0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::after,.bs-popover-top>.popover-arrow::before{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-top>.popover-arrow::after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::after,.bs-popover-end>.popover-arrow::before{border-width:calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-end>.popover-arrow::after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::before{border-width:0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-.5 * var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::after,.bs-popover-start>.popover-arrow::before{border-width:calc(var(--bs-popover-arrow-width) * .5) 0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-start>.popover-arrow::after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translateX(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}[data-bs-theme=dark] .carousel .carousel-control-next-icon,[data-bs-theme=dark] .carousel .carousel-control-prev-icon,[data-bs-theme=dark].carousel .carousel-control-next-icon,[data-bs-theme=dark].carousel .carousel-control-prev-icon{filter:invert(1) grayscale(100)}[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target],[data-bs-theme=dark].carousel .carousel-indicators [data-bs-target]{background-color:#000}[data-bs-theme=dark] .carousel .carousel-caption,[data-bs-theme=dark].carousel .carousel-caption{color:#000}.spinner-border,.spinner-grow{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-0.125em;--bs-spinner-border-width:0.25em;--bs-spinner-animation-speed:0.75s;--bs-spinner-animation-name:spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:transparent}.spinner-border-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem;--bs-spinner-border-width:0.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-0.125em;--bs-spinner-animation-speed:0.75s;--bs-spinner-animation-name:spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed:1.5s}}.offcanvas,.offcanvas-lg,.offcanvas-md,.offcanvas-sm,.offcanvas-xl,.offcanvas-xxl{--bs-offcanvas-zindex:1045;--bs-offcanvas-width:400px;--bs-offcanvas-height:30vh;--bs-offcanvas-padding-x:1rem;--bs-offcanvas-padding-y:1rem;--bs-offcanvas-color:var(--bs-body-color);--bs-offcanvas-bg:var(--bs-body-bg);--bs-offcanvas-border-width:var(--bs-border-width);--bs-offcanvas-border-color:var(--bs-border-color-translucent);--bs-offcanvas-box-shadow:var(--bs-box-shadow-sm);--bs-offcanvas-transition:transform 0.3s ease-in-out;--bs-offcanvas-title-line-height:1.5}@media (max-width:575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:575.98px) and (prefers-reduced-motion:reduce){.offcanvas-sm{transition:none}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.show:not(.hiding),.offcanvas-sm.showing{transform:none}.offcanvas-sm.hiding,.offcanvas-sm.show,.offcanvas-sm.showing{visibility:visible}}@media (min-width:576px){.offcanvas-sm{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:767.98px) and (prefers-reduced-motion:reduce){.offcanvas-md{transition:none}}@media (max-width:767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.show:not(.hiding),.offcanvas-md.showing{transform:none}.offcanvas-md.hiding,.offcanvas-md.show,.offcanvas-md.showing{visibility:visible}}@media (min-width:768px){.offcanvas-md{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:991.98px) and (prefers-reduced-motion:reduce){.offcanvas-lg{transition:none}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.show:not(.hiding),.offcanvas-lg.showing{transform:none}.offcanvas-lg.hiding,.offcanvas-lg.show,.offcanvas-lg.showing{visibility:visible}}@media (min-width:992px){.offcanvas-lg{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:1199.98px) and (prefers-reduced-motion:reduce){.offcanvas-xl{transition:none}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.show:not(.hiding),.offcanvas-xl.showing{transform:none}.offcanvas-xl.hiding,.offcanvas-xl.show,.offcanvas-xl.showing{visibility:visible}}@media (min-width:1200px){.offcanvas-xl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:1399.98px) and (prefers-reduced-motion:reduce){.offcanvas-xxl{transition:none}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xxl.show:not(.hiding),.offcanvas-xxl.showing{transform:none}.offcanvas-xxl.hiding,.offcanvas-xxl.show,.offcanvas-xxl.showing{visibility:visible}}@media (min-width:1400px){.offcanvas-xxl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.show:not(.hiding),.offcanvas.showing{transform:none}.offcanvas.hiding,.offcanvas.show,.offcanvas.showing{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y) * .5) calc(var(--bs-offcanvas-padding-x) * .5);margin:calc(-.5 * var(--bs-offcanvas-padding-y)) calc(-.5 * var(--bs-offcanvas-padding-x)) calc(-.5 * var(--bs-offcanvas-padding-y)) auto}.offcanvas-title{margin-bottom:0;line-height:var(--bs-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.text-bg-primary{color:#fff!important;background-color:RGBA(var(--bs-primary-rgb),var(--bs-bg-opacity,1))!important}.text-bg-secondary{color:#fff!important;background-color:RGBA(var(--bs-secondary-rgb),var(--bs-bg-opacity,1))!important}.text-bg-success{color:#fff!important;background-color:RGBA(var(--bs-success-rgb),var(--bs-bg-opacity,1))!important}.text-bg-info{color:#000!important;background-color:RGBA(var(--bs-info-rgb),var(--bs-bg-opacity,1))!important}.text-bg-warning{color:#000!important;background-color:RGBA(var(--bs-warning-rgb),var(--bs-bg-opacity,1))!important}.text-bg-danger{color:#fff!important;background-color:RGBA(var(--bs-danger-rgb),var(--bs-bg-opacity,1))!important}.text-bg-light{color:#000!important;background-color:RGBA(var(--bs-light-rgb),var(--bs-bg-opacity,1))!important}.text-bg-dark{color:#fff!important;background-color:RGBA(var(--bs-dark-rgb),var(--bs-bg-opacity,1))!important}.link-primary{color:RGBA(var(--bs-primary-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity,1))!important}.link-primary:focus,.link-primary:hover{color:RGBA(10,88,202,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(10,88,202,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(10,88,202,var(--bs-link-underline-opacity,1))!important}.link-secondary{color:RGBA(var(--bs-secondary-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity,1))!important}.link-secondary:focus,.link-secondary:hover{color:RGBA(86,94,100,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity,1))!important}.link-success{color:RGBA(var(--bs-success-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity,1))!important}.link-success:focus,.link-success:hover{color:RGBA(20,108,67,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity,1))!important}.link-info{color:RGBA(var(--bs-info-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity,1))!important}.link-info:focus,.link-info:hover{color:RGBA(61,213,243,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity,1))!important}.link-warning{color:RGBA(var(--bs-warning-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity,1))!important}.link-warning:focus,.link-warning:hover{color:RGBA(255,205,57,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity,1))!important}.link-danger{color:RGBA(var(--bs-danger-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity,1))!important}.link-danger:focus,.link-danger:hover{color:RGBA(176,42,55,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity,1))!important}.link-light{color:RGBA(var(--bs-light-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity,1))!important}.link-light:focus,.link-light:hover{color:RGBA(249,250,251,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity,1))!important}.link-dark{color:RGBA(var(--bs-dark-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity,1))!important}.link-dark:focus,.link-dark:hover{color:RGBA(26,30,33,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity,1))!important}.link-body-emphasis{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,1))!important}.link-body-emphasis:focus,.link-body-emphasis:hover{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity,.75))!important;-webkit-text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,0.75))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,0.75))!important}.focus-ring:focus{outline:0;box-shadow:var(--bs-focus-ring-x,0) var(--bs-focus-ring-y,0) var(--bs-focus-ring-blur,0) var(--bs-focus-ring-width) var(--bs-focus-ring-color)}.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}.icon-link>.bi{flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:.2s ease-in-out transform}@media (prefers-reduced-motion:reduce){.icon-link>.bi{transition:none}}.icon-link-hover:focus-visible>.bi,.icon-link-hover:hover>.bi{transform:var(--bs-icon-link-transform,translate3d(.25em,0,0))}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:75%}.ratio-16x9{--bs-aspect-ratio:56.25%}.ratio-21x9{--bs-aspect-ratio:42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption),.visually-hidden:not(caption){position:absolute!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:var(--bs-border-width);min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.object-fit-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-none{-o-object-fit:none!important;object-fit:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.overflow-x-auto{overflow-x:auto!important}.overflow-x-hidden{overflow-x:hidden!important}.overflow-x-visible{overflow-x:visible!important}.overflow-x-scroll{overflow-x:scroll!important}.overflow-y-auto{overflow-y:auto!important}.overflow-y-hidden{overflow-y:hidden!important}.overflow-y-visible{overflow-y:visible!important}.overflow-y-scroll{overflow-y:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-inline-grid{display:inline-grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:var(--bs-box-shadow)!important}.shadow-sm{box-shadow:var(--bs-box-shadow-sm)!important}.shadow-lg{box-shadow:var(--bs-box-shadow-lg)!important}.shadow-none{box-shadow:none!important}.focus-ring-primary{--bs-focus-ring-color:rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-secondary{--bs-focus-ring-color:rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-success{--bs-focus-ring-color:rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity))}.focus-ring-info{--bs-focus-ring-color:rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity))}.focus-ring-warning{--bs-focus-ring-color:rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity))}.focus-ring-danger{--bs-focus-ring-color:rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity))}.focus-ring-light{--bs-focus-ring-color:rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity))}.focus-ring-dark{--bs-focus-ring-color:rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity))}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translateX(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-0{border:0!important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-0{border-top:0!important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-start-0{border-left:0!important}.border-primary{--bs-border-opacity:1;border-color:rgba(var(--bs-primary-rgb),var(--bs-border-opacity))!important}.border-secondary{--bs-border-opacity:1;border-color:rgba(var(--bs-secondary-rgb),var(--bs-border-opacity))!important}.border-success{--bs-border-opacity:1;border-color:rgba(var(--bs-success-rgb),var(--bs-border-opacity))!important}.border-info{--bs-border-opacity:1;border-color:rgba(var(--bs-info-rgb),var(--bs-border-opacity))!important}.border-warning{--bs-border-opacity:1;border-color:rgba(var(--bs-warning-rgb),var(--bs-border-opacity))!important}.border-danger{--bs-border-opacity:1;border-color:rgba(var(--bs-danger-rgb),var(--bs-border-opacity))!important}.border-light{--bs-border-opacity:1;border-color:rgba(var(--bs-light-rgb),var(--bs-border-opacity))!important}.border-dark{--bs-border-opacity:1;border-color:rgba(var(--bs-dark-rgb),var(--bs-border-opacity))!important}.border-black{--bs-border-opacity:1;border-color:rgba(var(--bs-black-rgb),var(--bs-border-opacity))!important}.border-white{--bs-border-opacity:1;border-color:rgba(var(--bs-white-rgb),var(--bs-border-opacity))!important}.border-primary-subtle{border-color:var(--bs-primary-border-subtle)!important}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle)!important}.border-success-subtle{border-color:var(--bs-success-border-subtle)!important}.border-info-subtle{border-color:var(--bs-info-border-subtle)!important}.border-warning-subtle{border-color:var(--bs-warning-border-subtle)!important}.border-danger-subtle{border-color:var(--bs-danger-border-subtle)!important}.border-light-subtle{border-color:var(--bs-light-border-subtle)!important}.border-dark-subtle{border-color:var(--bs-dark-border-subtle)!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.border-opacity-10{--bs-border-opacity:0.1}.border-opacity-25{--bs-border-opacity:0.25}.border-opacity-50{--bs-border-opacity:0.5}.border-opacity-75{--bs-border-opacity:0.75}.border-opacity-100{--bs-border-opacity:1}.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}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!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}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!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}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!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-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.row-gap-0{row-gap:0!important}.row-gap-1{row-gap:.25rem!important}.row-gap-2{row-gap:.5rem!important}.row-gap-3{row-gap:1rem!important}.row-gap-4{row-gap:1.5rem!important}.row-gap-5{row-gap:3rem!important}.column-gap-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-lighter{font-weight:lighter!important}.fw-light{font-weight:300!important}.fw-normal{font-weight:400!important}.fw-medium{font-weight:500!important}.fw-semibold{font-weight:600!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(var(--bs-body-color-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:var(--bs-secondary-color)!important}.text-black-50{--bs-text-opacity:1;color:rgba(0,0,0,.5)!important}.text-white-50{--bs-text-opacity:1;color:rgba(255,255,255,.5)!important}.text-body-secondary{--bs-text-opacity:1;color:var(--bs-secondary-color)!important}.text-body-tertiary{--bs-text-opacity:1;color:var(--bs-tertiary-color)!important}.text-body-emphasis{--bs-text-opacity:1;color:var(--bs-emphasis-color)!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.text-opacity-25{--bs-text-opacity:0.25}.text-opacity-50{--bs-text-opacity:0.5}.text-opacity-75{--bs-text-opacity:0.75}.text-opacity-100{--bs-text-opacity:1}.text-primary-emphasis{color:var(--bs-primary-text-emphasis)!important}.text-secondary-emphasis{color:var(--bs-secondary-text-emphasis)!important}.text-success-emphasis{color:var(--bs-success-text-emphasis)!important}.text-info-emphasis{color:var(--bs-info-text-emphasis)!important}.text-warning-emphasis{color:var(--bs-warning-text-emphasis)!important}.text-danger-emphasis{color:var(--bs-danger-text-emphasis)!important}.text-light-emphasis{color:var(--bs-light-text-emphasis)!important}.text-dark-emphasis{color:var(--bs-dark-text-emphasis)!important}.link-opacity-10{--bs-link-opacity:0.1}.link-opacity-10-hover:hover{--bs-link-opacity:0.1}.link-opacity-25{--bs-link-opacity:0.25}.link-opacity-25-hover:hover{--bs-link-opacity:0.25}.link-opacity-50{--bs-link-opacity:0.5}.link-opacity-50-hover:hover{--bs-link-opacity:0.5}.link-opacity-75{--bs-link-opacity:0.75}.link-opacity-75-hover:hover{--bs-link-opacity:0.75}.link-opacity-100{--bs-link-opacity:1}.link-opacity-100-hover:hover{--bs-link-opacity:1}.link-offset-1{text-underline-offset:0.125em!important}.link-offset-1-hover:hover{text-underline-offset:0.125em!important}.link-offset-2{text-underline-offset:0.25em!important}.link-offset-2-hover:hover{text-underline-offset:0.25em!important}.link-offset-3{text-underline-offset:0.375em!important}.link-offset-3-hover:hover{text-underline-offset:0.375em!important}.link-underline-primary{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-secondary{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-success{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important}.link-underline-info{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))!important}.link-underline-warning{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important}.link-underline-danger{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important}.link-underline-light{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important}.link-underline-dark{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important}.link-underline{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity,1))!important}.link-underline-opacity-0{--bs-link-underline-opacity:0}.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity:0}.link-underline-opacity-10{--bs-link-underline-opacity:0.1}.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity:0.1}.link-underline-opacity-25{--bs-link-underline-opacity:0.25}.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity:0.25}.link-underline-opacity-50{--bs-link-underline-opacity:0.5}.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity:0.5}.link-underline-opacity-75{--bs-link-underline-opacity:0.75}.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity:0.75}.link-underline-opacity-100{--bs-link-underline-opacity:1}.link-underline-opacity-100-hover:hover{--bs-link-underline-opacity:1}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(var(--bs-body-bg-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!important}.bg-body-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-bg-rgb),var(--bs-bg-opacity))!important}.bg-body-tertiary{--bs-bg-opacity:1;background-color:rgba(var(--bs-tertiary-bg-rgb),var(--bs-bg-opacity))!important}.bg-opacity-10{--bs-bg-opacity:0.1}.bg-opacity-25{--bs-bg-opacity:0.25}.bg-opacity-50{--bs-bg-opacity:0.5}.bg-opacity-75{--bs-bg-opacity:0.75}.bg-opacity-100{--bs-bg-opacity:1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle)!important}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle)!important}.bg-success-subtle{background-color:var(--bs-success-bg-subtle)!important}.bg-info-subtle{background-color:var(--bs-info-bg-subtle)!important}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle)!important}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle)!important}.bg-light-subtle{background-color:var(--bs-light-bg-subtle)!important}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle)!important}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:var(--bs-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--bs-border-radius-sm)!important}.rounded-2{border-radius:var(--bs-border-radius)!important}.rounded-3{border-radius:var(--bs-border-radius-lg)!important}.rounded-4{border-radius:var(--bs-border-radius-xl)!important}.rounded-5{border-radius:var(--bs-border-radius-xxl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--bs-border-radius-pill)!important}.rounded-top{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-0{border-top-left-radius:0!important;border-top-right-radius:0!important}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm)!important;border-top-right-radius:var(--bs-border-radius-sm)!important}.rounded-top-2{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg)!important;border-top-right-radius:var(--bs-border-radius-lg)!important}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl)!important;border-top-right-radius:var(--bs-border-radius-xl)!important}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-xxl)!important;border-top-right-radius:var(--bs-border-radius-xxl)!important}.rounded-top-circle{border-top-left-radius:50%!important;border-top-right-radius:50%!important}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill)!important;border-top-right-radius:var(--bs-border-radius-pill)!important}.rounded-end{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-end-0{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.rounded-end-1{border-top-right-radius:var(--bs-border-radius-sm)!important;border-bottom-right-radius:var(--bs-border-radius-sm)!important}.rounded-end-2{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-end-3{border-top-right-radius:var(--bs-border-radius-lg)!important;border-bottom-right-radius:var(--bs-border-radius-lg)!important}.rounded-end-4{border-top-right-radius:var(--bs-border-radius-xl)!important;border-bottom-right-radius:var(--bs-border-radius-xl)!important}.rounded-end-5{border-top-right-radius:var(--bs-border-radius-xxl)!important;border-bottom-right-radius:var(--bs-border-radius-xxl)!important}.rounded-end-circle{border-top-right-radius:50%!important;border-bottom-right-radius:50%!important}.rounded-end-pill{border-top-right-radius:var(--bs-border-radius-pill)!important;border-bottom-right-radius:var(--bs-border-radius-pill)!important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-bottom-0{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.rounded-bottom-1{border-bottom-right-radius:var(--bs-border-radius-sm)!important;border-bottom-left-radius:var(--bs-border-radius-sm)!important}.rounded-bottom-2{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-bottom-3{border-bottom-right-radius:var(--bs-border-radius-lg)!important;border-bottom-left-radius:var(--bs-border-radius-lg)!important}.rounded-bottom-4{border-bottom-right-radius:var(--bs-border-radius-xl)!important;border-bottom-left-radius:var(--bs-border-radius-xl)!important}.rounded-bottom-5{border-bottom-right-radius:var(--bs-border-radius-xxl)!important;border-bottom-left-radius:var(--bs-border-radius-xxl)!important}.rounded-bottom-circle{border-bottom-right-radius:50%!important;border-bottom-left-radius:50%!important}.rounded-bottom-pill{border-bottom-right-radius:var(--bs-border-radius-pill)!important;border-bottom-left-radius:var(--bs-border-radius-pill)!important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-0{border-bottom-left-radius:0!important;border-top-left-radius:0!important}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm)!important;border-top-left-radius:var(--bs-border-radius-sm)!important}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg)!important;border-top-left-radius:var(--bs-border-radius-lg)!important}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl)!important;border-top-left-radius:var(--bs-border-radius-xl)!important}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-xxl)!important;border-top-left-radius:var(--bs-border-radius-xxl)!important}.rounded-start-circle{border-bottom-left-radius:50%!important;border-top-left-radius:50%!important}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill)!important;border-top-left-radius:var(--bs-border-radius-pill)!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}.z-n1{z-index:-1!important}.z-0{z-index:0!important}.z-1{z-index:1!important}.z-2{z-index:2!important}.z-3{z-index:3!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.object-fit-sm-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-sm-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-sm-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-sm-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-sm-none{-o-object-fit:none!important;object-fit:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-inline-grid{display:inline-grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.row-gap-sm-0{row-gap:0!important}.row-gap-sm-1{row-gap:.25rem!important}.row-gap-sm-2{row-gap:.5rem!important}.row-gap-sm-3{row-gap:1rem!important}.row-gap-sm-4{row-gap:1.5rem!important}.row-gap-sm-5{row-gap:3rem!important}.column-gap-sm-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-sm-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-sm-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-sm-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-sm-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-sm-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.object-fit-md-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-md-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-md-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-md-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-md-none{-o-object-fit:none!important;object-fit:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-inline-grid{display:inline-grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!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}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.row-gap-md-0{row-gap:0!important}.row-gap-md-1{row-gap:.25rem!important}.row-gap-md-2{row-gap:.5rem!important}.row-gap-md-3{row-gap:1rem!important}.row-gap-md-4{row-gap:1.5rem!important}.row-gap-md-5{row-gap:3rem!important}.column-gap-md-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-md-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-md-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-md-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-md-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-md-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.object-fit-lg-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-lg-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-lg-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-lg-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-lg-none{-o-object-fit:none!important;object-fit:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-inline-grid{display:inline-grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!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}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.row-gap-lg-0{row-gap:0!important}.row-gap-lg-1{row-gap:.25rem!important}.row-gap-lg-2{row-gap:.5rem!important}.row-gap-lg-3{row-gap:1rem!important}.row-gap-lg-4{row-gap:1.5rem!important}.row-gap-lg-5{row-gap:3rem!important}.column-gap-lg-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-lg-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-lg-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-lg-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-lg-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-lg-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.object-fit-xl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xl-none{-o-object-fit:none!important;object-fit:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-inline-grid{display:inline-grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.row-gap-xl-0{row-gap:0!important}.row-gap-xl-1{row-gap:.25rem!important}.row-gap-xl-2{row-gap:.5rem!important}.row-gap-xl-3{row-gap:1rem!important}.row-gap-xl-4{row-gap:1.5rem!important}.row-gap-xl-5{row-gap:3rem!important}.column-gap-xl-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-xl-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-xl-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-xl-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xl-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xl-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.object-fit-xxl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xxl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xxl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xxl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xxl-none{-o-object-fit:none!important;object-fit:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-inline-grid{display:inline-grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.row-gap-xxl-0{row-gap:0!important}.row-gap-xxl-1{row-gap:.25rem!important}.row-gap-xxl-2{row-gap:.5rem!important}.row-gap-xxl-3{row-gap:1rem!important}.row-gap-xxl-4{row-gap:1.5rem!important}.row-gap-xxl-5{row-gap:3rem!important}.column-gap-xxl-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-xxl-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-xxl-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-xxl-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xxl-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xxl-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-inline-grid{display:inline-grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}} -/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/static/bootstrap5/bootstrap.min.js b/static/bootstrap5/bootstrap.min.js deleted file mode 100644 index d5dc5ea..0000000 --- a/static/bootstrap5/bootstrap.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * Bootstrap v5.3.3 (https://getbootstrap.com/) - * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("@popperjs/core")):"function"==typeof define&&define.amd?define(["@popperjs/core"],e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e(t.Popper)}(this,(function(t){"use strict";function e(t){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t)for(const i in t)if("default"!==i){const s=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(e,i,s.get?s:{enumerable:!0,get:()=>t[i]})}return e.default=t,Object.freeze(e)}const i=e(t),s=new Map,n={set(t,e,i){s.has(t)||s.set(t,new Map);const n=s.get(t);n.has(e)||0===n.size?n.set(e,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`)},get:(t,e)=>s.has(t)&&s.get(t).get(e)||null,remove(t,e){if(!s.has(t))return;const i=s.get(t);i.delete(e),0===i.size&&s.delete(t)}},o="transitionend",r=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>`#${CSS.escape(e)}`))),t),a=t=>{t.dispatchEvent(new Event(o))},l=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),c=t=>l(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(r(t)):null,h=t=>{if(!l(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),i=t.closest("details:not([open])");if(!i)return e;if(i!==t){const e=t.closest("summary");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},d=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),u=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?u(t.parentNode):null},_=()=>{},g=t=>{t.offsetHeight},f=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,m=[],p=()=>"rtl"===document.documentElement.dir,b=t=>{var e;e=()=>{const e=f();if(e){const i=t.NAME,s=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=s,t.jQueryInterface)}},"loading"===document.readyState?(m.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of m)t()})),m.push(e)):e()},v=(t,e=[],i=t)=>"function"==typeof t?t(...e):i,y=(t,e,i=!0)=>{if(!i)return void v(t);const s=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const s=Number.parseFloat(e),n=Number.parseFloat(i);return s||n?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(e)+5;let n=!1;const r=({target:i})=>{i===e&&(n=!0,e.removeEventListener(o,r),v(t))};e.addEventListener(o,r),setTimeout((()=>{n||a(e)}),s)},w=(t,e,i,s)=>{const n=t.length;let o=t.indexOf(e);return-1===o?!i&&s?t[n-1]:t[0]:(o+=i?1:-1,s&&(o=(o+n)%n),t[Math.max(0,Math.min(o,n-1))])},A=/[^.]*(?=\..*)\.|.*/,E=/\..*/,C=/::\d+$/,T={};let k=1;const $={mouseenter:"mouseover",mouseleave:"mouseout"},S=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 L(t,e){return e&&`${e}::${k++}`||t.uidEvent||k++}function O(t){const e=L(t);return t.uidEvent=e,T[e]=T[e]||{},T[e]}function I(t,e,i=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===i))}function D(t,e,i){const s="string"==typeof e,n=s?i:e||i;let o=M(t);return S.has(o)||(o=t),[s,n,o]}function N(t,e,i,s,n){if("string"!=typeof e||!t)return;let[o,r,a]=D(e,i,s);if(e in $){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=O(t),c=l[a]||(l[a]={}),h=I(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&n);const d=L(r,e.replace(A,"")),u=o?function(t,e,i){return function s(n){const o=t.querySelectorAll(e);for(let{target:r}=n;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return F(n,{delegateTarget:r}),s.oneOff&&j.off(t,n.type,e,i),i.apply(r,[n])}}(t,i,r):function(t,e){return function i(s){return F(s,{delegateTarget:t}),i.oneOff&&j.off(t,s.type,e),e.apply(t,[s])}}(t,r);u.delegationSelector=o?i:null,u.callable=r,u.oneOff=n,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function P(t,e,i,s,n){const o=I(e[i],s,n);o&&(t.removeEventListener(i,o,Boolean(n)),delete e[i][o.uidEvent])}function x(t,e,i,s){const n=e[i]||{};for(const[o,r]of Object.entries(n))o.includes(s)&&P(t,e,i,r.callable,r.delegationSelector)}function M(t){return t=t.replace(E,""),$[t]||t}const j={on(t,e,i,s){N(t,e,i,s,!1)},one(t,e,i,s){N(t,e,i,s,!0)},off(t,e,i,s){if("string"!=typeof e||!t)return;const[n,o,r]=D(e,i,s),a=r!==e,l=O(t),c=l[r]||{},h=e.startsWith(".");if(void 0===o){if(h)for(const i of Object.keys(l))x(t,l,i,e.slice(1));for(const[i,s]of Object.entries(c)){const n=i.replace(C,"");a&&!e.includes(n)||P(t,l,r,s.callable,s.delegationSelector)}}else{if(!Object.keys(c).length)return;P(t,l,r,o,n?i:null)}},trigger(t,e,i){if("string"!=typeof e||!t)return null;const s=f();let n=null,o=!0,r=!0,a=!1;e!==M(e)&&s&&(n=s.Event(e,i),s(t).trigger(n),o=!n.isPropagationStopped(),r=!n.isImmediatePropagationStopped(),a=n.isDefaultPrevented());const l=F(new Event(e,{bubbles:o,cancelable:!0}),i);return a&&l.preventDefault(),r&&t.dispatchEvent(l),l.defaultPrevented&&n&&n.preventDefault(),l}};function F(t,e={}){for(const[i,s]of Object.entries(e))try{t[i]=s}catch(e){Object.defineProperty(t,i,{configurable:!0,get:()=>s})}return t}function z(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(e){return t}}function H(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const B={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${H(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${H(e)}`)},getDataAttributes(t){if(!t)return{};const e={},i=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const s of i){let i=s.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=z(t.dataset[s])}return e},getDataAttribute:(t,e)=>z(t.getAttribute(`data-bs-${H(e)}`))};class q{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 i=l(e)?B.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof i?i:{},...l(e)?B.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const[s,n]of Object.entries(e)){const e=t[s],o=l(e)?"element":null==(i=e)?`${i}`:Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(n).test(o))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${s}" provided type "${o}" but expected type "${n}".`)}var i}}class W extends q{constructor(t,e){super(),(t=c(t))&&(this._element=t,this._config=this._getConfig(e),n.set(this._element,this.constructor.DATA_KEY,this))}dispose(){n.remove(this._element,this.constructor.DATA_KEY),j.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){y(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return n.get(c(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){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 R=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?i.trim():null}return e?e.split(",").map((t=>r(t))).join(","):null},K={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let s=t.parentNode.closest(e);for(;s;)i.push(s),s=s.parentNode.closest(e);return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.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=>!d(t)&&h(t)))},getSelectorFromElement(t){const e=R(t);return e&&K.findOne(e)?e:null},getElementFromSelector(t){const e=R(t);return e?K.findOne(e):null},getMultipleElementsFromSelector(t){const e=R(t);return e?K.find(e):[]}},V=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,s=t.NAME;j.on(document,i,`[data-bs-dismiss="${s}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),d(this))return;const n=K.getElementFromSelector(this)||this.closest(`.${s}`);t.getOrCreateInstance(n)[e]()}))},Q=".bs.alert",X=`close${Q}`,Y=`closed${Q}`;class U extends W{static get NAME(){return"alert"}close(){if(j.trigger(this._element,X).defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),j.trigger(this._element,Y),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=U.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}V(U,"close"),b(U);const G='[data-bs-toggle="button"]';class J extends W{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=J.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}j.on(document,"click.bs.button.data-api",G,(t=>{t.preventDefault();const e=t.target.closest(G);J.getOrCreateInstance(e).toggle()})),b(J);const Z=".bs.swipe",tt=`touchstart${Z}`,et=`touchmove${Z}`,it=`touchend${Z}`,st=`pointerdown${Z}`,nt=`pointerup${Z}`,ot={endCallback:null,leftCallback:null,rightCallback:null},rt={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class at extends q{constructor(t,e){super(),this._element=t,t&&at.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return ot}static get DefaultType(){return rt}static get NAME(){return"swipe"}dispose(){j.off(this._element,Z)}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),v(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=40)return;const e=t/this._deltaX;this._deltaX=0,e&&v(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(j.on(this._element,st,(t=>this._start(t))),j.on(this._element,nt,(t=>this._end(t))),this._element.classList.add("pointer-event")):(j.on(this._element,tt,(t=>this._start(t))),j.on(this._element,et,(t=>this._move(t))),j.on(this._element,it,(t=>this._end(t))))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"===t.pointerType||"touch"===t.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const lt=".bs.carousel",ct=".data-api",ht="next",dt="prev",ut="left",_t="right",gt=`slide${lt}`,ft=`slid${lt}`,mt=`keydown${lt}`,pt=`mouseenter${lt}`,bt=`mouseleave${lt}`,vt=`dragstart${lt}`,yt=`load${lt}${ct}`,wt=`click${lt}${ct}`,At="carousel",Et="active",Ct=".active",Tt=".carousel-item",kt=Ct+Tt,$t={ArrowLeft:_t,ArrowRight:ut},St={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},Lt={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class Ot extends W{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=K.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===At&&this.cycle()}static get Default(){return St}static get DefaultType(){return Lt}static get NAME(){return"carousel"}next(){this._slide(ht)}nextWhenVisible(){!document.hidden&&h(this._element)&&this.next()}prev(){this._slide(dt)}pause(){this._isSliding&&a(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?j.one(this._element,ft,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void j.one(this._element,ft,(()=>this.to(t)));const i=this._getItemIndex(this._getActive());if(i===t)return;const s=t>i?ht:dt;this._slide(s,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&j.on(this._element,mt,(t=>this._keydown(t))),"hover"===this._config.pause&&(j.on(this._element,pt,(()=>this.pause())),j.on(this._element,bt,(()=>this._maybeEnableCycle()))),this._config.touch&&at.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of K.find(".carousel-item img",this._element))j.on(t,vt,(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(ut)),rightCallback:()=>this._slide(this._directionToOrder(_t)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new at(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=$t[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=K.findOne(Ct,this._indicatorsElement);e.classList.remove(Et),e.removeAttribute("aria-current");const i=K.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(Et),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),s=t===ht,n=e||w(this._getItems(),i,s,this._config.wrap);if(n===i)return;const o=this._getItemIndex(n),r=e=>j.trigger(this._element,e,{relatedTarget:n,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(r(gt).defaultPrevented)return;if(!i||!n)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=n;const l=s?"carousel-item-start":"carousel-item-end",c=s?"carousel-item-next":"carousel-item-prev";n.classList.add(c),g(n),i.classList.add(l),n.classList.add(l),this._queueCallback((()=>{n.classList.remove(l,c),n.classList.add(Et),i.classList.remove(Et,c,l),this._isSliding=!1,r(ft)}),i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return K.findOne(kt,this._element)}_getItems(){return K.find(Tt,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return p()?t===ut?dt:ht:t===ut?ht:dt}_orderToDirection(t){return p()?t===dt?ut:_t:t===dt?_t:ut}static jQueryInterface(t){return this.each((function(){const e=Ot.getOrCreateInstance(this,t);if("number"!=typeof t){if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}else e.to(t)}))}}j.on(document,wt,"[data-bs-slide], [data-bs-slide-to]",(function(t){const e=K.getElementFromSelector(this);if(!e||!e.classList.contains(At))return;t.preventDefault();const i=Ot.getOrCreateInstance(e),s=this.getAttribute("data-bs-slide-to");return s?(i.to(s),void i._maybeEnableCycle()):"next"===B.getDataAttribute(this,"slide")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())})),j.on(window,yt,(()=>{const t=K.find('[data-bs-ride="carousel"]');for(const e of t)Ot.getOrCreateInstance(e)})),b(Ot);const It=".bs.collapse",Dt=`show${It}`,Nt=`shown${It}`,Pt=`hide${It}`,xt=`hidden${It}`,Mt=`click${It}.data-api`,jt="show",Ft="collapse",zt="collapsing",Ht=`:scope .${Ft} .${Ft}`,Bt='[data-bs-toggle="collapse"]',qt={parent:null,toggle:!0},Wt={parent:"(null|element)",toggle:"boolean"};class Rt extends W{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const i=K.find(Bt);for(const t of i){const e=K.getSelectorFromElement(t),i=K.find(e).filter((t=>t===this._element));null!==e&&i.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 qt}static get DefaultType(){return Wt}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=>Rt.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(j.trigger(this._element,Dt).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(Ft),this._element.classList.add(zt),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(zt),this._element.classList.add(Ft,jt),this._element.style[e]="",j.trigger(this._element,Nt)}),this._element,!0),this._element.style[e]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(j.trigger(this._element,Pt).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,g(this._element),this._element.classList.add(zt),this._element.classList.remove(Ft,jt);for(const t of this._triggerArray){const e=K.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(zt),this._element.classList.add(Ft),j.trigger(this._element,xt)}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(jt)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=c(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(Bt);for(const e of t){const t=K.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=K.find(Ht,this._config.parent);return K.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle("collapsed",!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const i=Rt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}j.on(document,Mt,Bt,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of K.getMultipleElementsFromSelector(this))Rt.getOrCreateInstance(t,{toggle:!1}).toggle()})),b(Rt);const Kt="dropdown",Vt=".bs.dropdown",Qt=".data-api",Xt="ArrowUp",Yt="ArrowDown",Ut=`hide${Vt}`,Gt=`hidden${Vt}`,Jt=`show${Vt}`,Zt=`shown${Vt}`,te=`click${Vt}${Qt}`,ee=`keydown${Vt}${Qt}`,ie=`keyup${Vt}${Qt}`,se="show",ne='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',oe=`${ne}.${se}`,re=".dropdown-menu",ae=p()?"top-end":"top-start",le=p()?"top-start":"top-end",ce=p()?"bottom-end":"bottom-start",he=p()?"bottom-start":"bottom-end",de=p()?"left-start":"right-start",ue=p()?"right-start":"left-start",_e={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},ge={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class fe extends W{constructor(t,e){super(t,e),this._popper=null,this._parent=this._element.parentNode,this._menu=K.next(this._element,re)[0]||K.prev(this._element,re)[0]||K.findOne(re,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return _e}static get DefaultType(){return ge}static get NAME(){return Kt}toggle(){return this._isShown()?this.hide():this.show()}show(){if(d(this._element)||this._isShown())return;const t={relatedTarget:this._element};if(!j.trigger(this._element,Jt,t).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const t of[].concat(...document.body.children))j.on(t,"mouseover",_);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(se),this._element.classList.add(se),j.trigger(this._element,Zt,t)}}hide(){if(d(this._element)||!this._isShown())return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){if(!j.trigger(this._element,Ut,t).defaultPrevented){if("ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))j.off(t,"mouseover",_);this._popper&&this._popper.destroy(),this._menu.classList.remove(se),this._element.classList.remove(se),this._element.setAttribute("aria-expanded","false"),B.removeDataAttribute(this._menu,"popper"),j.trigger(this._element,Gt,t)}}_getConfig(t){if("object"==typeof(t=super._getConfig(t)).reference&&!l(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError(`${Kt.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(){if(void 0===i)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let t=this._element;"parent"===this._config.reference?t=this._parent:l(this._config.reference)?t=c(this._config.reference):"object"==typeof this._config.reference&&(t=this._config.reference);const e=this._getPopperConfig();this._popper=i.createPopper(t,this._menu,e)}_isShown(){return this._menu.classList.contains(se)}_getPlacement(){const t=this._parent;if(t.classList.contains("dropend"))return de;if(t.classList.contains("dropstart"))return ue;if(t.classList.contains("dropup-center"))return"top";if(t.classList.contains("dropdown-center"))return"bottom";const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?le:ae:e?he:ce}_detectNavbar(){return null!==this._element.closest(".navbar")}_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}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(B.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,...v(this._config.popperConfig,[t])}}_selectMenuItem({key:t,target:e}){const i=K.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((t=>h(t)));i.length&&w(i,e,t===Yt,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=fe.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;const e=K.find(oe);for(const i of e){const e=fe.getInstance(i);if(!e||!1===e._config.autoClose)continue;const s=t.composedPath(),n=s.includes(e._menu);if(s.includes(e._element)||"inside"===e._config.autoClose&&!n||"outside"===e._config.autoClose&&n)continue;if(e._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};"click"===t.type&&(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i="Escape"===t.key,s=[Xt,Yt].includes(t.key);if(!s&&!i)return;if(e&&!i)return;t.preventDefault();const n=this.matches(ne)?this:K.prev(this,ne)[0]||K.next(this,ne)[0]||K.findOne(ne,t.delegateTarget.parentNode),o=fe.getOrCreateInstance(n);if(s)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()&&(t.stopPropagation(),o.hide(),n.focus())}}j.on(document,ee,ne,fe.dataApiKeydownHandler),j.on(document,ee,re,fe.dataApiKeydownHandler),j.on(document,te,fe.clearMenus),j.on(document,ie,fe.clearMenus),j.on(document,te,ne,(function(t){t.preventDefault(),fe.getOrCreateInstance(this).toggle()})),b(fe);const me="backdrop",pe="show",be=`mousedown.bs.${me}`,ve={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},ye={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class we extends q{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return ve}static get DefaultType(){return ye}static get NAME(){return me}show(t){if(!this._config.isVisible)return void v(t);this._append();const e=this._getElement();this._config.isAnimated&&g(e),e.classList.add(pe),this._emulateAnimation((()=>{v(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(pe),this._emulateAnimation((()=>{this.dispose(),v(t)}))):v(t)}dispose(){this._isAppended&&(j.off(this._element,be),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=c(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),j.on(t,be,(()=>{v(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){y(t,this._getElement(),this._config.isAnimated)}}const Ae=".bs.focustrap",Ee=`focusin${Ae}`,Ce=`keydown.tab${Ae}`,Te="backward",ke={autofocus:!0,trapElement:null},$e={autofocus:"boolean",trapElement:"element"};class Se extends q{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return ke}static get DefaultType(){return $e}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),j.off(document,Ae),j.on(document,Ee,(t=>this._handleFocusin(t))),j.on(document,Ce,(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,j.off(document,Ae))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=K.focusableChildren(e);0===i.length?e.focus():this._lastTabNavDirection===Te?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?Te:"forward")}}const Le=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",Oe=".sticky-top",Ie="padding-right",De="margin-right";class Ne{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,Ie,(e=>e+t)),this._setElementAttributes(Le,Ie,(e=>e+t)),this._setElementAttributes(Oe,De,(e=>e-t))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,Ie),this._resetElementAttributes(Le,Ie),this._resetElementAttributes(Oe,De)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const s=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+s)return;this._saveInitialAttribute(t,e);const n=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${i(Number.parseFloat(n))}px`)}))}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&B.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=B.getDataAttribute(t,e);null!==i?(B.removeDataAttribute(t,e),t.style.setProperty(e,i)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(l(t))e(t);else for(const i of K.find(t,this._element))e(i)}}const Pe=".bs.modal",xe=`hide${Pe}`,Me=`hidePrevented${Pe}`,je=`hidden${Pe}`,Fe=`show${Pe}`,ze=`shown${Pe}`,He=`resize${Pe}`,Be=`click.dismiss${Pe}`,qe=`mousedown.dismiss${Pe}`,We=`keydown.dismiss${Pe}`,Re=`click${Pe}.data-api`,Ke="modal-open",Ve="show",Qe="modal-static",Xe={backdrop:!0,focus:!0,keyboard:!0},Ye={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class Ue extends W{constructor(t,e){super(t,e),this._dialog=K.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new Ne,this._addEventListeners()}static get Default(){return Xe}static get DefaultType(){return Ye}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||j.trigger(this._element,Fe,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(Ke),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){this._isShown&&!this._isTransitioning&&(j.trigger(this._element,xe).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(Ve),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated())))}dispose(){j.off(window,Pe),j.off(this._dialog,Pe),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new we({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new Se({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const e=K.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),g(this._element),this._element.classList.add(Ve),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,j.trigger(this._element,ze,{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){j.on(this._element,We,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():this._triggerBackdropTransition())})),j.on(window,He,(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),j.on(this._element,qe,(t=>{j.one(this._element,Be,(e=>{this._element===t.target&&this._element===e.target&&("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())}))}))}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(Ke),this._resetAdjustments(),this._scrollBar.reset(),j.trigger(this._element,je)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(j.trigger(this._element,Me).defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(Qe)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(Qe),this._queueCallback((()=>{this._element.classList.remove(Qe),this._queueCallback((()=>{this._element.style.overflowY=e}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const t=p()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!i&&t){const t=p()?"paddingRight":"paddingLeft";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=Ue.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}j.on(document,Re,'[data-bs-toggle="modal"]',(function(t){const e=K.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),j.one(e,Fe,(t=>{t.defaultPrevented||j.one(e,je,(()=>{h(this)&&this.focus()}))}));const i=K.findOne(".modal.show");i&&Ue.getInstance(i).hide(),Ue.getOrCreateInstance(e).toggle(this)})),V(Ue),b(Ue);const Ge=".bs.offcanvas",Je=".data-api",Ze=`load${Ge}${Je}`,ti="show",ei="showing",ii="hiding",si=".offcanvas.show",ni=`show${Ge}`,oi=`shown${Ge}`,ri=`hide${Ge}`,ai=`hidePrevented${Ge}`,li=`hidden${Ge}`,ci=`resize${Ge}`,hi=`click${Ge}${Je}`,di=`keydown.dismiss${Ge}`,ui={backdrop:!0,keyboard:!0,scroll:!1},_i={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class gi extends W{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return ui}static get DefaultType(){return _i}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||j.trigger(this._element,ni,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new Ne).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(ei),this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(ti),this._element.classList.remove(ei),j.trigger(this._element,oi,{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(j.trigger(this._element,ri).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(ii),this._backdrop.hide(),this._queueCallback((()=>{this._element.classList.remove(ti,ii),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new Ne).reset(),j.trigger(this._element,li)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new we({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():j.trigger(this._element,ai)}:null})}_initializeFocusTrap(){return new Se({trapElement:this._element})}_addEventListeners(){j.on(this._element,di,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():j.trigger(this._element,ai))}))}static jQueryInterface(t){return this.each((function(){const e=gi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}j.on(document,hi,'[data-bs-toggle="offcanvas"]',(function(t){const e=K.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),d(this))return;j.one(e,li,(()=>{h(this)&&this.focus()}));const i=K.findOne(si);i&&i!==e&&gi.getInstance(i).hide(),gi.getOrCreateInstance(e).toggle(this)})),j.on(window,Ze,(()=>{for(const t of K.find(si))gi.getOrCreateInstance(t).show()})),j.on(window,ci,(()=>{for(const t of K.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&gi.getOrCreateInstance(t).hide()})),V(gi),b(gi);const fi={"*":["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:[]},mi=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),pi=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,bi=(t,e)=>{const i=t.nodeName.toLowerCase();return e.includes(i)?!mi.has(i)||Boolean(pi.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(i)))},vi={allowList:fi,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"

"},yi={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},wi={entry:"(string|element|function|null)",selector:"(string|element)"};class Ai extends q{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return vi}static get DefaultType(){return yi}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,i]of Object.entries(this._config.content))this._setContent(t,i,e);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},wi)}_setContent(t,e,i){const s=K.findOne(i,t);s&&((e=this._resolvePossibleFunction(e))?l(e)?this._putElementInTemplate(c(e),s):this._config.html?s.innerHTML=this._maybeSanitize(e):s.textContent=e:s.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const s=(new window.DOMParser).parseFromString(t,"text/html"),n=[].concat(...s.body.querySelectorAll("*"));for(const t of n){const i=t.nodeName.toLowerCase();if(!Object.keys(e).includes(i)){t.remove();continue}const s=[].concat(...t.attributes),n=[].concat(e["*"]||[],e[i]||[]);for(const e of s)bi(e,n)||t.removeAttribute(e.nodeName)}return s.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return v(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Ei=new Set(["sanitize","allowList","sanitizeFn"]),Ci="fade",Ti="show",ki=".modal",$i="hide.bs.modal",Si="hover",Li="focus",Oi={AUTO:"auto",TOP:"top",RIGHT:p()?"left":"right",BOTTOM:"bottom",LEFT:p()?"right":"left"},Ii={allowList:fi,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:'',title:"",trigger:"hover focus"},Di={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 Ni extends W{constructor(t,e){if(void 0===i)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 Ii}static get DefaultType(){return Di}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),j.off(this._element.closest(ki),$i,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=j.trigger(this._element,this.constructor.eventName("show")),e=(u(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:s}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(s.append(i),j.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(i),i.classList.add(Ti),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))j.on(t,"mouseover",_);this._queueCallback((()=>{j.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(this._isShown()&&!j.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(Ti),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))j.off(t,"mouseover",_);this._activeTrigger.click=!1,this._activeTrigger[Li]=!1,this._activeTrigger[Si]=!1,this._isHovered=null,this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),j.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(Ci,Ti),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(Ci),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Ai({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":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(Ci)}_isShown(){return this.tip&&this.tip.classList.contains(Ti)}_createPopper(t){const e=v(this._config.placement,[this,t,this._element]),s=Oi[e.toUpperCase()];return i.createPopper(this._element,t,this._getPopperConfig(s))}_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 v(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,...v(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)j.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===Si?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),i=e===Si?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");j.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?Li:Si]=!0,e._enter()})),j.on(this._element,i,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?Li:Si]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},j.on(this._element.closest(ki),$i,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=B.getDataAttributes(this._element);for(const t of Object.keys(e))Ei.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:c(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,i]of Object.entries(this._config))this.constructor.Default[e]!==i&&(t[e]=i);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=Ni.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}b(Ni);const Pi={...Ni.Default,content:"",offset:[0,8],placement:"right",template:'',trigger:"click"},xi={...Ni.DefaultType,content:"(null|string|element|function)"};class Mi extends Ni{static get Default(){return Pi}static get DefaultType(){return xi}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{".popover-header":this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each((function(){const e=Mi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}b(Mi);const ji=".bs.scrollspy",Fi=`activate${ji}`,zi=`click${ji}`,Hi=`load${ji}.data-api`,Bi="active",qi="[href]",Wi=".nav-link",Ri=`${Wi}, .nav-item > ${Wi}, .list-group-item`,Ki={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},Vi={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class Qi extends W{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return Ki}static get DefaultType(){return Vi}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=c(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,"string"==typeof t.threshold&&(t.threshold=t.threshold.split(",").map((t=>Number.parseFloat(t)))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(j.off(this._config.target,zi),j.on(this._config.target,zi,qi,(t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,s=e.offsetTop-this._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:s,behavior:"smooth"});i.scrollTop=s}})))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((t=>this._observerCallback(t)),t)}_observerCallback(t){const e=t=>this._targetLinks.get(`#${t.target.id}`),i=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},s=(this._rootElement||document.documentElement).scrollTop,n=s>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=s;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const t=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(n&&t){if(i(o),!s)return}else n||t||i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=K.find(qi,this._config.target);for(const e of t){if(!e.hash||d(e))continue;const t=K.findOne(decodeURI(e.hash),this._element);h(t)&&(this._targetLinks.set(decodeURI(e.hash),e),this._observableSections.set(e.hash,t))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(Bi),this._activateParents(t),j.trigger(this._element,Fi,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))K.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(Bi);else for(const e of K.parents(t,".nav, .list-group"))for(const t of K.prev(e,Ri))t.classList.add(Bi)}_clearActiveClass(t){t.classList.remove(Bi);const e=K.find(`${qi}.${Bi}`,t);for(const t of e)t.classList.remove(Bi)}static jQueryInterface(t){return this.each((function(){const e=Qi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}j.on(window,Hi,(()=>{for(const t of K.find('[data-bs-spy="scroll"]'))Qi.getOrCreateInstance(t)})),b(Qi);const Xi=".bs.tab",Yi=`hide${Xi}`,Ui=`hidden${Xi}`,Gi=`show${Xi}`,Ji=`shown${Xi}`,Zi=`click${Xi}`,ts=`keydown${Xi}`,es=`load${Xi}`,is="ArrowLeft",ss="ArrowRight",ns="ArrowUp",os="ArrowDown",rs="Home",as="End",ls="active",cs="fade",hs="show",ds=".dropdown-toggle",us=`:not(${ds})`,_s='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',gs=`.nav-link${us}, .list-group-item${us}, [role="tab"]${us}, ${_s}`,fs=`.${ls}[data-bs-toggle="tab"], .${ls}[data-bs-toggle="pill"], .${ls}[data-bs-toggle="list"]`;class ms extends W{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),j.on(this._element,ts,(t=>this._keydown(t))))}static get NAME(){return"tab"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?j.trigger(e,Yi,{relatedTarget:t}):null;j.trigger(t,Gi,{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){t&&(t.classList.add(ls),this._activate(K.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),j.trigger(t,Ji,{relatedTarget:e})):t.classList.add(hs)}),t,t.classList.contains(cs)))}_deactivate(t,e){t&&(t.classList.remove(ls),t.blur(),this._deactivate(K.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),j.trigger(t,Ui,{relatedTarget:e})):t.classList.remove(hs)}),t,t.classList.contains(cs)))}_keydown(t){if(![is,ss,ns,os,rs,as].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=this._getChildren().filter((t=>!d(t)));let i;if([rs,as].includes(t.key))i=e[t.key===rs?0:e.length-1];else{const s=[ss,os].includes(t.key);i=w(e,t.target,s,!0)}i&&(i.focus({preventScroll:!0}),ms.getOrCreateInstance(i).show())}_getChildren(){return K.find(gs,this._parent)}_getActiveElem(){return this._getChildren().find((t=>this._elemIsActive(t)))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const t of e)this._setInitialAttributesOnChild(t)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute("aria-selected",e),i!==t&&this._setAttributeIfNotExists(i,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=K.getElementFromSelector(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains("dropdown"))return;const s=(t,s)=>{const n=K.findOne(t,i);n&&n.classList.toggle(s,e)};s(ds,ls),s(".dropdown-menu",hs),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(ls)}_getInnerElement(t){return t.matches(gs)?t:K.findOne(gs,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(t){return this.each((function(){const e=ms.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}j.on(document,Zi,_s,(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),d(this)||ms.getOrCreateInstance(this).show()})),j.on(window,es,(()=>{for(const t of K.find(fs))ms.getOrCreateInstance(t)})),b(ms);const ps=".bs.toast",bs=`mouseover${ps}`,vs=`mouseout${ps}`,ys=`focusin${ps}`,ws=`focusout${ps}`,As=`hide${ps}`,Es=`hidden${ps}`,Cs=`show${ps}`,Ts=`shown${ps}`,ks="hide",$s="show",Ss="showing",Ls={animation:"boolean",autohide:"boolean",delay:"number"},Os={animation:!0,autohide:!0,delay:5e3};class Is extends W{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return Os}static get DefaultType(){return Ls}static get NAME(){return"toast"}show(){j.trigger(this._element,Cs).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(ks),g(this._element),this._element.classList.add($s,Ss),this._queueCallback((()=>{this._element.classList.remove(Ss),j.trigger(this._element,Ts),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this.isShown()&&(j.trigger(this._element,As).defaultPrevented||(this._element.classList.add(Ss),this._queueCallback((()=>{this._element.classList.add(ks),this._element.classList.remove(Ss,$s),j.trigger(this._element,Es)}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove($s),super.dispose()}isShown(){return this._element.classList.contains($s)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){j.on(this._element,bs,(t=>this._onInteraction(t,!0))),j.on(this._element,vs,(t=>this._onInteraction(t,!1))),j.on(this._element,ys,(t=>this._onInteraction(t,!0))),j.on(this._element,ws,(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=Is.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return V(Is),b(Is),{Alert:U,Button:J,Carousel:Ot,Collapse:Rt,Dropdown:fe,Modal:Ue,Offcanvas:gi,Popover:Mi,ScrollSpy:Qi,Tab:ms,Toast:Is,Tooltip:Ni}})); -//# sourceMappingURL=bootstrap.min.js.map \ No newline at end of file diff --git a/static/bootstrap5/popper.min.js b/static/bootstrap5/popper.min.js deleted file mode 100644 index 3938564..0000000 --- a/static/bootstrap5/popper.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * @popperjs/core v2.11.8 - MIT License - */ - -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Popper={})}(this,(function(e){"use strict";function t(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function n(e){return e instanceof t(e).Element||e instanceof Element}function r(e){return e instanceof t(e).HTMLElement||e instanceof HTMLElement}function o(e){return"undefined"!=typeof ShadowRoot&&(e instanceof t(e).ShadowRoot||e instanceof ShadowRoot)}var i=Math.max,a=Math.min,s=Math.round;function f(){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 c(){return!/^((?!chrome|android).)*safari/i.test(f())}function p(e,o,i){void 0===o&&(o=!1),void 0===i&&(i=!1);var a=e.getBoundingClientRect(),f=1,p=1;o&&r(e)&&(f=e.offsetWidth>0&&s(a.width)/e.offsetWidth||1,p=e.offsetHeight>0&&s(a.height)/e.offsetHeight||1);var u=(n(e)?t(e):window).visualViewport,l=!c()&&i,d=(a.left+(l&&u?u.offsetLeft:0))/f,h=(a.top+(l&&u?u.offsetTop:0))/p,m=a.width/f,v=a.height/p;return{width:m,height:v,top:h,right:d+m,bottom:h+v,left:d,x:d,y:h}}function u(e){var n=t(e);return{scrollLeft:n.pageXOffset,scrollTop:n.pageYOffset}}function l(e){return e?(e.nodeName||"").toLowerCase():null}function d(e){return((n(e)?e.ownerDocument:e.document)||window.document).documentElement}function h(e){return p(d(e)).left+u(e).scrollLeft}function m(e){return t(e).getComputedStyle(e)}function v(e){var t=m(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function y(e,n,o){void 0===o&&(o=!1);var i,a,f=r(n),c=r(n)&&function(e){var t=e.getBoundingClientRect(),n=s(t.width)/e.offsetWidth||1,r=s(t.height)/e.offsetHeight||1;return 1!==n||1!==r}(n),m=d(n),y=p(e,c,o),g={scrollLeft:0,scrollTop:0},b={x:0,y:0};return(f||!f&&!o)&&(("body"!==l(n)||v(m))&&(g=(i=n)!==t(i)&&r(i)?{scrollLeft:(a=i).scrollLeft,scrollTop:a.scrollTop}:u(i)),r(n)?((b=p(n,!0)).x+=n.clientLeft,b.y+=n.clientTop):m&&(b.x=h(m))),{x:y.left+g.scrollLeft-b.x,y:y.top+g.scrollTop-b.y,width:y.width,height:y.height}}function g(e){var t=p(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function b(e){return"html"===l(e)?e:e.assignedSlot||e.parentNode||(o(e)?e.host:null)||d(e)}function x(e){return["html","body","#document"].indexOf(l(e))>=0?e.ownerDocument.body:r(e)&&v(e)?e:x(b(e))}function w(e,n){var r;void 0===n&&(n=[]);var o=x(e),i=o===(null==(r=e.ownerDocument)?void 0:r.body),a=t(o),s=i?[a].concat(a.visualViewport||[],v(o)?o:[]):o,f=n.concat(s);return i?f:f.concat(w(b(s)))}function O(e){return["table","td","th"].indexOf(l(e))>=0}function j(e){return r(e)&&"fixed"!==m(e).position?e.offsetParent:null}function E(e){for(var n=t(e),i=j(e);i&&O(i)&&"static"===m(i).position;)i=j(i);return i&&("html"===l(i)||"body"===l(i)&&"static"===m(i).position)?n:i||function(e){var t=/firefox/i.test(f());if(/Trident/i.test(f())&&r(e)&&"fixed"===m(e).position)return null;var n=b(e);for(o(n)&&(n=n.host);r(n)&&["html","body"].indexOf(l(n))<0;){var i=m(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)||n}var D="top",A="bottom",L="right",P="left",M="auto",k=[D,A,L,P],W="start",B="end",H="viewport",T="popper",R=k.reduce((function(e,t){return e.concat([t+"-"+W,t+"-"+B])}),[]),S=[].concat(k,[M]).reduce((function(e,t){return e.concat([t,t+"-"+W,t+"-"+B])}),[]),V=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function q(e){var t=new Map,n=new Set,r=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var r=t.get(e);r&&o(r)}})),r.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),r}function C(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&o(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function N(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function I(e,r,o){return r===H?N(function(e,n){var r=t(e),o=d(e),i=r.visualViewport,a=o.clientWidth,s=o.clientHeight,f=0,p=0;if(i){a=i.width,s=i.height;var u=c();(u||!u&&"fixed"===n)&&(f=i.offsetLeft,p=i.offsetTop)}return{width:a,height:s,x:f+h(e),y:p}}(e,o)):n(r)?function(e,t){var n=p(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}(r,o):N(function(e){var t,n=d(e),r=u(e),o=null==(t=e.ownerDocument)?void 0:t.body,a=i(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=i(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),f=-r.scrollLeft+h(e),c=-r.scrollTop;return"rtl"===m(o||n).direction&&(f+=i(n.clientWidth,o?o.clientWidth:0)-a),{width:a,height:s,x:f,y:c}}(d(e)))}function _(e,t,o,s){var f="clippingParents"===t?function(e){var t=w(b(e)),o=["absolute","fixed"].indexOf(m(e).position)>=0&&r(e)?E(e):e;return n(o)?t.filter((function(e){return n(e)&&C(e,o)&&"body"!==l(e)})):[]}(e):[].concat(t),c=[].concat(f,[o]),p=c[0],u=c.reduce((function(t,n){var r=I(e,n,s);return t.top=i(r.top,t.top),t.right=a(r.right,t.right),t.bottom=a(r.bottom,t.bottom),t.left=i(r.left,t.left),t}),I(e,p,s));return u.width=u.right-u.left,u.height=u.bottom-u.top,u.x=u.left,u.y=u.top,u}function F(e){return e.split("-")[0]}function U(e){return e.split("-")[1]}function z(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function X(e){var t,n=e.reference,r=e.element,o=e.placement,i=o?F(o):null,a=o?U(o):null,s=n.x+n.width/2-r.width/2,f=n.y+n.height/2-r.height/2;switch(i){case D:t={x:s,y:n.y-r.height};break;case A:t={x:s,y:n.y+n.height};break;case L:t={x:n.x+n.width,y:f};break;case P:t={x:n.x-r.width,y:f};break;default:t={x:n.x,y:n.y}}var c=i?z(i):null;if(null!=c){var p="y"===c?"height":"width";switch(a){case W:t[c]=t[c]-(n[p]/2-r[p]/2);break;case B:t[c]=t[c]+(n[p]/2-r[p]/2)}}return t}function Y(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function G(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}function J(e,t){void 0===t&&(t={});var r=t,o=r.placement,i=void 0===o?e.placement:o,a=r.strategy,s=void 0===a?e.strategy:a,f=r.boundary,c=void 0===f?"clippingParents":f,u=r.rootBoundary,l=void 0===u?H:u,h=r.elementContext,m=void 0===h?T:h,v=r.altBoundary,y=void 0!==v&&v,g=r.padding,b=void 0===g?0:g,x=Y("number"!=typeof b?b:G(b,k)),w=m===T?"reference":T,O=e.rects.popper,j=e.elements[y?w:m],E=_(n(j)?j:j.contextElement||d(e.elements.popper),c,l,s),P=p(e.elements.reference),M=X({reference:P,element:O,strategy:"absolute",placement:i}),W=N(Object.assign({},O,M)),B=m===T?W:P,R={top:E.top-B.top+x.top,bottom:B.bottom-E.bottom+x.bottom,left:E.left-B.left+x.left,right:B.right-E.right+x.right},S=e.modifiersData.offset;if(m===T&&S){var V=S[i];Object.keys(R).forEach((function(e){var t=[L,A].indexOf(e)>=0?1:-1,n=[D,A].indexOf(e)>=0?"y":"x";R[e]+=V[n]*t}))}return R}var K={placement:"bottom",modifiers:[],strategy:"absolute"};function Q(){for(var e=arguments.length,t=new Array(e),n=0;n=0?-1:1,i="function"==typeof n?n(Object.assign({},t,{placement:e})):n,a=i[0],s=i[1];return a=a||0,s=(s||0)*o,[P,L].indexOf(r)>=0?{x:s,y:a}:{x:a,y:s}}(n,t.rects,i),e}),{}),s=a[t.placement],f=s.x,c=s.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=f,t.modifiersData.popperOffsets.y+=c),t.modifiersData[r]=a}},se={left:"right",right:"left",bottom:"top",top:"bottom"};function fe(e){return e.replace(/left|right|bottom|top/g,(function(e){return se[e]}))}var ce={start:"end",end:"start"};function pe(e){return e.replace(/start|end/g,(function(e){return ce[e]}))}function ue(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=n.boundary,i=n.rootBoundary,a=n.padding,s=n.flipVariations,f=n.allowedAutoPlacements,c=void 0===f?S:f,p=U(r),u=p?s?R:R.filter((function(e){return U(e)===p})):k,l=u.filter((function(e){return c.indexOf(e)>=0}));0===l.length&&(l=u);var d=l.reduce((function(t,n){return t[n]=J(e,{placement:n,boundary:o,rootBoundary:i,padding:a})[F(n)],t}),{});return Object.keys(d).sort((function(e,t){return d[e]-d[t]}))}var le={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var o=n.mainAxis,i=void 0===o||o,a=n.altAxis,s=void 0===a||a,f=n.fallbackPlacements,c=n.padding,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.flipVariations,h=void 0===d||d,m=n.allowedAutoPlacements,v=t.options.placement,y=F(v),g=f||(y===v||!h?[fe(v)]:function(e){if(F(e)===M)return[];var t=fe(e);return[pe(e),t,pe(t)]}(v)),b=[v].concat(g).reduce((function(e,n){return e.concat(F(n)===M?ue(t,{placement:n,boundary:p,rootBoundary:u,padding:c,flipVariations:h,allowedAutoPlacements:m}):n)}),[]),x=t.rects.reference,w=t.rects.popper,O=new Map,j=!0,E=b[0],k=0;k=0,S=R?"width":"height",V=J(t,{placement:B,boundary:p,rootBoundary:u,altBoundary:l,padding:c}),q=R?T?L:P:T?A:D;x[S]>w[S]&&(q=fe(q));var C=fe(q),N=[];if(i&&N.push(V[H]<=0),s&&N.push(V[q]<=0,V[C]<=0),N.every((function(e){return e}))){E=B,j=!1;break}O.set(B,N)}if(j)for(var I=function(e){var t=b.find((function(t){var n=O.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return E=t,"break"},_=h?3:1;_>0;_--){if("break"===I(_))break}t.placement!==E&&(t.modifiersData[r]._skip=!0,t.placement=E,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function de(e,t,n){return i(e,a(t,n))}var he={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.mainAxis,s=void 0===o||o,f=n.altAxis,c=void 0!==f&&f,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.padding,h=n.tether,m=void 0===h||h,v=n.tetherOffset,y=void 0===v?0:v,b=J(t,{boundary:p,rootBoundary:u,padding:d,altBoundary:l}),x=F(t.placement),w=U(t.placement),O=!w,j=z(x),M="x"===j?"y":"x",k=t.modifiersData.popperOffsets,B=t.rects.reference,H=t.rects.popper,T="function"==typeof y?y(Object.assign({},t.rects,{placement:t.placement})):y,R="number"==typeof T?{mainAxis:T,altAxis:T}:Object.assign({mainAxis:0,altAxis:0},T),S=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,V={x:0,y:0};if(k){if(s){var q,C="y"===j?D:P,N="y"===j?A:L,I="y"===j?"height":"width",_=k[j],X=_+b[C],Y=_-b[N],G=m?-H[I]/2:0,K=w===W?B[I]:H[I],Q=w===W?-H[I]:-B[I],Z=t.elements.arrow,$=m&&Z?g(Z):{width:0,height:0},ee=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},te=ee[C],ne=ee[N],re=de(0,B[I],$[I]),oe=O?B[I]/2-G-re-te-R.mainAxis:K-re-te-R.mainAxis,ie=O?-B[I]/2+G+re+ne+R.mainAxis:Q+re+ne+R.mainAxis,ae=t.elements.arrow&&E(t.elements.arrow),se=ae?"y"===j?ae.clientTop||0:ae.clientLeft||0:0,fe=null!=(q=null==S?void 0:S[j])?q:0,ce=_+ie-fe,pe=de(m?a(X,_+oe-fe-se):X,_,m?i(Y,ce):Y);k[j]=pe,V[j]=pe-_}if(c){var ue,le="x"===j?D:P,he="x"===j?A:L,me=k[M],ve="y"===M?"height":"width",ye=me+b[le],ge=me-b[he],be=-1!==[D,P].indexOf(x),xe=null!=(ue=null==S?void 0:S[M])?ue:0,we=be?ye:me-B[ve]-H[ve]-xe+R.altAxis,Oe=be?me+B[ve]+H[ve]-xe-R.altAxis:ge,je=m&&be?function(e,t,n){var r=de(e,t,n);return r>n?n:r}(we,me,Oe):de(m?we:ye,me,m?Oe:ge);k[M]=je,V[M]=je-me}t.modifiersData[r]=V}},requiresIfExists:["offset"]};var me={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,r=e.name,o=e.options,i=n.elements.arrow,a=n.modifiersData.popperOffsets,s=F(n.placement),f=z(s),c=[P,L].indexOf(s)>=0?"height":"width";if(i&&a){var p=function(e,t){return Y("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:G(e,k))}(o.padding,n),u=g(i),l="y"===f?D:P,d="y"===f?A:L,h=n.rects.reference[c]+n.rects.reference[f]-a[f]-n.rects.popper[c],m=a[f]-n.rects.reference[f],v=E(i),y=v?"y"===f?v.clientHeight||0:v.clientWidth||0:0,b=h/2-m/2,x=p[l],w=y-u[c]-p[d],O=y/2-u[c]/2+b,j=de(x,O,w),M=f;n.modifiersData[r]=((t={})[M]=j,t.centerOffset=j-O,t)}},effect:function(e){var t=e.state,n=e.options.element,r=void 0===n?"[data-popper-arrow]":n;null!=r&&("string"!=typeof r||(r=t.elements.popper.querySelector(r)))&&C(t.elements.popper,r)&&(t.elements.arrow=r)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function ve(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 ye(e){return[D,L,A,P].some((function(t){return e[t]>=0}))}var ge={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,i=t.modifiersData.preventOverflow,a=J(t,{elementContext:"reference"}),s=J(t,{altBoundary:!0}),f=ve(a,r),c=ve(s,o,i),p=ye(f),u=ye(c);t.modifiersData[n]={referenceClippingOffsets:f,popperEscapeOffsets:c,isReferenceHidden:p,hasPopperEscaped:u},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":p,"data-popper-escaped":u})}},be=Z({defaultModifiers:[ee,te,oe,ie]}),xe=[ee,te,oe,ie,ae,le,he,me,ge],we=Z({defaultModifiers:xe});e.applyStyles=ie,e.arrow=me,e.computeStyles=oe,e.createPopper=we,e.createPopperLite=be,e.defaultModifiers=xe,e.detectOverflow=J,e.eventListeners=ee,e.flip=le,e.hide=ge,e.offset=ae,e.popperGenerator=Z,e.popperOffsets=te,e.preventOverflow=he,Object.defineProperty(e,"__esModule",{value:!0})})); -//# sourceMappingURL=popper.min.js.map diff --git a/static/css/base.css b/static/css/base.css deleted file mode 100644 index c539f04..0000000 --- a/static/css/base.css +++ /dev/null @@ -1,3 +0,0 @@ -body{ - background-color: rgba(0, 0, 0, 0.1); -} \ No newline at end of file diff --git a/static/image/logo1.png b/static/image/logo1.png deleted file mode 100644 index 0d1e0290fc50956a0ea9a231c3ca142940348e90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10955 zcmaKSWmFv9wk?51nh>1e?$Ee9L4yVwg1Zx>ad!z$2rhwO4Z+>rHMqOGyYu+Yz31Nd zqOr6M#OwBEAg(yy&+9=2@O@t`axfECx?8HqiEI)fVn5uXvsv3J( z8S|M?hzOGjy79je*qAyQlDXMf+dA^Q2~qrum;bH)Pd5t%*}qJjtb{23OO%F!5}7!} z!IX@PnVZR&jgyy*hmV|kl+R+JY`oDVrpTv%;?slduU{gnkvxD*5#FUwCqr9fQyB>%iZ=>oOG^`ePBv~H zc5cp3JYwuzY;2N}yc|3{yyC39tdde<9Bg7@|Heu{jGb*vZJqv&HThqx*nh zZ=NMg9V}f;O{5$kHe~-AGr#43*24QA`TiSg@}ITv{YNazn;4dVX7>M@>3?^wb^QiYIZrH{pj!#01T7SAY!sh-xHDF zle;75_fb@BnP)pXv)^WG4KQL@I=wnA*-A=fmE2}is`u@ z%pzxQ++yCn4?o5Aw`+6Ha33W1L(+{Ie%1oj)b{f#gx^2LR{y#()u4d-t5jtpmrQ4S zhz5ZneaLrD@&F~d!8#`{TbEo7a?&BM5~v)=X44fbV?J7nz}%8N@lsU|-ZS%^mgSeG}w^QX){?M6neUqog5B4PEnIDqmpC}n6_4)myeEu&r&@X82sMU*2YYo};V zqujdvFk??`dhj(QhC&bY3G5!Jv80qCECOR-ijC6BlAnlF{$rFV%jXayVaYplWTFmD z<6&uHbklIbLgssxqLiq9b#*9OsKJklDM8tlKFZv(;H9KF1FVx1QKLzyeLQVKvwoi= zp1kJ7K>>Nyoe217iGb+}LLqUjBG5TcXr$R_R-b~?&7=qy?#a;aiojN3e1LgfDtHMD&?cdz!Hf{X zeW!_cAy2a!2hp*1$=SSk3NgDiN$k42X$J7*despk?*=1{Ugf0^f|i2<+yU=?e563x zImL|AXg|gj3qA7IDTklkGv9X|Y?AY*{a~23#_G$~N+?F)nX6MP#EQF#=tgzV|AKiHZ=_|&LAzrPjRU&7gL@PB#^ujJ|M z{2e9sP+&xJ{`sWBsS!C)!k&nzhw_gMe?02U`L?o~0O_f?*s+jSg*K~H#OdADZ9N_Tv?MK=#_g`RAUcY;%))^gsU znu@6@ux!vRRM1?baSE*Vp_MRf!XgA!Ipb&JXwgFYi@X3zU3H+902A?Gm9$o>=Jm3w zjCLAeEO1NHa35KYFR`_^`R79zO0$WjP^D8WR3R}@1J~2`2p?`uSaYW^m z*v67EJkv8d;elRll&siXlYeD`9?7QiR*@3qRECtmi%o--<@Kw%+v90@0+=`=%@O<+ z%rJ?zjafh*dq$_zfS}pP_8qE#9p=1(*DeHP`=|CJv_7R#C=_0={d7N3QKdJFCHzHbdd28@rTQuqIu2BF>zwV`dX8*d z8JHL~KC`9rK!h6$SjDB6Ye8B07+ClF;BkLRM7{K$&4tBiUOlXgFc5hZ{)%CH0oKSM z%o&x8M(-#}_r2^K7OS|yoe1V)Kd5pW#u3xERR)D&Qfik&V*Nr(a%mxDP6$QEYKYY@ z{_xh%qog0wP_PJ!NCC_e%ozfKC8?9YA7Kw zV{yo6&*X0RvzsOQ>zCZJ-!PFviM%RC6GI>&)LKV4aWQe#j4C`5&vf!d3Fu`8g6Xa=u$ zK_9A}$PzV|4#dSkIU1X|Io-l=?k90bx4YTt&z0B8>!R!@VefHlyFN6=U0`c9B1h@! zt4Zkm4%V9&sdWO}vUGJe7Z-=V7uuo6yRc}vfI9n0i!$2+JyNqqP zMPtXnVEU!q;KsoEm)h1+CKt5oO@I$%?bIu#H>AE6<1aaZrO-kS+e|aHmc2o!lvcz} z%HZj)D2G6HLG|nzcAU{i2MD=Z3n3DOtxH~kZpfkfnt*0_xEtBU*t&_cPt6zf0i3+;MAq-Cf^h{R|h`|^fZX4 zcFkSzXQmvghm6Fum0-5I+C3saMLyQ|&!(aIS6U?rmMxWdJ^ z(urL(@!aUw&&;E+iLt-!z^AJMSU4^uK7y#iGBo(DKiS^jv=g(so%j`C4EPY`wkH_< zRLh^Nn8-RhN?-N^n*tb-9Ka33c+q$K!Mp zUl7Zzuo4%91iB~mLwl&Bt}iFWVK(@0BG1NK>mBgx*PhYcau_ys@+C7XmIeLsdShao zhLh;ty*og?4HAnP6`@mgw?N8tfeEK(8Dx#Frxt-LmXn}Gru>U!xT8yM>LmLa;7NFr z-6R~~TG%{N2-LWAMbmWcGW)Xe&~!y~{e?ES@R-Lt_}U43-KQX9NiUGSEgTZ>A46Ky zUTM4@B}6`zLL$=qAyg0^nyMTj$O66>>aIy+rAf(%JW?8EzU@+{g^`9$r|rS3Qs{!M zJvTZCV?FdOkGG}U6Ry4k^HYFqs59<@&Smm-Mz+%>Ns50=vXwR&`yno@ElUA@P> zxYzHn4O;t^51?HL@hmXE7|)0mhO1`RF!OCL2au=R>^t(CJ0lr`)J}>B85VXLs+lT? zDrn%a*|)};5a9+ac5nCpPC3Eiacu|aM5=QG1xGhNrvYy8q&n1F5vS(!S!<0U3*Fz(hb z_;);6O~iUP%5r@qR{-h6@*}b{0m~nEPEULC`#d&_Wa?oa7VsG^1?pW2D~S^718FbP z6D>FtywTU3$>R_n3W20QihyhbZm5iGj?pY$0&e8$9_-q zq6dL5rsUzh4TFqRye6PQxTHPNG(Nc{VrosvP!6iW;pRi7PClT~QJi@4Lmg0TKxOYS ze=7M}AhI8C>9~hHW0jaZF8#pjX3-O)Jn;(PTZH~(2}HUtS_8hSu0BIoPYNNW}NC+up}n2?Y{EmrSn0>Fapt^ z?l12|LYiF*z84x94lW{fBhwsv#O)fFpn^$i?>iL1$Y!mW-z@L+Rd#g<8p7cj zgeZzh?@u9?xNCX|;3u&^or|Uebgc>v%cBBIhnrTp^8-4Bxhk#Z^oXB|m zvB4a>?fTmIy^ZPc-2BH99Z7}~E=tiladRJNC-=)nuFg|vE~E(FD?f$Z?eyUFaH_Ek zo-JE_Qyz6hxmO568|qZEujwe{3;U8YKA~`Z>_68lIT>Z2W{AysGD=iCa<(lDd4yOj* zxsV)FkPNo5(J_AzYp=_cheUTz7O;9%R4SEBIdvm{DPMLR(j4KPs6x^z_ssf4nm_5N z1PJzWq`Vi5z~ud@=#rlC314<9^R)=6#Hm+A>U;O}5t%_)b-8il!`jJHXHwS{j zTPvErDTzOm$-Isf-g z&y%8vT}DB(=66Xq?@w%4SC>zRdt#&6Y7MWAk3VkSNJH`uSS8#^eHsz7NW_V|WmloB zLCCEQGk~UgvjT_s>GH0$9IBy|?OMS4-g?bw03AmfCL3ch3|h|^S|=7_s)5im!cyM^ zy4==|2x-}ZDEH`{ANpY+?+{rP;ctJ)(r_8QMukM~IMN848|}bUKK+dL`)ipzA8yFm zB=yzveSa@Z`5&hs?;Mu7CTz+k?|x*1+z$-Q3SZNwV>RYxvwMv*E-SjJk^Z(=bQ<~z zEr-tTzyV|^Gd}UTq^!}A5idFiXBE~b6@xZq0aw~z$J3Eq{lk2A#=}_k1+djIiLJzf zw&{wm$De+G;X^hoU(v{C_aW!!suy zUjj6(aK8~L{+j)m@tOLiiFNDIJO`!DzajL@H=K1A`;ji|m}Tdd3PmB?B?qoz+jO`HEd|u{T#o=^0FpEFc?%?6D82Ny`T1LK4y_ ztg&#ipC~s1BgWb(+}hq&J}u4wYQZ07-%9mTqnEs#PzLurca)BkT#y`p)NC~SLCe&F z0h1aBrd=UJmzQ6WZzq!LrGop;hm8w{ZO!hq@0mp3lMg)WSpxXUr(D4=+VaAC)Pf96o{JOW88^|okkLj}u z(h~KvM8=up_oaqT=ODlXZC;ME0G$OsUNXo=4yZ6J5 z==dv%E5%VMlY`wTX`VP(Y=JT3N)FUBtGuC>q{!8ABg!vd$nLzFr+HI_x)}7TV)Pn^ zjj$0SJ!w~W$S~Dnc%-?8zo<;Zl41}t@$i|py{=T)*a}0jC(cCUwv4XyF+u4xDC7r1 zm1SA`;`{0vmyczgSVw=6)(X+L%4GdzI@bb)tSsfr8RP@su?JNoN7tieVKFgURh3m; zA)cn&#OE}CX%OP=3NO$raTqlG*)2*}cv#&V!-UM5RW!Hs>UR*5#v8&nFo_3VPd7=n z3s*uSorR=0|CIadO75rewy$Wb_c)?D0?sxRentq$dUwyVfERhc zUZu0*?kXxm!`xPyxs_SX4Q$hQtzuR;Dw*L}TVU!KO!2?Hu+hr1vkblGlgO>(a{z(g zgEb9ECk)%%EMEg!IsnGUrpQ-Aoa>LQhpM?RZKP$A3p=`_*IZ5qI!m^@r9x}u`)R6+ z_lc7R$12A4Tl3xaRtncqAg9=ME}q&(WSTRKZ4_)J1x1E^Nu5- zhXNp~7+$d;y5UO^W@z~1zRBGz)E*f^5b3u)nbi6IeMPNiG;h$P7j5*ix;<;tRGb3v^0(_*Jz6DmT^M!$`c$(p6$s)5#3;GRF*W0G8?}BE8Jo5W(=<(#6V8c$ zJlLo$&~OyWtwr%?P`5q!Mop$bx5*PVBzSn+xYl!sdxEIDt6WkW+;L= z(AuE>yW_zq7>=L!P+YQ*>m{b3Oap<@l3b`-3HFscc)NaoTt{IALb&ebxK?Rkbh$Hk+nHRl#7vYK)tmxRlZ$h4n#*bqxzill_*NqoY9` zs^P?QXjZ@L(NerL41%xZTmLIfjuSg;)-x8dQ9kE`7~c(yX+Gxi@(d>5YDd{9sgEOK zw`$kGfr*gIj(1Nox=O$}(1ht4Wk3H=B_u0?)_t8};Dc9y9B4qN-?*D7fOam^8N2Qb zxNenH;@At+;J97zR}ztLvI))cT`eyM6rl06AhyPV=v|pNQqJCCP{d;nA7y)vOD` zPGdwj*HO}y7_9CeIk!fhMy{7OHTI`@+k|FRN%OyCzoaX$PFnf=T8+PHoPH`-ky~IN zFm}o3-FCuBkv?-&c?@Pr$TQ0yEQY=O^CR89j?$R#9N7hjSzo2vfGt7upl8Fjzyt$j zbLm&ez@}{St!(l>Gbn*@RuD}gHG65;zPXL)_)xUzeMRjd`pqiCy7lmFI5t*Of<>Cb zwG7#^lFn-H_{SIf_Ae<1At=3Z4~(YUI$b<}CL_qhseYz`m{G=0n3O_o@3wHNT=R9@ z}CE zcEn6?a<0|XXZK+`erb2s5*t1N*m5HqFc4GO-WwR5srKAK3`^9@uq)iqoyz3HGrW*>|B8=ZMV=n(-w0vsGf*_uHn<`a1k8^V_DNS$u%_F;v`fp zBy>BZS41zOJJ{z##QGgEt|rOT!wtCKeX?ygMS}ypMAyu)S>m=9;O10Ija%R7*z%wf zqXjGutCDUyFE-CmK^f%9j?y4XrxkQrWw+>YNU@%SdZ01Pl_=4e4`h=$G#Y5F2=7-A z#KD@V=@IcshdFCiZ;?tUw11$xZNRL{1a`ItTBTu}*w$|`DzN6!mv)lo0Pa~j z?~KMtLowA?z7^)25G(OtCTy39{u#2Dl#8!%FHe#Qj)JF1h>nQ2yF^HVKY&0oW>D`4t~yiWy+`J5skbAkk*LCQvUvlJ_qM? zTB4j-TyBZ6OZgH#7OKIH@%F)JL~(A00=>n)M3;yI!O97~R5=*Pt;32O$s5zwgnp&d z9+DLLK0+w#`M!mk|=rBWzIOy1Sb#1 zn1KeGEp}8FbB5UNRdrT3WSRjOkn|@?_UptPuTT*sO+CMgyy2* zyS-UbgsRe{#J_#!`e+^KmjN5sS^!`q^>^`gO+DD`9T?0uONQZMVeil|mPE2klFZ=S zs=>&b>0E`q^-chCD{7R$RNcgDqK~5yHr_OO+k9(XHxOTtd*p~Ukc+LT#z_R85oxjw{-eU(C539%yDG1&rUYKX+ zF3qn=ZP$p_xFcr#gb<6i4QE%qzi)}ZNK)F-Ga$DGRYw7DvJYiNOu+e?S2@}V>d}?c zc%LCy){@&Z*hkW<5q&N(;4|AmdA5(bbc<50v+!tgUyuen9%Eb6Edz9|iAd}D?hmJg z3S3DK)CYLlvOv0Q2=wvhiNKF1L^6b5cJHYkYLkTr@>+0Jq=B?UNVJUWDePGC`Ux)r zk=&lE07?#8vT~esQ=o z4lA_+vKFZMY1L~n?LQCZ3k1_Tltmpb`kt2rA|@HG=&45SP)1=+0WvZ_ly*^xj$GnB zc8H=Sz7>y1YIlZFUL3RZZz`Rv_F{++5Fv7ErBmKmC7k;57UnVC(%5x&KUW`O99X35 z#v8J(Hv3@-l5Xyi%`!VAFA;9tdyd#Hb`Rj^@N!$SpW;V%r>v#3P6nxb63LC!KNIT0 zP`TvA*aV(_PVaK}Ve6A_={1ZM;?t8=6uZ|Sc^KT3NRZ~`mVPixgl_g9QpzR$xzYPh zggt?JIQ`D=bzOtewe;83>iemCV&|RxiDKt#sZ(ksHsJ*B8`S>CCQL--cm3zO{>CTYO=wh zq5Ah|3sv8fT8p*KvF6j{xitFjxFzJ08H*JVmUUtB{=4XTi*f8yUqI*#!C{;g-59ZnB??kkz22IxKfIo@Xi|m3=Ad)^OLF9ry{TTluH=lao z3}OEc3i}dI^5JB~9^34W+Syu&)1LA{x=p=kn&BE}jJ;uY@6&3K=e*9)RclIdGI@yk zP2cpy$sPOUa!FJ!oT9Y5JnQ=5Z>u;!eB6FSrQh1e!B*n$MOQj>b(-1Qp=aE~t{f-F zsKHFXOah`%zo!}Kv)kjEsx7!Be>z<)T`W+oktqPW*gGSep+wH%ZXfJ09o`RZ?kC;Q z{k&JgcLy2|-Kf}}UL2Fa@TUvTj0>~F-&tOGg4x^}3hNeowN8g_sN5BDTYg`*FK#M{ zG3Ta!Zo10Ev(78SSdgb)?*}n!w;-tU=^H?o;J(af zbZnlN^nPRAT)5UwI6LjlMy}!gjM<+O#LH6t^iBcY3nJt+&H?t>-%d+uc<(8e0cqNw zy*yAg#ADT8QAR0ca*oq!D~R)&li9!i8AsaXYLR@s5_fOO4=P1L_-zwFY<;1GX-%7a&S)0+ITvZ#cO64q%RpRq^eymk@7mT?N-o$)(EU(L z^qfqHw`C^}xgC}T!lq2K*|%0$MzwDtIG)H6F~$MLF*|GE9oV~SF?89A-p8!99i#E3 z7wf*Wr?&E9qmt6E9}5MJDQqi#4LLWfm!&uzeZg38yn7~pUKefPu?s6x83t$SoP(Fl zQwBXNVI`~f(C(jOkg<>pit6`#+ZCShkI&!T>nV8uQ0^QTJ6A(6z3OU}gb`^qIBB=q z`;n&ShgglrxI(Z=HfzhX?ufSZVk`5FjvLL#9jv*h4wJ_$$-CN3U7CCHd+lfBuB$Pi zgjz4WzLPz~8(`|dL0gs?g}VOIX88!~_G%HNyZ}LHcII%`|DfLzvGIZpUBG{tHz;J$ z(CT=M@IJ(bIM6zLq}1p`cU1VAqShJ1h%v*C^=qdhIG|BivG$MGGMgZ^?A^0t7wV?x zqT$-ZLWX&s!y#eODj0E|Uezp7NRhUmyMo0Ik^%e}-5hyV((z3{Jh&<95%JO&;k3c$ z4v|DTtDu!%{=fsve#X-4^czSQ%jog%VC)N6b9p}R!R!8jPb6tgdW#2x#zDE|zF<^Owpt|m%rtukYPE^85c;g#BfPB@JoZ0zJJIH3qZGX9V% ztl}&$ysANh`Qy5~aa8%lbbvJ)@&{uALrwPZqD0x+6y1!@FwrI0T` z{{8Dv5QfDx94ujL(}57g9(Pf4c@QVHXd4Mzh|1cr&mdXYs&G$i`CN60zLYp`xwWaN z%fvQ~`+<0{rS5CJO8={N!t6Ttt%dC3ajs7=U2xQ(IG+6d%H>^ylDpE7LOH#mXLCIK zV9uDhFWg>QnGyw5wp2@bq{JD=I)`D5(9DsLf?w1us$iMiE=s}9;u9s-5r**JDKC1{ zw}-Y@S`}S*ZL4?}KXQfp+4-#pf^v7rLfAed-8 zyuPIThJ!al)tgPhJT}fgfMG~K{5!hTq<(?aVRE1 z73+mgU#=wt$RfRPU$yatm(rgV)J=LMW+sy5JNY$s<6QmwfT(H8sT3{C{-BuzSFRN~ zez=qn`9J^DR;&O2%zjj)7EjN8<@L;z>8M9Aw|Q65RrK#f4!?*elmgbyi}{FjAJh{diuJ;$E#%L)QE@tN<$v*R|Nort6@S)}<#V?<4$o^k56sdFcNj_P{+df` zlvIPEt&^~b6xPiZ>xE8Vt|a!Xr~XcvGM|RKXXht442V&^#66lFDrs6L`s|}u{|wYP zxx)=_VLX!r&l;gw)j}ki?A`plQ9uqm+{Q#3(8usqJpWKkf-Bbr{o0J$ksDU>g#1|| zCOC1$zxb}yH>Brx=Q{Dq^!pcXtlC10S}K5GAg%(%z^K~5b8mvpH%x5PFTgrJf$7U_ z4!D!vuXA7`C^>D<(#mCm7JVoEObi@e0y5^bL?38M=!je?UpWMC^)~o!FwB-e0cjCy zdD4qf3{)Y$lOTFo$#{ElvjCi}H95sEi=$N_E(PO>K{0t`!LF!F$Zbf)+@O7;oavA? zlp(W*3BDt@uI@GYo?4$>#lOS@+3IvqJWqLGvdZ5En5ugme?1!& z{pZk^Z`WGBT}Vfu4=)$>F7oo%C352W6PDM>#DKLJb&~G`o(@l(x0?U)v0%@GRDuuE z5}`F`{J*4are(t%h|=X(|Eo}HQY@(VNW6v6-h z_#hX35493N6}u;OhIL7gMpW}_S}$yMVJ>nE6Wn-MjT}P~`l0MTg7Yz)X52f&IuWsd z86TP$8irmbIS7&h3?lHlIX^CB!H0T#+qip_$|1X)iy)f~%rsvUk18lTk@s=OM~EHr zJJ3)Zq`ke0p`dXG3YH3^Ix(n;7*3EVY?p)&An0+!9=y{rkWs-jp|NTsaMKFI>}07B z*BANr&A9J4sVikL)EjFMq9DzHOqoJz>@KU3b!tETNqm~S{wj)z?Dzqm>*TX~^xyL? z-*?%4?Xp#0GlW`JX0({+XHCXMgj~n=Dn->QV=@no2f1S`%}K%k<1l$)dc}>!^5}i1 zQRLIBpcv=4U5BkvZ`t)agVIB)4FuXuhM3{&7-%FsxgO!6pS2p|)fa0?<)&4HHtm+g z)+qM7^L{hJz!Df11-i?=k0UX`G6NL3e(+wLM}iK9#B`Og*B4gP0cVz_ zt0CGyroiVQ1D=)VX&z9VKuo|^jfk1 zPf8&zby00nG6aYvr`5m!1H8%TL(T7TLm0i!*#Y?83*Bav+(v-ykd|x0EkKL{p-ycV zlac(N(|7cw6_K@iPHe4URwO30eQyt&!Y1L9kd+U?g0#x}J;^68elZ*R&H0+&VHzkP zIl>^k4pvaP(h^jU_8LmxL^pzzQt<0mE2Vla#09qypRnJdW{B1J$QLrvmJbuzRWIj! z|1HEISQPh5KnHI3V?!M04Dfm3xUJY8n-ad6Ev_)STcu%D<<`QlTOF>Z(WleEXxhm< zsSdqc+s%W4wKKol3Sd+)_s{r7hG$qE(}IsM-|bq@Solk7`T?o>ve8e!HCiH(EC!!+ zcrJhobprGe93V(savh&>WsdVlUz%F-07)&JRCqSLab3{BOj8K7#PW<02cDINOLCO% z+Fov$sreUNHI3x7{1{Fm6mcKDP?%}S|EbPNWgp0QXq-0+-`uME%jf|Bv2gA%1Y>6W zX1h5!zP$hPSmTU#*Vi0K<-6q9YSx{(ID4uVV8=^RZom-EZeW1x+;M{t#rW?t1ZfqV znt;Lj+mZ|@0?ogDM z*zbhe^!F>sxy|q=7OclO+Kr9q-hkj*h~GK5m_uEFQ1KS5#gvX7gJ|2QhPLL{ds~Qq zFfq0UItm!3V3IB8r51$I@JxQ9)stAU*^@}6+K7>E<%jw-hfWKQl>N|>R^)3zu{x~%M`u{Xq%=^&fXf&Ow(%fG=c znbaRJ3?W3X%M$qV8|j0CmX5hA1i`&5hz0%Jz8 zOGCv)P&osPAn&ykOPNuQ$E^b5sq+B|MpP5fwZY_9%NbS5C;*tugbu$^jJi>lBI0Z6 z30ZeaR}+aS#r(aFHZa=SR!6N+2{R1a^~UVw!anwKZ<$UlTUho;jo`=x1;8bWj`r*l zGyBJvpNuH`S$`j)`id!;{C#g?2lnx*i&q`UvKbg{KGdzzQ-k5TnadH?&|nVv24g!z z$#l{1(-`rnhtZi>)hIcRTl{CVMTuih|SN z6%`7;S7xW504Sly)o_ZGk&p`C4MKyIA+8V_NCX^{0E$8QlhhL+RvfgFW#reNLTl8y zR@q4SKT@i5<5GM?>n-U!kjwf{cBF{(ZQ0hl_w_{cE0!7pUrOns3Ko$^2uW8rpv!79}o7Nw-ei0!hUqv zm|rW^tGGTuN3d93DMw8Ao>c?!9aBi0lAwl?!{nm012=HMZO`@4nr0(ZhJ%(m+w zfCt#4=u9w``*C0~@N4MdyT~3l<(d75KK7G>tcympqT_$mPODlSvP>n z?ZjRxThx~9{y2bYK1Ne6(-9uErzT#WIZ`4vJfO6`DJxn@!K*LWq``_?FDur7w%AebT07lm6<)A zKj*bGgZt|4EiMT2i9s?5uUsl}xFgz90M6c7_o~gZTf|akix979p_n^q(z^z<$4XK5 z0w~AB&h4M_xRJ%=@6#Lq|LujgzHeMAa{X~ACP5YJhp38@psU426DF7&8oZy*X-VNn z(m0UMA^97v@?`acj%DBV1jr)2aH-4n#Gsi4P)?e{yxzD}<@(}JAOQaUy+8l}00000 z00BQVT}B`x9An7X=dHs+ldFH4^<@#>65N8i*ki6U%A@!>7?{>S8|RNQt&uR`ysv%G zQ}0w}Vtz}%JO0}J>%5pNg$t%7rMk&E9`C(ggrF|tqo}qo{_g{URx_p4wvR|)_d3$* z7IPqPV7OX=zEkh+OW9<7K)*ZS6#bawU<)shZ zgg%%`XbEXo9z4D_5Fqta#<|=zxgJAa{H_Eb7WaM+AmSosyRo%cLRlcgcriHPFM6;w zf}qarO8P`fiUTQ)f1~ytuIM?Q-=HwAM0UYFhvoR*_-F3rphCx2jfZptj}Zbd$5{br znXpc@WAFknWr>uZ;#j5m)k<%XCQu>poLkWu7An!SOR@sb^xyyh00pYl>eZ|z8>6G# zniM@e1%zG67Gu`yoKXnzE=AkEd5_5_dV^igS4 z#00I`%yZS#$qeDMsBNMwW&yiOPMlVz=jFle9Mc@npuOZ%x(0iGnKXa1(OZ+B+k3nt z@sA)A0hF5tDWpf1eVVqLKA03FTT*Js9p?#Xi2pxnv}n8+E;h3F9u=$pW3)Y+K? z@d`w7cJ>jd;p%kY?!}!z#ubJ?Yal}$3T(r#=F0C1IT?o-8fxi(42{=DBL1E>ZlYG^X$7fgbKQ2{@98_! zyg&s34AI(2o!cO9kO-A>i_pndlqPh*oRP~vN8j%}R{qoi_9~qI6gFE{z>tekfXspG z!O9sx7lWOl->qV|VF%})k+lQ(lO=rpUh0HBYF90r6=25;)B~yHWKm|LKS5t>d=?Fc0#h=-R$#p2rXONBv}GXoeZnPi|F|Cg3jD$ddHFNDjJ#s|K58)-$m}P@ zmBjTdAYlnR>1y5<4&a?eM;*B{{_gRH@Pz}eZ*_#f0}jmo7c+8mf^lZRq=XXQL^s^F zQp|ew;)w6E#WJfy({)fw2vr6SaS(6*0hj>_@)vHz<*jAB5Ngr%fSb8vf!W*;&?N6Fhs9Z#i6gmjD@D7&F zfKV@v$l42PL4upyRcoX7d`lw#yez1$ozCMNi@cyD7Ch-D%gs?X*wPtJJKN1|a{LhL zY@jLlm%`U8z~jcHMS0orSR@mEQ5waWZbc7x=s;N|yhQ>$$J|VY%8S*TZ~`AW-yr-Z zK5~VhR{qXf?r%hvC>$JbbvfRzQoz|h6*Thgm!-|j=m%7#>QwbZ zbG2VeK9PwRvCtb69#>bQ6gDXPPjYD8dRk_-@6Chus{B79KX8ORffzOVAN+ir~Fwp;Ke2U203SoXmjzUcg^1AHZSC?hlX zY@0jsy&T(>1t^x+QmFS<5KAK1e!Z$NJ9`c9dixNd3FW=eGQ5THJ7&VIm z)o{WT4Ruwfw#=ioeh^IUhB?WGtE%&1KGsSSa7!ZtO5beBJHXX$ib*DSxX*D8ys00}-+1^jGH;-jE-|=yrIX+?4_x zW8Tnz5Kceqcu)`twl}*`o6fFyO7of*w6wEaKKb3z9BM~a{V4fAmGljvqQL_{J~2>& zvS#d=h$5j-8>;09zD;G-7?eO`k@KuZ5pdNk{~8GERd%a5-jl0-Pe!u#vF|p`9Iu_Q zoqqg}=8WYY1~3qf?T~n1QYd*JYg6#T&{|FneM+UV&TN{x;DUakrjGuf87J0xlw2~gA>F34ogi{V%F_nm*s8Rj&U>vkfJk2X?z5`` zpa5$xLyrRcm+j|tnf-tjnNSFE`R~AiAt^d-4|tz0t(vu0T2SZ%-YyYcpyAa=zpst+p{q|^j)qb6D`j~eN;U0_|bVsA!u1`QXz!!Sy6v}txk&=0M=+o(^vBC z={*i^Kn7)>K{hS9Ns#Eqly#H0_;HQ$aT=##(yIFc6?kkn&e5V7pPIEEsXD+$dv@vy_7Ohtiei3P+){O%2UW zTB0@1O`kQo85q&@6_@p#!QQ_^Cf~%^1mA^Vk0JAN>k>_?Jgo@Yr=6rJ8)Ec`JXVA1 z04+)lw9RL@ZOD097@rcmU=pi&bn_D`5wdD-2+fhDD_`nj9H%?-sT+D(D6IlIEO56d zl!^GsUPtop+md;8W1_Zbq@nx=KU#}?ArXvHGsLc4d~9Kbb>rMFd$9b=kP%xRT>?Fn|SJzuGGCx60$Z#JHhB#o@{dN9;>a`gZr z-5Hpo>Zt;Z1w$!o$6(wa2#`dPpvO$Pvk~cu=27XvOW2 zVbMNT5%r-S_M=9OXVO&`6m)ptp@-j+(vFP~>G6)CADK+cZq(d8P>mZtvbEu~IkXEr z%m@x;UqlrnvA#Ao8B&u0{Wy23arBKU9`y=uc|A`NStB^d830I&_JREqVe~-$3=6~% zXJ(hgc4FMk$-K6c>Pcgw67cKuEWh`BaA3IZro&%TI8K5$!?}(2C$0c6l3uof5BZV1 zH9V9Ot`-}G0DSCrD_^*Z+&+dR4Ysx6oGTNHv+w%V_pbkJP-lxor`^SYz$m-isJ|na z^^dPg&CeN`7?W8aSxBwYx}x)oBL)6#By$BWPr=QRu6N=HBYKn&Vv@E}jQ;Or(cZLG zZ`R;5U&-pAe5!_UW0=zkmq33X!Z3OxsYWiP1B+pA#BvgyVCPDbf6l-al}^~ilquI* zZ_`Ek7kDlkyL4E;$6<1Wn$5lLP<*da8UB*G9B?2 zj#{G!SY;|zCWvFRuh6{(xjpxAt48>9h2e((ZIafC6;Uuj95wmCCOrZ5ATwuV)%KW6 zuEo5gR6K&BAEDEg$|xBVFgcq2%Ni?B&a-PaF(AaWJn<6<4wvj|boT*gaJhJ(jAFf8 z(Yz**WG;zNEm5<6*im$ec%oGev!(E-V0I`~UFrmFj}|2_aA2qJek4Gv*O!XCC_sTC zVIQqaljvrq&#&GW_y`UQT{tD@6ae^OEhmq+>Igfi)2_JkaX#BU1)ASW$J{VWQeFUs z-f04|VJ%Wpk?opaW(i~846G0aIf9A&oCh53BkNi|%cD}iY-kcwC%x_A0YotfNA=q~ zecN|ZENYnBF~o>QvwCGGGDAJbu3!|My-g{mQ-o^_-o4y1Sd8b9Fqy zVYn8?r2^;GutHPZ8XY4mfiyhZuPuc0LGFyK@X!m7hn6kU$SdX-tK`QbPfD&nX}^W) z83~#dz$^4!x4t`ch%&F&mgFv$HUlD;V}Qlb>|<|=HA((bmrsN)^5?C$jBO24O$ys1 z;eP+kzD}hd%*Rdwx(f?~jdt}Q{8T2<4$!eqSaH3dhQi39Fw2~tP)i|$dwG^LoOM=n z1K7F40Z>cZelIq{tbR_tp2pxUfgec#mW4G{v?HlNzBas;Cgo!Mmu{mU9D84H2gdUsb3)W$3(R`5n~bOQZr)U90JWefr;A z;u9CAivd)iC!^0|CCAcCHIzvz=*vDXBOE=s61IR!Er;lbJqx4tZw5!*R0aEve|4g zPVvgN<}DNOVE_p;l+mToLvB~6coj#5*?jFFh+I;HfqO~(wje&eye(vLI7BKl&hzNg z7D5k@DMGnh)|%2KqjVqe1s1G~6qvAr9&?ujUCiTV4VB-*pYP|Sb{I{OIfKRI?FJE) z@qb?-nCu^-Wd?p&yq&3_DlIM;I;C^WO|=uK55;4n5CwY|;dEgQAI|{2YzOt{qNG7x z=pIvge|c;LoTH>b>W9u_W9B6!Uq|!mS>DF&@)|1M^ejey(2{uDsCI>BaIR^vWp)44 zg5>?&eI=j+yY>Ke$L2Ev?QA1VG!jR&{xHUGq=>&PBYS9_-a}NrxzKBJC#9_q<>JNN zwq5$kC@lHSNTnOh?(ey0E;7erN)w=7@i#Fi3xH+nsNi#{18c)hzrm}W8I%-9 z&91y7FmM1yMf7`|6%hYA3yYy*5?W6Bkjw8S>uN?W0EzeSb$sGcbrikFV_C`P1J~L2 zg1cn73RgYPJwTi2+m19qwFGb#o)UK1ArcPUHrR8>GVVnbE2b6TdGogx>%i^u_%p6*n|RvB7joqqNHyTi*C_zg1R%bCN{5 zgD;*jQDNj1st^#VYZUklT=1Pm$43~e2<=!2WK7dxMWMNZ>`>b}+@BOrnh0D%Y~|>- zFG+57WD~RMwzsDRRYmB}>*Q-!`B+{9*rejLcb5L#YhQW&KVVUWP#ju8-(=kCm}qu4 zF;^Mr&0rQ|y&MLm16V8$7!e9Wpuj~4zy2AYDZ_MBRk;P68dCW%xWLEc@c!vEmzgtP z0H;AJ$rghXBEz8iV}3KfK6d70NJyU|>44(WL#s#WhnQenWrI~Q7kd8%mJQ&`&sMl`9o{vWf52*KC~ zcI|>R8gS!}RA@|hQupH`CSVQn-Lj|3hiInn-+t49n+pzE40lZok!|8hI~!_$LfNf{ zjC$XNj7#@{7Y)rz#&}8?2Aq4o>AKN;2{-G*2`jr1FX(Ut?z<#|qd6WE?y#A;PgG&d z8NmQSXRi5t@{zEoVAWQcdZ?<9m5r)wg?QX|s>(V$fprSIJ{b}6X;x)d#mFMRrzla6 zi}FvplGTK5z~ed&m4$a&wOk9}zBKBIS+S$CLu$z3%lVhN{G;)&cx*nU!8v)-Ut}54 z0hgBn^1GbuV}8CH#Hk}~pCq&*`;sS;5MrVr)_N^K^qm`C0NuIXX!vo@<{CGlxBk05 z-u9jCv6W0A4VR0uW=uhZNIONA*<+CCt5n}xqE(TVsx4BSvxCo3@g{E8QGLAR zfQd!9!$ecZtj^tAA8@<0$5NBiUu$4#wXCNMQOC8Ni?(YUyW6 zg{Y}36>GxT1t_M|zF>NSG@D!x@UTyVIM1Sq-Liex# zb)G7qOqu~Ri7xnO+BjC8neWH)y0cW>;4B-cCu@QwF2N5g* zzTWgXJ=K}P>c(~epzs;<#GVPgelhqrz9tj=EHa!?JU)u-*F;6chwAYQuOI&Q(KwYF z1m8u5bcyY4Uw%nkHjW+;dVw&Q`}{fM!Q0D?T&>9ewZ^BfO)pM{+-hh?Um8BKjA;&x zT$1-k=VWz`b(Mx!J`GZ10Q#-O^<#>53bt!)0a}M|`;gU0b+V4{!Kd_BM6U5yFy|=d zk4;WoR`buO`0AYqbqx$_ROBvv*_jz$oVf!@<17pE8pv(hNygSH=GY~5r2~PO+$%S+ zf^9&c=Ppaca+6JZg^mEd(0*u(@v=KpsXltKWoA`k3s4s(69|7vvRtH9*uh;SBGsx? zbcdU}ex_#JR^QR+1_UQJ#k+!5&qh(LNW7(AbrH%le^F39=2n1rb!iOVM}Dy+M!d2R zSO-us`|5wypZmux(p&%Om=0NNRUYs!#`4L*hJzllKfobW*#^&u-})OpsCYV zly)?<1$U1~DPAc2m-KA;G9B=${kd{;JZ#wjQ6Ddb3${6Kpspq?+`w;!kzP$+9orAqC3A0lflZr{4$GIwg@4yo+AZnHanvh**U^vA75dm~Pw{$?)ad~#$ zWjYt{yHe^QnwSwu*))n%M0OiN_j9|-WKc^JrakB`$4eISgG1A6`U6MaHxo*hR+*=qZCY}BMC8^QQNXxZAk4bPxSb_2q&9w2 zCGVSbl89|h-LOjY%%!nP9~zSWp>VyB8`1&Q`)1F&XFp8pK9rQyt@K!KxL`OQVH#yw z)qK@QQkbX+8=C{Dmz3GnyUguuq9v61PJP*IYpND=(yp28hzNy3q_#TwJ1Z%GQ)Mb9 z*>p0D%2Xa-h4D%#{7L>d_FlDQ)p-P((;h)l#E-N=^q3 zpif7NB6wPtBf*n{kv*%IzN5&c@#pa8PVUHWt!XjK_s4^b-%B!YweEzH=#b2_cyllN z`GZW{k||t6lhoYv;I19pL||7j!K<;(nD`e>iIWd~l~2 zu15dsq9F~Fu#jdX2*X!FdoE_nTb}Dl`4eXZ+h=~8D-tH2=5mjPDcLXY_>dI8L*@RGm!qPxb$z+jCRHNZLMy7owdyQ79g4^|4ZGw*6oa9_tT6=wKS5KV4I`olb}VFh?& zzbKBV8iNh~Xqt;ysjdY>3?Tl(T@Y@k9OFd%knD%R1-;@1E$%M!f_woHu^HF!{k(f|*%2@AJa`nb5kV1Alu@R`LiO?fL#3rbmXr83UfCk?J(yl~zOGg2 zFwcpaDJTXT=x*Zk*D}QrA+%{3muz|Zw^geQ@<(^tt{O5KE1P8z$)W0;RQ;AVlc@I{4HHSnwFuoy1Rw1id)_A zhAY|HDMU?!JEoy{vD!l_4al6A@uR_u0QrRK+6O~mk8hr#1I=bv(AfP~)rn$rCH3pnc75hA`f^AhUPRDxIcX;#KW=6v9JVw`yq%+$~o5;2! zGQVyHwrmeCzi8ZIdbaYARzRDjNhtObCQ+0ze9)^cH(eZLK>we!OR)NT7gnxV5o zL(@1~4`MZysPY|!o&sx@AoQS1iicIs>#cAADK%Ng0~%7Zu`Ngp;pBn*=C6Y3pTeHO zk=F&vJioVXl1#c_fTLWP{3#zxOqV-+AmXwiPw31!kuj1k_)+;_gIb-N)0PYEYJ*rc zLp3YZ${_w%0q0F!rD@vkr6iX9%a9I+DnXE9YCdDSqQKa_rq!ZKK@7nB={22UQ?o!G z%k8wvUck9`<5DGQomkecJ)J0g&}*$=AzAuz%Ss40svF=@vuA#~vNsQP6ORv+d;QmL zD&(d&?(1u{^TUEBqyGN~+14f~?)$Fw@U-LI++D}$vC7P0W)6KKay3bZK^j019sbhq zRSmjE##8?jv`M&EWR2AFp1w#BR8$FIbq{;VxE9S~un!dPEvbW^kyDF__g4B`H@Tq(?x}AGn~wy6rLjuduqZ zkklVswaw*#*5N3I2@X*`t}$>F6+X`Tff|G6)B-_ z@I93`y6w|^8SL-!RJO`ygO;^g4czOcLMjr zmr9mn&^aKh;;g|9Wx09P0tWvlq(=z*veeDD>n3PSZk zm?qRSXwq&*4rIj=R7pY68t?CUrIBw_Jd_n+1%W2T%SHnXou9cr6_NWTPM9_#VlT-h ze(T~#?+}Mog!Mb}s944i{}{=RJ=NdV7i>cORfRyZjg~|L1h$A|VL&oJ{E~CCC=Sa~ z_NhdsR_zI*;yE9tTnT>u15TTxCxQIb(G*P`*eq&sbj3aW=ZRc31M}w6k8ce1j9(}4 zOyuxXREtO4EYDbyCh)#>{8fjRL~lEM89GK$=C6}o!Uk~CwSJy#TyA^_R5Ln&mTzvb zE`FZ8ofyaa!vTF7)Qv~^QVYPGZ_k0A5>2RG=fJ5>$L?PEX$Ls;c&iyo~JW96P&Hw7$jI}=w} zZ3L5`nwkpAEM`|`X9y=8ORlU>1T1kw0#B?Khjq1*SOmo90XX&-G#*spehw9k@`6S< zdg3D_DRY)7rO=?0+dCM>JL#cs4Nq(T@q*o!47qulIZ*V*U&f@72rY>924WoYiRy6ijdr=(Nkq>ZZ$HHumP~D zSC8%0w*()EA9ud!sGp!q?S*bPMpO`f0L%(1fy6`UG2Wdlu_UIRY~BM6dUEemOeJ5==8>N6_Lj zDZopHus-@Yq`K`v2nz1{Sh?Z_n}RR=iA)SRfy^$^^?!A-T%VGcFtO@+7}pTk&Hxy_ z$Zi6ktj^?2Ks!T~8^YysxlbGucDSv)wc83v`y9XJZ~?>hF!Lm~ZcWzm4xo!@XzcZ) zO(ne7+Z5Jd6)x-YPan6i`qYFm+d-X_=7DjsH&Wr z@QP_aEMRr8=k$7CExA4$6D`e}098(f?eb<$$Pw>6r!B;x2#s?ELvEZf;`pnS-|GV1 z@z7J0W#@EKM`cCkFmcKks5$u9Wtr2~fSq*j2FaRnp5v=0D9I<53beNZ+bhp=IbMSs zK7zW=_V2B7`3Mzj#>}v08cvh?6bsvz+m+&{r+ZRFL2Kd_5ku=KSFkqj5c5#pG0y9| zE1+BOLgAh$8dZXAZVkXrKz64OzJU#{C2`;_2^lA+`GnAig2p`~!h32SvJ4~~h?5=p zaGv?+_g83DcS)jx_Th9E1cXIa6E?nIq=fDH^DNu(dC|cblf@i7s@eI^xABg<(?{SZ z31C)ANXGtmSzSzh?~WxVWcyLqCOtF7l?G`CySe9V{j1j=Lw6QCj^&?u&GSs zi}h;ZcKV7P9Mdr*FS!D=MC@&&IRrt~Os;dL&zdS8f)5^Zx&cBTDQrngC=yZKLZers zV;7-5j~zoOF$pVo$Y)44Ali_>2Okci^hAJ6h?xeu-?6c(BPc*rir|=LrjZ)7i0x~W zY~=zFqfYIL4Y_K9*9T)WefTn#Vpyq7Hm~;F#h{-ef*(a(tL80;@u2DUq>B*OU1swa=@Fy(*ib+s_EBbFsBr-(~k?bw3F>q9|0zA)?! zC~=yB^^w$n&({QO_*MS=I3u^p`F0wfQEs*vLi$BBj9Xs)jbES%Z}yK%GPhM7S#wGFl=%=Ts*t$g zegr&?_&hFS!*x=>^XJv`CstImhx&gMtqWTl=!em8y&1X5N+#!h=&GCh+Z6rB@+yOz z#2ZE%*tJo?>G74-i?+?rgkEFLN)U(xmB$ZmlDtwRwy$dm_2>j8hH$HEzxi@%x5vRB zWqAtoeUX16y7Sa3-!&$m(-WW{^1lv#$&@7lxnqdb>o15cdTGKO83aKG9mdIrFB5Rm zQ{nHm{ZW_#WNk@Wwe~Dz8l_w-IL6nA1a_*k-!&!jX{bS?Jw@EK(RI))>XgvoN1aKl zd|0bZT2soGEUTxBx%WvD{E32@0bM^bqyxsTm4p&~{tAznY93dr9d5 z{|KJvp`O6@K7M)?3zGAy12mq|Kup~xJJIaNdnYnZB1KmE-9_*pnDHCCH8}7BO7*n3 zjKP{Y3X>s&D?vFujcMW@5g`PVDbCQaC-;eR45lr0O`@7uFypzxoo8kTE)Z5FZNACO zK}1R7U9Yg#tDhkYqm`c@cvKcJcNi71;!Td@=fc;0a@rVAe`^+KZg^N(CrFn4#MkZ; ztliO|ei(=sP@p|Bs_nPjkJn7mK7R})oQs!#JH)wFrx&i{Mdt#T;m<$eG|mlLfN|{8 zXJiu$016Y^w}5*>lcyW9I&A>QV>;Fk5?o0_5m$JHLvJ)4!ch89bZ2KZuYa{<2f`{x zZ74dR>jhPcSuCHBrG{ogPbG#(nDBtRzpfC;yvIl~N(nrNw>vYuWMuev0GH1Nu&@fls(11`%BB7#>-tBIH$oGj!w*UPJsSZx%{-CS5BaaVvT-y6Iry?k*n_lk8L zzZ;15K?CqLXDG+80UC|;tGS>ZvcXKU)_UX~06{CUB&uwzUzV<8h+{Jx0DQmKi;yj= zT~{WzLSe~++}*vq112utc(FvYE@T~b!h5vG-Y&S6yaWl9tLmJPBg~{qxu|F)kDcYk zrNQ0PDj+DF4WnDKE8RXT*I&>WJW3s{nu7J-WJ!WOmcF?XX}ZLaEliis~pgsqbyhi;|gc)aN%7z2L_YIgu z%V;O1xf|Yo;+UkOu4+t>>>65sWiIz3PSvJiVTyiiM-q96oJgxJFVgw5ux+=*d@`7|3+ zsw$y5i}1s=s|xyRMt8GeB6@+^Wu}|BFv~f>xESRSrmi7btAc?8}$k}y?;*S z#jZ~W6YufI_Z({)=^{V5!^FzPq^#R-&X%KqT8z==GV_5Y^#2{0hG(A@I+D}$)1wZ* zcC;o?oGh^JM*VB`YXi#}3e(9!U8F9UMkjGQ&6|3@>Q8W(YN>?)UG%^vQqz?sS@*gf zYtu&~A$jufLTKY6qtbmggH1*vQ-X>NJ0IbTohT9ql!UuHgJKK-`){Bi$|1H@`#1sa zR;?sk;8T*!X+~#{O(1E?0}UxCnf^b4Z_lcHt}6nh59fLCKE_~JcrX;! zw8+rhGH+Svc4&TZ_<1Od#GdzyDbRwK0K#n7m9}B-+MHq*DMc_<%wYS z4=5^v5wMzYYb0NHK_O7Gl1IL+dTv338xc#lcWSYl*UF6mbn3IYqj!t=MJtc{uIfir zvqoxJQ>bJgqKZ7W`R{qwiT_RjvYGirL8bf%#A!M6{0Pa?DvX9FdvWhkuV^P!%1b0W z9g$-Hrkz2a*R==K`D7;N85<&UH;TV|lc2ox(cBRsg9J04;`ag<@{UOcg0906@gL9t z5`(alRNpegJNDvU3%0cXq#fB(!j6fUJYmtO>sk9%gZ zP|tv)>o3Sp#k?p)_t49*cS=voM!KAS+RxwL1bn;0cS3DV>S7k^ZCMohihFShLpa^& zLHvWq#7cnC)>LpKbopU1&j01TsP*l&Wf@<&V8KoU*41&XYLPE1y1>|Kkh#Vgj7%I% z?|Svr1SH{Igi)ihP;*KXrZQ&!G$&t}tlby`nIAS`4u!jQwD!%|Iqi#SQD(5ulfCUe zcE>#X5baG0{Z2?2k_b&07FEB=Ttwhw4Q`uwKtle-^bpRIGHn`=tbgCMWg>`&>>wQi z%A(fEFj{r%GcDZCfhik+snr8WIxQn2iG96BtV}X)&Yq-$e;Py0_D{3RF3Oz))1?h) zEDb;vp2b&J(lx%Wt+Gq^Vk*gr+`pX2Juw~vW8Zc>ZSQl_xZ}fUX6~M2#__)RIV@_= z3|%ky|EmPEz`$k&xdxKfUA*oC9Pn|&KV4)(RY6d>Ohxr6fa4M!!9$T}8k>2iZ(%U_ zw}#xAQ>{Q`0z1n@aC;yboxtadUyGNN zexvtC5x@C1Ib9j}T-s+O&wdA`HEgvlvugLBUdgqDh&@$+`yT;H7XjDa!p{$42{iYw z5(_tcsl!$A`|Vi0g20m-W8+lM^VeOpA!Tjsb)44Bh`7OdLnPDUS$_G#;s6oK5Xj-rm9FDPh+gUQNys(+y}1+dL9V3k645r4^W=-f{da0IjNk#1!sNwk7n6* zwOAN_7LiQCc!7&7+^fm~O=c-;JCT2wyBg;4c|8zzxxe9_zC2|%B%Msx4d9}*T2_g1 zvixn=2z%SKH@}G;KjDN<+mD4O+kJHaRdndo=_{>nY2Y&Dh9G!eZzINr>`KI;cr}oQ|Ng_KHsTd98QT)yjt{0$qq+ zu4Ts#S@Tci`E5H}dym?DW$4B#3yq%<}E5PQ1UDQo!P@n!SEsI+YvwG!p(1J@^!!;{=+lt4MO@q*^98w3}S7nvYN z52HEW@qJQs(z|AON~zN+u2m3rOrhwvCe{YWYO;>e0<*L%6m_qteM!C4PD0BJLb7gAjxm>iL(b>mNQFO=TVSKNhJ6|TWG+V z(xSuGdEXEW$^|LFl!y89m1Em{D3FZ^*ai~m7`s{BFw-|9t+BwL76yBArBTks)^Uh& zbr}|=D(6BB9jpW!(%TOX1|)aC6IPi~u?pY$`CksoyuV+$7P0O_0|?BGIXdkj)h+9> zD=S;Hlo81bLS)nVKu+9k66Yn*H<}8D zO)LMaH~OQ4)=oT+%jGFxkB7`pxS_{3n)dn@lq^Pjre%lN!gCiiA*>Y5;}XhPo~%-i zoqdrFF#>`F)t1#b{a@$>PS3=35*-rt69rkgH-d3fsDtWCLFtsTn){wZ9Mz)E*QN5>DY1Q7SeD@2 ziP(C*oaHq@-ba-@uN)o}RZT@)B)(ZW;~)(eJP3Lboo>dG2t3s7re++%imn|s$-!7H zxs&8p85J4<$R0Q0nY<%69yx=S$n26$!3QZ2xol+K6no9grUZfwrFdEe*4vz!g{jEq z3kHC%7qs+6hck|Q1DAd@qViLJczOSZRKy_G#5L;p3VzVFZ9F7t*_q~1qGwEWBBSOzcaU{05E72(ILhU+2x$JxJ3vwfpCi`zqI8U`N{Z6`EZ1N0y$hl@D5=#s6GW+?OBW3 zP;;dK()?~Mvd!mC`h%xY3tMiPm-d2ksM&ErlickDUOs&Jm3`)#jq^HVpb2h1Zl6Da zg6^2kk>vM1q>gdDMpcvt#CwClY4-{iVW}UR7dzcO5Sr5_D)(?-+?dYgu$QXAuF>U! z8QO<4R3#>xa3|Azz}+CV=&6~b>sLLdTG|k~OPcYI*RF>At={bw$$uuMdLJ3qp-@3K zu}p1klbQ9DXpT7FnG%?NY+}#VY;p{_bT3Yc` zP;vw6;J{@2oK12IftY*uv8~a-eeH>jJgb`LS1*xN()f&TRiaQ5y|JtQ1 z7=6E(TqOvmet-E4<;95&=d(aW7k$#*l)UsM)`Q{B#2-ASLN%|jmdpM0(al~w*S%e( zEqRvChgoq}AY2cNZuQ);n%;znNM}sxO&_wIQ5uWs1(5_c)jqCnTZLdMrDM@!2f->4 zOL$O4&?)zuv`eoSn|1XoBcGXXe{8Ng~ zDg+YPfyvoD>YG)Z!{#sWjKtM@>-s5Xq;s9;p84~Bc&0X>Mvgj;%fvR2X0S=63#Rkn zuP4N+)7ajt9L8TR3Etbwd6(fqIMZCyXPozox|=f>oW(O;{z3H@R#<4qH2ETsLTZjS z8GsqNBmsNCcxDLr#7M3Ir~CWYZhu;erlE&i*GFKdf-)=ajBCR|y{zrC!~KpB=76%l zstQk9lgb4os3I#+kEp!!OAp=!9}&)Ots>xK(}n|HYdv9JggZN*tmM1*6$V%R;W?u$ z?%<@RWIFap%^-BKBXCd*WK^|{*l{TvGXWZcJ#!rKhy;4Ly8D{dPG%aaqqK- z<-#(ti_Px< z_xm!Lz}V2^$MiQn5Nd zA${5lq(@d#%_rHD!7;V=f-F?eoZv_UjTB-u-64`2Cy;aZ&Mq!%G58KK{cZ=J+b-}l z`?G6%dX_m~>*8R0M8>qfFfd!k3zZ%`sUJXX%0QwbZCp3&SqC`Wm9=xzhniQKI#}0h z4^EU|7?3M)zs!>O(9Qg+vyw%iM%n9m-}bG$JYtrw(?YwBPyzXG`wrX`mAbFGvz=!9 zYJ`&ev2%7lW>(T}wJG<+lg~D{ju8DkLPqq|LJuM$B2tP&P=PaxXS@FfOvlzLe2@}F zF|Y!TGZ>l89$(qezP+SG8KCFe^!(0@Vkxq^t z_l|FUa3tO;H%*$MyDue)sqUMHKevtxyEr*InWnF%^tT8VF{2Jp(?Gn`zzUjo)Uq_l z=VdHz;k2S6N)Jz(wp=Hq^$@h;MVN08)_uSj{%TE>H3NyzQTYC{-W#3|AT#g8!}wO@r~N{W%%BP zC_p&{Xha_HAJtjw3sR%MYeZOM>FwFg4P-ic&_4~Ay;UL<%XAF?O*Y-cTfHZK#yCf&A%3OCa{{+U#?MWVD3Dn~MO8aRCjIgY z6^#iGxi0goA-YJ+xRbIK68!)O!99O|%=gCQnnKR;m^&SeM$bfCrulV+3AaUCZxIzK z2r8IdfOobnv7rb_TUuwxy5G3)hasUFqLYBaSCyC>~W4085N6A+WEMZCwDt^KxPv4 zF6x_B_)&1{`hk^h-N_6u0|^X7k0Ig>5S;oFyGZ|Me%B8!26w-kiINP{C5S67!Vggs-*kL~g^CxavtPR9NA6X*=&!D7rzs>c@8iekRO z9eF&JVevFJ6kWbFXlb~ig(IxBf>yQHn56E`A*XJN{eRbm>qx{>~9Jj<* zcItrotm(?oL**2qzB+n;2o%(?CDp8`5jV+sQ9=vpt&9BT)qUm5<*#4^kf&RdUl{SQ zQ`VC9btcG;%8HBYmwGn^B8OLdrRuVO=@3D46frdW;>M1wK~2sH-DFr$NiPP4DFo{D zRaPrH9|?w5Mdc4kpDG^-|5hb@xsKRtYa3~n0t9Kt)ZiKDS(omI9TDX`R02&|y??76 zPMlyDoARB+Y|iPkz_vhdg`69y6d&fZMmi-#uF?^*mJ{_TAqnwmGe45grew8bu$=GIO)wT&$DIz z7$(Jre&inOYf^yApEhu&M?sQIUYWE>bC4=zUsE zdQ)#H)gTZWrJ6b|*qwMTb*@%l3kKv8qQ#A|&-h6E9tKtVP_dUy%l%0@o@*?XG zyX!~}aO6u+v>gNVFl#M~xb@e)E%ZT>|HikLmjhc)Q(?4|?M5V7DBn<2JeNev6p|wm ze$*&{D;xZ23`c(|$&kJKCJQ1V-VbT@U@P+Sll~W5O;A#M6%p}2MY;{HGecb8`r~p( zNa=h+76V5GKRAVwH^n;C01-8CXn|rS5f+16##~$Rm@{!ghy6521-Izk_rGfuVU0%z zCF=xlzEX*LnQBN(%cv{M_1)d@-TaSci%j-%vV3(bd3R ze#7E?OJ75*o6^T$c{7831V#}Kg^&cG(n>aAwjfhLtRZid(@34P2Noxx5W-Sxgq~y! zAmyvnH>Npx+l%8H9GUx6n-_9Ksa=C=5dhHygs?V}nTC$5w^t8vU) zdf~s^QQ*0GENMKTH@o2?gXSs=omjiLwEYHj#x?7O7KVhF&r^Wp1E~QPLaW&G@od!j@Z=>p-2f{7Qp^RQT@ zPF%sda5JDdHyw{V>8@BUAa^x(p5ar7*RsPMC`pN};_E)~F2z^9?~Ojp0_A~!RgqB+ zkD%z)Ue(jNFLjNpgsr<5x>+Jj0R!LYmmHLvI0R}R`=Wk=6M!AxPF(@=pGe0-0LqvF z>VjFPrh|prvHR{&j1jJACHVFj?3QqDMs0{?)AfQ}dJ^`gN8`Qsw?;K3)EaPzm=12T zrW+R9y0Y)LgL4EuGorQH+a9MMe`9d}zrS`^>tMtVZIYK~u+62r7J={O?GU^Bi*`Rq z?p_rTYS$h*SyW&vO|+qf4lPc*a&>2JPmHC>+>V;vdOm9wDS3I#lF8$R?{6abi2*wg zTPtHPCZ9F}BAx&bWyT|2f#@7Uuc@z-(&?%SsYTWm=aC@to~gJ)RX$PlME~m;QaFi& zG&%K@Po+9(NT!N_+2s{qRhIp{NsK|mNkT&Gt9=8W1Old2p(Aa7l8?J^!xOF{mWk4T;_2N1;(Pg9p0R#1?ZK&^5zGfU+Xeut=mN?QIA)_| zgiO~xs2Ou4wWSGvRbkU=;XxsTmQfzycv?%T3$%sG+5z|sOn^PzN=L^?XbJN>Oq7CE zVOQ9Rg4jukO(DLe1eS6aBFc0<-oLGUw}PGFPa=@Q43ulfZF&sm3zkLJUm>+Rn>uT@HgwH@1;nAu$VQl+ZqpLC&-e_E`y$SFQMg8mk$F zrNGx(9yW^o_7N4QG7+e8nu@s;$BgQvdD}<)R zzC$`7TYL--qbI;OBfj4UlQTm&LB4u6n=gLzrGf_2HpRpL^kya*h)iSpbV18=kAM4- zF}GkzXgO;ijL77WdWKCpnzRWeprx89EkTFn3bRRzGG=l%EP`lljIJEh93NPbR8w;0CsVEo-_S&KzR#513HmUs6 z$)g^X_ihi=w)ztH_GT&s{i{~z;d|McWzFD-zddjqR;He~UR%MJl6c%0e;QoH3odjj z#CFez$X=A{GV{$@at_+qFbl`$7V_cfBfr|stI*DjJ0&{|=Qt>Gd!t4?=tBF3BR$gjH)(Mf9qSsa;0;&!qAe>9ra_lq?gCm-wFm_XeM?mj#fRW z_U?(0#`A&JbgYs@%R|Qp=!)zLvanD=zDLmVj>d;J-d0B|ntlUrlRSJu^tZY|k;wH7 zBVx-FZ)S+i60YHu>M!3eNV>OSP*PqnmeK8tmr%QL9Zt!2?^?GlhKGu8HTqx-H}L@a z29<|8y#3d%Fx1GrrrY%OGBF%3l(5WiHN%B8$D_vEVLKkQzg*~mxj~dnpMtLm)Ib1K zEUP=BFAp`O_A+RlT2Ry-(7B%!>`?BQ{aAe<5i0%cTdRI1=axm3B?8^RAB)NTaF;Hf zz3rF0wGIZjRC2y9zNdF^wT|FglTV&7LVn(3i<9hDEK1_QuJm<0Madz*g< zYjGr$OO$&e?y5EdoY+8X93d~2(K`>C%SFdOSg}$=y@4QVl>)QaMF>+&$u;CFGt%xQ zo?{|Or&^kXs%n`w#E&_u-?!1SL%+VMl?C}3*#wupci*AeBKc{fHIw67VY^y2S4Rl<(q684vS35Kr7>Q3uAUB@ znj?&8?%aZ^tBC|kprMd|WVQ4uv8^plI^i<1OVe!i3pUVZmVm@i{Sk3zQ;L~y^YL{B zgvN)X#F883GxlApd<`#yDEKGUprg}N+w)N5GeDl!f%Hh9{p;XM+pw&6)Xl?2d?tBu z+HZsNTaB!rO?@|20u*6PnZRaK-kk94v3`^G4IUd&=|I&72-{=n9|ckh2Djx>u>VR}4w z4I7@CurLI?bxr#eCj#&+xURQ#Nzer`u(x1>364Oq$Q#fF0X3W&lueg*4bvJHLN4CB z=f;FdQP&C4Q~6tOq@-{|nu*x|6qz}Tq6df-CYtbl03qa8hq=DeOi#~X=C6REY}Kz; zQP*Dx5RXPNOPKstS=Qq;XNRahK-uRV1^zk%C{0>^RlXzX7`X30tCzX^1xTir>Y_vG zTK*<0_)iv;K%L9s^XVEYLD!1h&a!vMJmuHITwKy=eo22p6!N)PkP1)NWcvbiuKiL{b(o zE=ri!JLmDruDDufO4T>MCimf*UZz)+4J)}oYy|UL-2lcFxv{-{stc95A)AD2be7LO z)RgXH5eD3pX+899&TMFOJhYopn`zsH(FJ`)-%}jzRsTV2xLl@sIVxAvcwX(PT-fFU zR_~67^RT-UQh`7Gi+OM3srVRPJKyFNBUU-p;%LHojPoc%G@vegi$N;G>g}TzjpzGy zxGK>+JEOo!A2uu47}eH-P-h$3?RGOzg08AABb;yGXWD@&BH;qcHN)2B1z04jJ4+6{pc{EJazsrS-%@TvzsyTNXg;(y{8kWJ6?Imyxaqhu#x z1$XvcSQdYX91H$mqKk4xA+n}yB4q)P7`;`|)hjcLp|wF+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},M=function(){V()},R=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&U(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function z(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&R(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function X(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function U(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,r.msMatchesSelector&&ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",M),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="",le.option=!!xe.lastChild;var ke={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n",""]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function Re(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="
",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return M(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return M(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0 - } - } - - const editor = createEditor({ - selector: '#editor-container', - html: '


', - config: editorConfig, - mode: 'default', // or 'simple' - }) - - const toolbarConfig = {} - - const toolbar = createToolbar({ - editor, - selector: '#toolbar-container', - config: toolbarConfig, - mode: 'default', // or 'simple' - }) -} \ No newline at end of file diff --git a/static/js/register.js b/static/js/register.js deleted file mode 100644 index b1bf5e8..0000000 --- a/static/js/register.js +++ /dev/null @@ -1,45 +0,0 @@ -$(function () { - function bindCaptchaBtnClick() { - $("#captcha-btn").click(function (event) { - let $this = $(this); - let email = $("input[name='email']").val(); - if (!email) { - alert("请输入邮箱"); - return; - } - - $this.off("click"); - - $.ajax('/auth/captcha?email='+email,{ - method: "GET", - success: function (result) { - if (result.code === 200) { - alert("验证码发送成功"); - }else { - alert(result['message']); - } - console.log(result); - }, - fail: function (error) { - console.log(error); - } - }) - - - let countdown = 6; - let timer = setInterval(function () { - if (countdown <= 0) { - $this.text("发送验证码"); - clearInterval(timer); - bindCaptchaBtnClick(); - } else { - countdown--; - $this.text(countdown + "s"); - - } - }, 1000); - }) - } - - bindCaptchaBtnClick(); -}); \ No newline at end of file diff --git a/static/wangeditor/index.js b/static/wangeditor/index.js deleted file mode 100644 index a2233e4..0000000 --- a/static/wangeditor/index.js +++ /dev/null @@ -1,24129 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : - typeof define === 'function' && define.amd ? define(['exports'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.wangEditor = {})); -})(this, (function (exports) { 'use strict'; - - /** - * @description browser polyfill - * @author wangfupeng - */ - var _a; - // @ts-nocheck - // 必须是浏览器环境 - if (typeof global === 'undefined') { - // 检查 IE 浏览器 - if ('ActiveXObject' in window) { - var info = '抱歉,wangEditor V5+ 版本开始,不在支持 IE 浏览器'; - info += '\n Sorry, wangEditor V5+ versions do not support IE browser.'; - console.error(info); - } - globalThisPolyfill(); - AggregateErrorPolyfill(); - } - else if (global && ((_a = global.navigator) === null || _a === void 0 ? void 0 : _a.userAgent.match('QQBrowser'))) { - // 兼容 QQ 浏览器 AggregateError 报错 - globalThisPolyfill(); - AggregateErrorPolyfill(); - } - function globalThisPolyfill() { - // 部分浏览器不支持 globalThis - if (typeof globalThis === 'undefined') { - // @ts-ignore - window.globalThis = window; - } - } - function AggregateErrorPolyfill() { - if (typeof AggregateError === 'undefined') { - window.AggregateError = function (errors, msg) { - var err = new Error(msg); - err.errors = errors; - return err; - }; - } - } - - /** - * @description node polyfill - * @author wangfupeng - */ - // @ts-nocheck - // 必须是 node 环境 - if (typeof global === 'object') { - // 用于 nodejs ,避免报错 - var globalProperty = Object.getOwnPropertyDescriptor(global, 'window'); - // global.window 为空则直接写入 - // 部分框架下已经定义了global.window且是不可写属性 - if (!global.window || globalProperty.set) { - global.window = global; - global.requestAnimationFrame = function () { }; - global.navigator = { - userAgent: '', - }; - global.location = { - hostname: '0.0.0.0', - port: 0, - protocol: 'http:', - }; - global.btoa = function () { }; - global.crypto = { - getRandomValues: function (buffer) { - return nodeCrypto.randomFillSync(buffer); - }, - }; - } - if (global.document != null) { - // SSR 环境下可能会报错 (issue 4409) - if (global.document.getElementsByTagName == null) { - global.document.getElementsByTagName = function () { return []; }; - } - } - } - - var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - - function getDefaultExportFromCjs (x) { - return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; - } - - function createCommonjsModule$1(fn) { - var module = { exports: {} }; - return fn(module, module.exports), module.exports; - } - - /*! - * is-plain-object - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ - - function isObject$4(o) { - return Object.prototype.toString.call(o) === '[object Object]'; - } - - function isPlainObject$2(o) { - var ctor,prot; - - if (isObject$4(o) === false) return false; - - // If has modified constructor - ctor = o.constructor; - if (ctor === undefined) return true; - - // If has modified prototype - prot = ctor.prototype; - if (isObject$4(prot) === false) return false; - - // If constructor does not have an Object-specific method - if (prot.hasOwnProperty('isPrototypeOf') === false) { - return false; - } - - // Most likely a plain Object - return true; - } - - var isPlainObject_2 = isPlainObject$2; - - var isPlainObject_1 = /*#__PURE__*/Object.defineProperty({ - isPlainObject: isPlainObject_2 - }, '__esModule', {value: true}); - - var _ref; - - // Should be no imports here! - // Some things that should be evaluated before all else... - // We only want to know if non-polyfilled symbols are available - var hasSymbol = typeof Symbol !== "undefined" && typeof - /*#__PURE__*/ - Symbol("x") === "symbol"; - var hasMap = typeof Map !== "undefined"; - var hasSet = typeof Set !== "undefined"; - var hasProxies = typeof Proxy !== "undefined" && typeof Proxy.revocable !== "undefined" && typeof Reflect !== "undefined"; - /** - * The sentinel value returned by producers to replace the draft with undefined. - */ - - var NOTHING = hasSymbol ? - /*#__PURE__*/ - Symbol.for("immer-nothing") : (_ref = {}, _ref["immer-nothing"] = true, _ref); - /** - * To let Immer treat your class instances as plain immutable objects - * (albeit with a custom prototype), you must define either an instance property - * or a static property on each of your custom classes. - * - * Otherwise, your class instance will never be drafted, which means it won't be - * safe to mutate in a produce callback. - */ - - var DRAFTABLE = hasSymbol ? - /*#__PURE__*/ - Symbol.for("immer-draftable") : "__$immer_draftable"; - var DRAFT_STATE = hasSymbol ? - /*#__PURE__*/ - Symbol.for("immer-state") : "__$immer_state"; // Even a polyfilled Symbol might provide Symbol.iterator - - var iteratorSymbol$1 = typeof Symbol != "undefined" && Symbol.iterator || "@@iterator"; - - var errors = { - 0: "Illegal state", - 1: "Immer drafts cannot have computed properties", - 2: "This object has been frozen and should not be mutated", - 3: function _(data) { - return "Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? " + data; - }, - 4: "An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.", - 5: "Immer forbids circular references", - 6: "The first or second argument to `produce` must be a function", - 7: "The third argument to `produce` must be a function or undefined", - 8: "First argument to `createDraft` must be a plain object, an array, or an immerable object", - 9: "First argument to `finishDraft` must be a draft returned by `createDraft`", - 10: "The given draft is already finalized", - 11: "Object.defineProperty() cannot be used on an Immer draft", - 12: "Object.setPrototypeOf() cannot be used on an Immer draft", - 13: "Immer only supports deleting array indices", - 14: "Immer only supports setting array indices and the 'length' property", - 15: function _(path) { - return "Cannot apply patch, path doesn't resolve: " + path; - }, - 16: 'Sets cannot have "replace" patches.', - 17: function _(op) { - return "Unsupported patch operation: " + op; - }, - 18: function _(plugin) { - return "The plugin for '" + plugin + "' has not been loaded into Immer. To enable the plugin, import and call `enable" + plugin + "()` when initializing your application."; - }, - 20: "Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available", - 21: function _(thing) { - return "produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '" + thing + "'"; - }, - 22: function _(thing) { - return "'current' expects a draft, got: " + thing; - }, - 23: function _(thing) { - return "'original' expects a draft, got: " + thing; - }, - 24: "Patching reserved attributes like __proto__, prototype and constructor is not allowed" - }; - function die(error) { - for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - args[_key - 1] = arguments[_key]; - } - - { - var e = errors[error]; - var msg = !e ? "unknown error nr: " + error : typeof e === "function" ? e.apply(null, args) : e; - throw new Error("[Immer] " + msg); - } - } - - /** Returns true if the given value is an Immer draft */ - - - - function isDraft(value) { - return !!value && !!value[DRAFT_STATE]; - } - /** Returns true if the given value can be drafted by Immer */ - - - - function isDraftable(value) { - if (!value) return false; - return isPlainObject$1(value) || Array.isArray(value) || !!value[DRAFTABLE] || !!value.constructor[DRAFTABLE] || isMap(value) || isSet(value); - } - var objectCtorString = - /*#__PURE__*/ - Object.prototype.constructor.toString(); - - - function isPlainObject$1(value) { - if (!value || typeof value !== "object") return false; - var proto = Object.getPrototypeOf(value); - - if (proto === null) { - return true; - } - - var Ctor = Object.hasOwnProperty.call(proto, "constructor") && proto.constructor; - if (Ctor === Object) return true; - return typeof Ctor == "function" && Function.toString.call(Ctor) === objectCtorString; - } - function original(value) { - if (!isDraft(value)) die(23, value); - return value[DRAFT_STATE].base_; - } - - - var ownKeys$a = typeof Reflect !== "undefined" && Reflect.ownKeys ? Reflect.ownKeys : typeof Object.getOwnPropertySymbols !== "undefined" ? function (obj) { - return Object.getOwnPropertyNames(obj).concat(Object.getOwnPropertySymbols(obj)); - } : - /* istanbul ignore next */ - Object.getOwnPropertyNames; - var getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors || function getOwnPropertyDescriptors(target) { - // Polyfill needed for Hermes and IE, see https://github.com/facebook/hermes/issues/274 - var res = {}; - ownKeys$a(target).forEach(function (key) { - res[key] = Object.getOwnPropertyDescriptor(target, key); - }); - return res; - }; - function each$1(obj, iter, enumerableOnly) { - if (enumerableOnly === void 0) { - enumerableOnly = false; - } - - if (getArchtype(obj) === 0 - /* Object */ - ) { - (enumerableOnly ? Object.keys : ownKeys$a)(obj).forEach(function (key) { - if (!enumerableOnly || typeof key !== "symbol") iter(key, obj[key], obj); - }); - } else { - obj.forEach(function (entry, index) { - return iter(index, entry, obj); - }); - } - } - - - function getArchtype(thing) { - /* istanbul ignore next */ - var state = thing[DRAFT_STATE]; - return state ? state.type_ > 3 ? state.type_ - 4 // cause Object and Array map back from 4 and 5 - : state.type_ // others are the same - : Array.isArray(thing) ? 1 - /* Array */ - : isMap(thing) ? 2 - /* Map */ - : isSet(thing) ? 3 - /* Set */ - : 0 - /* Object */ - ; - } - - - function has(thing, prop) { - return getArchtype(thing) === 2 - /* Map */ - ? thing.has(prop) : Object.prototype.hasOwnProperty.call(thing, prop); - } - - - function get(thing, prop) { - // @ts-ignore - return getArchtype(thing) === 2 - /* Map */ - ? thing.get(prop) : thing[prop]; - } - - - function set(thing, propOrOldValue, value) { - var t = getArchtype(thing); - if (t === 2 - /* Map */ - ) thing.set(propOrOldValue, value);else if (t === 3 - /* Set */ - ) { - thing.delete(propOrOldValue); - thing.add(value); - } else thing[propOrOldValue] = value; - } - - - function is$1(x, y) { - // From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js - if (x === y) { - return x !== 0 || 1 / x === 1 / y; - } else { - return x !== x && y !== y; - } - } - - - function isMap(target) { - return hasMap && target instanceof Map; - } - - - function isSet(target) { - return hasSet && target instanceof Set; - } - - - function latest(state) { - return state.copy_ || state.base_; - } - - - function shallowCopy(base) { - if (Array.isArray(base)) return Array.prototype.slice.call(base); - var descriptors = getOwnPropertyDescriptors(base); - delete descriptors[DRAFT_STATE]; - var keys = ownKeys$a(descriptors); - - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - var desc = descriptors[key]; - - if (desc.writable === false) { - desc.writable = true; - desc.configurable = true; - } // like object.assign, we will read any _own_, get/set accessors. This helps in dealing - // with libraries that trap values, like mobx or vue - // unlike object.assign, non-enumerables will be copied as well - - - if (desc.get || desc.set) descriptors[key] = { - configurable: true, - writable: true, - enumerable: desc.enumerable, - value: base[key] - }; - } - - return Object.create(Object.getPrototypeOf(base), descriptors); - } - function freeze(obj, deep) { - if (deep === void 0) { - deep = false; - } - - if (isFrozen(obj) || isDraft(obj) || !isDraftable(obj)) return obj; - - if (getArchtype(obj) > 1 - /* Map or Set */ - ) { - obj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections; - } - - Object.freeze(obj); - if (deep) each$1(obj, function (key, value) { - return freeze(value, true); - }, true); - return obj; - } - - function dontMutateFrozenCollections() { - die(2); - } - - function isFrozen(obj) { - if (obj == null || typeof obj !== "object") return true; // See #600, IE dies on non-objects in Object.isFrozen - - return Object.isFrozen(obj); - } - - /** Plugin utilities */ - - var plugins = {}; - function getPlugin(pluginKey) { - var plugin = plugins[pluginKey]; - - if (!plugin) { - die(18, pluginKey); - } // @ts-ignore - - - return plugin; - } - function loadPlugin(pluginKey, implementation) { - if (!plugins[pluginKey]) plugins[pluginKey] = implementation; - } - - var currentScope; - function getCurrentScope() { - if ( !currentScope) die(0); - return currentScope; - } - - function createScope(parent_, immer_) { - return { - drafts_: [], - parent_: parent_, - immer_: immer_, - // Whenever the modified draft contains a draft from another scope, we - // need to prevent auto-freezing so the unowned draft can be finalized. - canAutoFreeze_: true, - unfinalizedDrafts_: 0 - }; - } - - function usePatchesInScope(scope, patchListener) { - if (patchListener) { - getPlugin("Patches"); // assert we have the plugin - - scope.patches_ = []; - scope.inversePatches_ = []; - scope.patchListener_ = patchListener; - } - } - function revokeScope(scope) { - leaveScope(scope); - scope.drafts_.forEach(revokeDraft); // @ts-ignore - - scope.drafts_ = null; - } - function leaveScope(scope) { - if (scope === currentScope) { - currentScope = scope.parent_; - } - } - function enterScope(immer) { - return currentScope = createScope(currentScope, immer); - } - - function revokeDraft(draft) { - var state = draft[DRAFT_STATE]; - if (state.type_ === 0 - /* ProxyObject */ - || state.type_ === 1 - /* ProxyArray */ - ) state.revoke_();else state.revoked_ = true; - } - - function processResult(result, scope) { - scope.unfinalizedDrafts_ = scope.drafts_.length; - var baseDraft = scope.drafts_[0]; - var isReplaced = result !== undefined && result !== baseDraft; - if (!scope.immer_.useProxies_) getPlugin("ES5").willFinalizeES5_(scope, result, isReplaced); - - if (isReplaced) { - if (baseDraft[DRAFT_STATE].modified_) { - revokeScope(scope); - die(4); - } - - if (isDraftable(result)) { - // Finalize the result in case it contains (or is) a subset of the draft. - result = finalize(scope, result); - if (!scope.parent_) maybeFreeze(scope, result); - } - - if (scope.patches_) { - getPlugin("Patches").generateReplacementPatches_(baseDraft[DRAFT_STATE], result, scope.patches_, scope.inversePatches_); - } - } else { - // Finalize the base draft. - result = finalize(scope, baseDraft, []); - } - - revokeScope(scope); - - if (scope.patches_) { - scope.patchListener_(scope.patches_, scope.inversePatches_); - } - - return result !== NOTHING ? result : undefined; - } - - function finalize(rootScope, value, path) { - // Don't recurse in tho recursive data structures - if (isFrozen(value)) return value; - var state = value[DRAFT_STATE]; // A plain object, might need freezing, might contain drafts - - if (!state) { - each$1(value, function (key, childValue) { - return finalizeProperty(rootScope, state, value, key, childValue, path); - }, true // See #590, don't recurse into non-enumerable of non drafted objects - ); - return value; - } // Never finalize drafts owned by another scope. - - - if (state.scope_ !== rootScope) return value; // Unmodified draft, return the (frozen) original - - if (!state.modified_) { - maybeFreeze(rootScope, state.base_, true); - return state.base_; - } // Not finalized yet, let's do that now - - - if (!state.finalized_) { - state.finalized_ = true; - state.scope_.unfinalizedDrafts_--; - var result = // For ES5, create a good copy from the draft first, with added keys and without deleted keys. - state.type_ === 4 - /* ES5Object */ - || state.type_ === 5 - /* ES5Array */ - ? state.copy_ = shallowCopy(state.draft_) : state.copy_; // Finalize all children of the copy - // For sets we clone before iterating, otherwise we can get in endless loop due to modifying during iteration, see #628 - // Although the original test case doesn't seem valid anyway, so if this in the way we can turn the next line - // back to each(result, ....) - - each$1(state.type_ === 3 - /* Set */ - ? new Set(result) : result, function (key, childValue) { - return finalizeProperty(rootScope, state, result, key, childValue, path); - }); // everything inside is frozen, we can freeze here - - maybeFreeze(rootScope, result, false); // first time finalizing, let's create those patches - - if (path && rootScope.patches_) { - getPlugin("Patches").generatePatches_(state, path, rootScope.patches_, rootScope.inversePatches_); - } - } - - return state.copy_; - } - - function finalizeProperty(rootScope, parentState, targetObject, prop, childValue, rootPath) { - if ( childValue === targetObject) die(5); - - if (isDraft(childValue)) { - var path = rootPath && parentState && parentState.type_ !== 3 - /* Set */ - && // Set objects are atomic since they have no keys. - !has(parentState.assigned_, prop) // Skip deep patches for assigned keys. - ? rootPath.concat(prop) : undefined; // Drafts owned by `scope` are finalized here. - - var res = finalize(rootScope, childValue, path); - set(targetObject, prop, res); // Drafts from another scope must prevented to be frozen - // if we got a draft back from finalize, we're in a nested produce and shouldn't freeze - - if (isDraft(res)) { - rootScope.canAutoFreeze_ = false; - } else return; - } // Search new objects for unfinalized drafts. Frozen objects should never contain drafts. - - - if (isDraftable(childValue) && !isFrozen(childValue)) { - if (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) { - // optimization: if an object is not a draft, and we don't have to - // deepfreeze everything, and we are sure that no drafts are left in the remaining object - // cause we saw and finalized all drafts already; we can stop visiting the rest of the tree. - // This benefits especially adding large data tree's without further processing. - // See add-data.js perf test - return; - } - - finalize(rootScope, childValue); // immer deep freezes plain objects, so if there is no parent state, we freeze as well - - if (!parentState || !parentState.scope_.parent_) maybeFreeze(rootScope, childValue); - } - } - - function maybeFreeze(scope, value, deep) { - if (deep === void 0) { - deep = false; - } - - if (scope.immer_.autoFreeze_ && scope.canAutoFreeze_) { - freeze(value, deep); - } - } - - /** - * Returns a new draft of the `base` object. - * - * The second argument is the parent draft-state (used internally). - */ - - function createProxyProxy(base, parent) { - var isArray = Array.isArray(base); - var state = { - type_: isArray ? 1 - /* ProxyArray */ - : 0 - /* ProxyObject */ - , - // Track which produce call this is associated with. - scope_: parent ? parent.scope_ : getCurrentScope(), - // True for both shallow and deep changes. - modified_: false, - // Used during finalization. - finalized_: false, - // Track which properties have been assigned (true) or deleted (false). - assigned_: {}, - // The parent draft state. - parent_: parent, - // The base state. - base_: base, - // The base proxy. - draft_: null, - // The base copy with any updated values. - copy_: null, - // Called by the `produce` function. - revoke_: null, - isManual_: false - }; // the traps must target something, a bit like the 'real' base. - // but also, we need to be able to determine from the target what the relevant state is - // (to avoid creating traps per instance to capture the state in closure, - // and to avoid creating weird hidden properties as well) - // So the trick is to use 'state' as the actual 'target'! (and make sure we intercept everything) - // Note that in the case of an array, we put the state in an array to have better Reflect defaults ootb - - var target = state; - var traps = objectTraps; - - if (isArray) { - target = [state]; - traps = arrayTraps; - } - - var _Proxy$revocable = Proxy.revocable(target, traps), - revoke = _Proxy$revocable.revoke, - proxy = _Proxy$revocable.proxy; - - state.draft_ = proxy; - state.revoke_ = revoke; - return proxy; - } - /** - * Object drafts - */ - - var objectTraps = { - get: function get(state, prop) { - if (prop === DRAFT_STATE) return state; - var source = latest(state); - - if (!has(source, prop)) { - // non-existing or non-own property... - return readPropFromProto(state, source, prop); - } - - var value = source[prop]; - - if (state.finalized_ || !isDraftable(value)) { - return value; - } // Check for existing draft in modified state. - // Assigned values are never drafted. This catches any drafts we created, too. - - - if (value === peek(state.base_, prop)) { - prepareCopy(state); - return state.copy_[prop] = createProxy(state.scope_.immer_, value, state); - } - - return value; - }, - has: function has(state, prop) { - return prop in latest(state); - }, - ownKeys: function ownKeys(state) { - return Reflect.ownKeys(latest(state)); - }, - set: function set(state, prop - /* strictly not, but helps TS */ - , value) { - var desc = getDescriptorFromProto(latest(state), prop); - - if (desc === null || desc === void 0 ? void 0 : desc.set) { - // special case: if this write is captured by a setter, we have - // to trigger it with the correct context - desc.set.call(state.draft_, value); - return true; - } - - if (!state.modified_) { - // the last check is because we need to be able to distinguish setting a non-existing to undefined (which is a change) - // from setting an existing property with value undefined to undefined (which is not a change) - var current = peek(latest(state), prop); // special case, if we assigning the original value to a draft, we can ignore the assignment - - var currentState = current === null || current === void 0 ? void 0 : current[DRAFT_STATE]; - - if (currentState && currentState.base_ === value) { - state.copy_[prop] = value; - state.assigned_[prop] = false; - return true; - } - - if (is$1(value, current) && (value !== undefined || has(state.base_, prop))) return true; - prepareCopy(state); - markChanged(state); - } - - if (state.copy_[prop] === value && // special case: NaN - typeof value !== "number" && ( // special case: handle new props with value 'undefined' - value !== undefined || prop in state.copy_)) return true; // @ts-ignore - - state.copy_[prop] = value; - state.assigned_[prop] = true; - return true; - }, - deleteProperty: function deleteProperty(state, prop) { - // The `undefined` check is a fast path for pre-existing keys. - if (peek(state.base_, prop) !== undefined || prop in state.base_) { - state.assigned_[prop] = false; - prepareCopy(state); - markChanged(state); - } else { - // if an originally not assigned property was deleted - delete state.assigned_[prop]; - } // @ts-ignore - - - if (state.copy_) delete state.copy_[prop]; - return true; - }, - // Note: We never coerce `desc.value` into an Immer draft, because we can't make - // the same guarantee in ES5 mode. - getOwnPropertyDescriptor: function getOwnPropertyDescriptor(state, prop) { - var owner = latest(state); - var desc = Reflect.getOwnPropertyDescriptor(owner, prop); - if (!desc) return desc; - return { - writable: true, - configurable: state.type_ !== 1 - /* ProxyArray */ - || prop !== "length", - enumerable: desc.enumerable, - value: owner[prop] - }; - }, - defineProperty: function defineProperty() { - die(11); - }, - getPrototypeOf: function getPrototypeOf(state) { - return Object.getPrototypeOf(state.base_); - }, - setPrototypeOf: function setPrototypeOf() { - die(12); - } - }; - /** - * Array drafts - */ - - var arrayTraps = {}; - each$1(objectTraps, function (key, fn) { - // @ts-ignore - arrayTraps[key] = function () { - arguments[0] = arguments[0][0]; - return fn.apply(this, arguments); - }; - }); - - arrayTraps.deleteProperty = function (state, prop) { - if ( isNaN(parseInt(prop))) die(13); - return objectTraps.deleteProperty.call(this, state[0], prop); - }; - - arrayTraps.set = function (state, prop, value) { - if ( prop !== "length" && isNaN(parseInt(prop))) die(14); - return objectTraps.set.call(this, state[0], prop, value, state[0]); - }; // Access a property without creating an Immer draft. - - - function peek(draft, prop) { - var state = draft[DRAFT_STATE]; - var source = state ? latest(state) : draft; - return source[prop]; - } - - function readPropFromProto(state, source, prop) { - var _desc$get; - - var desc = getDescriptorFromProto(source, prop); - return desc ? "value" in desc ? desc.value : // This is a very special case, if the prop is a getter defined by the - // prototype, we should invoke it with the draft as context! - (_desc$get = desc.get) === null || _desc$get === void 0 ? void 0 : _desc$get.call(state.draft_) : undefined; - } - - function getDescriptorFromProto(source, prop) { - // 'in' checks proto! - if (!(prop in source)) return undefined; - var proto = Object.getPrototypeOf(source); - - while (proto) { - var desc = Object.getOwnPropertyDescriptor(proto, prop); - if (desc) return desc; - proto = Object.getPrototypeOf(proto); - } - - return undefined; - } - - function markChanged(state) { - if (!state.modified_) { - state.modified_ = true; - - if (state.parent_) { - markChanged(state.parent_); - } - } - } - function prepareCopy(state) { - if (!state.copy_) { - state.copy_ = shallowCopy(state.base_); - } - } - - var Immer = - /*#__PURE__*/ - function () { - function Immer(config) { - var _this = this; - - this.useProxies_ = hasProxies; - this.autoFreeze_ = true; - /** - * The `produce` function takes a value and a "recipe function" (whose - * return value often depends on the base state). The recipe function is - * free to mutate its first argument however it wants. All mutations are - * only ever applied to a __copy__ of the base state. - * - * Pass only a function to create a "curried producer" which relieves you - * from passing the recipe function every time. - * - * Only plain objects and arrays are made mutable. All other objects are - * considered uncopyable. - * - * Note: This function is __bound__ to its `Immer` instance. - * - * @param {any} base - the initial state - * @param {Function} producer - function that receives a proxy of the base state as first argument and which can be freely modified - * @param {Function} patchListener - optional function that will be called with all the patches produced here - * @returns {any} a new state, or the initial state if nothing was modified - */ - - this.produce = function (base, recipe, patchListener) { - // curried invocation - if (typeof base === "function" && typeof recipe !== "function") { - var defaultBase = recipe; - recipe = base; - var self = _this; - return function curriedProduce(base) { - var _this2 = this; - - if (base === void 0) { - base = defaultBase; - } - - for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - args[_key - 1] = arguments[_key]; - } - - return self.produce(base, function (draft) { - var _recipe; - - return (_recipe = recipe).call.apply(_recipe, [_this2, draft].concat(args)); - }); // prettier-ignore - }; - } - - if (typeof recipe !== "function") die(6); - if (patchListener !== undefined && typeof patchListener !== "function") die(7); - var result; // Only plain objects, arrays, and "immerable classes" are drafted. - - if (isDraftable(base)) { - var scope = enterScope(_this); - var proxy = createProxy(_this, base, undefined); - var hasError = true; - - try { - result = recipe(proxy); - hasError = false; - } finally { - // finally instead of catch + rethrow better preserves original stack - if (hasError) revokeScope(scope);else leaveScope(scope); - } - - if (typeof Promise !== "undefined" && result instanceof Promise) { - return result.then(function (result) { - usePatchesInScope(scope, patchListener); - return processResult(result, scope); - }, function (error) { - revokeScope(scope); - throw error; - }); - } - - usePatchesInScope(scope, patchListener); - return processResult(result, scope); - } else if (!base || typeof base !== "object") { - result = recipe(base); - if (result === NOTHING) return undefined; - if (result === undefined) result = base; - if (_this.autoFreeze_) freeze(result, true); - return result; - } else die(21, base); - }; - - this.produceWithPatches = function (arg1, arg2, arg3) { - if (typeof arg1 === "function") { - return function (state) { - for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { - args[_key2 - 1] = arguments[_key2]; - } - - return _this.produceWithPatches(state, function (draft) { - return arg1.apply(void 0, [draft].concat(args)); - }); - }; - } - - var patches, inversePatches; - - var nextState = _this.produce(arg1, arg2, function (p, ip) { - patches = p; - inversePatches = ip; - }); - - return [nextState, patches, inversePatches]; - }; - - if (typeof (config === null || config === void 0 ? void 0 : config.useProxies) === "boolean") this.setUseProxies(config.useProxies); - if (typeof (config === null || config === void 0 ? void 0 : config.autoFreeze) === "boolean") this.setAutoFreeze(config.autoFreeze); - } - - var _proto = Immer.prototype; - - _proto.createDraft = function createDraft(base) { - if (!isDraftable(base)) die(8); - if (isDraft(base)) base = current(base); - var scope = enterScope(this); - var proxy = createProxy(this, base, undefined); - proxy[DRAFT_STATE].isManual_ = true; - leaveScope(scope); - return proxy; - }; - - _proto.finishDraft = function finishDraft(draft, patchListener) { - var state = draft && draft[DRAFT_STATE]; - - { - if (!state || !state.isManual_) die(9); - if (state.finalized_) die(10); - } - - var scope = state.scope_; - usePatchesInScope(scope, patchListener); - return processResult(undefined, scope); - } - /** - * Pass true to automatically freeze all copies created by Immer. - * - * By default, auto-freezing is enabled. - */ - ; - - _proto.setAutoFreeze = function setAutoFreeze(value) { - this.autoFreeze_ = value; - } - /** - * Pass true to use the ES2015 `Proxy` class when creating drafts, which is - * always faster than using ES5 proxies. - * - * By default, feature detection is used, so calling this is rarely necessary. - */ - ; - - _proto.setUseProxies = function setUseProxies(value) { - if (value && !hasProxies) { - die(20); - } - - this.useProxies_ = value; - }; - - _proto.applyPatches = function applyPatches(base, patches) { - // If a patch replaces the entire state, take that replacement as base - // before applying patches - var i; - - for (i = patches.length - 1; i >= 0; i--) { - var patch = patches[i]; - - if (patch.path.length === 0 && patch.op === "replace") { - base = patch.value; - break; - } - } // If there was a patch that replaced the entire state, start from the - // patch after that. - - - if (i > -1) { - patches = patches.slice(i + 1); - } - - var applyPatchesImpl = getPlugin("Patches").applyPatches_; - - if (isDraft(base)) { - // N.B: never hits if some patch a replacement, patches are never drafts - return applyPatchesImpl(base, patches); - } // Otherwise, produce a copy of the base state. - - - return this.produce(base, function (draft) { - return applyPatchesImpl(draft, patches); - }); - }; - - return Immer; - }(); - function createProxy(immer, value, parent) { - // precondition: createProxy should be guarded by isDraftable, so we know we can safely draft - var draft = isMap(value) ? getPlugin("MapSet").proxyMap_(value, parent) : isSet(value) ? getPlugin("MapSet").proxySet_(value, parent) : immer.useProxies_ ? createProxyProxy(value, parent) : getPlugin("ES5").createES5Proxy_(value, parent); - var scope = parent ? parent.scope_ : getCurrentScope(); - scope.drafts_.push(draft); - return draft; - } - - function current(value) { - if (!isDraft(value)) die(22, value); - return currentImpl(value); - } - - function currentImpl(value) { - if (!isDraftable(value)) return value; - var state = value[DRAFT_STATE]; - var copy; - var archType = getArchtype(value); - - if (state) { - if (!state.modified_ && (state.type_ < 4 || !getPlugin("ES5").hasChanges_(state))) return state.base_; // Optimization: avoid generating new drafts during copying - - state.finalized_ = true; - copy = copyHelper(value, archType); - state.finalized_ = false; - } else { - copy = copyHelper(value, archType); - } - - each$1(copy, function (key, childValue) { - if (state && get(state.base_, key) === childValue) return; // no need to copy or search in something that didn't change - - set(copy, key, currentImpl(childValue)); - }); // In the future, we might consider freezing here, based on the current settings - - return archType === 3 - /* Set */ - ? new Set(copy) : copy; - } - - function copyHelper(value, archType) { - // creates a shallow copy, even if it is a map or set - switch (archType) { - case 2 - /* Map */ - : - return new Map(value); - - case 3 - /* Set */ - : - // Set will be cloned as array temporarily, so that we can replace individual items - return Array.from(value); - } - - return shallowCopy(value); - } - - function enableES5() { - function willFinalizeES5_(scope, result, isReplaced) { - if (!isReplaced) { - if (scope.patches_) { - markChangesRecursively(scope.drafts_[0]); - } // This is faster when we don't care about which attributes changed. - - - markChangesSweep(scope.drafts_); - } // When a child draft is returned, look for changes. - else if (isDraft(result) && result[DRAFT_STATE].scope_ === scope) { - markChangesSweep(scope.drafts_); - } - } - - function createES5Draft(isArray, base) { - if (isArray) { - var draft = new Array(base.length); - - for (var i = 0; i < base.length; i++) { - Object.defineProperty(draft, "" + i, proxyProperty(i, true)); - } - - return draft; - } else { - var _descriptors = getOwnPropertyDescriptors(base); - - delete _descriptors[DRAFT_STATE]; - var keys = ownKeys$a(_descriptors); - - for (var _i = 0; _i < keys.length; _i++) { - var key = keys[_i]; - _descriptors[key] = proxyProperty(key, isArray || !!_descriptors[key].enumerable); - } - - return Object.create(Object.getPrototypeOf(base), _descriptors); - } - } - - function createES5Proxy_(base, parent) { - var isArray = Array.isArray(base); - var draft = createES5Draft(isArray, base); - var state = { - type_: isArray ? 5 - /* ES5Array */ - : 4 - /* ES5Object */ - , - scope_: parent ? parent.scope_ : getCurrentScope(), - modified_: false, - finalized_: false, - assigned_: {}, - parent_: parent, - // base is the object we are drafting - base_: base, - // draft is the draft object itself, that traps all reads and reads from either the base (if unmodified) or copy (if modified) - draft_: draft, - copy_: null, - revoked_: false, - isManual_: false - }; - Object.defineProperty(draft, DRAFT_STATE, { - value: state, - // enumerable: false <- the default - writable: true - }); - return draft; - } // property descriptors are recycled to make sure we don't create a get and set closure per property, - // but share them all instead - - - var descriptors = {}; - - function proxyProperty(prop, enumerable) { - var desc = descriptors[prop]; - - if (desc) { - desc.enumerable = enumerable; - } else { - descriptors[prop] = desc = { - configurable: true, - enumerable: enumerable, - get: function get() { - var state = this[DRAFT_STATE]; - assertUnrevoked(state); // @ts-ignore - - return objectTraps.get(state, prop); - }, - set: function set(value) { - var state = this[DRAFT_STATE]; - assertUnrevoked(state); // @ts-ignore - - objectTraps.set(state, prop, value); - } - }; - } - - return desc; - } // This looks expensive, but only proxies are visited, and only objects without known changes are scanned. - - - function markChangesSweep(drafts) { - // The natural order of drafts in the `scope` array is based on when they - // were accessed. By processing drafts in reverse natural order, we have a - // better chance of processing leaf nodes first. When a leaf node is known to - // have changed, we can avoid any traversal of its ancestor nodes. - for (var i = drafts.length - 1; i >= 0; i--) { - var state = drafts[i][DRAFT_STATE]; - - if (!state.modified_) { - switch (state.type_) { - case 5 - /* ES5Array */ - : - if (hasArrayChanges(state)) markChanged(state); - break; - - case 4 - /* ES5Object */ - : - if (hasObjectChanges(state)) markChanged(state); - break; - } - } - } - } - - function markChangesRecursively(object) { - if (!object || typeof object !== "object") return; - var state = object[DRAFT_STATE]; - if (!state) return; - var base_ = state.base_, - draft_ = state.draft_, - assigned_ = state.assigned_, - type_ = state.type_; - - if (type_ === 4 - /* ES5Object */ - ) { - // Look for added keys. - // probably there is a faster way to detect changes, as sweep + recurse seems to do some - // unnecessary work. - // also: probably we can store the information we detect here, to speed up tree finalization! - each$1(draft_, function (key) { - if (key === DRAFT_STATE) return; // The `undefined` check is a fast path for pre-existing keys. - - if (base_[key] === undefined && !has(base_, key)) { - assigned_[key] = true; - markChanged(state); - } else if (!assigned_[key]) { - // Only untouched properties trigger recursion. - markChangesRecursively(draft_[key]); - } - }); // Look for removed keys. - - each$1(base_, function (key) { - // The `undefined` check is a fast path for pre-existing keys. - if (draft_[key] === undefined && !has(draft_, key)) { - assigned_[key] = false; - markChanged(state); - } - }); - } else if (type_ === 5 - /* ES5Array */ - ) { - if (hasArrayChanges(state)) { - markChanged(state); - assigned_.length = true; - } - - if (draft_.length < base_.length) { - for (var i = draft_.length; i < base_.length; i++) { - assigned_[i] = false; - } - } else { - for (var _i2 = base_.length; _i2 < draft_.length; _i2++) { - assigned_[_i2] = true; - } - } // Minimum count is enough, the other parts has been processed. - - - var min = Math.min(draft_.length, base_.length); - - for (var _i3 = 0; _i3 < min; _i3++) { - // Only untouched indices trigger recursion. - if (assigned_[_i3] === undefined) markChangesRecursively(draft_[_i3]); - } - } - } - - function hasObjectChanges(state) { - var base_ = state.base_, - draft_ = state.draft_; // Search for added keys and changed keys. Start at the back, because - // non-numeric keys are ordered by time of definition on the object. - - var keys = ownKeys$a(draft_); - - for (var i = keys.length - 1; i >= 0; i--) { - var key = keys[i]; - if (key === DRAFT_STATE) continue; - var baseValue = base_[key]; // The `undefined` check is a fast path for pre-existing keys. - - if (baseValue === undefined && !has(base_, key)) { - return true; - } // Once a base key is deleted, future changes go undetected, because its - // descriptor is erased. This branch detects any missed changes. - else { - var value = draft_[key]; - - var _state = value && value[DRAFT_STATE]; - - if (_state ? _state.base_ !== baseValue : !is$1(value, baseValue)) { - return true; - } - } - } // At this point, no keys were added or changed. - // Compare key count to determine if keys were deleted. - - - var baseIsDraft = !!base_[DRAFT_STATE]; - return keys.length !== ownKeys$a(base_).length + (baseIsDraft ? 0 : 1); // + 1 to correct for DRAFT_STATE - } - - function hasArrayChanges(state) { - var draft_ = state.draft_; - if (draft_.length !== state.base_.length) return true; // See #116 - // If we first shorten the length, our array interceptors will be removed. - // If after that new items are added, result in the same original length, - // those last items will have no intercepting property. - // So if there is no own descriptor on the last position, we know that items were removed and added - // N.B.: splice, unshift, etc only shift values around, but not prop descriptors, so we only have to check - // the last one - - var descriptor = Object.getOwnPropertyDescriptor(draft_, draft_.length - 1); // descriptor can be null, but only for newly created sparse arrays, eg. new Array(10) - - if (descriptor && !descriptor.get) return true; // For all other cases, we don't have to compare, as they would have been picked up by the index setters - - return false; - } - - function hasChanges_(state) { - return state.type_ === 4 - /* ES5Object */ - ? hasObjectChanges(state) : hasArrayChanges(state); - } - - function assertUnrevoked(state - /*ES5State | MapState | SetState*/ - ) { - if (state.revoked_) die(3, JSON.stringify(latest(state))); - } - - loadPlugin("ES5", { - createES5Proxy_: createES5Proxy_, - willFinalizeES5_: willFinalizeES5_, - hasChanges_: hasChanges_ - }); - } - - function enablePatches() { - var REPLACE = "replace"; - var ADD = "add"; - var REMOVE = "remove"; - - function generatePatches_(state, basePath, patches, inversePatches) { - switch (state.type_) { - case 0 - /* ProxyObject */ - : - case 4 - /* ES5Object */ - : - case 2 - /* Map */ - : - return generatePatchesFromAssigned(state, basePath, patches, inversePatches); - - case 5 - /* ES5Array */ - : - case 1 - /* ProxyArray */ - : - return generateArrayPatches(state, basePath, patches, inversePatches); - - case 3 - /* Set */ - : - return generateSetPatches(state, basePath, patches, inversePatches); - } - } - - function generateArrayPatches(state, basePath, patches, inversePatches) { - var base_ = state.base_, - assigned_ = state.assigned_; - var copy_ = state.copy_; // Reduce complexity by ensuring `base` is never longer. - - if (copy_.length < base_.length) { - var _ref = [copy_, base_]; - base_ = _ref[0]; - copy_ = _ref[1]; - var _ref2 = [inversePatches, patches]; - patches = _ref2[0]; - inversePatches = _ref2[1]; - } // Process replaced indices. - - - for (var i = 0; i < base_.length; i++) { - if (assigned_[i] && copy_[i] !== base_[i]) { - var path = basePath.concat([i]); - patches.push({ - op: REPLACE, - path: path, - // Need to maybe clone it, as it can in fact be the original value - // due to the base/copy inversion at the start of this function - value: clonePatchValueIfNeeded(copy_[i]) - }); - inversePatches.push({ - op: REPLACE, - path: path, - value: clonePatchValueIfNeeded(base_[i]) - }); - } - } // Process added indices. - - - for (var _i = base_.length; _i < copy_.length; _i++) { - var _path = basePath.concat([_i]); - - patches.push({ - op: ADD, - path: _path, - // Need to maybe clone it, as it can in fact be the original value - // due to the base/copy inversion at the start of this function - value: clonePatchValueIfNeeded(copy_[_i]) - }); - } - - if (base_.length < copy_.length) { - inversePatches.push({ - op: REPLACE, - path: basePath.concat(["length"]), - value: base_.length - }); - } - } // This is used for both Map objects and normal objects. - - - function generatePatchesFromAssigned(state, basePath, patches, inversePatches) { - var base_ = state.base_, - copy_ = state.copy_; - each$1(state.assigned_, function (key, assignedValue) { - var origValue = get(base_, key); - var value = get(copy_, key); - var op = !assignedValue ? REMOVE : has(base_, key) ? REPLACE : ADD; - if (origValue === value && op === REPLACE) return; - var path = basePath.concat(key); - patches.push(op === REMOVE ? { - op: op, - path: path - } : { - op: op, - path: path, - value: value - }); - inversePatches.push(op === ADD ? { - op: REMOVE, - path: path - } : op === REMOVE ? { - op: ADD, - path: path, - value: clonePatchValueIfNeeded(origValue) - } : { - op: REPLACE, - path: path, - value: clonePatchValueIfNeeded(origValue) - }); - }); - } - - function generateSetPatches(state, basePath, patches, inversePatches) { - var base_ = state.base_, - copy_ = state.copy_; - var i = 0; - base_.forEach(function (value) { - if (!copy_.has(value)) { - var path = basePath.concat([i]); - patches.push({ - op: REMOVE, - path: path, - value: value - }); - inversePatches.unshift({ - op: ADD, - path: path, - value: value - }); - } - - i++; - }); - i = 0; - copy_.forEach(function (value) { - if (!base_.has(value)) { - var path = basePath.concat([i]); - patches.push({ - op: ADD, - path: path, - value: value - }); - inversePatches.unshift({ - op: REMOVE, - path: path, - value: value - }); - } - - i++; - }); - } - - function generateReplacementPatches_(rootState, replacement, patches, inversePatches) { - patches.push({ - op: REPLACE, - path: [], - value: replacement === NOTHING ? undefined : replacement - }); - inversePatches.push({ - op: REPLACE, - path: [], - value: rootState.base_ - }); - } - - function applyPatches_(draft, patches) { - patches.forEach(function (patch) { - var path = patch.path, - op = patch.op; - var base = draft; - - for (var i = 0; i < path.length - 1; i++) { - var parentType = getArchtype(base); - var p = "" + path[i]; // See #738, avoid prototype pollution - - if ((parentType === 0 - /* Object */ - || parentType === 1 - /* Array */ - ) && (p === "__proto__" || p === "constructor")) die(24); - if (typeof base === "function" && p === "prototype") die(24); - base = get(base, p); - if (typeof base !== "object") die(15, path.join("/")); - } - - var type = getArchtype(base); - var value = deepClonePatchValue(patch.value); // used to clone patch to ensure original patch is not modified, see #411 - - var key = path[path.length - 1]; - - switch (op) { - case REPLACE: - switch (type) { - case 2 - /* Map */ - : - return base.set(key, value); - - /* istanbul ignore next */ - - case 3 - /* Set */ - : - die(16); - - default: - // if value is an object, then it's assigned by reference - // in the following add or remove ops, the value field inside the patch will also be modifyed - // so we use value from the cloned patch - // @ts-ignore - return base[key] = value; - } - - case ADD: - switch (type) { - case 1 - /* Array */ - : - return key === "-" ? base.push(value) : base.splice(key, 0, value); - - case 2 - /* Map */ - : - return base.set(key, value); - - case 3 - /* Set */ - : - return base.add(value); - - default: - return base[key] = value; - } - - case REMOVE: - switch (type) { - case 1 - /* Array */ - : - return base.splice(key, 1); - - case 2 - /* Map */ - : - return base.delete(key); - - case 3 - /* Set */ - : - return base.delete(patch.value); - - default: - return delete base[key]; - } - - default: - die(17, op); - } - }); - return draft; - } - - function deepClonePatchValue(obj) { - if (!isDraftable(obj)) return obj; - if (Array.isArray(obj)) return obj.map(deepClonePatchValue); - if (isMap(obj)) return new Map(Array.from(obj.entries()).map(function (_ref3) { - var k = _ref3[0], - v = _ref3[1]; - return [k, deepClonePatchValue(v)]; - })); - if (isSet(obj)) return new Set(Array.from(obj).map(deepClonePatchValue)); - var cloned = Object.create(Object.getPrototypeOf(obj)); - - for (var key in obj) { - cloned[key] = deepClonePatchValue(obj[key]); - } - - if (has(obj, DRAFTABLE)) cloned[DRAFTABLE] = obj[DRAFTABLE]; - return cloned; - } - - function clonePatchValueIfNeeded(obj) { - if (isDraft(obj)) { - return deepClonePatchValue(obj); - } else return obj; - } - - loadPlugin("Patches", { - applyPatches_: applyPatches_, - generatePatches_: generatePatches_, - generateReplacementPatches_: generateReplacementPatches_ - }); - } - - // types only! - function enableMapSet() { - /* istanbul ignore next */ - var _extendStatics = function extendStatics(d, b) { - _extendStatics = Object.setPrototypeOf || { - __proto__: [] - } instanceof Array && function (d, b) { - d.__proto__ = b; - } || function (d, b) { - for (var p in b) { - if (b.hasOwnProperty(p)) d[p] = b[p]; - } - }; - - return _extendStatics(d, b); - }; // Ugly hack to resolve #502 and inherit built in Map / Set - - - function __extends(d, b) { - _extendStatics(d, b); - - function __() { - this.constructor = d; - } - - d.prototype = ( // @ts-ignore - __.prototype = b.prototype, new __()); - } - - var DraftMap = function (_super) { - __extends(DraftMap, _super); // Create class manually, cause #502 - - - function DraftMap(target, parent) { - this[DRAFT_STATE] = { - type_: 2 - /* Map */ - , - parent_: parent, - scope_: parent ? parent.scope_ : getCurrentScope(), - modified_: false, - finalized_: false, - copy_: undefined, - assigned_: undefined, - base_: target, - draft_: this, - isManual_: false, - revoked_: false - }; - return this; - } - - var p = DraftMap.prototype; - Object.defineProperty(p, "size", { - get: function get() { - return latest(this[DRAFT_STATE]).size; - } // enumerable: false, - // configurable: true - - }); - - p.has = function (key) { - return latest(this[DRAFT_STATE]).has(key); - }; - - p.set = function (key, value) { - var state = this[DRAFT_STATE]; - assertUnrevoked(state); - - if (!latest(state).has(key) || latest(state).get(key) !== value) { - prepareMapCopy(state); - markChanged(state); - state.assigned_.set(key, true); - state.copy_.set(key, value); - state.assigned_.set(key, true); - } - - return this; - }; - - p.delete = function (key) { - if (!this.has(key)) { - return false; - } - - var state = this[DRAFT_STATE]; - assertUnrevoked(state); - prepareMapCopy(state); - markChanged(state); - state.assigned_.set(key, false); - state.copy_.delete(key); - return true; - }; - - p.clear = function () { - var state = this[DRAFT_STATE]; - assertUnrevoked(state); - - if (latest(state).size) { - prepareMapCopy(state); - markChanged(state); - state.assigned_ = new Map(); - each$1(state.base_, function (key) { - state.assigned_.set(key, false); - }); - state.copy_.clear(); - } - }; - - p.forEach = function (cb, thisArg) { - var _this = this; - - var state = this[DRAFT_STATE]; - latest(state).forEach(function (_value, key, _map) { - cb.call(thisArg, _this.get(key), key, _this); - }); - }; - - p.get = function (key) { - var state = this[DRAFT_STATE]; - assertUnrevoked(state); - var value = latest(state).get(key); - - if (state.finalized_ || !isDraftable(value)) { - return value; - } - - if (value !== state.base_.get(key)) { - return value; // either already drafted or reassigned - } // despite what it looks, this creates a draft only once, see above condition - - - var draft = createProxy(state.scope_.immer_, value, state); - prepareMapCopy(state); - state.copy_.set(key, draft); - return draft; - }; - - p.keys = function () { - return latest(this[DRAFT_STATE]).keys(); - }; - - p.values = function () { - var _this2 = this, - _ref; - - var iterator = this.keys(); - return _ref = {}, _ref[iteratorSymbol$1] = function () { - return _this2.values(); - }, _ref.next = function next() { - var r = iterator.next(); - /* istanbul ignore next */ - - if (r.done) return r; - - var value = _this2.get(r.value); - - return { - done: false, - value: value - }; - }, _ref; - }; - - p.entries = function () { - var _this3 = this, - _ref2; - - var iterator = this.keys(); - return _ref2 = {}, _ref2[iteratorSymbol$1] = function () { - return _this3.entries(); - }, _ref2.next = function next() { - var r = iterator.next(); - /* istanbul ignore next */ - - if (r.done) return r; - - var value = _this3.get(r.value); - - return { - done: false, - value: [r.value, value] - }; - }, _ref2; - }; - - p[iteratorSymbol$1] = function () { - return this.entries(); - }; - - return DraftMap; - }(Map); - - function proxyMap_(target, parent) { - // @ts-ignore - return new DraftMap(target, parent); - } - - function prepareMapCopy(state) { - if (!state.copy_) { - state.assigned_ = new Map(); - state.copy_ = new Map(state.base_); - } - } - - var DraftSet = function (_super) { - __extends(DraftSet, _super); // Create class manually, cause #502 - - - function DraftSet(target, parent) { - this[DRAFT_STATE] = { - type_: 3 - /* Set */ - , - parent_: parent, - scope_: parent ? parent.scope_ : getCurrentScope(), - modified_: false, - finalized_: false, - copy_: undefined, - base_: target, - draft_: this, - drafts_: new Map(), - revoked_: false, - isManual_: false - }; - return this; - } - - var p = DraftSet.prototype; - Object.defineProperty(p, "size", { - get: function get() { - return latest(this[DRAFT_STATE]).size; - } // enumerable: true, - - }); - - p.has = function (value) { - var state = this[DRAFT_STATE]; - assertUnrevoked(state); // bit of trickery here, to be able to recognize both the value, and the draft of its value - - if (!state.copy_) { - return state.base_.has(value); - } - - if (state.copy_.has(value)) return true; - if (state.drafts_.has(value) && state.copy_.has(state.drafts_.get(value))) return true; - return false; - }; - - p.add = function (value) { - var state = this[DRAFT_STATE]; - assertUnrevoked(state); - - if (!this.has(value)) { - prepareSetCopy(state); - markChanged(state); - state.copy_.add(value); - } - - return this; - }; - - p.delete = function (value) { - if (!this.has(value)) { - return false; - } - - var state = this[DRAFT_STATE]; - assertUnrevoked(state); - prepareSetCopy(state); - markChanged(state); - return state.copy_.delete(value) || (state.drafts_.has(value) ? state.copy_.delete(state.drafts_.get(value)) : - /* istanbul ignore next */ - false); - }; - - p.clear = function () { - var state = this[DRAFT_STATE]; - assertUnrevoked(state); - - if (latest(state).size) { - prepareSetCopy(state); - markChanged(state); - state.copy_.clear(); - } - }; - - p.values = function () { - var state = this[DRAFT_STATE]; - assertUnrevoked(state); - prepareSetCopy(state); - return state.copy_.values(); - }; - - p.entries = function entries() { - var state = this[DRAFT_STATE]; - assertUnrevoked(state); - prepareSetCopy(state); - return state.copy_.entries(); - }; - - p.keys = function () { - return this.values(); - }; - - p[iteratorSymbol$1] = function () { - return this.values(); - }; - - p.forEach = function forEach(cb, thisArg) { - var iterator = this.values(); - var result = iterator.next(); - - while (!result.done) { - cb.call(thisArg, result.value, result.value, this); - result = iterator.next(); - } - }; - - return DraftSet; - }(Set); - - function proxySet_(target, parent) { - // @ts-ignore - return new DraftSet(target, parent); - } - - function prepareSetCopy(state) { - if (!state.copy_) { - // create drafts for all entries to preserve insertion order - state.copy_ = new Set(); - state.base_.forEach(function (value) { - if (isDraftable(value)) { - var draft = createProxy(state.scope_.immer_, value, state); - state.drafts_.set(value, draft); - state.copy_.add(draft); - } else { - state.copy_.add(value); - } - }); - } - } - - function assertUnrevoked(state - /*ES5State | MapState | SetState*/ - ) { - if (state.revoked_) die(3, JSON.stringify(latest(state))); - } - - loadPlugin("MapSet", { - proxyMap_: proxyMap_, - proxySet_: proxySet_ - }); - } - - function enableAllPlugins() { - enableES5(); - enableMapSet(); - enablePatches(); - } - - var immer$1 = - /*#__PURE__*/ - new Immer(); - /** - * The `produce` function takes a value and a "recipe function" (whose - * return value often depends on the base state). The recipe function is - * free to mutate its first argument however it wants. All mutations are - * only ever applied to a __copy__ of the base state. - * - * Pass only a function to create a "curried producer" which relieves you - * from passing the recipe function every time. - * - * Only plain objects and arrays are made mutable. All other objects are - * considered uncopyable. - * - * Note: This function is __bound__ to its `Immer` instance. - * - * @param {any} base - the initial state - * @param {Function} producer - function that receives a proxy of the base state as first argument and which can be freely modified - * @param {Function} patchListener - optional function that will be called with all the patches produced here - * @returns {any} a new state, or the initial state if nothing was modified - */ - - var produce = immer$1.produce; - /** - * Like `produce`, but `produceWithPatches` always returns a tuple - * [nextState, patches, inversePatches] (instead of just the next state) - */ - - var produceWithPatches = - /*#__PURE__*/ - immer$1.produceWithPatches.bind(immer$1); - /** - * Pass true to automatically freeze all copies created by Immer. - * - * Always freeze by default, even in production mode - */ - - var setAutoFreeze = - /*#__PURE__*/ - immer$1.setAutoFreeze.bind(immer$1); - /** - * Pass true to use the ES2015 `Proxy` class when creating drafts, which is - * always faster than using ES5 proxies. - * - * By default, feature detection is used, so calling this is rarely necessary. - */ - - var setUseProxies = - /*#__PURE__*/ - immer$1.setUseProxies.bind(immer$1); - /** - * Apply an array of Immer patches to the first argument. - * - * This function is a producer, which means copy-on-write is in effect. - */ - - var applyPatches = - /*#__PURE__*/ - immer$1.applyPatches.bind(immer$1); - /** - * Create an Immer draft from the given base state, which may be a draft itself. - * The draft can be modified until you finalize it with the `finishDraft` function. - */ - - var createDraft = - /*#__PURE__*/ - immer$1.createDraft.bind(immer$1); - /** - * Finalize an Immer draft from a `createDraft` call, returning the base state - * (if no changes were made) or a modified copy. The draft must *not* be - * mutated afterwards. - * - * Pass a function as the 2nd argument to generate Immer patches based on the - * changes that were made. - */ - - var finishDraft = - /*#__PURE__*/ - immer$1.finishDraft.bind(immer$1); - /** - * This function is actually a no-op, but can be used to cast an immutable type - * to an draft type and make TypeScript happy - * - * @param value - */ - - function castDraft(value) { - return value; - } - /** - * This function is actually a no-op, but can be used to cast a mutable type - * to an immutable type and make TypeScript happy - * @param value - */ - - function castImmutable(value) { - return value; - } - - var Immer_1 = Immer; - var applyPatches_1 = applyPatches; - var castDraft_1 = castDraft; - var castImmutable_1 = castImmutable; - var createDraft_1 = createDraft; - var current_1 = current; - var _default$2 = produce; - var enableAllPlugins_1 = enableAllPlugins; - var enableES5_1 = enableES5; - var enableMapSet_1 = enableMapSet; - var enablePatches_1 = enablePatches; - var finishDraft_1 = finishDraft; - var freeze_1 = freeze; - var immerable = DRAFTABLE; - var isDraft_1 = isDraft; - var isDraftable_1 = isDraftable; - var nothing = NOTHING; - var original_1 = original; - var produce_1 = produce; - var produceWithPatches_1 = produceWithPatches; - var setAutoFreeze_1 = setAutoFreeze; - var setUseProxies_1 = setUseProxies; - - - var immer_cjs_development = /*#__PURE__*/Object.defineProperty({ - Immer: Immer_1, - applyPatches: applyPatches_1, - castDraft: castDraft_1, - castImmutable: castImmutable_1, - createDraft: createDraft_1, - current: current_1, - default: _default$2, - enableAllPlugins: enableAllPlugins_1, - enableES5: enableES5_1, - enableMapSet: enableMapSet_1, - enablePatches: enablePatches_1, - finishDraft: finishDraft_1, - freeze: freeze_1, - immerable: immerable, - isDraft: isDraft_1, - isDraftable: isDraftable_1, - nothing: nothing, - original: original_1, - produce: produce_1, - produceWithPatches: produceWithPatches_1, - setAutoFreeze: setAutoFreeze_1, - setUseProxies: setUseProxies_1 - }, '__esModule', {value: true}); - - var require$$1$1 = immer_cjs_development; - - var dist$8 = createCommonjsModule$1(function (module) { - - { - module.exports = require$$1$1; - } - }); - - var isPlainObject = isPlainObject_1; - - var immer = dist$8; - - function unwrapExports (x) { - return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; - } - - function createCommonjsModule(fn, module) { - return module = { exports: {} }, fn(module, module.exports), module.exports; - } - - var arrayLikeToArray = createCommonjsModule(function (module) { - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - - for (var i = 0, arr2 = new Array(len); i < len; i++) { - arr2[i] = arr[i]; - } - - return arr2; - } - - module.exports = _arrayLikeToArray; - module.exports["default"] = module.exports, module.exports.__esModule = true; - }); - - unwrapExports(arrayLikeToArray); - - var arrayWithoutHoles = createCommonjsModule(function (module) { - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) return arrayLikeToArray(arr); - } - - module.exports = _arrayWithoutHoles; - module.exports["default"] = module.exports, module.exports.__esModule = true; - }); - - unwrapExports(arrayWithoutHoles); - - var iterableToArray = createCommonjsModule(function (module) { - function _iterableToArray(iter) { - if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); - } - - module.exports = _iterableToArray; - module.exports["default"] = module.exports, module.exports.__esModule = true; - }); - - unwrapExports(iterableToArray); - - var unsupportedIterableToArray = createCommonjsModule(function (module) { - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen); - } - - module.exports = _unsupportedIterableToArray; - module.exports["default"] = module.exports, module.exports.__esModule = true; - }); - - unwrapExports(unsupportedIterableToArray); - - var nonIterableSpread = createCommonjsModule(function (module) { - function _nonIterableSpread() { - throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - - module.exports = _nonIterableSpread; - module.exports["default"] = module.exports, module.exports.__esModule = true; - }); - - unwrapExports(nonIterableSpread); - - var toConsumableArray = createCommonjsModule(function (module) { - function _toConsumableArray(arr) { - return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread(); - } - - module.exports = _toConsumableArray; - module.exports["default"] = module.exports, module.exports.__esModule = true; - }); - - var _toConsumableArray = unwrapExports(toConsumableArray); - - var arrayWithHoles = createCommonjsModule(function (module) { - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; - } - - module.exports = _arrayWithHoles; - module.exports["default"] = module.exports, module.exports.__esModule = true; - }); - - unwrapExports(arrayWithHoles); - - var iterableToArrayLimit = createCommonjsModule(function (module) { - function _iterableToArrayLimit(arr, i) { - var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; - - if (_i == null) return; - var _arr = []; - var _n = true; - var _d = false; - - var _s, _e; - - try { - for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) _i["return"](); - } finally { - if (_d) throw _e; - } - } - - return _arr; - } - - module.exports = _iterableToArrayLimit; - module.exports["default"] = module.exports, module.exports.__esModule = true; - }); - - unwrapExports(iterableToArrayLimit); - - var nonIterableRest = createCommonjsModule(function (module) { - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - - module.exports = _nonIterableRest; - module.exports["default"] = module.exports, module.exports.__esModule = true; - }); - - unwrapExports(nonIterableRest); - - var slicedToArray = createCommonjsModule(function (module) { - function _slicedToArray(arr, i) { - return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest(); - } - - module.exports = _slicedToArray; - module.exports["default"] = module.exports, module.exports.__esModule = true; - }); - - var _slicedToArray = unwrapExports(slicedToArray); - - var defineProperty = createCommonjsModule(function (module) { - function _defineProperty(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { - value: value, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key] = value; - } - - return obj; - } - - module.exports = _defineProperty; - module.exports["default"] = module.exports, module.exports.__esModule = true; - }); - - var _defineProperty = unwrapExports(defineProperty); - - var DIRTY_PATHS = new WeakMap(); - var FLUSHING = new WeakMap(); - var NORMALIZING = new WeakMap(); - var PATH_REFS = new WeakMap(); - var POINT_REFS = new WeakMap(); - var RANGE_REFS = new WeakMap(); - - function ownKeys$9(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } - - function _objectSpread$9(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$9(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$9(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } - - function _createForOfIteratorHelper$7(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$7(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } - - function _unsupportedIterableToArray$7(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$7(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$7(o, minLen); } - - function _arrayLikeToArray$7(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } - /** - * Create a new Slate `Editor` object. - */ - - var createEditor$1 = function createEditor() { - var editor = { - children: [], - operations: [], - selection: null, - marks: null, - isInline: function isInline() { - return false; - }, - isVoid: function isVoid() { - return false; - }, - onChange: function onChange() {}, - apply: function apply(op) { - var _iterator = _createForOfIteratorHelper$7(Editor.pathRefs(editor)), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var ref = _step.value; - PathRef.transform(ref, op); - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - - var _iterator2 = _createForOfIteratorHelper$7(Editor.pointRefs(editor)), - _step2; - - try { - for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { - var _ref = _step2.value; - PointRef.transform(_ref, op); - } - } catch (err) { - _iterator2.e(err); - } finally { - _iterator2.f(); - } - - var _iterator3 = _createForOfIteratorHelper$7(Editor.rangeRefs(editor)), - _step3; - - try { - for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { - var _ref2 = _step3.value; - RangeRef.transform(_ref2, op); - } - } catch (err) { - _iterator3.e(err); - } finally { - _iterator3.f(); - } - - var set = new Set(); - var dirtyPaths = []; - - var add = function add(path) { - if (path) { - var key = path.join(','); - - if (!set.has(key)) { - set.add(key); - dirtyPaths.push(path); - } - } - }; - - var oldDirtyPaths = DIRTY_PATHS.get(editor) || []; - var newDirtyPaths = getDirtyPaths(op); - - var _iterator4 = _createForOfIteratorHelper$7(oldDirtyPaths), - _step4; - - try { - for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { - var path = _step4.value; - var newPath = Path.transform(path, op); - add(newPath); - } - } catch (err) { - _iterator4.e(err); - } finally { - _iterator4.f(); - } - - var _iterator5 = _createForOfIteratorHelper$7(newDirtyPaths), - _step5; - - try { - for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { - var _path = _step5.value; - add(_path); - } - } catch (err) { - _iterator5.e(err); - } finally { - _iterator5.f(); - } - - DIRTY_PATHS.set(editor, dirtyPaths); - Transforms.transform(editor, op); - editor.operations.push(op); - Editor.normalize(editor); // Clear any formats applied to the cursor if the selection changes. - - if (op.type === 'set_selection') { - editor.marks = null; - } - - if (!FLUSHING.get(editor)) { - FLUSHING.set(editor, true); - Promise.resolve().then(function () { - FLUSHING.set(editor, false); - editor.onChange(); - editor.operations = []; - }); - } - }, - addMark: function addMark(key, value) { - var selection = editor.selection; - - if (selection) { - if (Range.isExpanded(selection)) { - Transforms.setNodes(editor, _defineProperty({}, key, value), { - match: Text.isText, - split: true - }); - } else { - var marks = _objectSpread$9(_objectSpread$9({}, Editor.marks(editor) || {}), {}, _defineProperty({}, key, value)); - - editor.marks = marks; - - if (!FLUSHING.get(editor)) { - editor.onChange(); - } - } - } - }, - deleteBackward: function deleteBackward(unit) { - var selection = editor.selection; - - if (selection && Range.isCollapsed(selection)) { - Transforms["delete"](editor, { - unit: unit, - reverse: true - }); - } - }, - deleteForward: function deleteForward(unit) { - var selection = editor.selection; - - if (selection && Range.isCollapsed(selection)) { - Transforms["delete"](editor, { - unit: unit - }); - } - }, - deleteFragment: function deleteFragment(direction) { - var selection = editor.selection; - - if (selection && Range.isExpanded(selection)) { - Transforms["delete"](editor, { - reverse: direction === 'backward' - }); - } - }, - getFragment: function getFragment() { - var selection = editor.selection; - - if (selection) { - return Node$1.fragment(editor, selection); - } - - return []; - }, - insertBreak: function insertBreak() { - Transforms.splitNodes(editor, { - always: true - }); - }, - insertFragment: function insertFragment(fragment) { - Transforms.insertFragment(editor, fragment); - }, - insertNode: function insertNode(node) { - Transforms.insertNodes(editor, node); - }, - insertText: function insertText(text) { - var selection = editor.selection, - marks = editor.marks; - - if (selection) { - if (marks) { - var node = _objectSpread$9({ - text: text - }, marks); - - Transforms.insertNodes(editor, node); - } else { - Transforms.insertText(editor, text); - } - - editor.marks = null; - } - }, - normalizeNode: function normalizeNode(entry) { - var _entry = _slicedToArray(entry, 2), - node = _entry[0], - path = _entry[1]; // There are no core normalizations for text nodes. - - - if (Text.isText(node)) { - return; - } // Ensure that block and inline nodes have at least one text child. - - - if (Element$1.isElement(node) && node.children.length === 0) { - var child = { - text: '' - }; - Transforms.insertNodes(editor, child, { - at: path.concat(0), - voids: true - }); - return; - } // Determine whether the node should have block or inline children. - - - var shouldHaveInlines = Editor.isEditor(node) ? false : Element$1.isElement(node) && (editor.isInline(node) || node.children.length === 0 || Text.isText(node.children[0]) || editor.isInline(node.children[0])); // Since we'll be applying operations while iterating, keep track of an - // index that accounts for any added/removed nodes. - - var n = 0; - - for (var i = 0; i < node.children.length; i++, n++) { - var currentNode = Node$1.get(editor, path); - if (Text.isText(currentNode)) continue; - var _child = node.children[i]; - var prev = currentNode.children[n - 1]; - var isLast = i === node.children.length - 1; - var isInlineOrText = Text.isText(_child) || Element$1.isElement(_child) && editor.isInline(_child); // Only allow block nodes in the top-level children and parent blocks - // that only contain block nodes. Similarly, only allow inline nodes in - // other inline nodes, or parent blocks that only contain inlines and - // text. - - if (isInlineOrText !== shouldHaveInlines) { - Transforms.removeNodes(editor, { - at: path.concat(n), - voids: true - }); - n--; - } else if (Element$1.isElement(_child)) { - // Ensure that inline nodes are surrounded by text nodes. - if (editor.isInline(_child)) { - if (prev == null || !Text.isText(prev)) { - var newChild = { - text: '' - }; - Transforms.insertNodes(editor, newChild, { - at: path.concat(n), - voids: true - }); - n++; - } else if (isLast) { - var _newChild = { - text: '' - }; - Transforms.insertNodes(editor, _newChild, { - at: path.concat(n + 1), - voids: true - }); - n++; - } - } - } else { - // Merge adjacent text nodes that are empty or match. - if (prev != null && Text.isText(prev)) { - if (Text.equals(_child, prev, { - loose: true - })) { - Transforms.mergeNodes(editor, { - at: path.concat(n), - voids: true - }); - n--; - } else if (prev.text === '') { - Transforms.removeNodes(editor, { - at: path.concat(n - 1), - voids: true - }); - n--; - } else if (_child.text === '') { - Transforms.removeNodes(editor, { - at: path.concat(n), - voids: true - }); - n--; - } - } - } - } - }, - removeMark: function removeMark(key) { - var selection = editor.selection; - - if (selection) { - if (Range.isExpanded(selection)) { - Transforms.unsetNodes(editor, key, { - match: Text.isText, - split: true - }); - } else { - var marks = _objectSpread$9({}, Editor.marks(editor) || {}); - - delete marks[key]; - editor.marks = marks; - - if (!FLUSHING.get(editor)) { - editor.onChange(); - } - } - } - } - }; - return editor; - }; - /** - * Get the "dirty" paths generated from an operation. - */ - - var getDirtyPaths = function getDirtyPaths(op) { - switch (op.type) { - case 'insert_text': - case 'remove_text': - case 'set_node': - { - var path = op.path; - return Path.levels(path); - } - - case 'insert_node': - { - var node = op.node, - _path2 = op.path; - var levels = Path.levels(_path2); - var descendants = Text.isText(node) ? [] : Array.from(Node$1.nodes(node), function (_ref3) { - var _ref4 = _slicedToArray(_ref3, 2), - p = _ref4[1]; - - return _path2.concat(p); - }); - return [].concat(_toConsumableArray(levels), _toConsumableArray(descendants)); - } - - case 'merge_node': - { - var _path3 = op.path; - var ancestors = Path.ancestors(_path3); - var previousPath = Path.previous(_path3); - return [].concat(_toConsumableArray(ancestors), [previousPath]); - } - - case 'move_node': - { - var _path4 = op.path, - newPath = op.newPath; - - if (Path.equals(_path4, newPath)) { - return []; - } - - var oldAncestors = []; - var newAncestors = []; - - var _iterator6 = _createForOfIteratorHelper$7(Path.ancestors(_path4)), - _step6; - - try { - for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) { - var ancestor = _step6.value; - var p = Path.transform(ancestor, op); - oldAncestors.push(p); - } - } catch (err) { - _iterator6.e(err); - } finally { - _iterator6.f(); - } - - var _iterator7 = _createForOfIteratorHelper$7(Path.ancestors(newPath)), - _step7; - - try { - for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) { - var _ancestor = _step7.value; - - var _p = Path.transform(_ancestor, op); - - newAncestors.push(_p); - } - } catch (err) { - _iterator7.e(err); - } finally { - _iterator7.f(); - } - - var newParent = newAncestors[newAncestors.length - 1]; - var newIndex = newPath[newPath.length - 1]; - var resultPath = newParent.concat(newIndex); - return [].concat(oldAncestors, newAncestors, [resultPath]); - } - - case 'remove_node': - { - var _path5 = op.path; - - var _ancestors = Path.ancestors(_path5); - - return _toConsumableArray(_ancestors); - } - - case 'split_node': - { - var _path6 = op.path; - - var _levels = Path.levels(_path6); - - var nextPath = Path.next(_path6); - return [].concat(_toConsumableArray(_levels), [nextPath]); - } - - default: - { - return []; - } - } - }; - - var objectWithoutPropertiesLoose = createCommonjsModule(function (module) { - function _objectWithoutPropertiesLoose(source, excluded) { - if (source == null) return {}; - var target = {}; - var sourceKeys = Object.keys(source); - var key, i; - - for (i = 0; i < sourceKeys.length; i++) { - key = sourceKeys[i]; - if (excluded.indexOf(key) >= 0) continue; - target[key] = source[key]; - } - - return target; - } - - module.exports = _objectWithoutPropertiesLoose; - module.exports["default"] = module.exports, module.exports.__esModule = true; - }); - - unwrapExports(objectWithoutPropertiesLoose); - - var objectWithoutProperties = createCommonjsModule(function (module) { - function _objectWithoutProperties(source, excluded) { - if (source == null) return {}; - var target = objectWithoutPropertiesLoose(source, excluded); - var key, i; - - if (Object.getOwnPropertySymbols) { - var sourceSymbolKeys = Object.getOwnPropertySymbols(source); - - for (i = 0; i < sourceSymbolKeys.length; i++) { - key = sourceSymbolKeys[i]; - if (excluded.indexOf(key) >= 0) continue; - if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; - target[key] = source[key]; - } - } - - return target; - } - - module.exports = _objectWithoutProperties; - module.exports["default"] = module.exports, module.exports.__esModule = true; - }); - - var _objectWithoutProperties = unwrapExports(objectWithoutProperties); - - function _createForOfIteratorHelper$6(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$6(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } - - function _unsupportedIterableToArray$6(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$6(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$6(o, minLen); } - - function _arrayLikeToArray$6(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } - - // Character (grapheme cluster) boundaries are determined according to - // the default grapheme cluster boundary specification, extended grapheme clusters variant[1]. - // - // References: - // - // [1] https://www.unicode.org/reports/tr29/#Default_Grapheme_Cluster_Table - // [2] https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakProperty.txt - // [3] https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakTest.html - // [4] https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakTest.txt - - /** - * Get the distance to the end of the first character in a string of text. - */ - var getCharacterDistance = function getCharacterDistance(str) { - var isRTL = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - var isLTR = !isRTL; - var codepoints = isRTL ? codepointsIteratorRTL(str) : str; - var left = CodepointType.None; - var right = CodepointType.None; - var distance = 0; // Evaluation of these conditions are deferred. - - var gb11 = null; // Is GB11 applicable? - - var gb12Or13 = null; // Is GB12 or GB13 applicable? - - var _iterator = _createForOfIteratorHelper$6(codepoints), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var _char = _step.value; - - var code = _char.codePointAt(0); - - if (!code) break; - var type = getCodepointType(_char, code); - - var _ref = isLTR ? [right, type] : [type, left]; - - var _ref2 = _slicedToArray(_ref, 2); - - left = _ref2[0]; - right = _ref2[1]; - - if (intersects(left, CodepointType.ZWJ) && intersects(right, CodepointType.ExtPict)) { - if (isLTR) { - gb11 = endsWithEmojiZWJ(str.substring(0, distance)); - } else { - gb11 = endsWithEmojiZWJ(str.substring(0, str.length - distance)); - } - - if (!gb11) break; - } - - if (intersects(left, CodepointType.RI) && intersects(right, CodepointType.RI)) { - if (gb12Or13 !== null) { - gb12Or13 = !gb12Or13; - } else { - if (isLTR) { - gb12Or13 = true; - } else { - gb12Or13 = endsWithOddNumberOfRIs(str.substring(0, str.length - distance)); - } - } - - if (!gb12Or13) break; - } - - if (left !== CodepointType.None && right !== CodepointType.None && isBoundaryPair(left, right)) { - break; - } - - distance += _char.length; - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - - return distance || 1; - }; - var SPACE = /\s/; - var PUNCTUATION = /[\u0021-\u0023\u0025-\u002A\u002C-\u002F\u003A\u003B\u003F\u0040\u005B-\u005D\u005F\u007B\u007D\u00A1\u00A7\u00AB\u00B6\u00B7\u00BB\u00BF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u0AF0\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E3B\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]/; - var CHAMELEON = /['\u2018\u2019]/; - /** - * Get the distance to the end of the first word in a string of text. - */ - - var getWordDistance = function getWordDistance(text) { - var isRTL = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - var dist = 0; - var started = false; - - while (text.length > 0) { - var charDist = getCharacterDistance(text, isRTL); - - var _splitByCharacterDist = splitByCharacterDistance(text, charDist, isRTL), - _splitByCharacterDist2 = _slicedToArray(_splitByCharacterDist, 2), - _char2 = _splitByCharacterDist2[0], - remaining = _splitByCharacterDist2[1]; - - if (isWordCharacter(_char2, remaining, isRTL)) { - started = true; - dist += charDist; - } else if (!started) { - dist += charDist; - } else { - break; - } - - text = remaining; - } - - return dist; - }; - /** - * Split a string in two parts at a given distance starting from the end when - * `isRTL` is set to `true`. - */ - - var splitByCharacterDistance = function splitByCharacterDistance(str, dist, isRTL) { - if (isRTL) { - var at = str.length - dist; - return [str.slice(at, str.length), str.slice(0, at)]; - } - - return [str.slice(0, dist), str.slice(dist)]; - }; - /** - * Check if a character is a word character. The `remaining` argument is used - * because sometimes you must read subsequent characters to truly determine it. - */ - - var isWordCharacter = function isWordCharacter(_char3, remaining) { - var isRTL = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - - if (SPACE.test(_char3)) { - return false; - } // Chameleons count as word characters as long as they're in a word, so - // recurse to see if the next one is a word character or not. - - - if (CHAMELEON.test(_char3)) { - var charDist = getCharacterDistance(remaining, isRTL); - - var _splitByCharacterDist3 = splitByCharacterDistance(remaining, charDist, isRTL), - _splitByCharacterDist4 = _slicedToArray(_splitByCharacterDist3, 2), - nextChar = _splitByCharacterDist4[0], - nextRemaining = _splitByCharacterDist4[1]; - - if (isWordCharacter(nextChar, nextRemaining, isRTL)) { - return true; - } - } - - if (PUNCTUATION.test(_char3)) { - return false; - } - - return true; - }; - /** - * Iterate on codepoints from right to left. - */ - - - var codepointsIteratorRTL = function* codepointsIteratorRTL(str) { - var end = str.length - 1; - - for (var i = 0; i < str.length; i++) { - var char1 = str.charAt(end - i); - - if (isLowSurrogate(char1.charCodeAt(0))) { - var char2 = str.charAt(end - i - 1); - - if (isHighSurrogate(char2.charCodeAt(0))) { - yield char2 + char1; - i++; - continue; - } - } - - yield char1; - } - }; - /** - * Is `charCode` a high surrogate. - * - * https://en.wikipedia.org/wiki/Universal_Character_Set_characters#Surrogates - */ - - var isHighSurrogate = function isHighSurrogate(charCode) { - return charCode >= 0xd800 && charCode <= 0xdbff; - }; - /** - * Is `charCode` a low surrogate. - * - * https://en.wikipedia.org/wiki/Universal_Character_Set_characters#Surrogates - */ - - - var isLowSurrogate = function isLowSurrogate(charCode) { - return charCode >= 0xdc00 && charCode <= 0xdfff; - }; - - var CodepointType; - - (function (CodepointType) { - CodepointType[CodepointType["None"] = 0] = "None"; - CodepointType[CodepointType["Extend"] = 1] = "Extend"; - CodepointType[CodepointType["ZWJ"] = 2] = "ZWJ"; - CodepointType[CodepointType["RI"] = 4] = "RI"; - CodepointType[CodepointType["Prepend"] = 8] = "Prepend"; - CodepointType[CodepointType["SpacingMark"] = 16] = "SpacingMark"; - CodepointType[CodepointType["L"] = 32] = "L"; - CodepointType[CodepointType["V"] = 64] = "V"; - CodepointType[CodepointType["T"] = 128] = "T"; - CodepointType[CodepointType["LV"] = 256] = "LV"; - CodepointType[CodepointType["LVT"] = 512] = "LVT"; - CodepointType[CodepointType["ExtPict"] = 1024] = "ExtPict"; - CodepointType[CodepointType["Any"] = 2048] = "Any"; - })(CodepointType || (CodepointType = {})); - - var reExtend = /^(?:[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D3-\u08E1\u08E3-\u0902\u093A\u093C\u0941-\u0948\u094D\u0951-\u0957\u0962\u0963\u0981\u09BC\u09BE\u09C1-\u09C4\u09CD\u09D7\u09E2\u09E3\u09FE\u0A01\u0A02\u0A3C\u0A41\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81\u0A82\u0ABC\u0AC1-\u0AC5\u0AC7\u0AC8\u0ACD\u0AE2\u0AE3\u0AFA-\u0AFF\u0B01\u0B3C\u0B3E\u0B3F\u0B41-\u0B44\u0B4D\u0B55-\u0B57\u0B62\u0B63\u0B82\u0BBE\u0BC0\u0BCD\u0BD7\u0C00\u0C04\u0C3E-\u0C40\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81\u0CBC\u0CBF\u0CC2\u0CC6\u0CCC\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D00\u0D01\u0D3B\u0D3C\u0D3E\u0D41-\u0D44\u0D4D\u0D57\u0D62\u0D63\u0D81\u0DCA\u0DCF\u0DD2-\u0DD4\u0DD6\u0DDF\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F71-\u0F7E\u0F80-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102D-\u1030\u1032-\u1037\u1039\u103A\u103D\u103E\u1058\u1059\u105E-\u1060\u1071-\u1074\u1082\u1085\u1086\u108D\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4\u17B5\u17B7-\u17BD\u17C6\u17C9-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193B\u1A17\u1A18\u1A1B\u1A56\u1A58-\u1A5E\u1A60\u1A62\u1A65-\u1A6C\u1A73-\u1A7C\u1A7F\u1AB0-\u1AC0\u1B00-\u1B03\u1B34-\u1B3A\u1B3C\u1B42\u1B6B-\u1B73\u1B80\u1B81\u1BA2-\u1BA5\u1BA8\u1BA9\u1BAB-\u1BAD\u1BE6\u1BE8\u1BE9\u1BED\u1BEF-\u1BF1\u1C2C-\u1C33\u1C36\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE0\u1CE2-\u1CE8\u1CED\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u200C\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA825\uA826\uA82C\uA8C4\uA8C5\uA8E0-\uA8F1\uA8FF\uA926-\uA92D\uA947-\uA951\uA980-\uA982\uA9B3\uA9B6-\uA9B9\uA9BC\uA9BD\uA9E5\uAA29-\uAA2E\uAA31\uAA32\uAA35\uAA36\uAA43\uAA4C\uAA7C\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEC\uAAED\uAAF6\uABE5\uABE8\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F\uFF9E\uFF9F]|\uD800[\uDDFD\uDEE0\uDF76-\uDF7A]|\uD802[\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F\uDEE5\uDEE6]|\uD803[\uDD24-\uDD27\uDEAB\uDEAC\uDF46-\uDF50]|\uD804[\uDC01\uDC38-\uDC46\uDC7F-\uDC81\uDCB3-\uDCB6\uDCB9\uDCBA\uDD00-\uDD02\uDD27-\uDD2B\uDD2D-\uDD34\uDD73\uDD80\uDD81\uDDB6-\uDDBE\uDDC9-\uDDCC\uDDCF\uDE2F-\uDE31\uDE34\uDE36\uDE37\uDE3E\uDEDF\uDEE3-\uDEEA\uDF00\uDF01\uDF3B\uDF3C\uDF3E\uDF40\uDF57\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC38-\uDC3F\uDC42-\uDC44\uDC46\uDC5E\uDCB0\uDCB3-\uDCB8\uDCBA\uDCBD\uDCBF\uDCC0\uDCC2\uDCC3\uDDAF\uDDB2-\uDDB5\uDDBC\uDDBD\uDDBF\uDDC0\uDDDC\uDDDD\uDE33-\uDE3A\uDE3D\uDE3F\uDE40\uDEAB\uDEAD\uDEB0-\uDEB5\uDEB7\uDF1D-\uDF1F\uDF22-\uDF25\uDF27-\uDF2B]|\uD806[\uDC2F-\uDC37\uDC39\uDC3A\uDD30\uDD3B\uDD3C\uDD3E\uDD43\uDDD4-\uDDD7\uDDDA\uDDDB\uDDE0\uDE01-\uDE0A\uDE33-\uDE38\uDE3B-\uDE3E\uDE47\uDE51-\uDE56\uDE59-\uDE5B\uDE8A-\uDE96\uDE98\uDE99]|\uD807[\uDC30-\uDC36\uDC38-\uDC3D\uDC3F\uDC92-\uDCA7\uDCAA-\uDCB0\uDCB2\uDCB3\uDCB5\uDCB6\uDD31-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD45\uDD47\uDD90\uDD91\uDD95\uDD97\uDEF3\uDEF4]|\uD81A[\uDEF0-\uDEF4\uDF30-\uDF36]|\uD81B[\uDF4F\uDF8F-\uDF92\uDFE4]|\uD82F[\uDC9D\uDC9E]|\uD834[\uDD65\uDD67-\uDD69\uDD6E-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A\uDD30-\uDD36\uDEEC-\uDEEF]|\uD83A[\uDCD0-\uDCD6\uDD44-\uDD4A]|\uD83C[\uDFFB-\uDFFF]|\uDB40[\uDC20-\uDC7F\uDD00-\uDDEF])$/; - var rePrepend = /^(?:[\u0600-\u0605\u06DD\u070F\u0890\u0891\u08E2\u0D4E]|\uD804[\uDCBD\uDCCD\uDDC2\uDDC3]|\uD806[\uDD3F\uDD41\uDE3A\uDE84-\uDE89]|\uD807\uDD46)$/; - var reSpacingMark = /^(?:[\u0903\u093B\u093E-\u0940\u0949-\u094C\u094E\u094F\u0982\u0983\u09BF\u09C0\u09C7\u09C8\u09CB\u09CC\u0A03\u0A3E-\u0A40\u0A83\u0ABE-\u0AC0\u0AC9\u0ACB\u0ACC\u0B02\u0B03\u0B40\u0B47\u0B48\u0B4B\u0B4C\u0BBF\u0BC1\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCC\u0C01-\u0C03\u0C41-\u0C44\u0C82\u0C83\u0CBE\u0CC0\u0CC1\u0CC3\u0CC4\u0CC7\u0CC8\u0CCA\u0CCB\u0D02\u0D03\u0D3F\u0D40\u0D46-\u0D48\u0D4A-\u0D4C\u0D82\u0D83\u0DD0\u0DD1\u0DD8-\u0DDE\u0DF2\u0DF3\u0E33\u0EB3\u0F3E\u0F3F\u0F7F\u1031\u103B\u103C\u1056\u1057\u1084\u1715\u1734\u17B6\u17BE-\u17C5\u17C7\u17C8\u1923-\u1926\u1929-\u192B\u1930\u1931\u1933-\u1938\u1A19\u1A1A\u1A55\u1A57\u1A6D-\u1A72\u1B04\u1B3B\u1B3D-\u1B41\u1B43\u1B44\u1B82\u1BA1\u1BA6\u1BA7\u1BAA\u1BE7\u1BEA-\u1BEC\u1BEE\u1BF2\u1BF3\u1C24-\u1C2B\u1C34\u1C35\u1CE1\u1CF7\uA823\uA824\uA827\uA880\uA881\uA8B4-\uA8C3\uA952\uA953\uA983\uA9B4\uA9B5\uA9BA\uA9BB\uA9BE-\uA9C0\uAA2F\uAA30\uAA33\uAA34\uAA4D\uAAEB\uAAEE\uAAEF\uAAF5\uABE3\uABE4\uABE6\uABE7\uABE9\uABEA\uABEC]|\uD804[\uDC00\uDC02\uDC82\uDCB0-\uDCB2\uDCB7\uDCB8\uDD2C\uDD45\uDD46\uDD82\uDDB3-\uDDB5\uDDBF\uDDC0\uDDCE\uDE2C-\uDE2E\uDE32\uDE33\uDE35\uDEE0-\uDEE2\uDF02\uDF03\uDF3F\uDF41-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF62\uDF63]|\uD805[\uDC35-\uDC37\uDC40\uDC41\uDC45\uDCB1\uDCB2\uDCB9\uDCBB\uDCBC\uDCBE\uDCC1\uDDB0\uDDB1\uDDB8-\uDDBB\uDDBE\uDE30-\uDE32\uDE3B\uDE3C\uDE3E\uDEAC\uDEAE\uDEAF\uDEB6\uDF26]|\uD806[\uDC2C-\uDC2E\uDC38\uDD31-\uDD35\uDD37\uDD38\uDD3D\uDD40\uDD42\uDDD1-\uDDD3\uDDDC-\uDDDF\uDDE4\uDE39\uDE57\uDE58\uDE97]|\uD807[\uDC2F\uDC3E\uDCA9\uDCB1\uDCB4\uDD8A-\uDD8E\uDD93\uDD94\uDD96\uDEF5\uDEF6]|\uD81B[\uDF51-\uDF87\uDFF0\uDFF1]|\uD834[\uDD66\uDD6D])$/; - var reL = /^[\u1100-\u115F\uA960-\uA97C]$/; - var reV = /^[\u1160-\u11A7\uD7B0-\uD7C6]$/; - var reT = /^[\u11A8-\u11FF\uD7CB-\uD7FB]$/; - var reLV = /^[\uAC00\uAC1C\uAC38\uAC54\uAC70\uAC8C\uACA8\uACC4\uACE0\uACFC\uAD18\uAD34\uAD50\uAD6C\uAD88\uADA4\uADC0\uADDC\uADF8\uAE14\uAE30\uAE4C\uAE68\uAE84\uAEA0\uAEBC\uAED8\uAEF4\uAF10\uAF2C\uAF48\uAF64\uAF80\uAF9C\uAFB8\uAFD4\uAFF0\uB00C\uB028\uB044\uB060\uB07C\uB098\uB0B4\uB0D0\uB0EC\uB108\uB124\uB140\uB15C\uB178\uB194\uB1B0\uB1CC\uB1E8\uB204\uB220\uB23C\uB258\uB274\uB290\uB2AC\uB2C8\uB2E4\uB300\uB31C\uB338\uB354\uB370\uB38C\uB3A8\uB3C4\uB3E0\uB3FC\uB418\uB434\uB450\uB46C\uB488\uB4A4\uB4C0\uB4DC\uB4F8\uB514\uB530\uB54C\uB568\uB584\uB5A0\uB5BC\uB5D8\uB5F4\uB610\uB62C\uB648\uB664\uB680\uB69C\uB6B8\uB6D4\uB6F0\uB70C\uB728\uB744\uB760\uB77C\uB798\uB7B4\uB7D0\uB7EC\uB808\uB824\uB840\uB85C\uB878\uB894\uB8B0\uB8CC\uB8E8\uB904\uB920\uB93C\uB958\uB974\uB990\uB9AC\uB9C8\uB9E4\uBA00\uBA1C\uBA38\uBA54\uBA70\uBA8C\uBAA8\uBAC4\uBAE0\uBAFC\uBB18\uBB34\uBB50\uBB6C\uBB88\uBBA4\uBBC0\uBBDC\uBBF8\uBC14\uBC30\uBC4C\uBC68\uBC84\uBCA0\uBCBC\uBCD8\uBCF4\uBD10\uBD2C\uBD48\uBD64\uBD80\uBD9C\uBDB8\uBDD4\uBDF0\uBE0C\uBE28\uBE44\uBE60\uBE7C\uBE98\uBEB4\uBED0\uBEEC\uBF08\uBF24\uBF40\uBF5C\uBF78\uBF94\uBFB0\uBFCC\uBFE8\uC004\uC020\uC03C\uC058\uC074\uC090\uC0AC\uC0C8\uC0E4\uC100\uC11C\uC138\uC154\uC170\uC18C\uC1A8\uC1C4\uC1E0\uC1FC\uC218\uC234\uC250\uC26C\uC288\uC2A4\uC2C0\uC2DC\uC2F8\uC314\uC330\uC34C\uC368\uC384\uC3A0\uC3BC\uC3D8\uC3F4\uC410\uC42C\uC448\uC464\uC480\uC49C\uC4B8\uC4D4\uC4F0\uC50C\uC528\uC544\uC560\uC57C\uC598\uC5B4\uC5D0\uC5EC\uC608\uC624\uC640\uC65C\uC678\uC694\uC6B0\uC6CC\uC6E8\uC704\uC720\uC73C\uC758\uC774\uC790\uC7AC\uC7C8\uC7E4\uC800\uC81C\uC838\uC854\uC870\uC88C\uC8A8\uC8C4\uC8E0\uC8FC\uC918\uC934\uC950\uC96C\uC988\uC9A4\uC9C0\uC9DC\uC9F8\uCA14\uCA30\uCA4C\uCA68\uCA84\uCAA0\uCABC\uCAD8\uCAF4\uCB10\uCB2C\uCB48\uCB64\uCB80\uCB9C\uCBB8\uCBD4\uCBF0\uCC0C\uCC28\uCC44\uCC60\uCC7C\uCC98\uCCB4\uCCD0\uCCEC\uCD08\uCD24\uCD40\uCD5C\uCD78\uCD94\uCDB0\uCDCC\uCDE8\uCE04\uCE20\uCE3C\uCE58\uCE74\uCE90\uCEAC\uCEC8\uCEE4\uCF00\uCF1C\uCF38\uCF54\uCF70\uCF8C\uCFA8\uCFC4\uCFE0\uCFFC\uD018\uD034\uD050\uD06C\uD088\uD0A4\uD0C0\uD0DC\uD0F8\uD114\uD130\uD14C\uD168\uD184\uD1A0\uD1BC\uD1D8\uD1F4\uD210\uD22C\uD248\uD264\uD280\uD29C\uD2B8\uD2D4\uD2F0\uD30C\uD328\uD344\uD360\uD37C\uD398\uD3B4\uD3D0\uD3EC\uD408\uD424\uD440\uD45C\uD478\uD494\uD4B0\uD4CC\uD4E8\uD504\uD520\uD53C\uD558\uD574\uD590\uD5AC\uD5C8\uD5E4\uD600\uD61C\uD638\uD654\uD670\uD68C\uD6A8\uD6C4\uD6E0\uD6FC\uD718\uD734\uD750\uD76C\uD788]$/; - var reLVT = /^[\uAC01-\uAC1B\uAC1D-\uAC37\uAC39-\uAC53\uAC55-\uAC6F\uAC71-\uAC8B\uAC8D-\uACA7\uACA9-\uACC3\uACC5-\uACDF\uACE1-\uACFB\uACFD-\uAD17\uAD19-\uAD33\uAD35-\uAD4F\uAD51-\uAD6B\uAD6D-\uAD87\uAD89-\uADA3\uADA5-\uADBF\uADC1-\uADDB\uADDD-\uADF7\uADF9-\uAE13\uAE15-\uAE2F\uAE31-\uAE4B\uAE4D-\uAE67\uAE69-\uAE83\uAE85-\uAE9F\uAEA1-\uAEBB\uAEBD-\uAED7\uAED9-\uAEF3\uAEF5-\uAF0F\uAF11-\uAF2B\uAF2D-\uAF47\uAF49-\uAF63\uAF65-\uAF7F\uAF81-\uAF9B\uAF9D-\uAFB7\uAFB9-\uAFD3\uAFD5-\uAFEF\uAFF1-\uB00B\uB00D-\uB027\uB029-\uB043\uB045-\uB05F\uB061-\uB07B\uB07D-\uB097\uB099-\uB0B3\uB0B5-\uB0CF\uB0D1-\uB0EB\uB0ED-\uB107\uB109-\uB123\uB125-\uB13F\uB141-\uB15B\uB15D-\uB177\uB179-\uB193\uB195-\uB1AF\uB1B1-\uB1CB\uB1CD-\uB1E7\uB1E9-\uB203\uB205-\uB21F\uB221-\uB23B\uB23D-\uB257\uB259-\uB273\uB275-\uB28F\uB291-\uB2AB\uB2AD-\uB2C7\uB2C9-\uB2E3\uB2E5-\uB2FF\uB301-\uB31B\uB31D-\uB337\uB339-\uB353\uB355-\uB36F\uB371-\uB38B\uB38D-\uB3A7\uB3A9-\uB3C3\uB3C5-\uB3DF\uB3E1-\uB3FB\uB3FD-\uB417\uB419-\uB433\uB435-\uB44F\uB451-\uB46B\uB46D-\uB487\uB489-\uB4A3\uB4A5-\uB4BF\uB4C1-\uB4DB\uB4DD-\uB4F7\uB4F9-\uB513\uB515-\uB52F\uB531-\uB54B\uB54D-\uB567\uB569-\uB583\uB585-\uB59F\uB5A1-\uB5BB\uB5BD-\uB5D7\uB5D9-\uB5F3\uB5F5-\uB60F\uB611-\uB62B\uB62D-\uB647\uB649-\uB663\uB665-\uB67F\uB681-\uB69B\uB69D-\uB6B7\uB6B9-\uB6D3\uB6D5-\uB6EF\uB6F1-\uB70B\uB70D-\uB727\uB729-\uB743\uB745-\uB75F\uB761-\uB77B\uB77D-\uB797\uB799-\uB7B3\uB7B5-\uB7CF\uB7D1-\uB7EB\uB7ED-\uB807\uB809-\uB823\uB825-\uB83F\uB841-\uB85B\uB85D-\uB877\uB879-\uB893\uB895-\uB8AF\uB8B1-\uB8CB\uB8CD-\uB8E7\uB8E9-\uB903\uB905-\uB91F\uB921-\uB93B\uB93D-\uB957\uB959-\uB973\uB975-\uB98F\uB991-\uB9AB\uB9AD-\uB9C7\uB9C9-\uB9E3\uB9E5-\uB9FF\uBA01-\uBA1B\uBA1D-\uBA37\uBA39-\uBA53\uBA55-\uBA6F\uBA71-\uBA8B\uBA8D-\uBAA7\uBAA9-\uBAC3\uBAC5-\uBADF\uBAE1-\uBAFB\uBAFD-\uBB17\uBB19-\uBB33\uBB35-\uBB4F\uBB51-\uBB6B\uBB6D-\uBB87\uBB89-\uBBA3\uBBA5-\uBBBF\uBBC1-\uBBDB\uBBDD-\uBBF7\uBBF9-\uBC13\uBC15-\uBC2F\uBC31-\uBC4B\uBC4D-\uBC67\uBC69-\uBC83\uBC85-\uBC9F\uBCA1-\uBCBB\uBCBD-\uBCD7\uBCD9-\uBCF3\uBCF5-\uBD0F\uBD11-\uBD2B\uBD2D-\uBD47\uBD49-\uBD63\uBD65-\uBD7F\uBD81-\uBD9B\uBD9D-\uBDB7\uBDB9-\uBDD3\uBDD5-\uBDEF\uBDF1-\uBE0B\uBE0D-\uBE27\uBE29-\uBE43\uBE45-\uBE5F\uBE61-\uBE7B\uBE7D-\uBE97\uBE99-\uBEB3\uBEB5-\uBECF\uBED1-\uBEEB\uBEED-\uBF07\uBF09-\uBF23\uBF25-\uBF3F\uBF41-\uBF5B\uBF5D-\uBF77\uBF79-\uBF93\uBF95-\uBFAF\uBFB1-\uBFCB\uBFCD-\uBFE7\uBFE9-\uC003\uC005-\uC01F\uC021-\uC03B\uC03D-\uC057\uC059-\uC073\uC075-\uC08F\uC091-\uC0AB\uC0AD-\uC0C7\uC0C9-\uC0E3\uC0E5-\uC0FF\uC101-\uC11B\uC11D-\uC137\uC139-\uC153\uC155-\uC16F\uC171-\uC18B\uC18D-\uC1A7\uC1A9-\uC1C3\uC1C5-\uC1DF\uC1E1-\uC1FB\uC1FD-\uC217\uC219-\uC233\uC235-\uC24F\uC251-\uC26B\uC26D-\uC287\uC289-\uC2A3\uC2A5-\uC2BF\uC2C1-\uC2DB\uC2DD-\uC2F7\uC2F9-\uC313\uC315-\uC32F\uC331-\uC34B\uC34D-\uC367\uC369-\uC383\uC385-\uC39F\uC3A1-\uC3BB\uC3BD-\uC3D7\uC3D9-\uC3F3\uC3F5-\uC40F\uC411-\uC42B\uC42D-\uC447\uC449-\uC463\uC465-\uC47F\uC481-\uC49B\uC49D-\uC4B7\uC4B9-\uC4D3\uC4D5-\uC4EF\uC4F1-\uC50B\uC50D-\uC527\uC529-\uC543\uC545-\uC55F\uC561-\uC57B\uC57D-\uC597\uC599-\uC5B3\uC5B5-\uC5CF\uC5D1-\uC5EB\uC5ED-\uC607\uC609-\uC623\uC625-\uC63F\uC641-\uC65B\uC65D-\uC677\uC679-\uC693\uC695-\uC6AF\uC6B1-\uC6CB\uC6CD-\uC6E7\uC6E9-\uC703\uC705-\uC71F\uC721-\uC73B\uC73D-\uC757\uC759-\uC773\uC775-\uC78F\uC791-\uC7AB\uC7AD-\uC7C7\uC7C9-\uC7E3\uC7E5-\uC7FF\uC801-\uC81B\uC81D-\uC837\uC839-\uC853\uC855-\uC86F\uC871-\uC88B\uC88D-\uC8A7\uC8A9-\uC8C3\uC8C5-\uC8DF\uC8E1-\uC8FB\uC8FD-\uC917\uC919-\uC933\uC935-\uC94F\uC951-\uC96B\uC96D-\uC987\uC989-\uC9A3\uC9A5-\uC9BF\uC9C1-\uC9DB\uC9DD-\uC9F7\uC9F9-\uCA13\uCA15-\uCA2F\uCA31-\uCA4B\uCA4D-\uCA67\uCA69-\uCA83\uCA85-\uCA9F\uCAA1-\uCABB\uCABD-\uCAD7\uCAD9-\uCAF3\uCAF5-\uCB0F\uCB11-\uCB2B\uCB2D-\uCB47\uCB49-\uCB63\uCB65-\uCB7F\uCB81-\uCB9B\uCB9D-\uCBB7\uCBB9-\uCBD3\uCBD5-\uCBEF\uCBF1-\uCC0B\uCC0D-\uCC27\uCC29-\uCC43\uCC45-\uCC5F\uCC61-\uCC7B\uCC7D-\uCC97\uCC99-\uCCB3\uCCB5-\uCCCF\uCCD1-\uCCEB\uCCED-\uCD07\uCD09-\uCD23\uCD25-\uCD3F\uCD41-\uCD5B\uCD5D-\uCD77\uCD79-\uCD93\uCD95-\uCDAF\uCDB1-\uCDCB\uCDCD-\uCDE7\uCDE9-\uCE03\uCE05-\uCE1F\uCE21-\uCE3B\uCE3D-\uCE57\uCE59-\uCE73\uCE75-\uCE8F\uCE91-\uCEAB\uCEAD-\uCEC7\uCEC9-\uCEE3\uCEE5-\uCEFF\uCF01-\uCF1B\uCF1D-\uCF37\uCF39-\uCF53\uCF55-\uCF6F\uCF71-\uCF8B\uCF8D-\uCFA7\uCFA9-\uCFC3\uCFC5-\uCFDF\uCFE1-\uCFFB\uCFFD-\uD017\uD019-\uD033\uD035-\uD04F\uD051-\uD06B\uD06D-\uD087\uD089-\uD0A3\uD0A5-\uD0BF\uD0C1-\uD0DB\uD0DD-\uD0F7\uD0F9-\uD113\uD115-\uD12F\uD131-\uD14B\uD14D-\uD167\uD169-\uD183\uD185-\uD19F\uD1A1-\uD1BB\uD1BD-\uD1D7\uD1D9-\uD1F3\uD1F5-\uD20F\uD211-\uD22B\uD22D-\uD247\uD249-\uD263\uD265-\uD27F\uD281-\uD29B\uD29D-\uD2B7\uD2B9-\uD2D3\uD2D5-\uD2EF\uD2F1-\uD30B\uD30D-\uD327\uD329-\uD343\uD345-\uD35F\uD361-\uD37B\uD37D-\uD397\uD399-\uD3B3\uD3B5-\uD3CF\uD3D1-\uD3EB\uD3ED-\uD407\uD409-\uD423\uD425-\uD43F\uD441-\uD45B\uD45D-\uD477\uD479-\uD493\uD495-\uD4AF\uD4B1-\uD4CB\uD4CD-\uD4E7\uD4E9-\uD503\uD505-\uD51F\uD521-\uD53B\uD53D-\uD557\uD559-\uD573\uD575-\uD58F\uD591-\uD5AB\uD5AD-\uD5C7\uD5C9-\uD5E3\uD5E5-\uD5FF\uD601-\uD61B\uD61D-\uD637\uD639-\uD653\uD655-\uD66F\uD671-\uD68B\uD68D-\uD6A7\uD6A9-\uD6C3\uD6C5-\uD6DF\uD6E1-\uD6FB\uD6FD-\uD717\uD719-\uD733\uD735-\uD74F\uD751-\uD76B\uD76D-\uD787\uD789-\uD7A3]$/; - var reExtPict = /^(?:[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u2388\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2605\u2607-\u2612\u2614-\u2685\u2690-\u2705\u2708-\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763-\u2767\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC00-\uDCFF\uDD0D-\uDD0F\uDD2F\uDD6C-\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDAD-\uDDE5\uDE01-\uDE0F\uDE1A\uDE2F\uDE32-\uDE3A\uDE3C-\uDE3F\uDE49-\uDFFA]|\uD83D[\uDC00-\uDD3D\uDD46-\uDE4F\uDE80-\uDEFF\uDF74-\uDF7F\uDFD5-\uDFFF]|\uD83E[\uDC0C-\uDC0F\uDC48-\uDC4F\uDC5A-\uDC5F\uDC88-\uDC8F\uDCAE-\uDCFF\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDEFF]|\uD83F[\uDC00-\uDFFD])$/; - - var getCodepointType = function getCodepointType(_char4, code) { - var type = CodepointType.Any; - - if (_char4.search(reExtend) !== -1) { - type |= CodepointType.Extend; - } - - if (code === 0x200d) { - type |= CodepointType.ZWJ; - } - - if (code >= 0x1f1e6 && code <= 0x1f1ff) { - type |= CodepointType.RI; - } - - if (_char4.search(rePrepend) !== -1) { - type |= CodepointType.Prepend; - } - - if (_char4.search(reSpacingMark) !== -1) { - type |= CodepointType.SpacingMark; - } - - if (_char4.search(reL) !== -1) { - type |= CodepointType.L; - } - - if (_char4.search(reV) !== -1) { - type |= CodepointType.V; - } - - if (_char4.search(reT) !== -1) { - type |= CodepointType.T; - } - - if (_char4.search(reLV) !== -1) { - type |= CodepointType.LV; - } - - if (_char4.search(reLVT) !== -1) { - type |= CodepointType.LVT; - } - - if (_char4.search(reExtPict) !== -1) { - type |= CodepointType.ExtPict; - } - - return type; - }; - - function intersects(x, y) { - return (x & y) !== 0; - } - - var NonBoundaryPairs = [// GB6 - [CodepointType.L, CodepointType.L | CodepointType.V | CodepointType.LV | CodepointType.LVT], // GB7 - [CodepointType.LV | CodepointType.V, CodepointType.V | CodepointType.T], // GB8 - [CodepointType.LVT | CodepointType.T, CodepointType.T], // GB9 - [CodepointType.Any, CodepointType.Extend | CodepointType.ZWJ], // GB9a - [CodepointType.Any, CodepointType.SpacingMark], // GB9b - [CodepointType.Prepend, CodepointType.Any], // GB11 - [CodepointType.ZWJ, CodepointType.ExtPict], // GB12 and GB13 - [CodepointType.RI, CodepointType.RI]]; - - function isBoundaryPair(left, right) { - return NonBoundaryPairs.findIndex(function (r) { - return intersects(left, r[0]) && intersects(right, r[1]); - }) === -1; - } - - var endingEmojiZWJ = /(?:[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u2388\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2605\u2607-\u2612\u2614-\u2685\u2690-\u2705\u2708-\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763-\u2767\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC00-\uDCFF\uDD0D-\uDD0F\uDD2F\uDD6C-\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDAD-\uDDE5\uDE01-\uDE0F\uDE1A\uDE2F\uDE32-\uDE3A\uDE3C-\uDE3F\uDE49-\uDFFA]|\uD83D[\uDC00-\uDD3D\uDD46-\uDE4F\uDE80-\uDEFF\uDF74-\uDF7F\uDFD5-\uDFFF]|\uD83E[\uDC0C-\uDC0F\uDC48-\uDC4F\uDC5A-\uDC5F\uDC88-\uDC8F\uDCAE-\uDCFF\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDEFF]|\uD83F[\uDC00-\uDFFD])(?:[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D3-\u08E1\u08E3-\u0902\u093A\u093C\u0941-\u0948\u094D\u0951-\u0957\u0962\u0963\u0981\u09BC\u09BE\u09C1-\u09C4\u09CD\u09D7\u09E2\u09E3\u09FE\u0A01\u0A02\u0A3C\u0A41\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81\u0A82\u0ABC\u0AC1-\u0AC5\u0AC7\u0AC8\u0ACD\u0AE2\u0AE3\u0AFA-\u0AFF\u0B01\u0B3C\u0B3E\u0B3F\u0B41-\u0B44\u0B4D\u0B55-\u0B57\u0B62\u0B63\u0B82\u0BBE\u0BC0\u0BCD\u0BD7\u0C00\u0C04\u0C3E-\u0C40\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81\u0CBC\u0CBF\u0CC2\u0CC6\u0CCC\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D00\u0D01\u0D3B\u0D3C\u0D3E\u0D41-\u0D44\u0D4D\u0D57\u0D62\u0D63\u0D81\u0DCA\u0DCF\u0DD2-\u0DD4\u0DD6\u0DDF\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F71-\u0F7E\u0F80-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102D-\u1030\u1032-\u1037\u1039\u103A\u103D\u103E\u1058\u1059\u105E-\u1060\u1071-\u1074\u1082\u1085\u1086\u108D\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4\u17B5\u17B7-\u17BD\u17C6\u17C9-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193B\u1A17\u1A18\u1A1B\u1A56\u1A58-\u1A5E\u1A60\u1A62\u1A65-\u1A6C\u1A73-\u1A7C\u1A7F\u1AB0-\u1AC0\u1B00-\u1B03\u1B34-\u1B3A\u1B3C\u1B42\u1B6B-\u1B73\u1B80\u1B81\u1BA2-\u1BA5\u1BA8\u1BA9\u1BAB-\u1BAD\u1BE6\u1BE8\u1BE9\u1BED\u1BEF-\u1BF1\u1C2C-\u1C33\u1C36\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE0\u1CE2-\u1CE8\u1CED\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u200C\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA825\uA826\uA82C\uA8C4\uA8C5\uA8E0-\uA8F1\uA8FF\uA926-\uA92D\uA947-\uA951\uA980-\uA982\uA9B3\uA9B6-\uA9B9\uA9BC\uA9BD\uA9E5\uAA29-\uAA2E\uAA31\uAA32\uAA35\uAA36\uAA43\uAA4C\uAA7C\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEC\uAAED\uAAF6\uABE5\uABE8\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F\uFF9E\uFF9F]|\uD800[\uDDFD\uDEE0\uDF76-\uDF7A]|\uD802[\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F\uDEE5\uDEE6]|\uD803[\uDD24-\uDD27\uDEAB\uDEAC\uDF46-\uDF50]|\uD804[\uDC01\uDC38-\uDC46\uDC7F-\uDC81\uDCB3-\uDCB6\uDCB9\uDCBA\uDD00-\uDD02\uDD27-\uDD2B\uDD2D-\uDD34\uDD73\uDD80\uDD81\uDDB6-\uDDBE\uDDC9-\uDDCC\uDDCF\uDE2F-\uDE31\uDE34\uDE36\uDE37\uDE3E\uDEDF\uDEE3-\uDEEA\uDF00\uDF01\uDF3B\uDF3C\uDF3E\uDF40\uDF57\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC38-\uDC3F\uDC42-\uDC44\uDC46\uDC5E\uDCB0\uDCB3-\uDCB8\uDCBA\uDCBD\uDCBF\uDCC0\uDCC2\uDCC3\uDDAF\uDDB2-\uDDB5\uDDBC\uDDBD\uDDBF\uDDC0\uDDDC\uDDDD\uDE33-\uDE3A\uDE3D\uDE3F\uDE40\uDEAB\uDEAD\uDEB0-\uDEB5\uDEB7\uDF1D-\uDF1F\uDF22-\uDF25\uDF27-\uDF2B]|\uD806[\uDC2F-\uDC37\uDC39\uDC3A\uDD30\uDD3B\uDD3C\uDD3E\uDD43\uDDD4-\uDDD7\uDDDA\uDDDB\uDDE0\uDE01-\uDE0A\uDE33-\uDE38\uDE3B-\uDE3E\uDE47\uDE51-\uDE56\uDE59-\uDE5B\uDE8A-\uDE96\uDE98\uDE99]|\uD807[\uDC30-\uDC36\uDC38-\uDC3D\uDC3F\uDC92-\uDCA7\uDCAA-\uDCB0\uDCB2\uDCB3\uDCB5\uDCB6\uDD31-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD45\uDD47\uDD90\uDD91\uDD95\uDD97\uDEF3\uDEF4]|\uD81A[\uDEF0-\uDEF4\uDF30-\uDF36]|\uD81B[\uDF4F\uDF8F-\uDF92\uDFE4]|\uD82F[\uDC9D\uDC9E]|\uD834[\uDD65\uDD67-\uDD69\uDD6E-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A\uDD30-\uDD36\uDEEC-\uDEEF]|\uD83A[\uDCD0-\uDCD6\uDD44-\uDD4A]|\uD83C[\uDFFB-\uDFFF]|\uDB40[\uDC20-\uDC7F\uDD00-\uDDEF])*\u200D$/; - - var endsWithEmojiZWJ = function endsWithEmojiZWJ(str) { - return str.search(endingEmojiZWJ) !== -1; - }; - - var endingRIs = /(?:\uD83C[\uDDE6-\uDDFF])+$/g; - - var endsWithOddNumberOfRIs = function endsWithOddNumberOfRIs(str) { - var match = str.match(endingRIs); - - if (match === null) { - return false; - } else { - // A RI is represented by a surrogate pair. - var numRIs = match[0].length / 2; - return numRIs % 2 === 1; - } - }; - - /** - * Shared the function with isElementType utility - */ - - var isElement = function isElement(value) { - return isPlainObject.isPlainObject(value) && Node$1.isNodeList(value.children) && !Editor.isEditor(value); - }; - - var Element$1 = { - /** - * Check if a value implements the 'Ancestor' interface. - */ - isAncestor: function isAncestor(value) { - return isPlainObject.isPlainObject(value) && Node$1.isNodeList(value.children); - }, - - /** - * Check if a value implements the `Element` interface. - */ - isElement: isElement, - - /** - * Check if a value is an array of `Element` objects. - */ - isElementList: function isElementList(value) { - return Array.isArray(value) && value.every(function (val) { - return Element$1.isElement(val); - }); - }, - - /** - * Check if a set of props is a partial of Element. - */ - isElementProps: function isElementProps(props) { - return props.children !== undefined; - }, - - /** - * Check if a value implements the `Element` interface and has elementKey with selected value. - * Default it check to `type` key value - */ - isElementType: function isElementType(value, elementVal) { - var elementKey = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'type'; - return isElement(value) && value[elementKey] === elementVal; - }, - - /** - * Check if an element matches set of properties. - * - * Note: this checks custom properties, and it does not ensure that any - * children are equivalent. - */ - matches: function matches(element, props) { - for (var key in props) { - if (key === 'children') { - continue; - } - - if (element[key] !== props[key]) { - return false; - } - } - - return true; - } - }; - - var _excluded$4 = ["text"], - _excluded2$3 = ["text"]; - - function ownKeys$8(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } - - function _objectSpread$8(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$8(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$8(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } - - function _createForOfIteratorHelper$5(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$5(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } - - function _unsupportedIterableToArray$5(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$5(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$5(o, minLen); } - - function _arrayLikeToArray$5(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } - var IS_EDITOR_CACHE = new WeakMap(); - var Editor = { - /** - * Get the ancestor above a location in the document. - */ - above: function above(editor) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var _options$voids = options.voids, - voids = _options$voids === void 0 ? false : _options$voids, - _options$mode = options.mode, - mode = _options$mode === void 0 ? 'lowest' : _options$mode, - _options$at = options.at, - at = _options$at === void 0 ? editor.selection : _options$at, - match = options.match; - - if (!at) { - return; - } - - var path = Editor.path(editor, at); - var reverse = mode === 'lowest'; - - var _iterator = _createForOfIteratorHelper$5(Editor.levels(editor, { - at: path, - voids: voids, - match: match, - reverse: reverse - })), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var _step$value = _slicedToArray(_step.value, 2), - n = _step$value[0], - p = _step$value[1]; - - if (!Text.isText(n) && !Path.equals(path, p)) { - return [n, p]; - } - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - }, - - /** - * Add a custom property to the leaf text nodes in the current selection. - * - * If the selection is currently collapsed, the marks will be added to the - * `editor.marks` property instead, and applied when text is inserted next. - */ - addMark: function addMark(editor, key, value) { - editor.addMark(key, value); - }, - - /** - * Get the point after a location. - */ - after: function after(editor, at) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - var anchor = Editor.point(editor, at, { - edge: 'end' - }); - var focus = Editor.end(editor, []); - var range = { - anchor: anchor, - focus: focus - }; - var _options$distance = options.distance, - distance = _options$distance === void 0 ? 1 : _options$distance; - var d = 0; - var target; - - var _iterator2 = _createForOfIteratorHelper$5(Editor.positions(editor, _objectSpread$8(_objectSpread$8({}, options), {}, { - at: range - }))), - _step2; - - try { - for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { - var p = _step2.value; - - if (d > distance) { - break; - } - - if (d !== 0) { - target = p; - } - - d++; - } - } catch (err) { - _iterator2.e(err); - } finally { - _iterator2.f(); - } - - return target; - }, - - /** - * Get the point before a location. - */ - before: function before(editor, at) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - var anchor = Editor.start(editor, []); - var focus = Editor.point(editor, at, { - edge: 'start' - }); - var range = { - anchor: anchor, - focus: focus - }; - var _options$distance2 = options.distance, - distance = _options$distance2 === void 0 ? 1 : _options$distance2; - var d = 0; - var target; - - var _iterator3 = _createForOfIteratorHelper$5(Editor.positions(editor, _objectSpread$8(_objectSpread$8({}, options), {}, { - at: range, - reverse: true - }))), - _step3; - - try { - for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { - var p = _step3.value; - - if (d > distance) { - break; - } - - if (d !== 0) { - target = p; - } - - d++; - } - } catch (err) { - _iterator3.e(err); - } finally { - _iterator3.f(); - } - - return target; - }, - - /** - * Delete content in the editor backward from the current selection. - */ - deleteBackward: function deleteBackward(editor) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var _options$unit = options.unit, - unit = _options$unit === void 0 ? 'character' : _options$unit; - editor.deleteBackward(unit); - }, - - /** - * Delete content in the editor forward from the current selection. - */ - deleteForward: function deleteForward(editor) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var _options$unit2 = options.unit, - unit = _options$unit2 === void 0 ? 'character' : _options$unit2; - editor.deleteForward(unit); - }, - - /** - * Delete the content in the current selection. - */ - deleteFragment: function deleteFragment(editor) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var _options$direction = options.direction, - direction = _options$direction === void 0 ? 'forward' : _options$direction; - editor.deleteFragment(direction); - }, - - /** - * Get the start and end points of a location. - */ - edges: function edges(editor, at) { - return [Editor.start(editor, at), Editor.end(editor, at)]; - }, - - /** - * Get the end point of a location. - */ - end: function end(editor, at) { - return Editor.point(editor, at, { - edge: 'end' - }); - }, - - /** - * Get the first node at a location. - */ - first: function first(editor, at) { - var path = Editor.path(editor, at, { - edge: 'start' - }); - return Editor.node(editor, path); - }, - - /** - * Get the fragment at a location. - */ - fragment: function fragment(editor, at) { - var range = Editor.range(editor, at); - var fragment = Node$1.fragment(editor, range); - return fragment; - }, - - /** - * Check if a node has block children. - */ - hasBlocks: function hasBlocks(editor, element) { - return element.children.some(function (n) { - return Editor.isBlock(editor, n); - }); - }, - - /** - * Check if a node has inline and text children. - */ - hasInlines: function hasInlines(editor, element) { - return element.children.some(function (n) { - return Text.isText(n) || Editor.isInline(editor, n); - }); - }, - - /** - * Check if a node has text children. - */ - hasTexts: function hasTexts(editor, element) { - return element.children.every(function (n) { - return Text.isText(n); - }); - }, - - /** - * Insert a block break at the current selection. - * - * If the selection is currently expanded, it will be deleted first. - */ - insertBreak: function insertBreak(editor) { - editor.insertBreak(); - }, - - /** - * Insert a fragment at the current selection. - * - * If the selection is currently expanded, it will be deleted first. - */ - insertFragment: function insertFragment(editor, fragment) { - editor.insertFragment(fragment); - }, - - /** - * Insert a node at the current selection. - * - * If the selection is currently expanded, it will be deleted first. - */ - insertNode: function insertNode(editor, node) { - editor.insertNode(node); - }, - - /** - * Insert text at the current selection. - * - * If the selection is currently expanded, it will be deleted first. - */ - insertText: function insertText(editor, text) { - editor.insertText(text); - }, - - /** - * Check if a value is a block `Element` object. - */ - isBlock: function isBlock(editor, value) { - return Element$1.isElement(value) && !editor.isInline(value); - }, - - /** - * Check if a value is an `Editor` object. - */ - isEditor: function isEditor(value) { - if (!isPlainObject.isPlainObject(value)) return false; - var cachedIsEditor = IS_EDITOR_CACHE.get(value); - - if (cachedIsEditor !== undefined) { - return cachedIsEditor; - } - - var isEditor = typeof value.addMark === 'function' && typeof value.apply === 'function' && typeof value.deleteBackward === 'function' && typeof value.deleteForward === 'function' && typeof value.deleteFragment === 'function' && typeof value.insertBreak === 'function' && typeof value.insertFragment === 'function' && typeof value.insertNode === 'function' && typeof value.insertText === 'function' && typeof value.isInline === 'function' && typeof value.isVoid === 'function' && typeof value.normalizeNode === 'function' && typeof value.onChange === 'function' && typeof value.removeMark === 'function' && (value.marks === null || isPlainObject.isPlainObject(value.marks)) && (value.selection === null || Range.isRange(value.selection)) && Node$1.isNodeList(value.children) && Operation.isOperationList(value.operations); - IS_EDITOR_CACHE.set(value, isEditor); - return isEditor; - }, - - /** - * Check if a point is the end point of a location. - */ - isEnd: function isEnd(editor, point, at) { - var end = Editor.end(editor, at); - return Point.equals(point, end); - }, - - /** - * Check if a point is an edge of a location. - */ - isEdge: function isEdge(editor, point, at) { - return Editor.isStart(editor, point, at) || Editor.isEnd(editor, point, at); - }, - - /** - * Check if an element is empty, accounting for void nodes. - */ - isEmpty: function isEmpty(editor, element) { - var children = element.children; - - var _children = _slicedToArray(children, 1), - first = _children[0]; - - return children.length === 0 || children.length === 1 && Text.isText(first) && first.text === '' && !editor.isVoid(element); - }, - - /** - * Check if a value is an inline `Element` object. - */ - isInline: function isInline(editor, value) { - return Element$1.isElement(value) && editor.isInline(value); - }, - - /** - * Check if the editor is currently normalizing after each operation. - */ - isNormalizing: function isNormalizing(editor) { - var isNormalizing = NORMALIZING.get(editor); - return isNormalizing === undefined ? true : isNormalizing; - }, - - /** - * Check if a point is the start point of a location. - */ - isStart: function isStart(editor, point, at) { - // PERF: If the offset isn't `0` we know it's not the start. - if (point.offset !== 0) { - return false; - } - - var start = Editor.start(editor, at); - return Point.equals(point, start); - }, - - /** - * Check if a value is a void `Element` object. - */ - isVoid: function isVoid(editor, value) { - return Element$1.isElement(value) && editor.isVoid(value); - }, - - /** - * Get the last node at a location. - */ - last: function last(editor, at) { - var path = Editor.path(editor, at, { - edge: 'end' - }); - return Editor.node(editor, path); - }, - - /** - * Get the leaf text node at a location. - */ - leaf: function leaf(editor, at) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - var path = Editor.path(editor, at, options); - var node = Node$1.leaf(editor, path); - return [node, path]; - }, - - /** - * Iterate through all of the levels at a location. - */ - levels: function* levels(editor) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var _options$at2 = options.at, - at = _options$at2 === void 0 ? editor.selection : _options$at2, - _options$reverse = options.reverse, - reverse = _options$reverse === void 0 ? false : _options$reverse, - _options$voids2 = options.voids, - voids = _options$voids2 === void 0 ? false : _options$voids2; - var match = options.match; - - if (match == null) { - match = function match() { - return true; - }; - } - - if (!at) { - return; - } - - var levels = []; - var path = Editor.path(editor, at); - - var _iterator4 = _createForOfIteratorHelper$5(Node$1.levels(editor, path)), - _step4; - - try { - for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { - var _step4$value = _slicedToArray(_step4.value, 2), - n = _step4$value[0], - p = _step4$value[1]; - - if (!match(n, p)) { - continue; - } - - levels.push([n, p]); - - if (!voids && Editor.isVoid(editor, n)) { - break; - } - } - } catch (err) { - _iterator4.e(err); - } finally { - _iterator4.f(); - } - - if (reverse) { - levels.reverse(); - } - - yield* levels; - }, - - /** - * Get the marks that would be added to text at the current selection. - */ - marks: function marks(editor) { - var marks = editor.marks, - selection = editor.selection; - - if (!selection) { - return null; - } - - if (marks) { - return marks; - } - - if (Range.isExpanded(selection)) { - var _Editor$nodes = Editor.nodes(editor, { - match: Text.isText - }), - _Editor$nodes2 = _slicedToArray(_Editor$nodes, 1), - match = _Editor$nodes2[0]; - - if (match) { - var _match = _slicedToArray(match, 1), - _node = _match[0]; - - _node.text; - var _rest = _objectWithoutProperties(_node, _excluded$4); - - return _rest; - } else { - return {}; - } - } - - var anchor = selection.anchor; - var path = anchor.path; - - var _Editor$leaf = Editor.leaf(editor, path), - _Editor$leaf2 = _slicedToArray(_Editor$leaf, 1), - node = _Editor$leaf2[0]; - - if (anchor.offset === 0) { - var prev = Editor.previous(editor, { - at: path, - match: Text.isText - }); - var block = Editor.above(editor, { - match: function match(n) { - return Editor.isBlock(editor, n); - } - }); - - if (prev && block) { - var _prev = _slicedToArray(prev, 2), - prevNode = _prev[0], - prevPath = _prev[1]; - - var _block = _slicedToArray(block, 2), - blockPath = _block[1]; - - if (Path.isAncestor(blockPath, prevPath)) { - node = prevNode; - } - } - } - - var _node2 = node; - _node2.text; - var rest = _objectWithoutProperties(_node2, _excluded2$3); - - return rest; - }, - - /** - * Get the matching node in the branch of the document after a location. - */ - next: function next(editor) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var _options$mode2 = options.mode, - mode = _options$mode2 === void 0 ? 'lowest' : _options$mode2, - _options$voids3 = options.voids, - voids = _options$voids3 === void 0 ? false : _options$voids3; - var match = options.match, - _options$at3 = options.at, - at = _options$at3 === void 0 ? editor.selection : _options$at3; - - if (!at) { - return; - } - - var pointAfterLocation = Editor.after(editor, at, { - voids: voids - }); - if (!pointAfterLocation) return; - - var _Editor$last = Editor.last(editor, []), - _Editor$last2 = _slicedToArray(_Editor$last, 2), - to = _Editor$last2[1]; - - var span = [pointAfterLocation.path, to]; - - if (Path.isPath(at) && at.length === 0) { - throw new Error("Cannot get the next node from the root node!"); - } - - if (match == null) { - if (Path.isPath(at)) { - var _Editor$parent = Editor.parent(editor, at), - _Editor$parent2 = _slicedToArray(_Editor$parent, 1), - parent = _Editor$parent2[0]; - - match = function match(n) { - return parent.children.includes(n); - }; - } else { - match = function match() { - return true; - }; - } - } - - var _Editor$nodes3 = Editor.nodes(editor, { - at: span, - match: match, - mode: mode, - voids: voids - }), - _Editor$nodes4 = _slicedToArray(_Editor$nodes3, 1), - next = _Editor$nodes4[0]; - - return next; - }, - - /** - * Get the node at a location. - */ - node: function node(editor, at) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - var path = Editor.path(editor, at, options); - var node = Node$1.get(editor, path); - return [node, path]; - }, - - /** - * Iterate through all of the nodes in the Editor. - */ - nodes: function* nodes(editor) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var _options$at4 = options.at, - at = _options$at4 === void 0 ? editor.selection : _options$at4, - _options$mode3 = options.mode, - mode = _options$mode3 === void 0 ? 'all' : _options$mode3, - _options$universal = options.universal, - universal = _options$universal === void 0 ? false : _options$universal, - _options$reverse2 = options.reverse, - reverse = _options$reverse2 === void 0 ? false : _options$reverse2, - _options$voids4 = options.voids, - voids = _options$voids4 === void 0 ? false : _options$voids4; - var match = options.match; - - if (!match) { - match = function match() { - return true; - }; - } - - if (!at) { - return; - } - - var from; - var to; - - if (Span.isSpan(at)) { - from = at[0]; - to = at[1]; - } else { - var first = Editor.path(editor, at, { - edge: 'start' - }); - var last = Editor.path(editor, at, { - edge: 'end' - }); - from = reverse ? last : first; - to = reverse ? first : last; - } - - var nodeEntries = Node$1.nodes(editor, { - reverse: reverse, - from: from, - to: to, - pass: function pass(_ref) { - var _ref2 = _slicedToArray(_ref, 1), - n = _ref2[0]; - - return voids ? false : Editor.isVoid(editor, n); - } - }); - var matches = []; - var hit; - - var _iterator5 = _createForOfIteratorHelper$5(nodeEntries), - _step5; - - try { - for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { - var _step5$value = _slicedToArray(_step5.value, 2), - node = _step5$value[0], - path = _step5$value[1]; - - var isLower = hit && Path.compare(path, hit[1]) === 0; // In highest mode any node lower than the last hit is not a match. - - if (mode === 'highest' && isLower) { - continue; - } - - if (!match(node, path)) { - // If we've arrived at a leaf text node that is not lower than the last - // hit, then we've found a branch that doesn't include a match, which - // means the match is not universal. - if (universal && !isLower && Text.isText(node)) { - return; - } else { - continue; - } - } // If there's a match and it's lower than the last, update the hit. - - - if (mode === 'lowest' && isLower) { - hit = [node, path]; - continue; - } // In lowest mode we emit the last hit, once it's guaranteed lowest. - - - var emit = mode === 'lowest' ? hit : [node, path]; - - if (emit) { - if (universal) { - matches.push(emit); - } else { - yield emit; - } - } - - hit = [node, path]; - } // Since lowest is always emitting one behind, catch up at the end. - - } catch (err) { - _iterator5.e(err); - } finally { - _iterator5.f(); - } - - if (mode === 'lowest' && hit) { - if (universal) { - matches.push(hit); - } else { - yield hit; - } - } // Universal defers to ensure that the match occurs in every branch, so we - // yield all of the matches after iterating. - - - if (universal) { - yield* matches; - } - }, - - /** - * Normalize any dirty objects in the editor. - */ - normalize: function normalize(editor) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var _options$force = options.force, - force = _options$force === void 0 ? false : _options$force; - - var getDirtyPaths = function getDirtyPaths(editor) { - return DIRTY_PATHS.get(editor) || []; - }; - - if (!Editor.isNormalizing(editor)) { - return; - } - - if (force) { - var allPaths = Array.from(Node$1.nodes(editor), function (_ref3) { - var _ref4 = _slicedToArray(_ref3, 2), - p = _ref4[1]; - - return p; - }); - DIRTY_PATHS.set(editor, allPaths); - } - - if (getDirtyPaths(editor).length === 0) { - return; - } - - Editor.withoutNormalizing(editor, function () { - /* - Fix dirty elements with no children. - editor.normalizeNode() does fix this, but some normalization fixes also require it to work. - Running an initial pass avoids the catch-22 race condition. - */ - var _iterator6 = _createForOfIteratorHelper$5(getDirtyPaths(editor)), - _step6; - - try { - for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) { - var _dirtyPath = _step6.value; - - if (Node$1.has(editor, _dirtyPath)) { - var _entry = Editor.node(editor, _dirtyPath); - - var _entry2 = _slicedToArray(_entry, 2), - node = _entry2[0], - _ = _entry2[1]; - /* - The default normalizer inserts an empty text node in this scenario, but it can be customised. - So there is some risk here. - As long as the normalizer only inserts child nodes for this case it is safe to do in any order; - by definition adding children to an empty node can't cause other paths to change. - */ - - - if (Element$1.isElement(node) && node.children.length === 0) { - editor.normalizeNode(_entry); - } - } - } - } catch (err) { - _iterator6.e(err); - } finally { - _iterator6.f(); - } - - var max = getDirtyPaths(editor).length * 42; // HACK: better way? - - var m = 0; - - while (getDirtyPaths(editor).length !== 0) { - if (m > max) { - throw new Error("\n Could not completely normalize the editor after ".concat(max, " iterations! This is usually due to incorrect normalization logic that leaves a node in an invalid state.\n ")); - } - - var dirtyPath = getDirtyPaths(editor).pop(); // If the node doesn't exist in the tree, it does not need to be normalized. - - if (Node$1.has(editor, dirtyPath)) { - var entry = Editor.node(editor, dirtyPath); - editor.normalizeNode(entry); - } - - m++; - } - }); - }, - - /** - * Get the parent node of a location. - */ - parent: function parent(editor, at) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - var path = Editor.path(editor, at, options); - var parentPath = Path.parent(path); - var entry = Editor.node(editor, parentPath); - return entry; - }, - - /** - * Get the path of a location. - */ - path: function path(editor, at) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - var depth = options.depth, - edge = options.edge; - - if (Path.isPath(at)) { - if (edge === 'start') { - var _Node$first = Node$1.first(editor, at), - _Node$first2 = _slicedToArray(_Node$first, 2), - firstPath = _Node$first2[1]; - - at = firstPath; - } else if (edge === 'end') { - var _Node$last = Node$1.last(editor, at), - _Node$last2 = _slicedToArray(_Node$last, 2), - lastPath = _Node$last2[1]; - - at = lastPath; - } - } - - if (Range.isRange(at)) { - if (edge === 'start') { - at = Range.start(at); - } else if (edge === 'end') { - at = Range.end(at); - } else { - at = Path.common(at.anchor.path, at.focus.path); - } - } - - if (Point.isPoint(at)) { - at = at.path; - } - - if (depth != null) { - at = at.slice(0, depth); - } - - return at; - }, - hasPath: function hasPath(editor, path) { - return Node$1.has(editor, path); - }, - - /** - * Create a mutable ref for a `Path` object, which will stay in sync as new - * operations are applied to the editor. - */ - pathRef: function pathRef(editor, path) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - var _options$affinity = options.affinity, - affinity = _options$affinity === void 0 ? 'forward' : _options$affinity; - var ref = { - current: path, - affinity: affinity, - unref: function unref() { - var current = ref.current; - var pathRefs = Editor.pathRefs(editor); - pathRefs["delete"](ref); - ref.current = null; - return current; - } - }; - var refs = Editor.pathRefs(editor); - refs.add(ref); - return ref; - }, - - /** - * Get the set of currently tracked path refs of the editor. - */ - pathRefs: function pathRefs(editor) { - var refs = PATH_REFS.get(editor); - - if (!refs) { - refs = new Set(); - PATH_REFS.set(editor, refs); - } - - return refs; - }, - - /** - * Get the start or end point of a location. - */ - point: function point(editor, at) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - var _options$edge = options.edge, - edge = _options$edge === void 0 ? 'start' : _options$edge; - - if (Path.isPath(at)) { - var path; - - if (edge === 'end') { - var _Node$last3 = Node$1.last(editor, at), - _Node$last4 = _slicedToArray(_Node$last3, 2), - lastPath = _Node$last4[1]; - - path = lastPath; - } else { - var _Node$first3 = Node$1.first(editor, at), - _Node$first4 = _slicedToArray(_Node$first3, 2), - firstPath = _Node$first4[1]; - - path = firstPath; - } - - var node = Node$1.get(editor, path); - - if (!Text.isText(node)) { - throw new Error("Cannot get the ".concat(edge, " point in the node at path [").concat(at, "] because it has no ").concat(edge, " text node.")); - } - - return { - path: path, - offset: edge === 'end' ? node.text.length : 0 - }; - } - - if (Range.isRange(at)) { - var _Range$edges = Range.edges(at), - _Range$edges2 = _slicedToArray(_Range$edges, 2), - start = _Range$edges2[0], - end = _Range$edges2[1]; - - return edge === 'start' ? start : end; - } - - return at; - }, - - /** - * Create a mutable ref for a `Point` object, which will stay in sync as new - * operations are applied to the editor. - */ - pointRef: function pointRef(editor, point) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - var _options$affinity2 = options.affinity, - affinity = _options$affinity2 === void 0 ? 'forward' : _options$affinity2; - var ref = { - current: point, - affinity: affinity, - unref: function unref() { - var current = ref.current; - var pointRefs = Editor.pointRefs(editor); - pointRefs["delete"](ref); - ref.current = null; - return current; - } - }; - var refs = Editor.pointRefs(editor); - refs.add(ref); - return ref; - }, - - /** - * Get the set of currently tracked point refs of the editor. - */ - pointRefs: function pointRefs(editor) { - var refs = POINT_REFS.get(editor); - - if (!refs) { - refs = new Set(); - POINT_REFS.set(editor, refs); - } - - return refs; - }, - - /** - * Return all the positions in `at` range where a `Point` can be placed. - * - * By default, moves forward by individual offsets at a time, but - * the `unit` option can be used to to move by character, word, line, or block. - * - * The `reverse` option can be used to change iteration direction. - * - * Note: By default void nodes are treated as a single point and iteration - * will not happen inside their content unless you pass in true for the - * `voids` option, then iteration will occur. - */ - positions: function* positions(editor) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var _options$at5 = options.at, - at = _options$at5 === void 0 ? editor.selection : _options$at5, - _options$unit3 = options.unit, - unit = _options$unit3 === void 0 ? 'offset' : _options$unit3, - _options$reverse3 = options.reverse, - reverse = _options$reverse3 === void 0 ? false : _options$reverse3, - _options$voids5 = options.voids, - voids = _options$voids5 === void 0 ? false : _options$voids5; - - if (!at) { - return; - } - /** - * Algorithm notes: - * - * Each step `distance` is dynamic depending on the underlying text - * and the `unit` specified. Each step, e.g., a line or word, may - * span multiple text nodes, so we iterate through the text both on - * two levels in step-sync: - * - * `leafText` stores the text on a text leaf level, and is advanced - * through using the counters `leafTextOffset` and `leafTextRemaining`. - * - * `blockText` stores the text on a block level, and is shortened - * by `distance` every time it is advanced. - * - * We only maintain a window of one blockText and one leafText because - * a block node always appears before all of its leaf nodes. - */ - - - var range = Editor.range(editor, at); - - var _Range$edges3 = Range.edges(range), - _Range$edges4 = _slicedToArray(_Range$edges3, 2), - start = _Range$edges4[0], - end = _Range$edges4[1]; - - var first = reverse ? end : start; - var isNewBlock = false; - var blockText = ''; - var distance = 0; // Distance for leafText to catch up to blockText. - - var leafTextRemaining = 0; - var leafTextOffset = 0; // Iterate through all nodes in range, grabbing entire textual content - // of block nodes in blockText, and text nodes in leafText. - // Exploits the fact that nodes are sequenced in such a way that we first - // encounter the block node, then all of its text nodes, so when iterating - // through the blockText and leafText we just need to remember a window of - // one block node and leaf node, respectively. - - var _iterator7 = _createForOfIteratorHelper$5(Editor.nodes(editor, { - at: at, - reverse: reverse, - voids: voids - })), - _step7; - - try { - for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) { - var _step7$value = _slicedToArray(_step7.value, 2), - node = _step7$value[0], - path = _step7$value[1]; - - /* - * ELEMENT NODE - Yield position(s) for voids, collect blockText for blocks - */ - if (Element$1.isElement(node)) { - // Void nodes are a special case, so by default we will always - // yield their first point. If the `voids` option is set to true, - // then we will iterate over their content. - if (!voids && editor.isVoid(node)) { - yield Editor.start(editor, path); - continue; - } // Inline element nodes are ignored as they don't themselves - // contribute to `blockText` or `leafText` - their parent and - // children do. - - - if (editor.isInline(node)) continue; // Block element node - set `blockText` to its text content. - - if (Editor.hasInlines(editor, node)) { - // We always exhaust block nodes before encountering a new one: - // console.assert(blockText === '', - // `blockText='${blockText}' - `+ - // `not exhausted before new block node`, path) - // Ensure range considered is capped to `range`, in the - // start/end edge cases where block extends beyond range. - // Equivalent to this, but presumably more performant: - // blockRange = Editor.range(editor, ...Editor.edges(editor, path)) - // blockRange = Range.intersection(range, blockRange) // intersect - // blockText = Editor.string(editor, blockRange, { voids }) - var e = Path.isAncestor(path, end.path) ? end : Editor.end(editor, path); - var s = Path.isAncestor(path, start.path) ? start : Editor.start(editor, path); - blockText = Editor.string(editor, { - anchor: s, - focus: e - }, { - voids: voids - }); - isNewBlock = true; - } - } - /* - * TEXT LEAF NODE - Iterate through text content, yielding - * positions every `distance` offset according to `unit`. - */ - - - if (Text.isText(node)) { - var isFirst = Path.equals(path, first.path); // Proof that we always exhaust text nodes before encountering a new one: - // console.assert(leafTextRemaining <= 0, - // `leafTextRemaining=${leafTextRemaining} - `+ - // `not exhausted before new leaf text node`, path) - // Reset `leafText` counters for new text node. - - if (isFirst) { - leafTextRemaining = reverse ? first.offset : node.text.length - first.offset; - leafTextOffset = first.offset; // Works for reverse too. - } else { - leafTextRemaining = node.text.length; - leafTextOffset = reverse ? leafTextRemaining : 0; - } // Yield position at the start of node (potentially). - - - if (isFirst || isNewBlock || unit === 'offset') { - yield { - path: path, - offset: leafTextOffset - }; - isNewBlock = false; - } // Yield positions every (dynamically calculated) `distance` offset. - - - while (true) { - // If `leafText` has caught up with `blockText` (distance=0), - // and if blockText is exhausted, break to get another block node, - // otherwise advance blockText forward by the new `distance`. - if (distance === 0) { - if (blockText === '') break; - distance = calcDistance(blockText, unit, reverse); // Split the string at the previously found distance and use the - // remaining string for the next iteration. - - blockText = splitByCharacterDistance(blockText, distance, reverse)[1]; - } // Advance `leafText` by the current `distance`. - - - leafTextOffset = reverse ? leafTextOffset - distance : leafTextOffset + distance; - leafTextRemaining = leafTextRemaining - distance; // If `leafText` is exhausted, break to get a new leaf node - // and set distance to the overflow amount, so we'll (maybe) - // catch up to blockText in the next leaf text node. - - if (leafTextRemaining < 0) { - distance = -leafTextRemaining; - break; - } // Successfully walked `distance` offsets through `leafText` - // to catch up with `blockText`, so we can reset `distance` - // and yield this position in this node. - - - distance = 0; - yield { - path: path, - offset: leafTextOffset - }; - } - } - } // Proof that upon completion, we've exahusted both leaf and block text: - // console.assert(leafTextRemaining <= 0, "leafText wasn't exhausted") - // console.assert(blockText === '', "blockText wasn't exhausted") - // Helper: - // Return the distance in offsets for a step of size `unit` on given string. - - } catch (err) { - _iterator7.e(err); - } finally { - _iterator7.f(); - } - - function calcDistance(text, unit, reverse) { - if (unit === 'character') { - return getCharacterDistance(text, reverse); - } else if (unit === 'word') { - return getWordDistance(text, reverse); - } else if (unit === 'line' || unit === 'block') { - return text.length; - } - - return 1; - } - }, - - /** - * Get the matching node in the branch of the document before a location. - */ - previous: function previous(editor) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var _options$mode4 = options.mode, - mode = _options$mode4 === void 0 ? 'lowest' : _options$mode4, - _options$voids6 = options.voids, - voids = _options$voids6 === void 0 ? false : _options$voids6; - var match = options.match, - _options$at6 = options.at, - at = _options$at6 === void 0 ? editor.selection : _options$at6; - - if (!at) { - return; - } - - var pointBeforeLocation = Editor.before(editor, at, { - voids: voids - }); - - if (!pointBeforeLocation) { - return; - } - - var _Editor$first = Editor.first(editor, []), - _Editor$first2 = _slicedToArray(_Editor$first, 2), - to = _Editor$first2[1]; // The search location is from the start of the document to the path of - // the point before the location passed in - - - var span = [pointBeforeLocation.path, to]; - - if (Path.isPath(at) && at.length === 0) { - throw new Error("Cannot get the previous node from the root node!"); - } - - if (match == null) { - if (Path.isPath(at)) { - var _Editor$parent3 = Editor.parent(editor, at), - _Editor$parent4 = _slicedToArray(_Editor$parent3, 1), - parent = _Editor$parent4[0]; - - match = function match(n) { - return parent.children.includes(n); - }; - } else { - match = function match() { - return true; - }; - } - } - - var _Editor$nodes5 = Editor.nodes(editor, { - reverse: true, - at: span, - match: match, - mode: mode, - voids: voids - }), - _Editor$nodes6 = _slicedToArray(_Editor$nodes5, 1), - previous = _Editor$nodes6[0]; - - return previous; - }, - - /** - * Get a range of a location. - */ - range: function range(editor, at, to) { - if (Range.isRange(at) && !to) { - return at; - } - - var start = Editor.start(editor, at); - var end = Editor.end(editor, to || at); - return { - anchor: start, - focus: end - }; - }, - - /** - * Create a mutable ref for a `Range` object, which will stay in sync as new - * operations are applied to the editor. - */ - rangeRef: function rangeRef(editor, range) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - var _options$affinity3 = options.affinity, - affinity = _options$affinity3 === void 0 ? 'forward' : _options$affinity3; - var ref = { - current: range, - affinity: affinity, - unref: function unref() { - var current = ref.current; - var rangeRefs = Editor.rangeRefs(editor); - rangeRefs["delete"](ref); - ref.current = null; - return current; - } - }; - var refs = Editor.rangeRefs(editor); - refs.add(ref); - return ref; - }, - - /** - * Get the set of currently tracked range refs of the editor. - */ - rangeRefs: function rangeRefs(editor) { - var refs = RANGE_REFS.get(editor); - - if (!refs) { - refs = new Set(); - RANGE_REFS.set(editor, refs); - } - - return refs; - }, - - /** - * Remove a custom property from all of the leaf text nodes in the current - * selection. - * - * If the selection is currently collapsed, the removal will be stored on - * `editor.marks` and applied to the text inserted next. - */ - removeMark: function removeMark(editor, key) { - editor.removeMark(key); - }, - - /** - * Manually set if the editor should currently be normalizing. - * - * Note: Using this incorrectly can leave the editor in an invalid state. - * - */ - setNormalizing: function setNormalizing(editor, isNormalizing) { - NORMALIZING.set(editor, isNormalizing); - }, - - /** - * Get the start point of a location. - */ - start: function start(editor, at) { - return Editor.point(editor, at, { - edge: 'start' - }); - }, - - /** - * Get the text string content of a location. - * - * Note: by default the text of void nodes is considered to be an empty - * string, regardless of content, unless you pass in true for the voids option - */ - string: function string(editor, at) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - var _options$voids7 = options.voids, - voids = _options$voids7 === void 0 ? false : _options$voids7; - var range = Editor.range(editor, at); - - var _Range$edges5 = Range.edges(range), - _Range$edges6 = _slicedToArray(_Range$edges5, 2), - start = _Range$edges6[0], - end = _Range$edges6[1]; - - var text = ''; - - var _iterator8 = _createForOfIteratorHelper$5(Editor.nodes(editor, { - at: range, - match: Text.isText, - voids: voids - })), - _step8; - - try { - for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) { - var _step8$value = _slicedToArray(_step8.value, 2), - node = _step8$value[0], - path = _step8$value[1]; - - var t = node.text; - - if (Path.equals(path, end.path)) { - t = t.slice(0, end.offset); - } - - if (Path.equals(path, start.path)) { - t = t.slice(start.offset); - } - - text += t; - } - } catch (err) { - _iterator8.e(err); - } finally { - _iterator8.f(); - } - - return text; - }, - - /** - * Convert a range into a non-hanging one. - */ - unhangRange: function unhangRange(editor, range) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - var _options$voids8 = options.voids, - voids = _options$voids8 === void 0 ? false : _options$voids8; - - var _Range$edges7 = Range.edges(range), - _Range$edges8 = _slicedToArray(_Range$edges7, 2), - start = _Range$edges8[0], - end = _Range$edges8[1]; // PERF: exit early if we can guarantee that the range isn't hanging. - - - if (start.offset !== 0 || end.offset !== 0 || Range.isCollapsed(range)) { - return range; - } - - var endBlock = Editor.above(editor, { - at: end, - match: function match(n) { - return Editor.isBlock(editor, n); - } - }); - var blockPath = endBlock ? endBlock[1] : []; - var first = Editor.start(editor, []); - var before = { - anchor: first, - focus: end - }; - var skip = true; - - var _iterator9 = _createForOfIteratorHelper$5(Editor.nodes(editor, { - at: before, - match: Text.isText, - reverse: true, - voids: voids - })), - _step9; - - try { - for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) { - var _step9$value = _slicedToArray(_step9.value, 2), - node = _step9$value[0], - path = _step9$value[1]; - - if (skip) { - skip = false; - continue; - } - - if (node.text !== '' || Path.isBefore(path, blockPath)) { - end = { - path: path, - offset: node.text.length - }; - break; - } - } - } catch (err) { - _iterator9.e(err); - } finally { - _iterator9.f(); - } - - return { - anchor: start, - focus: end - }; - }, - - /** - * Match a void node in the current branch of the editor. - */ - "void": function _void(editor) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - return Editor.above(editor, _objectSpread$8(_objectSpread$8({}, options), {}, { - match: function match(n) { - return Editor.isVoid(editor, n); - } - })); - }, - - /** - * Call a function, deferring normalization until after it completes. - */ - withoutNormalizing: function withoutNormalizing(editor, fn) { - var value = Editor.isNormalizing(editor); - Editor.setNormalizing(editor, false); - - try { - fn(); - } finally { - Editor.setNormalizing(editor, value); - } - - Editor.normalize(editor); - } - }; - - var Location = { - /** - * Check if a value implements the `Location` interface. - */ - isLocation: function isLocation(value) { - return Path.isPath(value) || Point.isPoint(value) || Range.isRange(value); - } - }; - var Span = { - /** - * Check if a value implements the `Span` interface. - */ - isSpan: function isSpan(value) { - return Array.isArray(value) && value.length === 2 && value.every(Path.isPath); - } - }; - - var _excluded$3 = ["children"], - _excluded2$2 = ["text"]; - - function _createForOfIteratorHelper$4(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$4(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } - - function _unsupportedIterableToArray$4(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$4(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$4(o, minLen); } - - function _arrayLikeToArray$4(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } - var IS_NODE_LIST_CACHE = new WeakMap(); - var Node$1 = { - /** - * Get the node at a specific path, asserting that it's an ancestor node. - */ - ancestor: function ancestor(root, path) { - var node = Node$1.get(root, path); - - if (Text.isText(node)) { - throw new Error("Cannot get the ancestor node at path [".concat(path, "] because it refers to a text node instead: ").concat(node)); - } - - return node; - }, - - /** - * Return a generator of all the ancestor nodes above a specific path. - * - * By default the order is bottom-up, from lowest to highest ancestor in - * the tree, but you can pass the `reverse: true` option to go top-down. - */ - ancestors: function* ancestors(root, path) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - - var _iterator = _createForOfIteratorHelper$4(Path.ancestors(path, options)), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var p = _step.value; - var n = Node$1.ancestor(root, p); - var entry = [n, p]; - yield entry; - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - }, - - /** - * Get the child of a node at a specific index. - */ - child: function child(root, index) { - if (Text.isText(root)) { - throw new Error("Cannot get the child of a text node: ".concat(JSON.stringify(root))); - } - - var c = root.children[index]; - - if (c == null) { - throw new Error("Cannot get child at index `".concat(index, "` in node: ").concat(JSON.stringify(root))); - } - - return c; - }, - - /** - * Iterate over the children of a node at a specific path. - */ - children: function* children(root, path) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - var _options$reverse = options.reverse, - reverse = _options$reverse === void 0 ? false : _options$reverse; - var ancestor = Node$1.ancestor(root, path); - var children = ancestor.children; - var index = reverse ? children.length - 1 : 0; - - while (reverse ? index >= 0 : index < children.length) { - var child = Node$1.child(ancestor, index); - var childPath = path.concat(index); - yield [child, childPath]; - index = reverse ? index - 1 : index + 1; - } - }, - - /** - * Get an entry for the common ancesetor node of two paths. - */ - common: function common(root, path, another) { - var p = Path.common(path, another); - var n = Node$1.get(root, p); - return [n, p]; - }, - - /** - * Get the node at a specific path, asserting that it's a descendant node. - */ - descendant: function descendant(root, path) { - var node = Node$1.get(root, path); - - if (Editor.isEditor(node)) { - throw new Error("Cannot get the descendant node at path [".concat(path, "] because it refers to the root editor node instead: ").concat(node)); - } - - return node; - }, - - /** - * Return a generator of all the descendant node entries inside a root node. - */ - descendants: function* descendants(root) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - var _iterator2 = _createForOfIteratorHelper$4(Node$1.nodes(root, options)), - _step2; - - try { - for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { - var _step2$value = _slicedToArray(_step2.value, 2), - node = _step2$value[0], - path = _step2$value[1]; - - if (path.length !== 0) { - // NOTE: we have to coerce here because checking the path's length does - // guarantee that `node` is not a `Editor`, but TypeScript doesn't know. - yield [node, path]; - } - } - } catch (err) { - _iterator2.e(err); - } finally { - _iterator2.f(); - } - }, - - /** - * Return a generator of all the element nodes inside a root node. Each iteration - * will return an `ElementEntry` tuple consisting of `[Element, Path]`. If the - * root node is an element it will be included in the iteration as well. - */ - elements: function* elements(root) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - var _iterator3 = _createForOfIteratorHelper$4(Node$1.nodes(root, options)), - _step3; - - try { - for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { - var _step3$value = _slicedToArray(_step3.value, 2), - node = _step3$value[0], - path = _step3$value[1]; - - if (Element$1.isElement(node)) { - yield [node, path]; - } - } - } catch (err) { - _iterator3.e(err); - } finally { - _iterator3.f(); - } - }, - - /** - * Extract props from a Node. - */ - extractProps: function extractProps(node) { - if (Element$1.isAncestor(node)) { - node.children; - var properties = _objectWithoutProperties(node, _excluded$3); - - return properties; - } else { - node.text; - var _properties = _objectWithoutProperties(node, _excluded2$2); - - return _properties; - } - }, - - /** - * Get the first node entry in a root node from a path. - */ - first: function first(root, path) { - var p = path.slice(); - var n = Node$1.get(root, p); - - while (n) { - if (Text.isText(n) || n.children.length === 0) { - break; - } else { - n = n.children[0]; - p.push(0); - } - } - - return [n, p]; - }, - - /** - * Get the sliced fragment represented by a range inside a root node. - */ - fragment: function fragment(root, range) { - if (Text.isText(root)) { - throw new Error("Cannot get a fragment starting from a root text node: ".concat(JSON.stringify(root))); - } - - var newRoot = immer.produce({ - children: root.children - }, function (r) { - var _Range$edges = Range.edges(range), - _Range$edges2 = _slicedToArray(_Range$edges, 2), - start = _Range$edges2[0], - end = _Range$edges2[1]; - - var nodeEntries = Node$1.nodes(r, { - reverse: true, - pass: function pass(_ref) { - var _ref2 = _slicedToArray(_ref, 2), - path = _ref2[1]; - - return !Range.includes(range, path); - } - }); - - var _iterator4 = _createForOfIteratorHelper$4(nodeEntries), - _step4; - - try { - for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { - var _step4$value = _slicedToArray(_step4.value, 2), - path = _step4$value[1]; - - if (!Range.includes(range, path)) { - var parent = Node$1.parent(r, path); - var index = path[path.length - 1]; - parent.children.splice(index, 1); - } - - if (Path.equals(path, end.path)) { - var leaf = Node$1.leaf(r, path); - leaf.text = leaf.text.slice(0, end.offset); - } - - if (Path.equals(path, start.path)) { - var _leaf = Node$1.leaf(r, path); - - _leaf.text = _leaf.text.slice(start.offset); - } - } - } catch (err) { - _iterator4.e(err); - } finally { - _iterator4.f(); - } - - if (Editor.isEditor(r)) { - r.selection = null; - } - }); - return newRoot.children; - }, - - /** - * Get the descendant node referred to by a specific path. If the path is an - * empty array, it refers to the root node itself. - */ - get: function get(root, path) { - var node = root; - - for (var i = 0; i < path.length; i++) { - var p = path[i]; - - if (Text.isText(node) || !node.children[p]) { - throw new Error("Cannot find a descendant at path [".concat(path, "] in node: ").concat(JSON.stringify(root))); - } - - node = node.children[p]; - } - - return node; - }, - - /** - * Check if a descendant node exists at a specific path. - */ - has: function has(root, path) { - var node = root; - - for (var i = 0; i < path.length; i++) { - var p = path[i]; - - if (Text.isText(node) || !node.children[p]) { - return false; - } - - node = node.children[p]; - } - - return true; - }, - - /** - * Check if a value implements the `Node` interface. - */ - isNode: function isNode(value) { - return Text.isText(value) || Element$1.isElement(value) || Editor.isEditor(value); - }, - - /** - * Check if a value is a list of `Node` objects. - */ - isNodeList: function isNodeList(value) { - if (!Array.isArray(value)) { - return false; - } - - var cachedResult = IS_NODE_LIST_CACHE.get(value); - - if (cachedResult !== undefined) { - return cachedResult; - } - - var isNodeList = value.every(function (val) { - return Node$1.isNode(val); - }); - IS_NODE_LIST_CACHE.set(value, isNodeList); - return isNodeList; - }, - - /** - * Get the last node entry in a root node from a path. - */ - last: function last(root, path) { - var p = path.slice(); - var n = Node$1.get(root, p); - - while (n) { - if (Text.isText(n) || n.children.length === 0) { - break; - } else { - var i = n.children.length - 1; - n = n.children[i]; - p.push(i); - } - } - - return [n, p]; - }, - - /** - * Get the node at a specific path, ensuring it's a leaf text node. - */ - leaf: function leaf(root, path) { - var node = Node$1.get(root, path); - - if (!Text.isText(node)) { - throw new Error("Cannot get the leaf node at path [".concat(path, "] because it refers to a non-leaf node: ").concat(node)); - } - - return node; - }, - - /** - * Return a generator of the in a branch of the tree, from a specific path. - * - * By default the order is top-down, from lowest to highest node in the tree, - * but you can pass the `reverse: true` option to go bottom-up. - */ - levels: function* levels(root, path) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - - var _iterator5 = _createForOfIteratorHelper$4(Path.levels(path, options)), - _step5; - - try { - for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { - var p = _step5.value; - var n = Node$1.get(root, p); - yield [n, p]; - } - } catch (err) { - _iterator5.e(err); - } finally { - _iterator5.f(); - } - }, - - /** - * Check if a node matches a set of props. - */ - matches: function matches(node, props) { - return Element$1.isElement(node) && Element$1.isElementProps(props) && Element$1.matches(node, props) || Text.isText(node) && Text.isTextProps(props) && Text.matches(node, props); - }, - - /** - * Return a generator of all the node entries of a root node. Each entry is - * returned as a `[Node, Path]` tuple, with the path referring to the node's - * position inside the root node. - */ - nodes: function* nodes(root) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var pass = options.pass, - _options$reverse2 = options.reverse, - reverse = _options$reverse2 === void 0 ? false : _options$reverse2; - var _options$from = options.from, - from = _options$from === void 0 ? [] : _options$from, - to = options.to; - var visited = new Set(); - var p = []; - var n = root; - - while (true) { - if (to && (reverse ? Path.isBefore(p, to) : Path.isAfter(p, to))) { - break; - } - - if (!visited.has(n)) { - yield [n, p]; - } // If we're allowed to go downward and we haven't descended yet, do. - - - if (!visited.has(n) && !Text.isText(n) && n.children.length !== 0 && (pass == null || pass([n, p]) === false)) { - visited.add(n); - var nextIndex = reverse ? n.children.length - 1 : 0; - - if (Path.isAncestor(p, from)) { - nextIndex = from[p.length]; - } - - p = p.concat(nextIndex); - n = Node$1.get(root, p); - continue; - } // If we're at the root and we can't go down, we're done. - - - if (p.length === 0) { - break; - } // If we're going forward... - - - if (!reverse) { - var newPath = Path.next(p); - - if (Node$1.has(root, newPath)) { - p = newPath; - n = Node$1.get(root, p); - continue; - } - } // If we're going backward... - - - if (reverse && p[p.length - 1] !== 0) { - var _newPath = Path.previous(p); - - p = _newPath; - n = Node$1.get(root, p); - continue; - } // Otherwise we're going upward... - - - p = Path.parent(p); - n = Node$1.get(root, p); - visited.add(n); - } - }, - - /** - * Get the parent of a node at a specific path. - */ - parent: function parent(root, path) { - var parentPath = Path.parent(path); - var p = Node$1.get(root, parentPath); - - if (Text.isText(p)) { - throw new Error("Cannot get the parent of path [".concat(path, "] because it does not exist in the root.")); - } - - return p; - }, - - /** - * Get the concatenated text string of a node's content. - * - * Note that this will not include spaces or line breaks between block nodes. - * It is not a user-facing string, but a string for performing offset-related - * computations for a node. - */ - string: function string(node) { - if (Text.isText(node)) { - return node.text; - } else { - return node.children.map(Node$1.string).join(''); - } - }, - - /** - * Return a generator of all leaf text nodes in a root node. - */ - texts: function* texts(root) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - var _iterator6 = _createForOfIteratorHelper$4(Node$1.nodes(root, options)), - _step6; - - try { - for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) { - var _step6$value = _slicedToArray(_step6.value, 2), - node = _step6$value[0], - path = _step6$value[1]; - - if (Text.isText(node)) { - yield [node, path]; - } - } - } catch (err) { - _iterator6.e(err); - } finally { - _iterator6.f(); - } - } - }; - - function ownKeys$7(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } - - function _objectSpread$7(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$7(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$7(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } - var Operation = { - /** - * Check of a value is a `NodeOperation` object. - */ - isNodeOperation: function isNodeOperation(value) { - return Operation.isOperation(value) && value.type.endsWith('_node'); - }, - - /** - * Check of a value is an `Operation` object. - */ - isOperation: function isOperation(value) { - if (!isPlainObject.isPlainObject(value)) { - return false; - } - - switch (value.type) { - case 'insert_node': - return Path.isPath(value.path) && Node$1.isNode(value.node); - - case 'insert_text': - return typeof value.offset === 'number' && typeof value.text === 'string' && Path.isPath(value.path); - - case 'merge_node': - return typeof value.position === 'number' && Path.isPath(value.path) && isPlainObject.isPlainObject(value.properties); - - case 'move_node': - return Path.isPath(value.path) && Path.isPath(value.newPath); - - case 'remove_node': - return Path.isPath(value.path) && Node$1.isNode(value.node); - - case 'remove_text': - return typeof value.offset === 'number' && typeof value.text === 'string' && Path.isPath(value.path); - - case 'set_node': - return Path.isPath(value.path) && isPlainObject.isPlainObject(value.properties) && isPlainObject.isPlainObject(value.newProperties); - - case 'set_selection': - return value.properties === null && Range.isRange(value.newProperties) || value.newProperties === null && Range.isRange(value.properties) || isPlainObject.isPlainObject(value.properties) && isPlainObject.isPlainObject(value.newProperties); - - case 'split_node': - return Path.isPath(value.path) && typeof value.position === 'number' && isPlainObject.isPlainObject(value.properties); - - default: - return false; - } - }, - - /** - * Check if a value is a list of `Operation` objects. - */ - isOperationList: function isOperationList(value) { - return Array.isArray(value) && value.every(function (val) { - return Operation.isOperation(val); - }); - }, - - /** - * Check of a value is a `SelectionOperation` object. - */ - isSelectionOperation: function isSelectionOperation(value) { - return Operation.isOperation(value) && value.type.endsWith('_selection'); - }, - - /** - * Check of a value is a `TextOperation` object. - */ - isTextOperation: function isTextOperation(value) { - return Operation.isOperation(value) && value.type.endsWith('_text'); - }, - - /** - * Invert an operation, returning a new operation that will exactly undo the - * original when applied. - */ - inverse: function inverse(op) { - switch (op.type) { - case 'insert_node': - { - return _objectSpread$7(_objectSpread$7({}, op), {}, { - type: 'remove_node' - }); - } - - case 'insert_text': - { - return _objectSpread$7(_objectSpread$7({}, op), {}, { - type: 'remove_text' - }); - } - - case 'merge_node': - { - return _objectSpread$7(_objectSpread$7({}, op), {}, { - type: 'split_node', - path: Path.previous(op.path) - }); - } - - case 'move_node': - { - var newPath = op.newPath, - path = op.path; // PERF: in this case the move operation is a no-op anyways. - - if (Path.equals(newPath, path)) { - return op; - } // If the move happens completely within a single parent the path and - // newPath are stable with respect to each other. - - - if (Path.isSibling(path, newPath)) { - return _objectSpread$7(_objectSpread$7({}, op), {}, { - path: newPath, - newPath: path - }); - } // If the move does not happen within a single parent it is possible - // for the move to impact the true path to the location where the node - // was removed from and where it was inserted. We have to adjust for this - // and find the original path. We can accomplish this (only in non-sibling) - // moves by looking at the impact of the move operation on the node - // after the original move path. - - - var inversePath = Path.transform(path, op); - var inverseNewPath = Path.transform(Path.next(path), op); - return _objectSpread$7(_objectSpread$7({}, op), {}, { - path: inversePath, - newPath: inverseNewPath - }); - } - - case 'remove_node': - { - return _objectSpread$7(_objectSpread$7({}, op), {}, { - type: 'insert_node' - }); - } - - case 'remove_text': - { - return _objectSpread$7(_objectSpread$7({}, op), {}, { - type: 'insert_text' - }); - } - - case 'set_node': - { - var properties = op.properties, - newProperties = op.newProperties; - return _objectSpread$7(_objectSpread$7({}, op), {}, { - properties: newProperties, - newProperties: properties - }); - } - - case 'set_selection': - { - var _properties = op.properties, - _newProperties = op.newProperties; - - if (_properties == null) { - return _objectSpread$7(_objectSpread$7({}, op), {}, { - properties: _newProperties, - newProperties: null - }); - } else if (_newProperties == null) { - return _objectSpread$7(_objectSpread$7({}, op), {}, { - properties: null, - newProperties: _properties - }); - } else { - return _objectSpread$7(_objectSpread$7({}, op), {}, { - properties: _newProperties, - newProperties: _properties - }); - } - } - - case 'split_node': - { - return _objectSpread$7(_objectSpread$7({}, op), {}, { - type: 'merge_node', - path: Path.next(op.path) - }); - } - } - } - }; - - var Path = { - /** - * Get a list of ancestor paths for a given path. - * - * The paths are sorted from deepest to shallowest ancestor. However, if the - * `reverse: true` option is passed, they are reversed. - */ - ancestors: function ancestors(path) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var _options$reverse = options.reverse, - reverse = _options$reverse === void 0 ? false : _options$reverse; - var paths = Path.levels(path, options); - - if (reverse) { - paths = paths.slice(1); - } else { - paths = paths.slice(0, -1); - } - - return paths; - }, - - /** - * Get the common ancestor path of two paths. - */ - common: function common(path, another) { - var common = []; - - for (var i = 0; i < path.length && i < another.length; i++) { - var av = path[i]; - var bv = another[i]; - - if (av !== bv) { - break; - } - - common.push(av); - } - - return common; - }, - - /** - * Compare a path to another, returning an integer indicating whether the path - * was before, at, or after the other. - * - * Note: Two paths of unequal length can still receive a `0` result if one is - * directly above or below the other. If you want exact matching, use - * [[Path.equals]] instead. - */ - compare: function compare(path, another) { - var min = Math.min(path.length, another.length); - - for (var i = 0; i < min; i++) { - if (path[i] < another[i]) return -1; - if (path[i] > another[i]) return 1; - } - - return 0; - }, - - /** - * Check if a path ends after one of the indexes in another. - */ - endsAfter: function endsAfter(path, another) { - var i = path.length - 1; - var as = path.slice(0, i); - var bs = another.slice(0, i); - var av = path[i]; - var bv = another[i]; - return Path.equals(as, bs) && av > bv; - }, - - /** - * Check if a path ends at one of the indexes in another. - */ - endsAt: function endsAt(path, another) { - var i = path.length; - var as = path.slice(0, i); - var bs = another.slice(0, i); - return Path.equals(as, bs); - }, - - /** - * Check if a path ends before one of the indexes in another. - */ - endsBefore: function endsBefore(path, another) { - var i = path.length - 1; - var as = path.slice(0, i); - var bs = another.slice(0, i); - var av = path[i]; - var bv = another[i]; - return Path.equals(as, bs) && av < bv; - }, - - /** - * Check if a path is exactly equal to another. - */ - equals: function equals(path, another) { - return path.length === another.length && path.every(function (n, i) { - return n === another[i]; - }); - }, - - /** - * Check if the path of previous sibling node exists - */ - hasPrevious: function hasPrevious(path) { - return path[path.length - 1] > 0; - }, - - /** - * Check if a path is after another. - */ - isAfter: function isAfter(path, another) { - return Path.compare(path, another) === 1; - }, - - /** - * Check if a path is an ancestor of another. - */ - isAncestor: function isAncestor(path, another) { - return path.length < another.length && Path.compare(path, another) === 0; - }, - - /** - * Check if a path is before another. - */ - isBefore: function isBefore(path, another) { - return Path.compare(path, another) === -1; - }, - - /** - * Check if a path is a child of another. - */ - isChild: function isChild(path, another) { - return path.length === another.length + 1 && Path.compare(path, another) === 0; - }, - - /** - * Check if a path is equal to or an ancestor of another. - */ - isCommon: function isCommon(path, another) { - return path.length <= another.length && Path.compare(path, another) === 0; - }, - - /** - * Check if a path is a descendant of another. - */ - isDescendant: function isDescendant(path, another) { - return path.length > another.length && Path.compare(path, another) === 0; - }, - - /** - * Check if a path is the parent of another. - */ - isParent: function isParent(path, another) { - return path.length + 1 === another.length && Path.compare(path, another) === 0; - }, - - /** - * Check is a value implements the `Path` interface. - */ - isPath: function isPath(value) { - return Array.isArray(value) && (value.length === 0 || typeof value[0] === 'number'); - }, - - /** - * Check if a path is a sibling of another. - */ - isSibling: function isSibling(path, another) { - if (path.length !== another.length) { - return false; - } - - var as = path.slice(0, -1); - var bs = another.slice(0, -1); - var al = path[path.length - 1]; - var bl = another[another.length - 1]; - return al !== bl && Path.equals(as, bs); - }, - - /** - * Get a list of paths at every level down to a path. Note: this is the same - * as `Path.ancestors`, but including the path itself. - * - * The paths are sorted from shallowest to deepest. However, if the `reverse: - * true` option is passed, they are reversed. - */ - levels: function levels(path) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var _options$reverse2 = options.reverse, - reverse = _options$reverse2 === void 0 ? false : _options$reverse2; - var list = []; - - for (var i = 0; i <= path.length; i++) { - list.push(path.slice(0, i)); - } - - if (reverse) { - list.reverse(); - } - - return list; - }, - - /** - * Given a path, get the path to the next sibling node. - */ - next: function next(path) { - if (path.length === 0) { - throw new Error("Cannot get the next path of a root path [".concat(path, "], because it has no next index.")); - } - - var last = path[path.length - 1]; - return path.slice(0, -1).concat(last + 1); - }, - - /** - * Given a path, return a new path referring to the parent node above it. - */ - parent: function parent(path) { - if (path.length === 0) { - throw new Error("Cannot get the parent path of the root path [".concat(path, "].")); - } - - return path.slice(0, -1); - }, - - /** - * Given a path, get the path to the previous sibling node. - */ - previous: function previous(path) { - if (path.length === 0) { - throw new Error("Cannot get the previous path of a root path [".concat(path, "], because it has no previous index.")); - } - - var last = path[path.length - 1]; - - if (last <= 0) { - throw new Error("Cannot get the previous path of a first child path [".concat(path, "] because it would result in a negative index.")); - } - - return path.slice(0, -1).concat(last - 1); - }, - - /** - * Get a path relative to an ancestor. - */ - relative: function relative(path, ancestor) { - if (!Path.isAncestor(ancestor, path) && !Path.equals(path, ancestor)) { - throw new Error("Cannot get the relative path of [".concat(path, "] inside ancestor [").concat(ancestor, "], because it is not above or equal to the path.")); - } - - return path.slice(ancestor.length); - }, - - /** - * Transform a path by an operation. - */ - transform: function transform(path, operation) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - return immer.produce(path, function (p) { - var _options$affinity = options.affinity, - affinity = _options$affinity === void 0 ? 'forward' : _options$affinity; // PERF: Exit early if the operation is guaranteed not to have an effect. - - if (!path || (path === null || path === void 0 ? void 0 : path.length) === 0) { - return; - } - - if (p === null) { - return null; - } - - switch (operation.type) { - case 'insert_node': - { - var op = operation.path; - - if (Path.equals(op, p) || Path.endsBefore(op, p) || Path.isAncestor(op, p)) { - p[op.length - 1] += 1; - } - - break; - } - - case 'remove_node': - { - var _op = operation.path; - - if (Path.equals(_op, p) || Path.isAncestor(_op, p)) { - return null; - } else if (Path.endsBefore(_op, p)) { - p[_op.length - 1] -= 1; - } - - break; - } - - case 'merge_node': - { - var _op2 = operation.path, - position = operation.position; - - if (Path.equals(_op2, p) || Path.endsBefore(_op2, p)) { - p[_op2.length - 1] -= 1; - } else if (Path.isAncestor(_op2, p)) { - p[_op2.length - 1] -= 1; - p[_op2.length] += position; - } - - break; - } - - case 'split_node': - { - var _op3 = operation.path, - _position = operation.position; - - if (Path.equals(_op3, p)) { - if (affinity === 'forward') { - p[p.length - 1] += 1; - } else if (affinity === 'backward') ; else { - return null; - } - } else if (Path.endsBefore(_op3, p)) { - p[_op3.length - 1] += 1; - } else if (Path.isAncestor(_op3, p) && path[_op3.length] >= _position) { - p[_op3.length - 1] += 1; - p[_op3.length] -= _position; - } - - break; - } - - case 'move_node': - { - var _op4 = operation.path, - onp = operation.newPath; // If the old and new path are the same, it's a no-op. - - if (Path.equals(_op4, onp)) { - return; - } - - if (Path.isAncestor(_op4, p) || Path.equals(_op4, p)) { - var copy = onp.slice(); - - if (Path.endsBefore(_op4, onp) && _op4.length < onp.length) { - copy[_op4.length - 1] -= 1; - } - - return copy.concat(p.slice(_op4.length)); - } else if (Path.isSibling(_op4, onp) && (Path.isAncestor(onp, p) || Path.equals(onp, p))) { - if (Path.endsBefore(_op4, p)) { - p[_op4.length - 1] -= 1; - } else { - p[_op4.length - 1] += 1; - } - } else if (Path.endsBefore(onp, p) || Path.equals(onp, p) || Path.isAncestor(onp, p)) { - if (Path.endsBefore(_op4, p)) { - p[_op4.length - 1] -= 1; - } - - p[onp.length - 1] += 1; - } else if (Path.endsBefore(_op4, p)) { - if (Path.equals(onp, p)) { - p[onp.length - 1] += 1; - } - - p[_op4.length - 1] -= 1; - } - - break; - } - } - }); - } - }; - - var PathRef = { - /** - * Transform the path ref's current value by an operation. - */ - transform: function transform(ref, op) { - var current = ref.current, - affinity = ref.affinity; - - if (current == null) { - return; - } - - var path = Path.transform(current, op, { - affinity: affinity - }); - ref.current = path; - - if (path == null) { - ref.unref(); - } - } - }; - - function ownKeys$6(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } - - function _objectSpread$6(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$6(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$6(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } - var Point = { - /** - * Compare a point to another, returning an integer indicating whether the - * point was before, at, or after the other. - */ - compare: function compare(point, another) { - var result = Path.compare(point.path, another.path); - - if (result === 0) { - if (point.offset < another.offset) return -1; - if (point.offset > another.offset) return 1; - return 0; - } - - return result; - }, - - /** - * Check if a point is after another. - */ - isAfter: function isAfter(point, another) { - return Point.compare(point, another) === 1; - }, - - /** - * Check if a point is before another. - */ - isBefore: function isBefore(point, another) { - return Point.compare(point, another) === -1; - }, - - /** - * Check if a point is exactly equal to another. - */ - equals: function equals(point, another) { - // PERF: ensure the offsets are equal first since they are cheaper to check. - return point.offset === another.offset && Path.equals(point.path, another.path); - }, - - /** - * Check if a value implements the `Point` interface. - */ - isPoint: function isPoint(value) { - return isPlainObject.isPlainObject(value) && typeof value.offset === 'number' && Path.isPath(value.path); - }, - - /** - * Transform a point by an operation. - */ - transform: function transform(point, op) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - return immer.produce(point, function (p) { - if (p === null) { - return null; - } - - var _options$affinity = options.affinity, - affinity = _options$affinity === void 0 ? 'forward' : _options$affinity; - var path = p.path, - offset = p.offset; - - switch (op.type) { - case 'insert_node': - case 'move_node': - { - p.path = Path.transform(path, op, options); - break; - } - - case 'insert_text': - { - if (Path.equals(op.path, path) && op.offset <= offset) { - p.offset += op.text.length; - } - - break; - } - - case 'merge_node': - { - if (Path.equals(op.path, path)) { - p.offset += op.position; - } - - p.path = Path.transform(path, op, options); - break; - } - - case 'remove_text': - { - if (Path.equals(op.path, path) && op.offset <= offset) { - p.offset -= Math.min(offset - op.offset, op.text.length); - } - - break; - } - - case 'remove_node': - { - if (Path.equals(op.path, path) || Path.isAncestor(op.path, path)) { - return null; - } - - p.path = Path.transform(path, op, options); - break; - } - - case 'split_node': - { - if (Path.equals(op.path, path)) { - if (op.position === offset && affinity == null) { - return null; - } else if (op.position < offset || op.position === offset && affinity === 'forward') { - p.offset -= op.position; - p.path = Path.transform(path, op, _objectSpread$6(_objectSpread$6({}, options), {}, { - affinity: 'forward' - })); - } - } else { - p.path = Path.transform(path, op, options); - } - - break; - } - } - }); - } - }; - - var PointRef = { - /** - * Transform the point ref's current value by an operation. - */ - transform: function transform(ref, op) { - var current = ref.current, - affinity = ref.affinity; - - if (current == null) { - return; - } - - var point = Point.transform(current, op, { - affinity: affinity - }); - ref.current = point; - - if (point == null) { - ref.unref(); - } - } - }; - - var _excluded$2 = ["anchor", "focus"]; - - function ownKeys$5(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } - - function _objectSpread$5(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$5(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$5(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } - var Range = { - /** - * Get the start and end points of a range, in the order in which they appear - * in the document. - */ - edges: function edges(range) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var _options$reverse = options.reverse, - reverse = _options$reverse === void 0 ? false : _options$reverse; - var anchor = range.anchor, - focus = range.focus; - return Range.isBackward(range) === reverse ? [anchor, focus] : [focus, anchor]; - }, - - /** - * Get the end point of a range. - */ - end: function end(range) { - var _Range$edges = Range.edges(range), - _Range$edges2 = _slicedToArray(_Range$edges, 2), - end = _Range$edges2[1]; - - return end; - }, - - /** - * Check if a range is exactly equal to another. - */ - equals: function equals(range, another) { - return Point.equals(range.anchor, another.anchor) && Point.equals(range.focus, another.focus); - }, - - /** - * Check if a range includes a path, a point or part of another range. - */ - includes: function includes(range, target) { - if (Range.isRange(target)) { - if (Range.includes(range, target.anchor) || Range.includes(range, target.focus)) { - return true; - } - - var _Range$edges3 = Range.edges(range), - _Range$edges4 = _slicedToArray(_Range$edges3, 2), - rs = _Range$edges4[0], - re = _Range$edges4[1]; - - var _Range$edges5 = Range.edges(target), - _Range$edges6 = _slicedToArray(_Range$edges5, 2), - ts = _Range$edges6[0], - te = _Range$edges6[1]; - - return Point.isBefore(rs, ts) && Point.isAfter(re, te); - } - - var _Range$edges7 = Range.edges(range), - _Range$edges8 = _slicedToArray(_Range$edges7, 2), - start = _Range$edges8[0], - end = _Range$edges8[1]; - - var isAfterStart = false; - var isBeforeEnd = false; - - if (Point.isPoint(target)) { - isAfterStart = Point.compare(target, start) >= 0; - isBeforeEnd = Point.compare(target, end) <= 0; - } else { - isAfterStart = Path.compare(target, start.path) >= 0; - isBeforeEnd = Path.compare(target, end.path) <= 0; - } - - return isAfterStart && isBeforeEnd; - }, - - /** - * Get the intersection of a range with another. - */ - intersection: function intersection(range, another) { - range.anchor; - range.focus; - var rest = _objectWithoutProperties(range, _excluded$2); - - var _Range$edges9 = Range.edges(range), - _Range$edges10 = _slicedToArray(_Range$edges9, 2), - s1 = _Range$edges10[0], - e1 = _Range$edges10[1]; - - var _Range$edges11 = Range.edges(another), - _Range$edges12 = _slicedToArray(_Range$edges11, 2), - s2 = _Range$edges12[0], - e2 = _Range$edges12[1]; - - var start = Point.isBefore(s1, s2) ? s2 : s1; - var end = Point.isBefore(e1, e2) ? e1 : e2; - - if (Point.isBefore(end, start)) { - return null; - } else { - return _objectSpread$5({ - anchor: start, - focus: end - }, rest); - } - }, - - /** - * Check if a range is backward, meaning that its anchor point appears in the - * document _after_ its focus point. - */ - isBackward: function isBackward(range) { - var anchor = range.anchor, - focus = range.focus; - return Point.isAfter(anchor, focus); - }, - - /** - * Check if a range is collapsed, meaning that both its anchor and focus - * points refer to the exact same position in the document. - */ - isCollapsed: function isCollapsed(range) { - var anchor = range.anchor, - focus = range.focus; - return Point.equals(anchor, focus); - }, - - /** - * Check if a range is expanded. - * - * This is the opposite of [[Range.isCollapsed]] and is provided for legibility. - */ - isExpanded: function isExpanded(range) { - return !Range.isCollapsed(range); - }, - - /** - * Check if a range is forward. - * - * This is the opposite of [[Range.isBackward]] and is provided for legibility. - */ - isForward: function isForward(range) { - return !Range.isBackward(range); - }, - - /** - * Check if a value implements the [[Range]] interface. - */ - isRange: function isRange(value) { - return isPlainObject.isPlainObject(value) && Point.isPoint(value.anchor) && Point.isPoint(value.focus); - }, - - /** - * Iterate through all of the point entries in a range. - */ - points: function* points(range) { - yield [range.anchor, 'anchor']; - yield [range.focus, 'focus']; - }, - - /** - * Get the start point of a range. - */ - start: function start(range) { - var _Range$edges13 = Range.edges(range), - _Range$edges14 = _slicedToArray(_Range$edges13, 1), - start = _Range$edges14[0]; - - return start; - }, - - /** - * Transform a range by an operation. - */ - transform: function transform(range, op) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - return immer.produce(range, function (r) { - if (r === null) { - return null; - } - - var _options$affinity = options.affinity, - affinity = _options$affinity === void 0 ? 'inward' : _options$affinity; - var affinityAnchor; - var affinityFocus; - - if (affinity === 'inward') { - // If the range is collapsed, make sure to use the same affinity to - // avoid the two points passing each other and expanding in the opposite - // direction - var isCollapsed = Range.isCollapsed(r); - - if (Range.isForward(r)) { - affinityAnchor = 'forward'; - affinityFocus = isCollapsed ? affinityAnchor : 'backward'; - } else { - affinityAnchor = 'backward'; - affinityFocus = isCollapsed ? affinityAnchor : 'forward'; - } - } else if (affinity === 'outward') { - if (Range.isForward(r)) { - affinityAnchor = 'backward'; - affinityFocus = 'forward'; - } else { - affinityAnchor = 'forward'; - affinityFocus = 'backward'; - } - } else { - affinityAnchor = affinity; - affinityFocus = affinity; - } - - var anchor = Point.transform(r.anchor, op, { - affinity: affinityAnchor - }); - var focus = Point.transform(r.focus, op, { - affinity: affinityFocus - }); - - if (!anchor || !focus) { - return null; - } - - r.anchor = anchor; - r.focus = focus; - }); - } - }; - - var RangeRef = { - /** - * Transform the range ref's current value by an operation. - */ - transform: function transform(ref, op) { - var current = ref.current, - affinity = ref.affinity; - - if (current == null) { - return; - } - - var path = Range.transform(current, op, { - affinity: affinity - }); - ref.current = path; - - if (path == null) { - ref.unref(); - } - } - }; - - /* - Custom deep equal comparison for Slate nodes. - - We don't need general purpose deep equality; - Slate only supports plain values, Arrays, and nested objects. - Complex values nested inside Arrays are not supported. - - Slate objects are designed to be serialised, so - missing keys are deliberately normalised to undefined. - */ - - var isDeepEqual = function isDeepEqual(node, another) { - for (var key in node) { - var a = node[key]; - var b = another[key]; - - if (isPlainObject.isPlainObject(a) && isPlainObject.isPlainObject(b)) { - if (!isDeepEqual(a, b)) return false; - } else if (Array.isArray(a) && Array.isArray(b)) { - if (a.length !== b.length) return false; - - for (var i = 0; i < a.length; i++) { - if (a[i] !== b[i]) return false; - } - } else if (a !== b) { - return false; - } - } - /* - Deep object equality is only necessary in one direction; in the reverse direction - we are only looking for keys that are missing. - As above, undefined keys are normalised to missing. - */ - - - for (var _key in another) { - if (node[_key] === undefined && another[_key] !== undefined) { - return false; - } - } - - return true; - }; - - var _excluded$1 = ["text"], - _excluded2$1 = ["anchor", "focus"]; - - function _createForOfIteratorHelper$3(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$3(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } - - function _unsupportedIterableToArray$3(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$3(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$3(o, minLen); } - - function _arrayLikeToArray$3(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } - - function ownKeys$4(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } - - function _objectSpread$4(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$4(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$4(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } - var Text = { - /** - * Check if two text nodes are equal. - * - * When loose is set, the text is not compared. This is - * used to check whether sibling text nodes can be merged. - */ - equals: function equals(text, another) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - var _options$loose = options.loose, - loose = _options$loose === void 0 ? false : _options$loose; - - function omitText(obj) { - obj.text; - var rest = _objectWithoutProperties(obj, _excluded$1); - - return rest; - } - - return isDeepEqual(loose ? omitText(text) : text, loose ? omitText(another) : another); - }, - - /** - * Check if a value implements the `Text` interface. - */ - isText: function isText(value) { - return isPlainObject.isPlainObject(value) && typeof value.text === 'string'; - }, - - /** - * Check if a value is a list of `Text` objects. - */ - isTextList: function isTextList(value) { - return Array.isArray(value) && value.every(function (val) { - return Text.isText(val); - }); - }, - - /** - * Check if some props are a partial of Text. - */ - isTextProps: function isTextProps(props) { - return props.text !== undefined; - }, - - /** - * Check if an text matches set of properties. - * - * Note: this is for matching custom properties, and it does not ensure that - * the `text` property are two nodes equal. - */ - matches: function matches(text, props) { - for (var key in props) { - if (key === 'text') { - continue; - } - - if (!text.hasOwnProperty(key) || text[key] !== props[key]) { - return false; - } - } - - return true; - }, - - /** - * Get the leaves for a text node given decorations. - */ - decorations: function decorations(node, _decorations) { - var leaves = [_objectSpread$4({}, node)]; - - var _iterator = _createForOfIteratorHelper$3(_decorations), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var dec = _step.value; - - var anchor = dec.anchor, - focus = dec.focus, - rest = _objectWithoutProperties(dec, _excluded2$1); - - var _Range$edges = Range.edges(dec), - _Range$edges2 = _slicedToArray(_Range$edges, 2), - start = _Range$edges2[0], - end = _Range$edges2[1]; - - var next = []; - var o = 0; - - var _iterator2 = _createForOfIteratorHelper$3(leaves), - _step2; - - try { - for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { - var leaf = _step2.value; - var length = leaf.text.length; - var offset = o; - o += length; // If the range encompases the entire leaf, add the range. - - if (start.offset <= offset && end.offset >= o) { - Object.assign(leaf, rest); - next.push(leaf); - continue; - } // If the range expanded and match the leaf, or starts after, or ends before it, continue. - - - if (start.offset !== end.offset && (start.offset === o || end.offset === offset) || start.offset > o || end.offset < offset || end.offset === offset && offset !== 0) { - next.push(leaf); - continue; - } // Otherwise we need to split the leaf, at the start, end, or both, - // and add the range to the middle intersecting section. Do the end - // split first since we don't need to update the offset that way. - - - var middle = leaf; - var before = void 0; - var after = void 0; - - if (end.offset < o) { - var off = end.offset - offset; - after = _objectSpread$4(_objectSpread$4({}, middle), {}, { - text: middle.text.slice(off) - }); - middle = _objectSpread$4(_objectSpread$4({}, middle), {}, { - text: middle.text.slice(0, off) - }); - } - - if (start.offset > offset) { - var _off = start.offset - offset; - - before = _objectSpread$4(_objectSpread$4({}, middle), {}, { - text: middle.text.slice(0, _off) - }); - middle = _objectSpread$4(_objectSpread$4({}, middle), {}, { - text: middle.text.slice(_off) - }); - } - - Object.assign(middle, rest); - - if (before) { - next.push(before); - } - - next.push(middle); - - if (after) { - next.push(after); - } - } - } catch (err) { - _iterator2.e(err); - } finally { - _iterator2.f(); - } - - leaves = next; - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - - return leaves; - } - }; - - function ownKeys$3(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } - - function _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$3(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$3(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } - - function _createForOfIteratorHelper$2(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$2(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } - - function _unsupportedIterableToArray$2(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$2(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$2(o, minLen); } - - function _arrayLikeToArray$2(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } - - var applyToDraft = function applyToDraft(editor, selection, op) { - switch (op.type) { - case 'insert_node': - { - var path = op.path, - node = op.node; - var parent = Node$1.parent(editor, path); - var index = path[path.length - 1]; - - if (index > parent.children.length) { - throw new Error("Cannot apply an \"insert_node\" operation at path [".concat(path, "] because the destination is past the end of the node.")); - } - - parent.children.splice(index, 0, node); - - if (selection) { - var _iterator = _createForOfIteratorHelper$2(Range.points(selection)), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var _step$value = _slicedToArray(_step.value, 2), - point = _step$value[0], - key = _step$value[1]; - - selection[key] = Point.transform(point, op); - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - } - - break; - } - - case 'insert_text': - { - var _path = op.path, - offset = op.offset, - text = op.text; - if (text.length === 0) break; - - var _node = Node$1.leaf(editor, _path); - - var before = _node.text.slice(0, offset); - - var after = _node.text.slice(offset); - - _node.text = before + text + after; - - if (selection) { - var _iterator2 = _createForOfIteratorHelper$2(Range.points(selection)), - _step2; - - try { - for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { - var _step2$value = _slicedToArray(_step2.value, 2), - _point = _step2$value[0], - _key = _step2$value[1]; - - selection[_key] = Point.transform(_point, op); - } - } catch (err) { - _iterator2.e(err); - } finally { - _iterator2.f(); - } - } - - break; - } - - case 'merge_node': - { - var _path2 = op.path; - - var _node2 = Node$1.get(editor, _path2); - - var prevPath = Path.previous(_path2); - var prev = Node$1.get(editor, prevPath); - - var _parent = Node$1.parent(editor, _path2); - - var _index = _path2[_path2.length - 1]; - - if (Text.isText(_node2) && Text.isText(prev)) { - prev.text += _node2.text; - } else if (!Text.isText(_node2) && !Text.isText(prev)) { - var _prev$children; - - (_prev$children = prev.children).push.apply(_prev$children, _toConsumableArray(_node2.children)); - } else { - throw new Error("Cannot apply a \"merge_node\" operation at path [".concat(_path2, "] to nodes of different interfaces: ").concat(_node2, " ").concat(prev)); - } - - _parent.children.splice(_index, 1); - - if (selection) { - var _iterator3 = _createForOfIteratorHelper$2(Range.points(selection)), - _step3; - - try { - for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { - var _step3$value = _slicedToArray(_step3.value, 2), - _point2 = _step3$value[0], - _key2 = _step3$value[1]; - - selection[_key2] = Point.transform(_point2, op); - } - } catch (err) { - _iterator3.e(err); - } finally { - _iterator3.f(); - } - } - - break; - } - - case 'move_node': - { - var _path3 = op.path, - newPath = op.newPath; - - if (Path.isAncestor(_path3, newPath)) { - throw new Error("Cannot move a path [".concat(_path3, "] to new path [").concat(newPath, "] because the destination is inside itself.")); - } - - var _node3 = Node$1.get(editor, _path3); - - var _parent2 = Node$1.parent(editor, _path3); - - var _index2 = _path3[_path3.length - 1]; // This is tricky, but since the `path` and `newPath` both refer to - // the same snapshot in time, there's a mismatch. After either - // removing the original position, the second step's path can be out - // of date. So instead of using the `op.newPath` directly, we - // transform `op.path` to ascertain what the `newPath` would be after - // the operation was applied. - - _parent2.children.splice(_index2, 1); - - var truePath = Path.transform(_path3, op); - var newParent = Node$1.get(editor, Path.parent(truePath)); - var newIndex = truePath[truePath.length - 1]; - newParent.children.splice(newIndex, 0, _node3); - - if (selection) { - var _iterator4 = _createForOfIteratorHelper$2(Range.points(selection)), - _step4; - - try { - for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { - var _step4$value = _slicedToArray(_step4.value, 2), - _point3 = _step4$value[0], - _key3 = _step4$value[1]; - - selection[_key3] = Point.transform(_point3, op); - } - } catch (err) { - _iterator4.e(err); - } finally { - _iterator4.f(); - } - } - - break; - } - - case 'remove_node': - { - var _path4 = op.path; - var _index3 = _path4[_path4.length - 1]; - - var _parent3 = Node$1.parent(editor, _path4); - - _parent3.children.splice(_index3, 1); // Transform all of the points in the value, but if the point was in the - // node that was removed we need to update the range or remove it. - - - if (selection) { - var _iterator5 = _createForOfIteratorHelper$2(Range.points(selection)), - _step5; - - try { - for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { - var _step5$value = _slicedToArray(_step5.value, 2), - _point4 = _step5$value[0], - _key4 = _step5$value[1]; - - var result = Point.transform(_point4, op); - - if (selection != null && result != null) { - selection[_key4] = result; - } else { - var _prev = void 0; - - var next = void 0; - - var _iterator6 = _createForOfIteratorHelper$2(Node$1.texts(editor)), - _step6; - - try { - for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) { - var _step6$value = _slicedToArray(_step6.value, 2), - n = _step6$value[0], - p = _step6$value[1]; - - if (Path.compare(p, _path4) === -1) { - _prev = [n, p]; - } else { - next = [n, p]; - break; - } - } - } catch (err) { - _iterator6.e(err); - } finally { - _iterator6.f(); - } - - var preferNext = false; - - if (_prev && next) { - if (Path.equals(next[1], _path4)) { - preferNext = !Path.hasPrevious(next[1]); - } else { - preferNext = Path.common(_prev[1], _path4).length < Path.common(next[1], _path4).length; - } - } - - if (_prev && !preferNext) { - _point4.path = _prev[1]; - _point4.offset = _prev[0].text.length; - } else if (next) { - _point4.path = next[1]; - _point4.offset = 0; - } else { - selection = null; - } - } - } - } catch (err) { - _iterator5.e(err); - } finally { - _iterator5.f(); - } - } - - break; - } - - case 'remove_text': - { - var _path5 = op.path, - _offset = op.offset, - _text = op.text; - if (_text.length === 0) break; - - var _node4 = Node$1.leaf(editor, _path5); - - var _before = _node4.text.slice(0, _offset); - - var _after = _node4.text.slice(_offset + _text.length); - - _node4.text = _before + _after; - - if (selection) { - var _iterator7 = _createForOfIteratorHelper$2(Range.points(selection)), - _step7; - - try { - for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) { - var _step7$value = _slicedToArray(_step7.value, 2), - _point5 = _step7$value[0], - _key5 = _step7$value[1]; - - selection[_key5] = Point.transform(_point5, op); - } - } catch (err) { - _iterator7.e(err); - } finally { - _iterator7.f(); - } - } - - break; - } - - case 'set_node': - { - var _path6 = op.path, - properties = op.properties, - newProperties = op.newProperties; - - if (_path6.length === 0) { - throw new Error("Cannot set properties on the root node!"); - } - - var _node5 = Node$1.get(editor, _path6); - - for (var _key6 in newProperties) { - if (_key6 === 'children' || _key6 === 'text') { - throw new Error("Cannot set the \"".concat(_key6, "\" property of nodes!")); - } - - var value = newProperties[_key6]; - - if (value == null) { - delete _node5[_key6]; - } else { - _node5[_key6] = value; - } - } // properties that were previously defined, but are now missing, must be deleted - - - for (var _key7 in properties) { - if (!newProperties.hasOwnProperty(_key7)) { - delete _node5[_key7]; - } - } - - break; - } - - case 'set_selection': - { - var _newProperties = op.newProperties; - - if (_newProperties == null) { - selection = _newProperties; - } else { - if (selection == null) { - if (!Range.isRange(_newProperties)) { - throw new Error("Cannot apply an incomplete \"set_selection\" operation properties ".concat(JSON.stringify(_newProperties), " when there is no current selection.")); - } - - selection = _objectSpread$3({}, _newProperties); - } - - for (var _key8 in _newProperties) { - var _value = _newProperties[_key8]; - - if (_value == null) { - if (_key8 === 'anchor' || _key8 === 'focus') { - throw new Error("Cannot remove the \"".concat(_key8, "\" selection property")); - } - - delete selection[_key8]; - } else { - selection[_key8] = _value; - } - } - } - - break; - } - - case 'split_node': - { - var _path7 = op.path, - position = op.position, - _properties = op.properties; - - if (_path7.length === 0) { - throw new Error("Cannot apply a \"split_node\" operation at path [".concat(_path7, "] because the root node cannot be split.")); - } - - var _node6 = Node$1.get(editor, _path7); - - var _parent4 = Node$1.parent(editor, _path7); - - var _index4 = _path7[_path7.length - 1]; - var newNode; - - if (Text.isText(_node6)) { - var _before2 = _node6.text.slice(0, position); - - var _after2 = _node6.text.slice(position); - - _node6.text = _before2; - newNode = _objectSpread$3(_objectSpread$3({}, _properties), {}, { - text: _after2 - }); - } else { - var _before3 = _node6.children.slice(0, position); - - var _after3 = _node6.children.slice(position); - - _node6.children = _before3; - newNode = _objectSpread$3(_objectSpread$3({}, _properties), {}, { - children: _after3 - }); - } - - _parent4.children.splice(_index4 + 1, 0, newNode); - - if (selection) { - var _iterator8 = _createForOfIteratorHelper$2(Range.points(selection)), - _step8; - - try { - for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) { - var _step8$value = _slicedToArray(_step8.value, 2), - _point6 = _step8$value[0], - _key9 = _step8$value[1]; - - selection[_key9] = Point.transform(_point6, op); - } - } catch (err) { - _iterator8.e(err); - } finally { - _iterator8.f(); - } - } - - break; - } - } - - return selection; - }; - - var GeneralTransforms = { - /** - * Transform the editor by an operation. - */ - transform: function transform(editor, op) { - editor.children = immer.createDraft(editor.children); - var selection = editor.selection && immer.createDraft(editor.selection); - - try { - selection = applyToDraft(editor, selection, op); - } finally { - editor.children = immer.finishDraft(editor.children); - - if (selection) { - editor.selection = immer.isDraft(selection) ? immer.finishDraft(selection) : selection; - } else { - editor.selection = null; - } - } - } - }; - - var _excluded = ["text"], - _excluded2 = ["children"]; - - function ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } - - function _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$2(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } - - function _createForOfIteratorHelper$1(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$1(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } - - function _unsupportedIterableToArray$1(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$1(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$1(o, minLen); } - - function _arrayLikeToArray$1(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } - var NodeTransforms = { - /** - * Insert nodes at a specific location in the Editor. - */ - insertNodes: function insertNodes(editor, nodes) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - Editor.withoutNormalizing(editor, function () { - var _options$hanging = options.hanging, - hanging = _options$hanging === void 0 ? false : _options$hanging, - _options$voids = options.voids, - voids = _options$voids === void 0 ? false : _options$voids, - _options$mode = options.mode, - mode = _options$mode === void 0 ? 'lowest' : _options$mode; - var at = options.at, - match = options.match, - select = options.select; - - if (Node$1.isNode(nodes)) { - nodes = [nodes]; - } - - if (nodes.length === 0) { - return; - } - - var _nodes = nodes, - _nodes2 = _slicedToArray(_nodes, 1), - node = _nodes2[0]; // By default, use the selection as the target location. But if there is - // no selection, insert at the end of the document since that is such a - // common use case when inserting from a non-selected state. - - - if (!at) { - if (editor.selection) { - at = editor.selection; - } else if (editor.children.length > 0) { - at = Editor.end(editor, []); - } else { - at = [0]; - } - - select = true; - } - - if (select == null) { - select = false; - } - - if (Range.isRange(at)) { - if (!hanging) { - at = Editor.unhangRange(editor, at); - } - - if (Range.isCollapsed(at)) { - at = at.anchor; - } else { - var _Range$edges = Range.edges(at), - _Range$edges2 = _slicedToArray(_Range$edges, 2), - end = _Range$edges2[1]; - - var pointRef = Editor.pointRef(editor, end); - Transforms["delete"](editor, { - at: at - }); - at = pointRef.unref(); - } - } - - if (Point.isPoint(at)) { - if (match == null) { - if (Text.isText(node)) { - match = function match(n) { - return Text.isText(n); - }; - } else if (editor.isInline(node)) { - match = function match(n) { - return Text.isText(n) || Editor.isInline(editor, n); - }; - } else { - match = function match(n) { - return Editor.isBlock(editor, n); - }; - } - } - - var _Editor$nodes = Editor.nodes(editor, { - at: at.path, - match: match, - mode: mode, - voids: voids - }), - _Editor$nodes2 = _slicedToArray(_Editor$nodes, 1), - entry = _Editor$nodes2[0]; - - if (entry) { - var _entry = _slicedToArray(entry, 2), - _matchPath = _entry[1]; - - var pathRef = Editor.pathRef(editor, _matchPath); - var isAtEnd = Editor.isEnd(editor, at, _matchPath); - Transforms.splitNodes(editor, { - at: at, - match: match, - mode: mode, - voids: voids - }); - var path = pathRef.unref(); - at = isAtEnd ? Path.next(path) : path; - } else { - return; - } - } - - var parentPath = Path.parent(at); - var index = at[at.length - 1]; - - if (!voids && Editor["void"](editor, { - at: parentPath - })) { - return; - } - - var _iterator = _createForOfIteratorHelper$1(nodes), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var _node = _step.value; - - var _path = parentPath.concat(index); - - index++; - editor.apply({ - type: 'insert_node', - path: _path, - node: _node - }); - at = Path.next(at); - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - - at = Path.previous(at); - - if (select) { - var point = Editor.end(editor, at); - - if (point) { - Transforms.select(editor, point); - } - } - }); - }, - - /** - * Lift nodes at a specific location upwards in the document tree, splitting - * their parent in two if necessary. - */ - liftNodes: function liftNodes(editor) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - Editor.withoutNormalizing(editor, function () { - var _options$at = options.at, - at = _options$at === void 0 ? editor.selection : _options$at, - _options$mode2 = options.mode, - mode = _options$mode2 === void 0 ? 'lowest' : _options$mode2, - _options$voids2 = options.voids, - voids = _options$voids2 === void 0 ? false : _options$voids2; - var match = options.match; - - if (match == null) { - match = Path.isPath(at) ? matchPath(editor, at) : function (n) { - return Editor.isBlock(editor, n); - }; - } - - if (!at) { - return; - } - - var matches = Editor.nodes(editor, { - at: at, - match: match, - mode: mode, - voids: voids - }); - var pathRefs = Array.from(matches, function (_ref) { - var _ref2 = _slicedToArray(_ref, 2), - p = _ref2[1]; - - return Editor.pathRef(editor, p); - }); - - for (var _i = 0, _pathRefs = pathRefs; _i < _pathRefs.length; _i++) { - var pathRef = _pathRefs[_i]; - var path = pathRef.unref(); - - if (path.length < 2) { - throw new Error("Cannot lift node at a path [".concat(path, "] because it has a depth of less than `2`.")); - } - - var parentNodeEntry = Editor.node(editor, Path.parent(path)); - - var _parentNodeEntry = _slicedToArray(parentNodeEntry, 2), - parent = _parentNodeEntry[0], - parentPath = _parentNodeEntry[1]; - - var index = path[path.length - 1]; - var length = parent.children.length; - - if (length === 1) { - var toPath = Path.next(parentPath); - Transforms.moveNodes(editor, { - at: path, - to: toPath, - voids: voids - }); - Transforms.removeNodes(editor, { - at: parentPath, - voids: voids - }); - } else if (index === 0) { - Transforms.moveNodes(editor, { - at: path, - to: parentPath, - voids: voids - }); - } else if (index === length - 1) { - var _toPath = Path.next(parentPath); - - Transforms.moveNodes(editor, { - at: path, - to: _toPath, - voids: voids - }); - } else { - var splitPath = Path.next(path); - - var _toPath2 = Path.next(parentPath); - - Transforms.splitNodes(editor, { - at: splitPath, - voids: voids - }); - Transforms.moveNodes(editor, { - at: path, - to: _toPath2, - voids: voids - }); - } - } - }); - }, - - /** - * Merge a node at a location with the previous node of the same depth, - * removing any empty containing nodes after the merge if necessary. - */ - mergeNodes: function mergeNodes(editor) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - Editor.withoutNormalizing(editor, function () { - var match = options.match, - _options$at2 = options.at, - at = _options$at2 === void 0 ? editor.selection : _options$at2; - var _options$hanging2 = options.hanging, - hanging = _options$hanging2 === void 0 ? false : _options$hanging2, - _options$voids3 = options.voids, - voids = _options$voids3 === void 0 ? false : _options$voids3, - _options$mode3 = options.mode, - mode = _options$mode3 === void 0 ? 'lowest' : _options$mode3; - - if (!at) { - return; - } - - if (match == null) { - if (Path.isPath(at)) { - var _Editor$parent = Editor.parent(editor, at), - _Editor$parent2 = _slicedToArray(_Editor$parent, 1), - parent = _Editor$parent2[0]; - - match = function match(n) { - return parent.children.includes(n); - }; - } else { - match = function match(n) { - return Editor.isBlock(editor, n); - }; - } - } - - if (!hanging && Range.isRange(at)) { - at = Editor.unhangRange(editor, at); - } - - if (Range.isRange(at)) { - if (Range.isCollapsed(at)) { - at = at.anchor; - } else { - var _Range$edges3 = Range.edges(at), - _Range$edges4 = _slicedToArray(_Range$edges3, 2), - end = _Range$edges4[1]; - - var pointRef = Editor.pointRef(editor, end); - Transforms["delete"](editor, { - at: at - }); - at = pointRef.unref(); - - if (options.at == null) { - Transforms.select(editor, at); - } - } - } - - var _Editor$nodes3 = Editor.nodes(editor, { - at: at, - match: match, - voids: voids, - mode: mode - }), - _Editor$nodes4 = _slicedToArray(_Editor$nodes3, 1), - current = _Editor$nodes4[0]; - - var prev = Editor.previous(editor, { - at: at, - match: match, - voids: voids, - mode: mode - }); - - if (!current || !prev) { - return; - } - - var _current = _slicedToArray(current, 2), - node = _current[0], - path = _current[1]; - - var _prev = _slicedToArray(prev, 2), - prevNode = _prev[0], - prevPath = _prev[1]; - - if (path.length === 0 || prevPath.length === 0) { - return; - } - - var newPath = Path.next(prevPath); - var commonPath = Path.common(path, prevPath); - var isPreviousSibling = Path.isSibling(path, prevPath); - var levels = Array.from(Editor.levels(editor, { - at: path - }), function (_ref3) { - var _ref4 = _slicedToArray(_ref3, 1), - n = _ref4[0]; - - return n; - }).slice(commonPath.length).slice(0, -1); // Determine if the merge will leave an ancestor of the path empty as a - // result, in which case we'll want to remove it after merging. - - var emptyAncestor = Editor.above(editor, { - at: path, - mode: 'highest', - match: function match(n) { - return levels.includes(n) && hasSingleChildNest(editor, n); - } - }); - var emptyRef = emptyAncestor && Editor.pathRef(editor, emptyAncestor[1]); - var properties; - var position; // Ensure that the nodes are equivalent, and figure out what the position - // and extra properties of the merge will be. - - if (Text.isText(node) && Text.isText(prevNode)) { - node.text; - var rest = _objectWithoutProperties(node, _excluded); - - position = prevNode.text.length; - properties = rest; - } else if (Element$1.isElement(node) && Element$1.isElement(prevNode)) { - node.children; - var _rest = _objectWithoutProperties(node, _excluded2); - - position = prevNode.children.length; - properties = _rest; - } else { - throw new Error("Cannot merge the node at path [".concat(path, "] with the previous sibling because it is not the same kind: ").concat(JSON.stringify(node), " ").concat(JSON.stringify(prevNode))); - } // If the node isn't already the next sibling of the previous node, move - // it so that it is before merging. - - - if (!isPreviousSibling) { - Transforms.moveNodes(editor, { - at: path, - to: newPath, - voids: voids - }); - } // If there was going to be an empty ancestor of the node that was merged, - // we remove it from the tree. - - - if (emptyRef) { - Transforms.removeNodes(editor, { - at: emptyRef.current, - voids: voids - }); - } // If the target node that we're merging with is empty, remove it instead - // of merging the two. This is a common rich text editor behavior to - // prevent losing formatting when deleting entire nodes when you have a - // hanging selection. - // if prevNode is first child in parent,don't remove it. - - - if (Element$1.isElement(prevNode) && Editor.isEmpty(editor, prevNode) || Text.isText(prevNode) && prevNode.text === '' && prevPath[prevPath.length - 1] !== 0) { - Transforms.removeNodes(editor, { - at: prevPath, - voids: voids - }); - } else { - editor.apply({ - type: 'merge_node', - path: newPath, - position: position, - properties: properties - }); - } - - if (emptyRef) { - emptyRef.unref(); - } - }); - }, - - /** - * Move the nodes at a location to a new location. - */ - moveNodes: function moveNodes(editor, options) { - Editor.withoutNormalizing(editor, function () { - var to = options.to, - _options$at3 = options.at, - at = _options$at3 === void 0 ? editor.selection : _options$at3, - _options$mode4 = options.mode, - mode = _options$mode4 === void 0 ? 'lowest' : _options$mode4, - _options$voids4 = options.voids, - voids = _options$voids4 === void 0 ? false : _options$voids4; - var match = options.match; - - if (!at) { - return; - } - - if (match == null) { - match = Path.isPath(at) ? matchPath(editor, at) : function (n) { - return Editor.isBlock(editor, n); - }; - } - - var toRef = Editor.pathRef(editor, to); - var targets = Editor.nodes(editor, { - at: at, - match: match, - mode: mode, - voids: voids - }); - var pathRefs = Array.from(targets, function (_ref5) { - var _ref6 = _slicedToArray(_ref5, 2), - p = _ref6[1]; - - return Editor.pathRef(editor, p); - }); - - for (var _i2 = 0, _pathRefs2 = pathRefs; _i2 < _pathRefs2.length; _i2++) { - var pathRef = _pathRefs2[_i2]; - var path = pathRef.unref(); - var newPath = toRef.current; - - if (path.length !== 0) { - editor.apply({ - type: 'move_node', - path: path, - newPath: newPath - }); - } - - if (toRef.current && Path.isSibling(newPath, path) && Path.isAfter(newPath, path)) { - // When performing a sibling move to a later index, the path at the destination is shifted - // to before the insertion point instead of after. To ensure our group of nodes are inserted - // in the correct order we increment toRef to account for that - toRef.current = Path.next(toRef.current); - } - } - - toRef.unref(); - }); - }, - - /** - * Remove the nodes at a specific location in the document. - */ - removeNodes: function removeNodes(editor) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - Editor.withoutNormalizing(editor, function () { - var _options$hanging3 = options.hanging, - hanging = _options$hanging3 === void 0 ? false : _options$hanging3, - _options$voids5 = options.voids, - voids = _options$voids5 === void 0 ? false : _options$voids5, - _options$mode5 = options.mode, - mode = _options$mode5 === void 0 ? 'lowest' : _options$mode5; - var _options$at4 = options.at, - at = _options$at4 === void 0 ? editor.selection : _options$at4, - match = options.match; - - if (!at) { - return; - } - - if (match == null) { - match = Path.isPath(at) ? matchPath(editor, at) : function (n) { - return Editor.isBlock(editor, n); - }; - } - - if (!hanging && Range.isRange(at)) { - at = Editor.unhangRange(editor, at); - } - - var depths = Editor.nodes(editor, { - at: at, - match: match, - mode: mode, - voids: voids - }); - var pathRefs = Array.from(depths, function (_ref7) { - var _ref8 = _slicedToArray(_ref7, 2), - p = _ref8[1]; - - return Editor.pathRef(editor, p); - }); - - for (var _i3 = 0, _pathRefs3 = pathRefs; _i3 < _pathRefs3.length; _i3++) { - var pathRef = _pathRefs3[_i3]; - var path = pathRef.unref(); - - if (path) { - var _Editor$node = Editor.node(editor, path), - _Editor$node2 = _slicedToArray(_Editor$node, 1), - node = _Editor$node2[0]; - - editor.apply({ - type: 'remove_node', - path: path, - node: node - }); - } - } - }); - }, - - /** - * Set new properties on the nodes at a location. - */ - setNodes: function setNodes(editor, props) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - Editor.withoutNormalizing(editor, function () { - var match = options.match, - _options$at5 = options.at, - at = _options$at5 === void 0 ? editor.selection : _options$at5; - var _options$hanging4 = options.hanging, - hanging = _options$hanging4 === void 0 ? false : _options$hanging4, - _options$mode6 = options.mode, - mode = _options$mode6 === void 0 ? 'lowest' : _options$mode6, - _options$split = options.split, - split = _options$split === void 0 ? false : _options$split, - _options$voids6 = options.voids, - voids = _options$voids6 === void 0 ? false : _options$voids6; - - if (!at) { - return; - } - - if (match == null) { - match = Path.isPath(at) ? matchPath(editor, at) : function (n) { - return Editor.isBlock(editor, n); - }; - } - - if (!hanging && Range.isRange(at)) { - at = Editor.unhangRange(editor, at); - } - - if (split && Range.isRange(at)) { - if (Range.isCollapsed(at) && Editor.leaf(editor, at.anchor)[0].text.length > 0) { - // If the range is collapsed in a non-empty node and 'split' is true, there's nothing to - // set that won't get normalized away - return; - } - - var rangeRef = Editor.rangeRef(editor, at, { - affinity: 'inward' - }); - - var _Range$edges5 = Range.edges(at), - _Range$edges6 = _slicedToArray(_Range$edges5, 2), - start = _Range$edges6[0], - end = _Range$edges6[1]; - - var splitMode = mode === 'lowest' ? 'lowest' : 'highest'; - var endAtEndOfNode = Editor.isEnd(editor, end, end.path); - Transforms.splitNodes(editor, { - at: end, - match: match, - mode: splitMode, - voids: voids, - always: !endAtEndOfNode - }); - var startAtStartOfNode = Editor.isStart(editor, start, start.path); - Transforms.splitNodes(editor, { - at: start, - match: match, - mode: splitMode, - voids: voids, - always: !startAtStartOfNode - }); - at = rangeRef.unref(); - - if (options.at == null) { - Transforms.select(editor, at); - } - } - - var _iterator2 = _createForOfIteratorHelper$1(Editor.nodes(editor, { - at: at, - match: match, - mode: mode, - voids: voids - })), - _step2; - - try { - for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { - var _step2$value = _slicedToArray(_step2.value, 2), - node = _step2$value[0], - path = _step2$value[1]; - - var properties = {}; - var newProperties = {}; // You can't set properties on the editor node. - - if (path.length === 0) { - continue; - } - - var hasChanges = false; - - for (var k in props) { - if (k === 'children' || k === 'text') { - continue; - } - - if (props[k] !== node[k]) { - hasChanges = true; // Omit new properties from the old properties list - - if (node.hasOwnProperty(k)) properties[k] = node[k]; // Omit properties that have been removed from the new properties list - - if (props[k] != null) newProperties[k] = props[k]; - } - } - - if (hasChanges) { - editor.apply({ - type: 'set_node', - path: path, - properties: properties, - newProperties: newProperties - }); - } - } - } catch (err) { - _iterator2.e(err); - } finally { - _iterator2.f(); - } - }); - }, - - /** - * Split the nodes at a specific location. - */ - splitNodes: function splitNodes(editor) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - Editor.withoutNormalizing(editor, function () { - var _options$mode7 = options.mode, - mode = _options$mode7 === void 0 ? 'lowest' : _options$mode7, - _options$voids7 = options.voids, - voids = _options$voids7 === void 0 ? false : _options$voids7; - var match = options.match, - _options$at6 = options.at, - at = _options$at6 === void 0 ? editor.selection : _options$at6, - _options$height = options.height, - height = _options$height === void 0 ? 0 : _options$height, - _options$always = options.always, - always = _options$always === void 0 ? false : _options$always; - - if (match == null) { - match = function match(n) { - return Editor.isBlock(editor, n); - }; - } - - if (Range.isRange(at)) { - at = deleteRange(editor, at); - } // If the target is a path, the default height-skipping and position - // counters need to account for us potentially splitting at a non-leaf. - - - if (Path.isPath(at)) { - var path = at; - var point = Editor.point(editor, path); - - var _Editor$parent3 = Editor.parent(editor, path), - _Editor$parent4 = _slicedToArray(_Editor$parent3, 1), - parent = _Editor$parent4[0]; - - match = function match(n) { - return n === parent; - }; - - height = point.path.length - path.length + 1; - at = point; - always = true; - } - - if (!at) { - return; - } - - var beforeRef = Editor.pointRef(editor, at, { - affinity: 'backward' - }); - - var _Editor$nodes5 = Editor.nodes(editor, { - at: at, - match: match, - mode: mode, - voids: voids - }), - _Editor$nodes6 = _slicedToArray(_Editor$nodes5, 1), - highest = _Editor$nodes6[0]; - - if (!highest) { - return; - } - - var voidMatch = Editor["void"](editor, { - at: at, - mode: 'highest' - }); - var nudge = 0; - - if (!voids && voidMatch) { - var _voidMatch = _slicedToArray(voidMatch, 2), - voidNode = _voidMatch[0], - voidPath = _voidMatch[1]; - - if (Element$1.isElement(voidNode) && editor.isInline(voidNode)) { - var after = Editor.after(editor, voidPath); - - if (!after) { - var text = { - text: '' - }; - var afterPath = Path.next(voidPath); - Transforms.insertNodes(editor, text, { - at: afterPath, - voids: voids - }); - after = Editor.point(editor, afterPath); - } - - at = after; - always = true; - } - - var siblingHeight = at.path.length - voidPath.length; - height = siblingHeight + 1; - always = true; - } - - var afterRef = Editor.pointRef(editor, at); - var depth = at.path.length - height; - - var _highest = _slicedToArray(highest, 2), - highestPath = _highest[1]; - - var lowestPath = at.path.slice(0, depth); - var position = height === 0 ? at.offset : at.path[depth] + nudge; - - var _iterator3 = _createForOfIteratorHelper$1(Editor.levels(editor, { - at: lowestPath, - reverse: true, - voids: voids - })), - _step3; - - try { - for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { - var _step3$value = _slicedToArray(_step3.value, 2), - node = _step3$value[0], - _path2 = _step3$value[1]; - - var split = false; - - if (_path2.length < highestPath.length || _path2.length === 0 || !voids && Editor.isVoid(editor, node)) { - break; - } - - var _point2 = beforeRef.current; - var isEnd = Editor.isEnd(editor, _point2, _path2); - - if (always || !beforeRef || !Editor.isEdge(editor, _point2, _path2)) { - split = true; - var properties = Node$1.extractProps(node); - editor.apply({ - type: 'split_node', - path: _path2, - position: position, - properties: properties - }); - } - - position = _path2[_path2.length - 1] + (split || isEnd ? 1 : 0); - } - } catch (err) { - _iterator3.e(err); - } finally { - _iterator3.f(); - } - - if (options.at == null) { - var _point = afterRef.current || Editor.end(editor, []); - - Transforms.select(editor, _point); - } - - beforeRef.unref(); - afterRef.unref(); - }); - }, - - /** - * Unset properties on the nodes at a location. - */ - unsetNodes: function unsetNodes(editor, props) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - - if (!Array.isArray(props)) { - props = [props]; - } - - var obj = {}; - - var _iterator4 = _createForOfIteratorHelper$1(props), - _step4; - - try { - for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { - var key = _step4.value; - obj[key] = null; - } - } catch (err) { - _iterator4.e(err); - } finally { - _iterator4.f(); - } - - Transforms.setNodes(editor, obj, options); - }, - - /** - * Unwrap the nodes at a location from a parent node, splitting the parent if - * necessary to ensure that only the content in the range is unwrapped. - */ - unwrapNodes: function unwrapNodes(editor) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - Editor.withoutNormalizing(editor, function () { - var _options$mode8 = options.mode, - mode = _options$mode8 === void 0 ? 'lowest' : _options$mode8, - _options$split2 = options.split, - split = _options$split2 === void 0 ? false : _options$split2, - _options$voids8 = options.voids, - voids = _options$voids8 === void 0 ? false : _options$voids8; - var _options$at7 = options.at, - at = _options$at7 === void 0 ? editor.selection : _options$at7, - match = options.match; - - if (!at) { - return; - } - - if (match == null) { - match = Path.isPath(at) ? matchPath(editor, at) : function (n) { - return Editor.isBlock(editor, n); - }; - } - - if (Path.isPath(at)) { - at = Editor.range(editor, at); - } - - var rangeRef = Range.isRange(at) ? Editor.rangeRef(editor, at) : null; - var matches = Editor.nodes(editor, { - at: at, - match: match, - mode: mode, - voids: voids - }); - var pathRefs = Array.from(matches, function (_ref9) { - var _ref10 = _slicedToArray(_ref9, 2), - p = _ref10[1]; - - return Editor.pathRef(editor, p); - } // unwrapNode will call liftNode which does not support splitting the node when nested. - // If we do not reverse the order and call it from top to the bottom, it will remove all blocks - // that wrap target node. So we reverse the order. - ).reverse(); - - var _iterator5 = _createForOfIteratorHelper$1(pathRefs), - _step5; - - try { - var _loop = function _loop() { - var pathRef = _step5.value; - var path = pathRef.unref(); - - var _Editor$node3 = Editor.node(editor, path), - _Editor$node4 = _slicedToArray(_Editor$node3, 1), - node = _Editor$node4[0]; - - var range = Editor.range(editor, path); - - if (split && rangeRef) { - range = Range.intersection(rangeRef.current, range); - } - - Transforms.liftNodes(editor, { - at: range, - match: function match(n) { - return Element$1.isAncestor(node) && node.children.includes(n); - }, - voids: voids - }); - }; - - for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { - _loop(); - } - } catch (err) { - _iterator5.e(err); - } finally { - _iterator5.f(); - } - - if (rangeRef) { - rangeRef.unref(); - } - }); - }, - - /** - * Wrap the nodes at a location in a new container node, splitting the edges - * of the range first to ensure that only the content in the range is wrapped. - */ - wrapNodes: function wrapNodes(editor, element) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - Editor.withoutNormalizing(editor, function () { - var _options$mode9 = options.mode, - mode = _options$mode9 === void 0 ? 'lowest' : _options$mode9, - _options$split3 = options.split, - split = _options$split3 === void 0 ? false : _options$split3, - _options$voids9 = options.voids, - voids = _options$voids9 === void 0 ? false : _options$voids9; - var match = options.match, - _options$at8 = options.at, - at = _options$at8 === void 0 ? editor.selection : _options$at8; - - if (!at) { - return; - } - - if (match == null) { - if (Path.isPath(at)) { - match = matchPath(editor, at); - } else if (editor.isInline(element)) { - match = function match(n) { - return Editor.isInline(editor, n) || Text.isText(n); - }; - } else { - match = function match(n) { - return Editor.isBlock(editor, n); - }; - } - } - - if (split && Range.isRange(at)) { - var _Range$edges7 = Range.edges(at), - _Range$edges8 = _slicedToArray(_Range$edges7, 2), - start = _Range$edges8[0], - end = _Range$edges8[1]; - - var rangeRef = Editor.rangeRef(editor, at, { - affinity: 'inward' - }); - Transforms.splitNodes(editor, { - at: end, - match: match, - voids: voids - }); - Transforms.splitNodes(editor, { - at: start, - match: match, - voids: voids - }); - at = rangeRef.unref(); - - if (options.at == null) { - Transforms.select(editor, at); - } - } - - var roots = Array.from(Editor.nodes(editor, { - at: at, - match: editor.isInline(element) ? function (n) { - return Editor.isBlock(editor, n); - } : function (n) { - return Editor.isEditor(n); - }, - mode: 'lowest', - voids: voids - })); - - for (var _i4 = 0, _roots = roots; _i4 < _roots.length; _i4++) { - var _roots$_i = _slicedToArray(_roots[_i4], 2), - rootPath = _roots$_i[1]; - - var a = Range.isRange(at) ? Range.intersection(at, Editor.range(editor, rootPath)) : at; - - if (!a) { - continue; - } - - var matches = Array.from(Editor.nodes(editor, { - at: a, - match: match, - mode: mode, - voids: voids - })); - - if (matches.length > 0) { - var _ret = function () { - var _matches = _slicedToArray(matches, 1), - first = _matches[0]; - - var last = matches[matches.length - 1]; - - var _first = _slicedToArray(first, 2), - firstPath = _first[1]; - - var _last = _slicedToArray(last, 2), - lastPath = _last[1]; - - if (firstPath.length === 0 && lastPath.length === 0) { - // if there's no matching parent - usually means the node is an editor - don't do anything - return "continue"; - } - - var commonPath = Path.equals(firstPath, lastPath) ? Path.parent(firstPath) : Path.common(firstPath, lastPath); - var range = Editor.range(editor, firstPath, lastPath); - var commonNodeEntry = Editor.node(editor, commonPath); - - var _commonNodeEntry = _slicedToArray(commonNodeEntry, 1), - commonNode = _commonNodeEntry[0]; - - var depth = commonPath.length + 1; - var wrapperPath = Path.next(lastPath.slice(0, depth)); - - var wrapper = _objectSpread$2(_objectSpread$2({}, element), {}, { - children: [] - }); - - Transforms.insertNodes(editor, wrapper, { - at: wrapperPath, - voids: voids - }); - Transforms.moveNodes(editor, { - at: range, - match: function match(n) { - return Element$1.isAncestor(commonNode) && commonNode.children.includes(n); - }, - to: wrapperPath.concat(0), - voids: voids - }); - }(); - - if (_ret === "continue") continue; - } - } - }); - } - }; - - var hasSingleChildNest = function hasSingleChildNest(editor, node) { - if (Element$1.isElement(node)) { - var element = node; - - if (Editor.isVoid(editor, node)) { - return true; - } else if (element.children.length === 1) { - return hasSingleChildNest(editor, element.children[0]); - } else { - return false; - } - } else if (Editor.isEditor(node)) { - return false; - } else { - return true; - } - }; - /** - * Convert a range into a point by deleting it's content. - */ - - - var deleteRange = function deleteRange(editor, range) { - if (Range.isCollapsed(range)) { - return range.anchor; - } else { - var _Range$edges9 = Range.edges(range), - _Range$edges10 = _slicedToArray(_Range$edges9, 2), - end = _Range$edges10[1]; - - var pointRef = Editor.pointRef(editor, end); - Transforms["delete"](editor, { - at: range - }); - return pointRef.unref(); - } - }; - - var matchPath = function matchPath(editor, path) { - var _Editor$node5 = Editor.node(editor, path), - _Editor$node6 = _slicedToArray(_Editor$node5, 1), - node = _Editor$node6[0]; - - return function (n) { - return n === node; - }; - }; - - function ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } - - function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } - var SelectionTransforms = { - /** - * Collapse the selection. - */ - collapse: function collapse(editor) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var _options$edge = options.edge, - edge = _options$edge === void 0 ? 'anchor' : _options$edge; - var selection = editor.selection; - - if (!selection) { - return; - } else if (edge === 'anchor') { - Transforms.select(editor, selection.anchor); - } else if (edge === 'focus') { - Transforms.select(editor, selection.focus); - } else if (edge === 'start') { - var _Range$edges = Range.edges(selection), - _Range$edges2 = _slicedToArray(_Range$edges, 1), - start = _Range$edges2[0]; - - Transforms.select(editor, start); - } else if (edge === 'end') { - var _Range$edges3 = Range.edges(selection), - _Range$edges4 = _slicedToArray(_Range$edges3, 2), - end = _Range$edges4[1]; - - Transforms.select(editor, end); - } - }, - - /** - * Unset the selection. - */ - deselect: function deselect(editor) { - var selection = editor.selection; - - if (selection) { - editor.apply({ - type: 'set_selection', - properties: selection, - newProperties: null - }); - } - }, - - /** - * Move the selection's point forward or backward. - */ - move: function move(editor) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var selection = editor.selection; - var _options$distance = options.distance, - distance = _options$distance === void 0 ? 1 : _options$distance, - _options$unit = options.unit, - unit = _options$unit === void 0 ? 'character' : _options$unit, - _options$reverse = options.reverse, - reverse = _options$reverse === void 0 ? false : _options$reverse; - var _options$edge2 = options.edge, - edge = _options$edge2 === void 0 ? null : _options$edge2; - - if (!selection) { - return; - } - - if (edge === 'start') { - edge = Range.isBackward(selection) ? 'focus' : 'anchor'; - } - - if (edge === 'end') { - edge = Range.isBackward(selection) ? 'anchor' : 'focus'; - } - - var anchor = selection.anchor, - focus = selection.focus; - var opts = { - distance: distance, - unit: unit - }; - var props = {}; - - if (edge == null || edge === 'anchor') { - var point = reverse ? Editor.before(editor, anchor, opts) : Editor.after(editor, anchor, opts); - - if (point) { - props.anchor = point; - } - } - - if (edge == null || edge === 'focus') { - var _point = reverse ? Editor.before(editor, focus, opts) : Editor.after(editor, focus, opts); - - if (_point) { - props.focus = _point; - } - } - - Transforms.setSelection(editor, props); - }, - - /** - * Set the selection to a new value. - */ - select: function select(editor, target) { - var selection = editor.selection; - target = Editor.range(editor, target); - - if (selection) { - Transforms.setSelection(editor, target); - return; - } - - if (!Range.isRange(target)) { - throw new Error("When setting the selection and the current selection is `null` you must provide at least an `anchor` and `focus`, but you passed: ".concat(JSON.stringify(target))); - } - - editor.apply({ - type: 'set_selection', - properties: selection, - newProperties: target - }); - }, - - /** - * Set new properties on one of the selection's points. - */ - setPoint: function setPoint(editor, props) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - var selection = editor.selection; - var _options$edge3 = options.edge, - edge = _options$edge3 === void 0 ? 'both' : _options$edge3; - - if (!selection) { - return; - } - - if (edge === 'start') { - edge = Range.isBackward(selection) ? 'focus' : 'anchor'; - } - - if (edge === 'end') { - edge = Range.isBackward(selection) ? 'anchor' : 'focus'; - } - - var anchor = selection.anchor, - focus = selection.focus; - var point = edge === 'anchor' ? anchor : focus; - Transforms.setSelection(editor, _defineProperty({}, edge === 'anchor' ? 'anchor' : 'focus', _objectSpread$1(_objectSpread$1({}, point), props))); - }, - - /** - * Set new properties on the selection. - */ - setSelection: function setSelection(editor, props) { - var selection = editor.selection; - var oldProps = {}; - var newProps = {}; - - if (!selection) { - return; - } - - for (var k in props) { - if (k === 'anchor' && props.anchor != null && !Point.equals(props.anchor, selection.anchor) || k === 'focus' && props.focus != null && !Point.equals(props.focus, selection.focus) || k !== 'anchor' && k !== 'focus' && props[k] !== selection[k]) { - oldProps[k] = selection[k]; - newProps[k] = props[k]; - } - } - - if (Object.keys(oldProps).length > 0) { - editor.apply({ - type: 'set_selection', - properties: oldProps, - newProperties: newProps - }); - } - } - }; - - function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } - - function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } - - function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } - var TextTransforms = { - /** - * Delete content in the editor. - */ - "delete": function _delete(editor) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - Editor.withoutNormalizing(editor, function () { - var _options$reverse = options.reverse, - reverse = _options$reverse === void 0 ? false : _options$reverse, - _options$unit = options.unit, - unit = _options$unit === void 0 ? 'character' : _options$unit, - _options$distance = options.distance, - distance = _options$distance === void 0 ? 1 : _options$distance, - _options$voids = options.voids, - voids = _options$voids === void 0 ? false : _options$voids; - var _options$at = options.at, - at = _options$at === void 0 ? editor.selection : _options$at, - _options$hanging = options.hanging, - hanging = _options$hanging === void 0 ? false : _options$hanging; - - if (!at) { - return; - } - - if (Range.isRange(at) && Range.isCollapsed(at)) { - at = at.anchor; - } - - if (Point.isPoint(at)) { - var furthestVoid = Editor["void"](editor, { - at: at, - mode: 'highest' - }); - - if (!voids && furthestVoid) { - var _furthestVoid = _slicedToArray(furthestVoid, 2), - voidPath = _furthestVoid[1]; - - at = voidPath; - } else { - var opts = { - unit: unit, - distance: distance - }; - var target = reverse ? Editor.before(editor, at, opts) || Editor.start(editor, []) : Editor.after(editor, at, opts) || Editor.end(editor, []); - at = { - anchor: at, - focus: target - }; - hanging = true; - } - } - - if (Path.isPath(at)) { - Transforms.removeNodes(editor, { - at: at, - voids: voids - }); - return; - } - - if (Range.isCollapsed(at)) { - return; - } - - if (!hanging) { - var _Range$edges = Range.edges(at), - _Range$edges2 = _slicedToArray(_Range$edges, 2), - _end = _Range$edges2[1]; - - var endOfDoc = Editor.end(editor, []); - - if (!Point.equals(_end, endOfDoc)) { - at = Editor.unhangRange(editor, at, { - voids: voids - }); - } - } - - var _Range$edges3 = Range.edges(at), - _Range$edges4 = _slicedToArray(_Range$edges3, 2), - start = _Range$edges4[0], - end = _Range$edges4[1]; - - var startBlock = Editor.above(editor, { - match: function match(n) { - return Editor.isBlock(editor, n); - }, - at: start, - voids: voids - }); - var endBlock = Editor.above(editor, { - match: function match(n) { - return Editor.isBlock(editor, n); - }, - at: end, - voids: voids - }); - var isAcrossBlocks = startBlock && endBlock && !Path.equals(startBlock[1], endBlock[1]); - var isSingleText = Path.equals(start.path, end.path); - var startVoid = voids ? null : Editor["void"](editor, { - at: start, - mode: 'highest' - }); - var endVoid = voids ? null : Editor["void"](editor, { - at: end, - mode: 'highest' - }); // If the start or end points are inside an inline void, nudge them out. - - if (startVoid) { - var before = Editor.before(editor, start); - - if (before && startBlock && Path.isAncestor(startBlock[1], before.path)) { - start = before; - } - } - - if (endVoid) { - var after = Editor.after(editor, end); - - if (after && endBlock && Path.isAncestor(endBlock[1], after.path)) { - end = after; - } - } // Get the highest nodes that are completely inside the range, as well as - // the start and end nodes. - - - var matches = []; - var lastPath; - - var _iterator = _createForOfIteratorHelper(Editor.nodes(editor, { - at: at, - voids: voids - })), - _step; - - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var entry = _step.value; - - var _entry = _slicedToArray(entry, 2), - _node2 = _entry[0], - _path3 = _entry[1]; - - if (lastPath && Path.compare(_path3, lastPath) === 0) { - continue; - } - - if (!voids && Editor.isVoid(editor, _node2) || !Path.isCommon(_path3, start.path) && !Path.isCommon(_path3, end.path)) { - matches.push(entry); - lastPath = _path3; - } - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - - var pathRefs = Array.from(matches, function (_ref) { - var _ref2 = _slicedToArray(_ref, 2), - p = _ref2[1]; - - return Editor.pathRef(editor, p); - }); - var startRef = Editor.pointRef(editor, start); - var endRef = Editor.pointRef(editor, end); - - if (!isSingleText && !startVoid) { - var _point = startRef.current; - - var _Editor$leaf = Editor.leaf(editor, _point), - _Editor$leaf2 = _slicedToArray(_Editor$leaf, 1), - node = _Editor$leaf2[0]; - - var path = _point.path; - var _start = start, - offset = _start.offset; - var text = node.text.slice(offset); - if (text.length > 0) editor.apply({ - type: 'remove_text', - path: path, - offset: offset, - text: text - }); - } - - for (var _i = 0, _pathRefs = pathRefs; _i < _pathRefs.length; _i++) { - var pathRef = _pathRefs[_i]; - - var _path = pathRef.unref(); - - Transforms.removeNodes(editor, { - at: _path, - voids: voids - }); - } - - if (!endVoid) { - var _point2 = endRef.current; - - var _Editor$leaf3 = Editor.leaf(editor, _point2), - _Editor$leaf4 = _slicedToArray(_Editor$leaf3, 1), - _node = _Editor$leaf4[0]; - - var _path2 = _point2.path; - - var _offset = isSingleText ? start.offset : 0; - - var _text = _node.text.slice(_offset, end.offset); - - if (_text.length > 0) editor.apply({ - type: 'remove_text', - path: _path2, - offset: _offset, - text: _text - }); - } - - if (!isSingleText && isAcrossBlocks && endRef.current && startRef.current) { - Transforms.mergeNodes(editor, { - at: endRef.current, - hanging: true, - voids: voids - }); - } - - var point = reverse ? startRef.unref() || endRef.unref() : endRef.unref() || startRef.unref(); - - if (options.at == null && point) { - Transforms.select(editor, point); - } - }); - }, - - /** - * Insert a fragment at a specific location in the editor. - */ - insertFragment: function insertFragment(editor, fragment) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - Editor.withoutNormalizing(editor, function () { - var _options$hanging2 = options.hanging, - hanging = _options$hanging2 === void 0 ? false : _options$hanging2, - _options$voids2 = options.voids, - voids = _options$voids2 === void 0 ? false : _options$voids2; - var _options$at2 = options.at, - at = _options$at2 === void 0 ? editor.selection : _options$at2; - - if (!fragment.length) { - return; - } - - if (!at) { - return; - } else if (Range.isRange(at)) { - if (!hanging) { - at = Editor.unhangRange(editor, at); - } - - if (Range.isCollapsed(at)) { - at = at.anchor; - } else { - var _Range$edges5 = Range.edges(at), - _Range$edges6 = _slicedToArray(_Range$edges5, 2), - end = _Range$edges6[1]; - - if (!voids && Editor["void"](editor, { - at: end - })) { - return; - } - - var pointRef = Editor.pointRef(editor, end); - Transforms["delete"](editor, { - at: at - }); - at = pointRef.unref(); - } - } else if (Path.isPath(at)) { - at = Editor.start(editor, at); - } - - if (!voids && Editor["void"](editor, { - at: at - })) { - return; - } // If the insert point is at the edge of an inline node, move it outside - // instead since it will need to be split otherwise. - - - var inlineElementMatch = Editor.above(editor, { - at: at, - match: function match(n) { - return Editor.isInline(editor, n); - }, - mode: 'highest', - voids: voids - }); - - if (inlineElementMatch) { - var _inlineElementMatch = _slicedToArray(inlineElementMatch, 2), - _inlinePath = _inlineElementMatch[1]; - - if (Editor.isEnd(editor, at, _inlinePath)) { - var after = Editor.after(editor, _inlinePath); - at = after; - } else if (Editor.isStart(editor, at, _inlinePath)) { - var before = Editor.before(editor, _inlinePath); - at = before; - } - } - - var blockMatch = Editor.above(editor, { - match: function match(n) { - return Editor.isBlock(editor, n); - }, - at: at, - voids: voids - }); - - var _blockMatch = _slicedToArray(blockMatch, 2), - blockPath = _blockMatch[1]; - - var isBlockStart = Editor.isStart(editor, at, blockPath); - var isBlockEnd = Editor.isEnd(editor, at, blockPath); - var isBlockEmpty = isBlockStart && isBlockEnd; - var mergeStart = !isBlockStart || isBlockStart && isBlockEnd; - var mergeEnd = !isBlockEnd; - - var _Node$first = Node$1.first({ - children: fragment - }, []), - _Node$first2 = _slicedToArray(_Node$first, 2), - firstPath = _Node$first2[1]; - - var _Node$last = Node$1.last({ - children: fragment - }, []), - _Node$last2 = _slicedToArray(_Node$last, 2), - lastPath = _Node$last2[1]; - - var matches = []; - - var matcher = function matcher(_ref3) { - var _ref4 = _slicedToArray(_ref3, 2), - n = _ref4[0], - p = _ref4[1]; - - var isRoot = p.length === 0; - - if (isRoot) { - return false; - } - - if (isBlockEmpty) { - return true; - } - - if (mergeStart && Path.isAncestor(p, firstPath) && Element$1.isElement(n) && !editor.isVoid(n) && !editor.isInline(n)) { - return false; - } - - if (mergeEnd && Path.isAncestor(p, lastPath) && Element$1.isElement(n) && !editor.isVoid(n) && !editor.isInline(n)) { - return false; - } - - return true; - }; - - var _iterator2 = _createForOfIteratorHelper(Node$1.nodes({ - children: fragment - }, { - pass: matcher - })), - _step2; - - try { - for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { - var entry = _step2.value; - - if (matcher(entry)) { - matches.push(entry); - } - } - } catch (err) { - _iterator2.e(err); - } finally { - _iterator2.f(); - } - - var starts = []; - var middles = []; - var ends = []; - var starting = true; - var hasBlocks = false; - - for (var _i2 = 0, _matches = matches; _i2 < _matches.length; _i2++) { - var _matches$_i = _slicedToArray(_matches[_i2], 1), - node = _matches$_i[0]; - - if (Element$1.isElement(node) && !editor.isInline(node)) { - starting = false; - hasBlocks = true; - middles.push(node); - } else if (starting) { - starts.push(node); - } else { - ends.push(node); - } - } - - var _Editor$nodes = Editor.nodes(editor, { - at: at, - match: function match(n) { - return Text.isText(n) || Editor.isInline(editor, n); - }, - mode: 'highest', - voids: voids - }), - _Editor$nodes2 = _slicedToArray(_Editor$nodes, 1), - inlineMatch = _Editor$nodes2[0]; - - var _inlineMatch = _slicedToArray(inlineMatch, 2), - inlinePath = _inlineMatch[1]; - - var isInlineStart = Editor.isStart(editor, at, inlinePath); - var isInlineEnd = Editor.isEnd(editor, at, inlinePath); - var middleRef = Editor.pathRef(editor, isBlockEnd ? Path.next(blockPath) : blockPath); - var endRef = Editor.pathRef(editor, isInlineEnd ? Path.next(inlinePath) : inlinePath); - var blockPathRef = Editor.pathRef(editor, blockPath); - Transforms.splitNodes(editor, { - at: at, - match: function match(n) { - return hasBlocks ? Editor.isBlock(editor, n) : Text.isText(n) || Editor.isInline(editor, n); - }, - mode: hasBlocks ? 'lowest' : 'highest', - voids: voids - }); - var startRef = Editor.pathRef(editor, !isInlineStart || isInlineStart && isInlineEnd ? Path.next(inlinePath) : inlinePath); - Transforms.insertNodes(editor, starts, { - at: startRef.current, - match: function match(n) { - return Text.isText(n) || Editor.isInline(editor, n); - }, - mode: 'highest', - voids: voids - }); - - if (isBlockEmpty && middles.length) { - Transforms["delete"](editor, { - at: blockPathRef.unref(), - voids: voids - }); - } - - Transforms.insertNodes(editor, middles, { - at: middleRef.current, - match: function match(n) { - return Editor.isBlock(editor, n); - }, - mode: 'lowest', - voids: voids - }); - Transforms.insertNodes(editor, ends, { - at: endRef.current, - match: function match(n) { - return Text.isText(n) || Editor.isInline(editor, n); - }, - mode: 'highest', - voids: voids - }); - - if (!options.at) { - var path; - - if (ends.length > 0) { - path = Path.previous(endRef.current); - } else if (middles.length > 0) { - path = Path.previous(middleRef.current); - } else { - path = Path.previous(startRef.current); - } - - var _end2 = Editor.end(editor, path); - - Transforms.select(editor, _end2); - } - - startRef.unref(); - middleRef.unref(); - endRef.unref(); - }); - }, - - /** - * Insert a string of text in the Editor. - */ - insertText: function insertText(editor, text) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - Editor.withoutNormalizing(editor, function () { - var _options$voids3 = options.voids, - voids = _options$voids3 === void 0 ? false : _options$voids3; - var _options$at3 = options.at, - at = _options$at3 === void 0 ? editor.selection : _options$at3; - - if (!at) { - return; - } - - if (Path.isPath(at)) { - at = Editor.range(editor, at); - } - - if (Range.isRange(at)) { - if (Range.isCollapsed(at)) { - at = at.anchor; - } else { - var end = Range.end(at); - - if (!voids && Editor["void"](editor, { - at: end - })) { - return; - } - - var pointRef = Editor.pointRef(editor, end); - Transforms["delete"](editor, { - at: at, - voids: voids - }); - at = pointRef.unref(); - Transforms.setSelection(editor, { - anchor: at, - focus: at - }); - } - } - - if (!voids && Editor["void"](editor, { - at: at - })) { - return; - } - - var _at = at, - path = _at.path, - offset = _at.offset; - if (text.length > 0) editor.apply({ - type: 'insert_text', - path: path, - offset: offset, - text: text - }); - }); - } - }; - - function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } - - function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } - var Transforms = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, GeneralTransforms), NodeTransforms), SelectionTransforms), TextTransforms); - - var Editor_1 = Editor; - var Element_1 = Element$1; - var Location_1 = Location; - var Node_1 = Node$1; - var Operation_1 = Operation; - var Path_1 = Path; - var PathRef_1 = PathRef; - var Point_1 = Point; - var PointRef_1 = PointRef; - var Range_1 = Range; - var RangeRef_1 = RangeRef; - var Span_1 = Span; - var Text_1 = Text; - var Transforms_1 = Transforms; - var createEditor_1 = createEditor$1; - - - var dist$7 = /*#__PURE__*/Object.defineProperty({ - Editor: Editor_1, - Element: Element_1, - Location: Location_1, - Node: Node_1, - Operation: Operation_1, - Path: Path_1, - PathRef: PathRef_1, - Point: Point_1, - PointRef: PointRef_1, - Range: Range_1, - RangeRef: RangeRef_1, - Span: Span_1, - Text: Text_1, - Transforms: Transforms_1, - createEditor: createEditor_1 - }, '__esModule', {value: true}); - - /** - * lodash (Custom Build) - * Build: `lodash modularize exports="npm" -o ./` - * Copyright jQuery Foundation and other contributors - * Released under MIT license - * Based on Underscore.js 1.8.3 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */ - - /** Used as references for various `Number` constants. */ - var MAX_SAFE_INTEGER$1 = 9007199254740991; - - /** `Object#toString` result references. */ - var argsTag$1 = '[object Arguments]', - funcTag$1 = '[object Function]', - genTag$1 = '[object GeneratorFunction]', - mapTag = '[object Map]', - objectTag = '[object Object]', - promiseTag = '[object Promise]', - setTag = '[object Set]', - stringTag = '[object String]', - weakMapTag = '[object WeakMap]'; - - var dataViewTag = '[object DataView]'; - - /** - * Used to match `RegExp` - * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). - */ - var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; - - /** Used to detect host constructors (Safari). */ - var reIsHostCtor = /^\[object .+?Constructor\]$/; - - /** Used to detect unsigned integer values. */ - var reIsUint$1 = /^(?:0|[1-9]\d*)$/; - - /** Used to compose unicode character classes. */ - var rsAstralRange$1 = '\\ud800-\\udfff', - rsComboMarksRange$1 = '\\u0300-\\u036f\\ufe20-\\ufe23', - rsComboSymbolsRange$1 = '\\u20d0-\\u20f0', - rsVarRange$1 = '\\ufe0e\\ufe0f'; - - /** Used to compose unicode capture groups. */ - var rsAstral$1 = '[' + rsAstralRange$1 + ']', - rsCombo$1 = '[' + rsComboMarksRange$1 + rsComboSymbolsRange$1 + ']', - rsFitz$1 = '\\ud83c[\\udffb-\\udfff]', - rsModifier$1 = '(?:' + rsCombo$1 + '|' + rsFitz$1 + ')', - rsNonAstral$1 = '[^' + rsAstralRange$1 + ']', - rsRegional$1 = '(?:\\ud83c[\\udde6-\\uddff]){2}', - rsSurrPair$1 = '[\\ud800-\\udbff][\\udc00-\\udfff]', - rsZWJ$1 = '\\u200d'; - - /** Used to compose unicode regexes. */ - var reOptMod$1 = rsModifier$1 + '?', - rsOptVar$1 = '[' + rsVarRange$1 + ']?', - rsOptJoin$1 = '(?:' + rsZWJ$1 + '(?:' + [rsNonAstral$1, rsRegional$1, rsSurrPair$1].join('|') + ')' + rsOptVar$1 + reOptMod$1 + ')*', - rsSeq$1 = rsOptVar$1 + reOptMod$1 + rsOptJoin$1, - rsSymbol$1 = '(?:' + [rsNonAstral$1 + rsCombo$1 + '?', rsCombo$1, rsRegional$1, rsSurrPair$1, rsAstral$1].join('|') + ')'; - - /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ - var reUnicode$1 = RegExp(rsFitz$1 + '(?=' + rsFitz$1 + ')|' + rsSymbol$1 + rsSeq$1, 'g'); - - /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ - var reHasUnicode$1 = RegExp('[' + rsZWJ$1 + rsAstralRange$1 + rsComboMarksRange$1 + rsComboSymbolsRange$1 + rsVarRange$1 + ']'); - - /** Detect free variable `global` from Node.js. */ - var freeGlobal$3 = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal; - - /** Detect free variable `self`. */ - var freeSelf$3 = typeof self == 'object' && self && self.Object === Object && self; - - /** Used as a reference to the global object. */ - var root$3 = freeGlobal$3 || freeSelf$3 || Function('return this')(); - - /** - * A specialized version of `_.map` for arrays without support for iteratee - * shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - */ - function arrayMap(array, iteratee) { - var index = -1, - length = array ? array.length : 0, - result = Array(length); - - while (++index < length) { - result[index] = iteratee(array[index], index, array); - } - return result; - } - - /** - * Converts an ASCII `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ - function asciiToArray$1(string) { - return string.split(''); - } - - /** - * The base implementation of `_.times` without support for iteratee shorthands - * or max array length checks. - * - * @private - * @param {number} n The number of times to invoke `iteratee`. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the array of results. - */ - function baseTimes$1(n, iteratee) { - var index = -1, - result = Array(n); - - while (++index < n) { - result[index] = iteratee(index); - } - return result; - } - - /** - * The base implementation of `_.values` and `_.valuesIn` which creates an - * array of `object` property values corresponding to the property names - * of `props`. - * - * @private - * @param {Object} object The object to query. - * @param {Array} props The property names to get values for. - * @returns {Object} Returns the array of property values. - */ - function baseValues(object, props) { - return arrayMap(props, function(key) { - return object[key]; - }); - } - - /** - * Gets the value at `key` of `object`. - * - * @private - * @param {Object} [object] The object to query. - * @param {string} key The key of the property to get. - * @returns {*} Returns the property value. - */ - function getValue(object, key) { - return object == null ? undefined : object[key]; - } - - /** - * Checks if `string` contains Unicode symbols. - * - * @private - * @param {string} string The string to inspect. - * @returns {boolean} Returns `true` if a symbol is found, else `false`. - */ - function hasUnicode$1(string) { - return reHasUnicode$1.test(string); - } - - /** - * Checks if `value` is a host object in IE < 9. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a host object, else `false`. - */ - function isHostObject(value) { - // Many host objects are `Object` objects that can coerce to strings - // despite having improperly defined `toString` methods. - var result = false; - if (value != null && typeof value.toString != 'function') { - try { - result = !!(value + ''); - } catch (e) {} - } - return result; - } - - /** - * Converts `iterator` to an array. - * - * @private - * @param {Object} iterator The iterator to convert. - * @returns {Array} Returns the converted array. - */ - function iteratorToArray(iterator) { - var data, - result = []; - - while (!(data = iterator.next()).done) { - result.push(data.value); - } - return result; - } - - /** - * Converts `map` to its key-value pairs. - * - * @private - * @param {Object} map The map to convert. - * @returns {Array} Returns the key-value pairs. - */ - function mapToArray(map) { - var index = -1, - result = Array(map.size); - - map.forEach(function(value, key) { - result[++index] = [key, value]; - }); - return result; - } - - /** - * Creates a unary function that invokes `func` with its argument transformed. - * - * @private - * @param {Function} func The function to wrap. - * @param {Function} transform The argument transform. - * @returns {Function} Returns the new function. - */ - function overArg$1(func, transform) { - return function(arg) { - return func(transform(arg)); - }; - } - - /** - * Converts `set` to an array of its values. - * - * @private - * @param {Object} set The set to convert. - * @returns {Array} Returns the values. - */ - function setToArray(set) { - var index = -1, - result = Array(set.size); - - set.forEach(function(value) { - result[++index] = value; - }); - return result; - } - - /** - * Converts `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ - function stringToArray$1(string) { - return hasUnicode$1(string) - ? unicodeToArray$1(string) - : asciiToArray$1(string); - } - - /** - * Converts a Unicode `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ - function unicodeToArray$1(string) { - return string.match(reUnicode$1) || []; - } - - /** Used for built-in method references. */ - var funcProto = Function.prototype, - objectProto$4 = Object.prototype; - - /** Used to detect overreaching core-js shims. */ - var coreJsData = root$3['__core-js_shared__']; - - /** Used to detect methods masquerading as native. */ - var maskSrcKey = (function() { - var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); - return uid ? ('Symbol(src)_1.' + uid) : ''; - }()); - - /** Used to resolve the decompiled source of functions. */ - var funcToString = funcProto.toString; - - /** Used to check objects for own properties. */ - var hasOwnProperty$2 = objectProto$4.hasOwnProperty; - - /** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ - var objectToString$4 = objectProto$4.toString; - - /** Used to detect if a method is native. */ - var reIsNative = RegExp('^' + - funcToString.call(hasOwnProperty$2).replace(reRegExpChar, '\\$&') - .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' - ); - - /** Built-in value references. */ - var Symbol$2 = root$3.Symbol, - iteratorSymbol = Symbol$2 ? Symbol$2.iterator : undefined, - propertyIsEnumerable$1 = objectProto$4.propertyIsEnumerable; - - /* Built-in method references for those with the same name as other `lodash` methods. */ - var nativeKeys$1 = overArg$1(Object.keys, Object); - - /* Built-in method references that are verified to be native. */ - var DataView = getNative(root$3, 'DataView'), - Map$1 = getNative(root$3, 'Map'), - Promise$1 = getNative(root$3, 'Promise'), - Set$1 = getNative(root$3, 'Set'), - WeakMap$1 = getNative(root$3, 'WeakMap'); - - /** Used to detect maps, sets, and weakmaps. */ - var dataViewCtorString = toSource(DataView), - mapCtorString = toSource(Map$1), - promiseCtorString = toSource(Promise$1), - setCtorString = toSource(Set$1), - weakMapCtorString = toSource(WeakMap$1); - - /** - * Creates an array of the enumerable property names of the array-like `value`. - * - * @private - * @param {*} value The value to query. - * @param {boolean} inherited Specify returning inherited property names. - * @returns {Array} Returns the array of property names. - */ - function arrayLikeKeys$1(value, inherited) { - // Safari 8.1 makes `arguments.callee` enumerable in strict mode. - // Safari 9 makes `arguments.length` enumerable in strict mode. - var result = (isArray$1(value) || isArguments$1(value)) - ? baseTimes$1(value.length, String) - : []; - - var length = result.length, - skipIndexes = !!length; - - for (var key in value) { - if ((inherited || hasOwnProperty$2.call(value, key)) && - !(skipIndexes && (key == 'length' || isIndex$1(key, length)))) { - result.push(key); - } - } - return result; - } - - /** - * The base implementation of `getTag`. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ - function baseGetTag(value) { - return objectToString$4.call(value); - } - - /** - * The base implementation of `_.isNative` without bad shim checks. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a native function, - * else `false`. - */ - function baseIsNative(value) { - if (!isObject$3(value) || isMasked(value)) { - return false; - } - var pattern = (isFunction$1(value) || isHostObject(value)) ? reIsNative : reIsHostCtor; - return pattern.test(toSource(value)); - } - - /** - * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ - function baseKeys$1(object) { - if (!isPrototype$1(object)) { - return nativeKeys$1(object); - } - var result = []; - for (var key in Object(object)) { - if (hasOwnProperty$2.call(object, key) && key != 'constructor') { - result.push(key); - } - } - return result; - } - - /** - * Copies the values of `source` to `array`. - * - * @private - * @param {Array} source The array to copy values from. - * @param {Array} [array=[]] The array to copy values to. - * @returns {Array} Returns `array`. - */ - function copyArray(source, array) { - var index = -1, - length = source.length; - - array || (array = Array(length)); - while (++index < length) { - array[index] = source[index]; - } - return array; - } - - /** - * Gets the native function at `key` of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the method to get. - * @returns {*} Returns the function if it's native, else `undefined`. - */ - function getNative(object, key) { - var value = getValue(object, key); - return baseIsNative(value) ? value : undefined; - } - - /** - * Gets the `toStringTag` of `value`. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ - var getTag = baseGetTag; - - // Fallback for data views, maps, sets, and weak maps in IE 11, - // for data views in Edge < 14, and promises in Node.js. - if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || - (Map$1 && getTag(new Map$1) != mapTag) || - (Promise$1 && getTag(Promise$1.resolve()) != promiseTag) || - (Set$1 && getTag(new Set$1) != setTag) || - (WeakMap$1 && getTag(new WeakMap$1) != weakMapTag)) { - getTag = function(value) { - var result = objectToString$4.call(value), - Ctor = result == objectTag ? value.constructor : undefined, - ctorString = Ctor ? toSource(Ctor) : undefined; - - if (ctorString) { - switch (ctorString) { - case dataViewCtorString: return dataViewTag; - case mapCtorString: return mapTag; - case promiseCtorString: return promiseTag; - case setCtorString: return setTag; - case weakMapCtorString: return weakMapTag; - } - } - return result; - }; - } - - /** - * Checks if `value` is a valid array-like index. - * - * @private - * @param {*} value The value to check. - * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. - * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. - */ - function isIndex$1(value, length) { - length = length == null ? MAX_SAFE_INTEGER$1 : length; - return !!length && - (typeof value == 'number' || reIsUint$1.test(value)) && - (value > -1 && value % 1 == 0 && value < length); - } - - /** - * Checks if `func` has its source masked. - * - * @private - * @param {Function} func The function to check. - * @returns {boolean} Returns `true` if `func` is masked, else `false`. - */ - function isMasked(func) { - return !!maskSrcKey && (maskSrcKey in func); - } - - /** - * Checks if `value` is likely a prototype object. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. - */ - function isPrototype$1(value) { - var Ctor = value && value.constructor, - proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$4; - - return value === proto; - } - - /** - * Converts `func` to its source code. - * - * @private - * @param {Function} func The function to process. - * @returns {string} Returns the source code. - */ - function toSource(func) { - if (func != null) { - try { - return funcToString.call(func); - } catch (e) {} - try { - return (func + ''); - } catch (e) {} - } - return ''; - } - - /** - * Checks if `value` is likely an `arguments` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an `arguments` object, - * else `false`. - * @example - * - * _.isArguments(function() { return arguments; }()); - * // => true - * - * _.isArguments([1, 2, 3]); - * // => false - */ - function isArguments$1(value) { - // Safari 8.1 makes `arguments.callee` enumerable in strict mode. - return isArrayLikeObject$1(value) && hasOwnProperty$2.call(value, 'callee') && - (!propertyIsEnumerable$1.call(value, 'callee') || objectToString$4.call(value) == argsTag$1); - } - - /** - * Checks if `value` is classified as an `Array` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array, else `false`. - * @example - * - * _.isArray([1, 2, 3]); - * // => true - * - * _.isArray(document.body.children); - * // => false - * - * _.isArray('abc'); - * // => false - * - * _.isArray(_.noop); - * // => false - */ - var isArray$1 = Array.isArray; - - /** - * Checks if `value` is array-like. A value is considered array-like if it's - * not a function and has a `value.length` that's an integer greater than or - * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is array-like, else `false`. - * @example - * - * _.isArrayLike([1, 2, 3]); - * // => true - * - * _.isArrayLike(document.body.children); - * // => true - * - * _.isArrayLike('abc'); - * // => true - * - * _.isArrayLike(_.noop); - * // => false - */ - function isArrayLike$1(value) { - return value != null && isLength$1(value.length) && !isFunction$1(value); - } - - /** - * This method is like `_.isArrayLike` except that it also checks if `value` - * is an object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array-like object, - * else `false`. - * @example - * - * _.isArrayLikeObject([1, 2, 3]); - * // => true - * - * _.isArrayLikeObject(document.body.children); - * // => true - * - * _.isArrayLikeObject('abc'); - * // => false - * - * _.isArrayLikeObject(_.noop); - * // => false - */ - function isArrayLikeObject$1(value) { - return isObjectLike$4(value) && isArrayLike$1(value); - } - - /** - * Checks if `value` is classified as a `Function` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a function, else `false`. - * @example - * - * _.isFunction(_); - * // => true - * - * _.isFunction(/abc/); - * // => false - */ - function isFunction$1(value) { - // The use of `Object#toString` avoids issues with the `typeof` operator - // in Safari 8-9 which returns 'object' for typed array and other constructors. - var tag = isObject$3(value) ? objectToString$4.call(value) : ''; - return tag == funcTag$1 || tag == genTag$1; - } - - /** - * Checks if `value` is a valid array-like length. - * - * **Note:** This method is loosely based on - * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. - * @example - * - * _.isLength(3); - * // => true - * - * _.isLength(Number.MIN_VALUE); - * // => false - * - * _.isLength(Infinity); - * // => false - * - * _.isLength('3'); - * // => false - */ - function isLength$1(value) { - return typeof value == 'number' && - value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER$1; - } - - /** - * Checks if `value` is the - * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) - * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(_.noop); - * // => true - * - * _.isObject(null); - * // => false - */ - function isObject$3(value) { - var type = typeof value; - return !!value && (type == 'object' || type == 'function'); - } - - /** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ - function isObjectLike$4(value) { - return !!value && typeof value == 'object'; - } - - /** - * Checks if `value` is classified as a `String` primitive or object. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a string, else `false`. - * @example - * - * _.isString('abc'); - * // => true - * - * _.isString(1); - * // => false - */ - function isString(value) { - return typeof value == 'string' || - (!isArray$1(value) && isObjectLike$4(value) && objectToString$4.call(value) == stringTag); - } - - /** - * Converts `value` to an array. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Lang - * @param {*} value The value to convert. - * @returns {Array} Returns the converted array. - * @example - * - * _.toArray({ 'a': 1, 'b': 2 }); - * // => [1, 2] - * - * _.toArray('abc'); - * // => ['a', 'b', 'c'] - * - * _.toArray(1); - * // => [] - * - * _.toArray(null); - * // => [] - */ - function toArray(value) { - if (!value) { - return []; - } - if (isArrayLike$1(value)) { - return isString(value) ? stringToArray$1(value) : copyArray(value); - } - if (iteratorSymbol && value[iteratorSymbol]) { - return iteratorToArray(value[iteratorSymbol]()); - } - var tag = getTag(value), - func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values); - - return func(value); - } - - /** - * Creates an array of the own enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. See the - * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) - * for more details. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keys(new Foo); - * // => ['a', 'b'] (iteration order is not guaranteed) - * - * _.keys('hi'); - * // => ['0', '1'] - */ - function keys$1(object) { - return isArrayLike$1(object) ? arrayLikeKeys$1(object) : baseKeys$1(object); - } - - /** - * Creates an array of the own enumerable string keyed property values of `object`. - * - * **Note:** Non-object values are coerced to objects. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property values. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.values(new Foo); - * // => [1, 2] (iteration order is not guaranteed) - * - * _.values('hi'); - * // => ['h', 'i'] - */ - function values(object) { - return object ? baseValues(object, keys$1(object)) : []; - } - - var lodash_toarray = toArray; - - /** - * SSR Window 3.0.0 - * Better handling for window object in SSR environment - * https://github.com/nolimits4web/ssr-window - * - * Copyright 2020, Vladimir Kharlampidi - * - * Licensed under MIT - * - * Released on: November 9, 2020 - */ - - var ssrWindow_umd = createCommonjsModule$1(function (module, exports) { - (function (global, factory) { - factory(exports) ; - }(commonjsGlobal, (function (exports) { - /* eslint-disable no-param-reassign */ - function isObject(obj) { - return (obj !== null && - typeof obj === 'object' && - 'constructor' in obj && - obj.constructor === Object); - } - function extend(target, src) { - if (target === void 0) { target = {}; } - if (src === void 0) { src = {}; } - Object.keys(src).forEach(function (key) { - if (typeof target[key] === 'undefined') - target[key] = src[key]; - else if (isObject(src[key]) && - isObject(target[key]) && - Object.keys(src[key]).length > 0) { - extend(target[key], src[key]); - } - }); - } - - var ssrDocument = { - body: {}, - addEventListener: function () { }, - removeEventListener: function () { }, - activeElement: { - blur: function () { }, - nodeName: '', - }, - querySelector: function () { - return null; - }, - querySelectorAll: function () { - return []; - }, - getElementById: function () { - return null; - }, - createEvent: function () { - return { - initEvent: function () { }, - }; - }, - createElement: function () { - return { - children: [], - childNodes: [], - style: {}, - setAttribute: function () { }, - getElementsByTagName: function () { - return []; - }, - }; - }, - createElementNS: function () { - return {}; - }, - importNode: function () { - return null; - }, - location: { - hash: '', - host: '', - hostname: '', - href: '', - origin: '', - pathname: '', - protocol: '', - search: '', - }, - }; - function getDocument() { - var doc = typeof document !== 'undefined' ? document : {}; - extend(doc, ssrDocument); - return doc; - } - - var ssrWindow = { - document: ssrDocument, - navigator: { - userAgent: '', - }, - location: { - hash: '', - host: '', - hostname: '', - href: '', - origin: '', - pathname: '', - protocol: '', - search: '', - }, - history: { - replaceState: function () { }, - pushState: function () { }, - go: function () { }, - back: function () { }, - }, - CustomEvent: function CustomEvent() { - return this; - }, - addEventListener: function () { }, - removeEventListener: function () { }, - getComputedStyle: function () { - return { - getPropertyValue: function () { - return ''; - }, - }; - }, - Image: function () { }, - Date: function () { }, - screen: {}, - setTimeout: function () { }, - clearTimeout: function () { }, - matchMedia: function () { - return {}; - }, - requestAnimationFrame: function (callback) { - if (typeof setTimeout === 'undefined') { - callback(); - return null; - } - return setTimeout(callback, 0); - }, - cancelAnimationFrame: function (id) { - if (typeof setTimeout === 'undefined') { - return; - } - clearTimeout(id); - }, - }; - function getWindow() { - var win = typeof window !== 'undefined' ? window : {}; - extend(win, ssrWindow); - return win; - } - - exports.extend = extend; - exports.getDocument = getDocument; - exports.getWindow = getWindow; - exports.ssrDocument = ssrDocument; - exports.ssrWindow = ssrWindow; - - Object.defineProperty(exports, '__esModule', { value: true }); - - }))); - - }); - - /** - * Dom7 3.0.0 - * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API - * https://framework7.io/docs/dom7.html - * - * Copyright 2020, Vladimir Kharlampidi - * - * Licensed under MIT - * - * Released on: November 9, 2020 - */ - - - - - - function _inheritsLoose(subClass, superClass) { - subClass.prototype = Object.create(superClass.prototype); - subClass.prototype.constructor = subClass; - subClass.__proto__ = superClass; - } - - function _getPrototypeOf(o) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { - return o.__proto__ || Object.getPrototypeOf(o); - }; - return _getPrototypeOf(o); - } - - function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; - - return _setPrototypeOf(o, p); - } - - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) return false; - if (Reflect.construct.sham) return false; - if (typeof Proxy === "function") return true; - - try { - Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); - return true; - } catch (e) { - return false; - } - } - - function _construct(Parent, args, Class) { - if (_isNativeReflectConstruct()) { - _construct = Reflect.construct; - } else { - _construct = function _construct(Parent, args, Class) { - var a = [null]; - a.push.apply(a, args); - var Constructor = Function.bind.apply(Parent, a); - var instance = new Constructor(); - if (Class) _setPrototypeOf(instance, Class.prototype); - return instance; - }; - } - - return _construct.apply(null, arguments); - } - - function _isNativeFunction(fn) { - return Function.toString.call(fn).indexOf("[native code]") !== -1; - } - - function _wrapNativeSuper(Class) { - var _cache = typeof Map === "function" ? new Map() : undefined; - - _wrapNativeSuper = function _wrapNativeSuper(Class) { - if (Class === null || !_isNativeFunction(Class)) return Class; - - if (typeof Class !== "function") { - throw new TypeError("Super expression must either be null or a function"); - } - - if (typeof _cache !== "undefined") { - if (_cache.has(Class)) return _cache.get(Class); - - _cache.set(Class, Wrapper); - } - - function Wrapper() { - return _construct(Class, arguments, _getPrototypeOf(this).constructor); - } - - Wrapper.prototype = Object.create(Class.prototype, { - constructor: { - value: Wrapper, - enumerable: false, - writable: true, - configurable: true - } - }); - return _setPrototypeOf(Wrapper, Class); - }; - - return _wrapNativeSuper(Class); - } - - function _assertThisInitialized(self) { - if (self === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - - return self; - } - - /* eslint-disable no-proto */ - function makeReactive(obj) { - var proto = obj.__proto__; - Object.defineProperty(obj, '__proto__', { - get: function get() { - return proto; - }, - set: function set(value) { - proto.__proto__ = value; - } - }); - } - - var Dom7 = /*#__PURE__*/function (_Array) { - _inheritsLoose(Dom7, _Array); - - function Dom7(items) { - var _this; - - _this = _Array.call.apply(_Array, [this].concat(items)) || this; - makeReactive(_assertThisInitialized(_this)); - return _this; - } - - return Dom7; - }( /*#__PURE__*/_wrapNativeSuper(Array)); - - function arrayFlat(arr) { - if (arr === void 0) { - arr = []; - } - - var res = []; - arr.forEach(function (el) { - if (Array.isArray(el)) { - res.push.apply(res, arrayFlat(el)); - } else { - res.push(el); - } - }); - return res; - } - function arrayFilter(arr, callback) { - return Array.prototype.filter.call(arr, callback); - } - function arrayUnique(arr) { - var uniqueArray = []; - - for (var i = 0; i < arr.length; i += 1) { - if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]); - } - - return uniqueArray; - } - function toCamelCase(string) { - return string.toLowerCase().replace(/-(.)/g, function (match, group) { - return group.toUpperCase(); - }); - } - - function qsa(selector, context) { - if (typeof selector !== 'string') { - return [selector]; - } - - var a = []; - var res = context.querySelectorAll(selector); - - for (var i = 0; i < res.length; i += 1) { - a.push(res[i]); - } - - return a; - } - - function $(selector, context) { - var window = ssrWindow_umd.getWindow(); - var document = ssrWindow_umd.getDocument(); - var arr = []; - - if (!context && selector instanceof Dom7) { - return selector; - } - - if (!selector) { - return new Dom7(arr); - } - - if (typeof selector === 'string') { - var html = selector.trim(); - - if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) { - var toCreate = 'div'; - if (html.indexOf(' 0; - }).length > 0; - } - - function attr(attrs, value) { - if (arguments.length === 1 && typeof attrs === 'string') { - // Get attr - if (this[0]) return this[0].getAttribute(attrs); - return undefined; - } // Set attrs - - - for (var i = 0; i < this.length; i += 1) { - if (arguments.length === 2) { - // String - this[i].setAttribute(attrs, value); - } else { - // Object - for (var attrName in attrs) { - this[i][attrName] = attrs[attrName]; - this[i].setAttribute(attrName, attrs[attrName]); - } - } - } - - return this; - } - - function removeAttr(attr) { - for (var i = 0; i < this.length; i += 1) { - this[i].removeAttribute(attr); - } - - return this; - } - - function prop(props, value) { - if (arguments.length === 1 && typeof props === 'string') { - // Get prop - if (this[0]) return this[0][props]; - } else { - // Set props - for (var i = 0; i < this.length; i += 1) { - if (arguments.length === 2) { - // String - this[i][props] = value; - } else { - // Object - for (var propName in props) { - this[i][propName] = props[propName]; - } - } - } - - return this; - } - - return this; - } - - function data(key, value) { - var el; - - if (typeof value === 'undefined') { - el = this[0]; - if (!el) return undefined; // Get value - - if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) { - return el.dom7ElementDataStorage[key]; - } - - var dataKey = el.getAttribute("data-" + key); - - if (dataKey) { - return dataKey; - } - - return undefined; - } // Set value - - - for (var i = 0; i < this.length; i += 1) { - el = this[i]; - if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {}; - el.dom7ElementDataStorage[key] = value; - } - - return this; - } - - function removeData(key) { - for (var i = 0; i < this.length; i += 1) { - var el = this[i]; - - if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) { - el.dom7ElementDataStorage[key] = null; - delete el.dom7ElementDataStorage[key]; - } - } - } - - function dataset() { - var el = this[0]; - if (!el) return undefined; - var dataset = {}; // eslint-disable-line - - if (el.dataset) { - for (var dataKey in el.dataset) { - dataset[dataKey] = el.dataset[dataKey]; - } - } else { - for (var i = 0; i < el.attributes.length; i += 1) { - var _attr = el.attributes[i]; - - if (_attr.name.indexOf('data-') >= 0) { - dataset[toCamelCase(_attr.name.split('data-')[1])] = _attr.value; - } - } - } - - for (var key in dataset) { - if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1; - } - - return dataset; - } - - function val(value) { - if (typeof value === 'undefined') { - // get value - var el = this[0]; - if (!el) return undefined; - - if (el.multiple && el.nodeName.toLowerCase() === 'select') { - var values = []; - - for (var i = 0; i < el.selectedOptions.length; i += 1) { - values.push(el.selectedOptions[i].value); - } - - return values; - } - - return el.value; - } // set value - - - for (var _i = 0; _i < this.length; _i += 1) { - var _el = this[_i]; - - if (Array.isArray(value) && _el.multiple && _el.nodeName.toLowerCase() === 'select') { - for (var j = 0; j < _el.options.length; j += 1) { - _el.options[j].selected = value.indexOf(_el.options[j].value) >= 0; - } - } else { - _el.value = value; - } - } - - return this; - } - - function value(value) { - return this.val(value); - } - - function transform(transform) { - for (var i = 0; i < this.length; i += 1) { - this[i].style.transform = transform; - } - - return this; - } - - function transition(duration) { - for (var i = 0; i < this.length; i += 1) { - this[i].style.transitionDuration = typeof duration !== 'string' ? duration + "ms" : duration; - } - - return this; - } - - function on() { - for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { - args[_key5] = arguments[_key5]; - } - - var eventType = args[0], - targetSelector = args[1], - listener = args[2], - capture = args[3]; - - if (typeof args[1] === 'function') { - eventType = args[0]; - listener = args[1]; - capture = args[2]; - targetSelector = undefined; - } - - if (!capture) capture = false; - - function handleLiveEvent(e) { - var target = e.target; - if (!target) return; - var eventData = e.target.dom7EventData || []; - - if (eventData.indexOf(e) < 0) { - eventData.unshift(e); - } - - if ($(target).is(targetSelector)) listener.apply(target, eventData);else { - var _parents = $(target).parents(); // eslint-disable-line - - - for (var k = 0; k < _parents.length; k += 1) { - if ($(_parents[k]).is(targetSelector)) listener.apply(_parents[k], eventData); - } - } - } - - function handleEvent(e) { - var eventData = e && e.target ? e.target.dom7EventData || [] : []; - - if (eventData.indexOf(e) < 0) { - eventData.unshift(e); - } - - listener.apply(this, eventData); - } - - var events = eventType.split(' '); - var j; - - for (var i = 0; i < this.length; i += 1) { - var el = this[i]; - - if (!targetSelector) { - for (j = 0; j < events.length; j += 1) { - var event = events[j]; - if (!el.dom7Listeners) el.dom7Listeners = {}; - if (!el.dom7Listeners[event]) el.dom7Listeners[event] = []; - el.dom7Listeners[event].push({ - listener: listener, - proxyListener: handleEvent - }); - el.addEventListener(event, handleEvent, capture); - } - } else { - // Live events - for (j = 0; j < events.length; j += 1) { - var _event = events[j]; - if (!el.dom7LiveListeners) el.dom7LiveListeners = {}; - if (!el.dom7LiveListeners[_event]) el.dom7LiveListeners[_event] = []; - - el.dom7LiveListeners[_event].push({ - listener: listener, - proxyListener: handleLiveEvent - }); - - el.addEventListener(_event, handleLiveEvent, capture); - } - } - } - - return this; - } - - function off() { - for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) { - args[_key6] = arguments[_key6]; - } - - var eventType = args[0], - targetSelector = args[1], - listener = args[2], - capture = args[3]; - - if (typeof args[1] === 'function') { - eventType = args[0]; - listener = args[1]; - capture = args[2]; - targetSelector = undefined; - } - - if (!capture) capture = false; - var events = eventType.split(' '); - - for (var i = 0; i < events.length; i += 1) { - var event = events[i]; - - for (var j = 0; j < this.length; j += 1) { - var el = this[j]; - var handlers = void 0; - - if (!targetSelector && el.dom7Listeners) { - handlers = el.dom7Listeners[event]; - } else if (targetSelector && el.dom7LiveListeners) { - handlers = el.dom7LiveListeners[event]; - } - - if (handlers && handlers.length) { - for (var k = handlers.length - 1; k >= 0; k -= 1) { - var handler = handlers[k]; - - if (listener && handler.listener === listener) { - el.removeEventListener(event, handler.proxyListener, capture); - handlers.splice(k, 1); - } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) { - el.removeEventListener(event, handler.proxyListener, capture); - handlers.splice(k, 1); - } else if (!listener) { - el.removeEventListener(event, handler.proxyListener, capture); - handlers.splice(k, 1); - } - } - } - } - } - - return this; - } - - function once() { - var dom = this; - - for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) { - args[_key7] = arguments[_key7]; - } - - var eventName = args[0], - targetSelector = args[1], - listener = args[2], - capture = args[3]; - - if (typeof args[1] === 'function') { - eventName = args[0]; - listener = args[1]; - capture = args[2]; - targetSelector = undefined; - } - - function onceHandler() { - for (var _len8 = arguments.length, eventArgs = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) { - eventArgs[_key8] = arguments[_key8]; - } - - listener.apply(this, eventArgs); - dom.off(eventName, targetSelector, onceHandler, capture); - - if (onceHandler.dom7proxy) { - delete onceHandler.dom7proxy; - } - } - - onceHandler.dom7proxy = listener; - return dom.on(eventName, targetSelector, onceHandler, capture); - } - - function trigger() { - var window = ssrWindow_umd.getWindow(); - - for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) { - args[_key9] = arguments[_key9]; - } - - var events = args[0].split(' '); - var eventData = args[1]; - - for (var i = 0; i < events.length; i += 1) { - var event = events[i]; - - for (var j = 0; j < this.length; j += 1) { - var el = this[j]; - - if (window.CustomEvent) { - var evt = new window.CustomEvent(event, { - detail: eventData, - bubbles: true, - cancelable: true - }); - el.dom7EventData = args.filter(function (data, dataIndex) { - return dataIndex > 0; - }); - el.dispatchEvent(evt); - el.dom7EventData = []; - delete el.dom7EventData; - } - } - } - - return this; - } - - function transitionEnd(callback) { - var dom = this; - - function fireCallBack(e) { - if (e.target !== this) return; - callback.call(this, e); - dom.off('transitionend', fireCallBack); - } - - if (callback) { - dom.on('transitionend', fireCallBack); - } - - return this; - } - - function animationEnd(callback) { - var dom = this; - - function fireCallBack(e) { - if (e.target !== this) return; - callback.call(this, e); - dom.off('animationend', fireCallBack); - } - - if (callback) { - dom.on('animationend', fireCallBack); - } - - return this; - } - - function width() { - var window = ssrWindow_umd.getWindow(); - - if (this[0] === window) { - return window.innerWidth; - } - - if (this.length > 0) { - return parseFloat(this.css('width')); - } - - return null; - } - - function outerWidth(includeMargins) { - if (this.length > 0) { - if (includeMargins) { - var _styles = this.styles(); - - return this[0].offsetWidth + parseFloat(_styles.getPropertyValue('margin-right')) + parseFloat(_styles.getPropertyValue('margin-left')); - } - - return this[0].offsetWidth; - } - - return null; - } - - function height() { - var window = ssrWindow_umd.getWindow(); - - if (this[0] === window) { - return window.innerHeight; - } - - if (this.length > 0) { - return parseFloat(this.css('height')); - } - - return null; - } - - function outerHeight(includeMargins) { - if (this.length > 0) { - if (includeMargins) { - var _styles2 = this.styles(); - - return this[0].offsetHeight + parseFloat(_styles2.getPropertyValue('margin-top')) + parseFloat(_styles2.getPropertyValue('margin-bottom')); - } - - return this[0].offsetHeight; - } - - return null; - } - - function offset() { - if (this.length > 0) { - var window = ssrWindow_umd.getWindow(); - var document = ssrWindow_umd.getDocument(); - var el = this[0]; - var box = el.getBoundingClientRect(); - var body = document.body; - var clientTop = el.clientTop || body.clientTop || 0; - var clientLeft = el.clientLeft || body.clientLeft || 0; - var scrollTop = el === window ? window.scrollY : el.scrollTop; - var scrollLeft = el === window ? window.scrollX : el.scrollLeft; - return { - top: box.top + scrollTop - clientTop, - left: box.left + scrollLeft - clientLeft - }; - } - - return null; - } - - function hide() { - for (var i = 0; i < this.length; i += 1) { - this[i].style.display = 'none'; - } - - return this; - } - - function show() { - var window = ssrWindow_umd.getWindow(); - - for (var i = 0; i < this.length; i += 1) { - var el = this[i]; - - if (el.style.display === 'none') { - el.style.display = ''; - } - - if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') { - // Still not visible - el.style.display = 'block'; - } - } - - return this; - } - - function styles() { - var window = ssrWindow_umd.getWindow(); - if (this[0]) return window.getComputedStyle(this[0], null); - return {}; - } - - function css(props, value) { - var window = ssrWindow_umd.getWindow(); - var i; - - if (arguments.length === 1) { - if (typeof props === 'string') { - // .css('width') - if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props); - } else { - // .css({ width: '100px' }) - for (i = 0; i < this.length; i += 1) { - for (var _prop in props) { - this[i].style[_prop] = props[_prop]; - } - } - - return this; - } - } - - if (arguments.length === 2 && typeof props === 'string') { - // .css('width', '100px') - for (i = 0; i < this.length; i += 1) { - this[i].style[props] = value; - } - - return this; - } - - return this; - } - - function each(callback) { - if (!callback) return this; - this.forEach(function (el, index) { - callback.apply(el, [el, index]); - }); - return this; - } - - function filter(callback) { - var result = arrayFilter(this, callback); - return $(result); - } - - function html(html) { - if (typeof html === 'undefined') { - return this[0] ? this[0].innerHTML : null; - } - - for (var i = 0; i < this.length; i += 1) { - this[i].innerHTML = html; - } - - return this; - } - - function text(text) { - if (typeof text === 'undefined') { - return this[0] ? this[0].textContent.trim() : null; - } - - for (var i = 0; i < this.length; i += 1) { - this[i].textContent = text; - } - - return this; - } - - function is(selector) { - var window = ssrWindow_umd.getWindow(); - var document = ssrWindow_umd.getDocument(); - var el = this[0]; - var compareWith; - var i; - if (!el || typeof selector === 'undefined') return false; - - if (typeof selector === 'string') { - if (el.matches) return el.matches(selector); - if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector); - if (el.msMatchesSelector) return el.msMatchesSelector(selector); - compareWith = $(selector); - - for (i = 0; i < compareWith.length; i += 1) { - if (compareWith[i] === el) return true; - } - - return false; - } - - if (selector === document) { - return el === document; - } - - if (selector === window) { - return el === window; - } - - if (selector.nodeType || selector instanceof Dom7) { - compareWith = selector.nodeType ? [selector] : selector; - - for (i = 0; i < compareWith.length; i += 1) { - if (compareWith[i] === el) return true; - } - - return false; - } - - return false; - } - - function index$1() { - var child = this[0]; - var i; - - if (child) { - i = 0; // eslint-disable-next-line - - while ((child = child.previousSibling) !== null) { - if (child.nodeType === 1) i += 1; - } - - return i; - } - - return undefined; - } - - function eq(index) { - if (typeof index === 'undefined') return this; - var length = this.length; - - if (index > length - 1) { - return $([]); - } - - if (index < 0) { - var returnIndex = length + index; - if (returnIndex < 0) return $([]); - return $([this[returnIndex]]); - } - - return $([this[index]]); - } - - function append() { - var newChild; - var document = ssrWindow_umd.getDocument(); - - for (var k = 0; k < arguments.length; k += 1) { - newChild = k < 0 || arguments.length <= k ? undefined : arguments[k]; - - for (var i = 0; i < this.length; i += 1) { - if (typeof newChild === 'string') { - var tempDiv = document.createElement('div'); - tempDiv.innerHTML = newChild; - - while (tempDiv.firstChild) { - this[i].appendChild(tempDiv.firstChild); - } - } else if (newChild instanceof Dom7) { - for (var j = 0; j < newChild.length; j += 1) { - this[i].appendChild(newChild[j]); - } - } else { - this[i].appendChild(newChild); - } - } - } - - return this; - } - - function appendTo(parent) { - $(parent).append(this); - return this; - } - - function prepend(newChild) { - var document = ssrWindow_umd.getDocument(); - var i; - var j; - - for (i = 0; i < this.length; i += 1) { - if (typeof newChild === 'string') { - var tempDiv = document.createElement('div'); - tempDiv.innerHTML = newChild; - - for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) { - this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]); - } - } else if (newChild instanceof Dom7) { - for (j = 0; j < newChild.length; j += 1) { - this[i].insertBefore(newChild[j], this[i].childNodes[0]); - } - } else { - this[i].insertBefore(newChild, this[i].childNodes[0]); - } - } - - return this; - } - - function prependTo(parent) { - $(parent).prepend(this); - return this; - } - - function insertBefore(selector) { - var before = $(selector); - - for (var i = 0; i < this.length; i += 1) { - if (before.length === 1) { - before[0].parentNode.insertBefore(this[i], before[0]); - } else if (before.length > 1) { - for (var j = 0; j < before.length; j += 1) { - before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]); - } - } - } - } - - function insertAfter(selector) { - var after = $(selector); - - for (var i = 0; i < this.length; i += 1) { - if (after.length === 1) { - after[0].parentNode.insertBefore(this[i], after[0].nextSibling); - } else if (after.length > 1) { - for (var j = 0; j < after.length; j += 1) { - after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling); - } - } - } - } - - function next(selector) { - if (this.length > 0) { - if (selector) { - if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) { - return $([this[0].nextElementSibling]); - } - - return $([]); - } - - if (this[0].nextElementSibling) return $([this[0].nextElementSibling]); - return $([]); - } - - return $([]); - } - - function nextAll(selector) { - var nextEls = []; - var el = this[0]; - if (!el) return $([]); - - while (el.nextElementSibling) { - var _next = el.nextElementSibling; // eslint-disable-line - - if (selector) { - if ($(_next).is(selector)) nextEls.push(_next); - } else nextEls.push(_next); - - el = _next; - } - - return $(nextEls); - } - - function prev(selector) { - if (this.length > 0) { - var el = this[0]; - - if (selector) { - if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) { - return $([el.previousElementSibling]); - } - - return $([]); - } - - if (el.previousElementSibling) return $([el.previousElementSibling]); - return $([]); - } - - return $([]); - } - - function prevAll(selector) { - var prevEls = []; - var el = this[0]; - if (!el) return $([]); - - while (el.previousElementSibling) { - var _prev = el.previousElementSibling; // eslint-disable-line - - if (selector) { - if ($(_prev).is(selector)) prevEls.push(_prev); - } else prevEls.push(_prev); - - el = _prev; - } - - return $(prevEls); - } - - function siblings(selector) { - return this.nextAll(selector).add(this.prevAll(selector)); - } - - function parent(selector) { - var parents = []; // eslint-disable-line - - for (var i = 0; i < this.length; i += 1) { - if (this[i].parentNode !== null) { - if (selector) { - if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode); - } else { - parents.push(this[i].parentNode); - } - } - } - - return $(parents); - } - - function parents(selector) { - var parents = []; // eslint-disable-line - - for (var i = 0; i < this.length; i += 1) { - var _parent = this[i].parentNode; // eslint-disable-line - - while (_parent) { - if (selector) { - if ($(_parent).is(selector)) parents.push(_parent); - } else { - parents.push(_parent); - } - - _parent = _parent.parentNode; - } - } - - return $(parents); - } - - function closest(selector) { - var closest = this; // eslint-disable-line - - if (typeof selector === 'undefined') { - return $([]); - } - - if (!closest.is(selector)) { - closest = closest.parents(selector).eq(0); - } - - return closest; - } - - function find(selector) { - var foundElements = []; - - for (var i = 0; i < this.length; i += 1) { - var found = this[i].querySelectorAll(selector); - - for (var j = 0; j < found.length; j += 1) { - foundElements.push(found[j]); - } - } - - return $(foundElements); - } - - function children(selector) { - var children = []; // eslint-disable-line - - for (var i = 0; i < this.length; i += 1) { - var childNodes = this[i].children; - - for (var j = 0; j < childNodes.length; j += 1) { - if (!selector || $(childNodes[j]).is(selector)) { - children.push(childNodes[j]); - } - } - } - - return $(children); - } - - function remove() { - for (var i = 0; i < this.length; i += 1) { - if (this[i].parentNode) this[i].parentNode.removeChild(this[i]); - } - - return this; - } - - function detach() { - return this.remove(); - } - - function add() { - var dom = this; - var i; - var j; - - for (var _len10 = arguments.length, els = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) { - els[_key10] = arguments[_key10]; - } - - for (i = 0; i < els.length; i += 1) { - var toAdd = $(els[i]); - - for (j = 0; j < toAdd.length; j += 1) { - dom.push(toAdd[j]); - } - } - - return dom; - } - - function empty() { - for (var i = 0; i < this.length; i += 1) { - var el = this[i]; - - if (el.nodeType === 1) { - for (var j = 0; j < el.childNodes.length; j += 1) { - if (el.childNodes[j].parentNode) { - el.childNodes[j].parentNode.removeChild(el.childNodes[j]); - } - } - - el.textContent = ''; - } - } - - return this; - } - - function scrollTo() { - var window = ssrWindow_umd.getWindow(); - - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - var left = args[0], - top = args[1], - duration = args[2], - easing = args[3], - callback = args[4]; - - if (args.length === 4 && typeof easing === 'function') { - callback = easing; - left = args[0]; - top = args[1]; - duration = args[2]; - callback = args[3]; - easing = args[4]; - } - - if (typeof easing === 'undefined') easing = 'swing'; - return this.each(function animate() { - var el = this; - var currentTop; - var currentLeft; - var maxTop; - var maxLeft; - var newTop; - var newLeft; - var scrollTop; // eslint-disable-line - - var scrollLeft; // eslint-disable-line - - var animateTop = top > 0 || top === 0; - var animateLeft = left > 0 || left === 0; - - if (typeof easing === 'undefined') { - easing = 'swing'; - } - - if (animateTop) { - currentTop = el.scrollTop; - - if (!duration) { - el.scrollTop = top; - } - } - - if (animateLeft) { - currentLeft = el.scrollLeft; - - if (!duration) { - el.scrollLeft = left; - } - } - - if (!duration) return; - - if (animateTop) { - maxTop = el.scrollHeight - el.offsetHeight; - newTop = Math.max(Math.min(top, maxTop), 0); - } - - if (animateLeft) { - maxLeft = el.scrollWidth - el.offsetWidth; - newLeft = Math.max(Math.min(left, maxLeft), 0); - } - - var startTime = null; - if (animateTop && newTop === currentTop) animateTop = false; - if (animateLeft && newLeft === currentLeft) animateLeft = false; - - function render(time) { - if (time === void 0) { - time = new Date().getTime(); - } - - if (startTime === null) { - startTime = time; - } - - var progress = Math.max(Math.min((time - startTime) / duration, 1), 0); - var easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2; - var done; - if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop); - if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft); - - if (animateTop && newTop > currentTop && scrollTop >= newTop) { - el.scrollTop = newTop; - done = true; - } - - if (animateTop && newTop < currentTop && scrollTop <= newTop) { - el.scrollTop = newTop; - done = true; - } - - if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) { - el.scrollLeft = newLeft; - done = true; - } - - if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) { - el.scrollLeft = newLeft; - done = true; - } - - if (done) { - if (callback) callback(); - return; - } - - if (animateTop) el.scrollTop = scrollTop; - if (animateLeft) el.scrollLeft = scrollLeft; - window.requestAnimationFrame(render); - } - - window.requestAnimationFrame(render); - }); - } // scrollTop(top, duration, easing, callback) { - - - function scrollTop() { - for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; - } - - var top = args[0], - duration = args[1], - easing = args[2], - callback = args[3]; - - if (args.length === 3 && typeof easing === 'function') { - top = args[0]; - duration = args[1]; - callback = args[2]; - easing = args[3]; - } - - var dom = this; - - if (typeof top === 'undefined') { - if (dom.length > 0) return dom[0].scrollTop; - return null; - } - - return dom.scrollTo(undefined, top, duration, easing, callback); - } - - function scrollLeft() { - for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { - args[_key3] = arguments[_key3]; - } - - var left = args[0], - duration = args[1], - easing = args[2], - callback = args[3]; - - if (args.length === 3 && typeof easing === 'function') { - left = args[0]; - duration = args[1]; - callback = args[2]; - easing = args[3]; - } - - var dom = this; - - if (typeof left === 'undefined') { - if (dom.length > 0) return dom[0].scrollLeft; - return null; - } - - return dom.scrollTo(left, undefined, duration, easing, callback); - } - - function animate(initialProps, initialParams) { - var window = ssrWindow_umd.getWindow(); - var els = this; - var a = { - props: Object.assign({}, initialProps), - params: Object.assign({ - duration: 300, - easing: 'swing' // or 'linear' - - /* Callbacks - begin(elements) - complete(elements) - progress(elements, complete, remaining, start, tweenValue) - */ - - }, initialParams), - elements: els, - animating: false, - que: [], - easingProgress: function easingProgress(easing, progress) { - if (easing === 'swing') { - return 0.5 - Math.cos(progress * Math.PI) / 2; - } - - if (typeof easing === 'function') { - return easing(progress); - } - - return progress; - }, - stop: function stop() { - if (a.frameId) { - window.cancelAnimationFrame(a.frameId); - } - - a.animating = false; - a.elements.each(function (el) { - var element = el; - delete element.dom7AnimateInstance; - }); - a.que = []; - }, - done: function done(complete) { - a.animating = false; - a.elements.each(function (el) { - var element = el; - delete element.dom7AnimateInstance; - }); - if (complete) complete(els); - - if (a.que.length > 0) { - var que = a.que.shift(); - a.animate(que[0], que[1]); - } - }, - animate: function animate(props, params) { - if (a.animating) { - a.que.push([props, params]); - return a; - } - - var elements = []; // Define & Cache Initials & Units - - a.elements.each(function (el, index) { - var initialFullValue; - var initialValue; - var unit; - var finalValue; - var finalFullValue; - if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a; - elements[index] = { - container: el - }; - Object.keys(props).forEach(function (prop) { - initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.'); - initialValue = parseFloat(initialFullValue); - unit = initialFullValue.replace(initialValue, ''); - finalValue = parseFloat(props[prop]); - finalFullValue = props[prop] + unit; - elements[index][prop] = { - initialFullValue: initialFullValue, - initialValue: initialValue, - unit: unit, - finalValue: finalValue, - finalFullValue: finalFullValue, - currentValue: initialValue - }; - }); - }); - var startTime = null; - var time; - var elementsDone = 0; - var propsDone = 0; - var done; - var began = false; - a.animating = true; - - function render() { - time = new Date().getTime(); - var progress; - var easeProgress; // let el; - - if (!began) { - began = true; - if (params.begin) params.begin(els); - } - - if (startTime === null) { - startTime = time; - } - - if (params.progress) { - // eslint-disable-next-line - params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime); - } - - elements.forEach(function (element) { - var el = element; - if (done || el.done) return; - Object.keys(props).forEach(function (prop) { - if (done || el.done) return; - progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0); - easeProgress = a.easingProgress(params.easing, progress); - var _el$prop = el[prop], - initialValue = _el$prop.initialValue, - finalValue = _el$prop.finalValue, - unit = _el$prop.unit; - el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue); - var currentValue = el[prop].currentValue; - - if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) { - el.container.style[prop] = finalValue + unit; - propsDone += 1; - - if (propsDone === Object.keys(props).length) { - el.done = true; - elementsDone += 1; - } - - if (elementsDone === elements.length) { - done = true; - } - } - - if (done) { - a.done(params.complete); - return; - } - - el.container.style[prop] = currentValue + unit; - }); - }); - if (done) return; // Then call - - a.frameId = window.requestAnimationFrame(render); - } - - a.frameId = window.requestAnimationFrame(render); - return a; - } - }; - - if (a.elements.length === 0) { - return els; - } - - var animateInstance; - - for (var i = 0; i < a.elements.length; i += 1) { - if (a.elements[i].dom7AnimateInstance) { - animateInstance = a.elements[i].dom7AnimateInstance; - } else a.elements[i].dom7AnimateInstance = a; - } - - if (!animateInstance) { - animateInstance = a; - } - - if (initialProps === 'stop') { - animateInstance.stop(); - } else { - animateInstance.animate(a.props, a.params); - } - - return els; - } - - function stop() { - var els = this; - - for (var i = 0; i < els.length; i += 1) { - if (els[i].dom7AnimateInstance) { - els[i].dom7AnimateInstance.stop(); - } - } - } - - var noTrigger = 'resize scroll'.split(' '); - - function shortcut(name) { - function eventHandler() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - if (typeof args[0] === 'undefined') { - for (var i = 0; i < this.length; i += 1) { - if (noTrigger.indexOf(name) < 0) { - if (name in this[i]) this[i][name]();else { - $(this[i]).trigger(name); - } - } - } - - return this; - } - - return this.on.apply(this, [name].concat(args)); - } - - return eventHandler; - } - - var click = shortcut('click'); - var blur = shortcut('blur'); - var focus = shortcut('focus'); - var focusin = shortcut('focusin'); - var focusout = shortcut('focusout'); - var keyup = shortcut('keyup'); - var keydown = shortcut('keydown'); - var keypress = shortcut('keypress'); - var submit = shortcut('submit'); - var change = shortcut('change'); - var mousedown = shortcut('mousedown'); - var mousemove = shortcut('mousemove'); - var mouseup = shortcut('mouseup'); - var mouseenter = shortcut('mouseenter'); - var mouseleave = shortcut('mouseleave'); - var mouseout = shortcut('mouseout'); - var mouseover = shortcut('mouseover'); - var touchstart = shortcut('touchstart'); - var touchend = shortcut('touchend'); - var touchmove = shortcut('touchmove'); - var resize = shortcut('resize'); - var scroll = shortcut('scroll'); - - var $_1 = $; - var add_1 = add; - var addClass_1 = addClass; - var animate_1 = animate; - var animationEnd_1 = animationEnd; - var append_1 = append; - var appendTo_1 = appendTo; - var attr_1 = attr; - var blur_1 = blur; - var change_1 = change; - var children_1 = children; - var click_1 = click; - var closest_1 = closest; - var css_1 = css; - var data_1 = data; - var dataset_1 = dataset; - var _default$1 = $; - var detach_1 = detach; - var each_1 = each; - var empty_1 = empty; - var eq_1 = eq; - var filter_1 = filter; - var find_1 = find; - var focus_1 = focus; - var focusin_1 = focusin; - var focusout_1 = focusout; - var hasClass_1 = hasClass; - var height_1 = height; - var hide_1 = hide; - var html_1 = html; - var index_1 = index$1; - var insertAfter_1 = insertAfter; - var insertBefore_1 = insertBefore; - var is_1 = is; - var keydown_1 = keydown; - var keypress_1 = keypress; - var keyup_1 = keyup; - var mousedown_1 = mousedown; - var mouseenter_1 = mouseenter; - var mouseleave_1 = mouseleave; - var mousemove_1 = mousemove; - var mouseout_1 = mouseout; - var mouseover_1 = mouseover; - var mouseup_1 = mouseup; - var next_1 = next; - var nextAll_1 = nextAll; - var off_1 = off; - var offset_1 = offset; - var on_1 = on; - var once_1 = once; - var outerHeight_1 = outerHeight; - var outerWidth_1 = outerWidth; - var parent_1 = parent; - var parents_1 = parents; - var prepend_1 = prepend; - var prependTo_1 = prependTo; - var prev_1 = prev; - var prevAll_1 = prevAll; - var prop_1 = prop; - var remove_1 = remove; - var removeAttr_1 = removeAttr; - var removeClass_1 = removeClass; - var removeData_1 = removeData; - var resize_1 = resize; - var scroll_1 = scroll; - var scrollLeft_1 = scrollLeft; - var scrollTo_1 = scrollTo; - var scrollTop_1 = scrollTop; - var show_1 = show; - var siblings_1 = siblings; - var stop_1 = stop; - var styles_1 = styles; - var submit_1 = submit; - var text_1 = text; - var toggleClass_1 = toggleClass; - var touchend_1 = touchend; - var touchmove_1 = touchmove; - var touchstart_1 = touchstart; - var transform_1 = transform; - var transition_1 = transition; - var transitionEnd_1 = transitionEnd; - var trigger_1 = trigger; - var val_1 = val; - var value_1 = value; - var width_1 = width; - - var dom7_cjs = /*#__PURE__*/Object.defineProperty({ - $: $_1, - add: add_1, - addClass: addClass_1, - animate: animate_1, - animationEnd: animationEnd_1, - append: append_1, - appendTo: appendTo_1, - attr: attr_1, - blur: blur_1, - change: change_1, - children: children_1, - click: click_1, - closest: closest_1, - css: css_1, - data: data_1, - dataset: dataset_1, - default: _default$1, - detach: detach_1, - each: each_1, - empty: empty_1, - eq: eq_1, - filter: filter_1, - find: find_1, - focus: focus_1, - focusin: focusin_1, - focusout: focusout_1, - hasClass: hasClass_1, - height: height_1, - hide: hide_1, - html: html_1, - index: index_1, - insertAfter: insertAfter_1, - insertBefore: insertBefore_1, - is: is_1, - keydown: keydown_1, - keypress: keypress_1, - keyup: keyup_1, - mousedown: mousedown_1, - mouseenter: mouseenter_1, - mouseleave: mouseleave_1, - mousemove: mousemove_1, - mouseout: mouseout_1, - mouseover: mouseover_1, - mouseup: mouseup_1, - next: next_1, - nextAll: nextAll_1, - off: off_1, - offset: offset_1, - on: on_1, - once: once_1, - outerHeight: outerHeight_1, - outerWidth: outerWidth_1, - parent: parent_1, - parents: parents_1, - prepend: prepend_1, - prependTo: prependTo_1, - prev: prev_1, - prevAll: prevAll_1, - prop: prop_1, - remove: remove_1, - removeAttr: removeAttr_1, - removeClass: removeClass_1, - removeData: removeData_1, - resize: resize_1, - scroll: scroll_1, - scrollLeft: scrollLeft_1, - scrollTo: scrollTo_1, - scrollTop: scrollTop_1, - show: show_1, - siblings: siblings_1, - stop: stop_1, - styles: styles_1, - submit: submit_1, - text: text_1, - toggleClass: toggleClass_1, - touchend: touchend_1, - touchmove: touchmove_1, - touchstart: touchstart_1, - transform: transform_1, - transition: transition_1, - transitionEnd: transitionEnd_1, - trigger: trigger_1, - val: val_1, - value: value_1, - width: width_1 - }, '__esModule', {value: true}); - - /** - * lodash (Custom Build) - * Build: `lodash modularize exports="npm" -o ./` - * Copyright jQuery Foundation and other contributors - * Released under MIT license - * Based on Underscore.js 1.8.3 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */ - /** Used as references for various `Number` constants. */ - var MAX_SAFE_INTEGER = 9007199254740991; - - /** `Object#toString` result references. */ - var argsTag = '[object Arguments]', - funcTag = '[object Function]', - genTag = '[object GeneratorFunction]'; - - /** Used to detect unsigned integer values. */ - var reIsUint = /^(?:0|[1-9]\d*)$/; - - /** - * A specialized version of `_.forEach` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns `array`. - */ - function arrayEach(array, iteratee) { - var index = -1, - length = array ? array.length : 0; - - while (++index < length) { - if (iteratee(array[index], index, array) === false) { - break; - } - } - return array; - } - - /** - * The base implementation of `_.times` without support for iteratee shorthands - * or max array length checks. - * - * @private - * @param {number} n The number of times to invoke `iteratee`. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the array of results. - */ - function baseTimes(n, iteratee) { - var index = -1, - result = Array(n); - - while (++index < n) { - result[index] = iteratee(index); - } - return result; - } - - /** - * Creates a unary function that invokes `func` with its argument transformed. - * - * @private - * @param {Function} func The function to wrap. - * @param {Function} transform The argument transform. - * @returns {Function} Returns the new function. - */ - function overArg(func, transform) { - return function(arg) { - return func(transform(arg)); - }; - } - - /** Used for built-in method references. */ - var objectProto$3 = Object.prototype; - - /** Used to check objects for own properties. */ - var hasOwnProperty$1 = objectProto$3.hasOwnProperty; - - /** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ - var objectToString$3 = objectProto$3.toString; - - /** Built-in value references. */ - var propertyIsEnumerable = objectProto$3.propertyIsEnumerable; - - /* Built-in method references for those with the same name as other `lodash` methods. */ - var nativeKeys = overArg(Object.keys, Object); - - /** - * Creates an array of the enumerable property names of the array-like `value`. - * - * @private - * @param {*} value The value to query. - * @param {boolean} inherited Specify returning inherited property names. - * @returns {Array} Returns the array of property names. - */ - function arrayLikeKeys(value, inherited) { - // Safari 8.1 makes `arguments.callee` enumerable in strict mode. - // Safari 9 makes `arguments.length` enumerable in strict mode. - var result = (isArray(value) || isArguments(value)) - ? baseTimes(value.length, String) - : []; - - var length = result.length, - skipIndexes = !!length; - - for (var key in value) { - if ((inherited || hasOwnProperty$1.call(value, key)) && - !(skipIndexes && (key == 'length' || isIndex(key, length)))) { - result.push(key); - } - } - return result; - } - - /** - * The base implementation of `_.forEach` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - */ - var baseEach = createBaseEach(baseForOwn); - - /** - * The base implementation of `baseForOwn` which iterates over `object` - * properties returned by `keysFunc` and invokes `iteratee` for each property. - * Iteratee functions may exit iteration early by explicitly returning `false`. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {Function} keysFunc The function to get the keys of `object`. - * @returns {Object} Returns `object`. - */ - var baseFor = createBaseFor(); - - /** - * The base implementation of `_.forOwn` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Object} Returns `object`. - */ - function baseForOwn(object, iteratee) { - return object && baseFor(object, iteratee, keys); - } - - /** - * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ - function baseKeys(object) { - if (!isPrototype(object)) { - return nativeKeys(object); - } - var result = []; - for (var key in Object(object)) { - if (hasOwnProperty$1.call(object, key) && key != 'constructor') { - result.push(key); - } - } - return result; - } - - /** - * Creates a `baseEach` or `baseEachRight` function. - * - * @private - * @param {Function} eachFunc The function to iterate over a collection. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new base function. - */ - function createBaseEach(eachFunc, fromRight) { - return function(collection, iteratee) { - if (collection == null) { - return collection; - } - if (!isArrayLike(collection)) { - return eachFunc(collection, iteratee); - } - var length = collection.length, - index = fromRight ? length : -1, - iterable = Object(collection); - - while ((fromRight ? index-- : ++index < length)) { - if (iteratee(iterable[index], index, iterable) === false) { - break; - } - } - return collection; - }; - } - - /** - * Creates a base function for methods like `_.forIn` and `_.forOwn`. - * - * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new base function. - */ - function createBaseFor(fromRight) { - return function(object, iteratee, keysFunc) { - var index = -1, - iterable = Object(object), - props = keysFunc(object), - length = props.length; - - while (length--) { - var key = props[fromRight ? length : ++index]; - if (iteratee(iterable[key], key, iterable) === false) { - break; - } - } - return object; - }; - } - - /** - * Checks if `value` is a valid array-like index. - * - * @private - * @param {*} value The value to check. - * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. - * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. - */ - function isIndex(value, length) { - length = length == null ? MAX_SAFE_INTEGER : length; - return !!length && - (typeof value == 'number' || reIsUint.test(value)) && - (value > -1 && value % 1 == 0 && value < length); - } - - /** - * Checks if `value` is likely a prototype object. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. - */ - function isPrototype(value) { - var Ctor = value && value.constructor, - proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$3; - - return value === proto; - } - - /** - * Iterates over elements of `collection` and invokes `iteratee` for each element. - * The iteratee is invoked with three arguments: (value, index|key, collection). - * Iteratee functions may exit iteration early by explicitly returning `false`. - * - * **Note:** As with other "Collections" methods, objects with a "length" - * property are iterated like arrays. To avoid this behavior use `_.forIn` - * or `_.forOwn` for object iteration. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @alias each - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - * @see _.forEachRight - * @example - * - * _([1, 2]).forEach(function(value) { - * console.log(value); - * }); - * // => Logs `1` then `2`. - * - * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) { - * console.log(key); - * }); - * // => Logs 'a' then 'b' (iteration order is not guaranteed). - */ - function forEach(collection, iteratee) { - var func = isArray(collection) ? arrayEach : baseEach; - return func(collection, typeof iteratee == 'function' ? iteratee : identity); - } - - /** - * Checks if `value` is likely an `arguments` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an `arguments` object, - * else `false`. - * @example - * - * _.isArguments(function() { return arguments; }()); - * // => true - * - * _.isArguments([1, 2, 3]); - * // => false - */ - function isArguments(value) { - // Safari 8.1 makes `arguments.callee` enumerable in strict mode. - return isArrayLikeObject(value) && hasOwnProperty$1.call(value, 'callee') && - (!propertyIsEnumerable.call(value, 'callee') || objectToString$3.call(value) == argsTag); - } - - /** - * Checks if `value` is classified as an `Array` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array, else `false`. - * @example - * - * _.isArray([1, 2, 3]); - * // => true - * - * _.isArray(document.body.children); - * // => false - * - * _.isArray('abc'); - * // => false - * - * _.isArray(_.noop); - * // => false - */ - var isArray = Array.isArray; - - /** - * Checks if `value` is array-like. A value is considered array-like if it's - * not a function and has a `value.length` that's an integer greater than or - * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is array-like, else `false`. - * @example - * - * _.isArrayLike([1, 2, 3]); - * // => true - * - * _.isArrayLike(document.body.children); - * // => true - * - * _.isArrayLike('abc'); - * // => true - * - * _.isArrayLike(_.noop); - * // => false - */ - function isArrayLike(value) { - return value != null && isLength(value.length) && !isFunction(value); - } - - /** - * This method is like `_.isArrayLike` except that it also checks if `value` - * is an object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array-like object, - * else `false`. - * @example - * - * _.isArrayLikeObject([1, 2, 3]); - * // => true - * - * _.isArrayLikeObject(document.body.children); - * // => true - * - * _.isArrayLikeObject('abc'); - * // => false - * - * _.isArrayLikeObject(_.noop); - * // => false - */ - function isArrayLikeObject(value) { - return isObjectLike$3(value) && isArrayLike(value); - } - - /** - * Checks if `value` is classified as a `Function` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a function, else `false`. - * @example - * - * _.isFunction(_); - * // => true - * - * _.isFunction(/abc/); - * // => false - */ - function isFunction(value) { - // The use of `Object#toString` avoids issues with the `typeof` operator - // in Safari 8-9 which returns 'object' for typed array and other constructors. - var tag = isObject$2(value) ? objectToString$3.call(value) : ''; - return tag == funcTag || tag == genTag; - } - - /** - * Checks if `value` is a valid array-like length. - * - * **Note:** This method is loosely based on - * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. - * @example - * - * _.isLength(3); - * // => true - * - * _.isLength(Number.MIN_VALUE); - * // => false - * - * _.isLength(Infinity); - * // => false - * - * _.isLength('3'); - * // => false - */ - function isLength(value) { - return typeof value == 'number' && - value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; - } - - /** - * Checks if `value` is the - * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) - * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(_.noop); - * // => true - * - * _.isObject(null); - * // => false - */ - function isObject$2(value) { - var type = typeof value; - return !!value && (type == 'object' || type == 'function'); - } - - /** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ - function isObjectLike$3(value) { - return !!value && typeof value == 'object'; - } - - /** - * Creates an array of the own enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. See the - * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) - * for more details. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keys(new Foo); - * // => ['a', 'b'] (iteration order is not guaranteed) - * - * _.keys('hi'); - * // => ['0', '1'] - */ - function keys(object) { - return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); - } - - /** - * This method returns the first argument it receives. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Util - * @param {*} value Any value. - * @returns {*} Returns `value`. - * @example - * - * var object = { 'a': 1 }; - * - * console.log(_.identity(object) === object); - * // => true - */ - function identity(value) { - return value; - } - - var lodash_foreach = forEach; - - let urlAlphabet$1 = - 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'; - var urlAlphabet_1 = { urlAlphabet: urlAlphabet$1 }; - - let { urlAlphabet } = urlAlphabet_1; - { - if ( - typeof navigator !== 'undefined' && - navigator.product === 'ReactNative' && - typeof crypto === 'undefined' - ) { - throw new Error( - 'React Native does not have a built-in secure random generator. ' + - 'If you don’t need unpredictable IDs use `nanoid/non-secure`. ' + - 'For secure IDs, import `react-native-get-random-values` ' + - 'before Nano ID.' - ) - } - if (typeof msCrypto !== 'undefined' && typeof crypto === 'undefined') { - throw new Error( - 'Import file with `if (!window.crypto) window.crypto = window.msCrypto`' + - ' before importing Nano ID to fix IE 11 support' - ) - } - if (typeof crypto === 'undefined') { - throw new Error( - 'Your browser does not have secure random generator. ' + - 'If you don’t need unpredictable IDs, you can use nanoid/non-secure.' - ) - } - } - let random = bytes => crypto.getRandomValues(new Uint8Array(bytes)); - let customRandom = (alphabet, size, getRandom) => { - let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1; - let step = -~((1.6 * mask * size) / alphabet.length); - return () => { - let id = ''; - while (true) { - let bytes = getRandom(step); - let j = step; - while (j--) { - id += alphabet[bytes[j] & mask] || ''; - if (id.length === size) return id - } - } - } - }; - let customAlphabet = (alphabet, size) => customRandom(alphabet, size, random); - let nanoid$2 = (size = 21) => { - let id = ''; - let bytes = crypto.getRandomValues(new Uint8Array(size)); - while (size--) { - let byte = bytes[size] & 63; - if (byte < 36) { - id += byte.toString(36); - } else if (byte < 62) { - id += (byte - 26).toString(36).toUpperCase(); - } else if (byte < 63) { - id += '_'; - } else { - id += '-'; - } - } - return id - }; - var index_browser = { nanoid: nanoid$2, customAlphabet, customRandom, urlAlphabet, random }; - - /** - * lodash (Custom Build) - * Build: `lodash modularize exports="npm" -o ./` - * Copyright jQuery Foundation and other contributors - * Released under MIT license - * Based on Underscore.js 1.8.3 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */ - - /** Used as the `TypeError` message for "Functions" methods. */ - var FUNC_ERROR_TEXT$1 = 'Expected a function'; - - /** Used as references for various `Number` constants. */ - var NAN$1 = 0 / 0; - - /** `Object#toString` result references. */ - var symbolTag$2 = '[object Symbol]'; - - /** Used to match leading and trailing whitespace. */ - var reTrim$1 = /^\s+|\s+$/g; - - /** Used to detect bad signed hexadecimal string values. */ - var reIsBadHex$1 = /^[-+]0x[0-9a-f]+$/i; - - /** Used to detect binary string values. */ - var reIsBinary$1 = /^0b[01]+$/i; - - /** Used to detect octal string values. */ - var reIsOctal$1 = /^0o[0-7]+$/i; - - /** Built-in method references without a dependency on `root`. */ - var freeParseInt$1 = parseInt; - - /** Detect free variable `global` from Node.js. */ - var freeGlobal$2 = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal; - - /** Detect free variable `self`. */ - var freeSelf$2 = typeof self == 'object' && self && self.Object === Object && self; - - /** Used as a reference to the global object. */ - var root$2 = freeGlobal$2 || freeSelf$2 || Function('return this')(); - - /** Used for built-in method references. */ - var objectProto$2 = Object.prototype; - - /** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ - var objectToString$2 = objectProto$2.toString; - - /* Built-in method references for those with the same name as other `lodash` methods. */ - var nativeMax$1 = Math.max, - nativeMin$1 = Math.min; - - /** - * Gets the timestamp of the number of milliseconds that have elapsed since - * the Unix epoch (1 January 1970 00:00:00 UTC). - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Date - * @returns {number} Returns the timestamp. - * @example - * - * _.defer(function(stamp) { - * console.log(_.now() - stamp); - * }, _.now()); - * // => Logs the number of milliseconds it took for the deferred invocation. - */ - var now$1 = function() { - return root$2.Date.now(); - }; - - /** - * Creates a debounced function that delays invoking `func` until after `wait` - * milliseconds have elapsed since the last time the debounced function was - * invoked. The debounced function comes with a `cancel` method to cancel - * delayed `func` invocations and a `flush` method to immediately invoke them. - * Provide `options` to indicate whether `func` should be invoked on the - * leading and/or trailing edge of the `wait` timeout. The `func` is invoked - * with the last arguments provided to the debounced function. Subsequent - * calls to the debounced function return the result of the last `func` - * invocation. - * - * **Note:** If `leading` and `trailing` options are `true`, `func` is - * invoked on the trailing edge of the timeout only if the debounced function - * is invoked more than once during the `wait` timeout. - * - * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred - * until to the next tick, similar to `setTimeout` with a timeout of `0`. - * - * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) - * for details over the differences between `_.debounce` and `_.throttle`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to debounce. - * @param {number} [wait=0] The number of milliseconds to delay. - * @param {Object} [options={}] The options object. - * @param {boolean} [options.leading=false] - * Specify invoking on the leading edge of the timeout. - * @param {number} [options.maxWait] - * The maximum time `func` is allowed to be delayed before it's invoked. - * @param {boolean} [options.trailing=true] - * Specify invoking on the trailing edge of the timeout. - * @returns {Function} Returns the new debounced function. - * @example - * - * // Avoid costly calculations while the window size is in flux. - * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); - * - * // Invoke `sendMail` when clicked, debouncing subsequent calls. - * jQuery(element).on('click', _.debounce(sendMail, 300, { - * 'leading': true, - * 'trailing': false - * })); - * - * // Ensure `batchLog` is invoked once after 1 second of debounced calls. - * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 }); - * var source = new EventSource('/stream'); - * jQuery(source).on('message', debounced); - * - * // Cancel the trailing debounced invocation. - * jQuery(window).on('popstate', debounced.cancel); - */ - function debounce$2(func, wait, options) { - var lastArgs, - lastThis, - maxWait, - result, - timerId, - lastCallTime, - lastInvokeTime = 0, - leading = false, - maxing = false, - trailing = true; - - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT$1); - } - wait = toNumber$1(wait) || 0; - if (isObject$1(options)) { - leading = !!options.leading; - maxing = 'maxWait' in options; - maxWait = maxing ? nativeMax$1(toNumber$1(options.maxWait) || 0, wait) : maxWait; - trailing = 'trailing' in options ? !!options.trailing : trailing; - } - - function invokeFunc(time) { - var args = lastArgs, - thisArg = lastThis; - - lastArgs = lastThis = undefined; - lastInvokeTime = time; - result = func.apply(thisArg, args); - return result; - } - - function leadingEdge(time) { - // Reset any `maxWait` timer. - lastInvokeTime = time; - // Start the timer for the trailing edge. - timerId = setTimeout(timerExpired, wait); - // Invoke the leading edge. - return leading ? invokeFunc(time) : result; - } - - function remainingWait(time) { - var timeSinceLastCall = time - lastCallTime, - timeSinceLastInvoke = time - lastInvokeTime, - result = wait - timeSinceLastCall; - - return maxing ? nativeMin$1(result, maxWait - timeSinceLastInvoke) : result; - } - - function shouldInvoke(time) { - var timeSinceLastCall = time - lastCallTime, - timeSinceLastInvoke = time - lastInvokeTime; - - // Either this is the first call, activity has stopped and we're at the - // trailing edge, the system time has gone backwards and we're treating - // it as the trailing edge, or we've hit the `maxWait` limit. - return (lastCallTime === undefined || (timeSinceLastCall >= wait) || - (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait)); - } - - function timerExpired() { - var time = now$1(); - if (shouldInvoke(time)) { - return trailingEdge(time); - } - // Restart the timer. - timerId = setTimeout(timerExpired, remainingWait(time)); - } - - function trailingEdge(time) { - timerId = undefined; - - // Only invoke if we have `lastArgs` which means `func` has been - // debounced at least once. - if (trailing && lastArgs) { - return invokeFunc(time); - } - lastArgs = lastThis = undefined; - return result; - } - - function cancel() { - if (timerId !== undefined) { - clearTimeout(timerId); - } - lastInvokeTime = 0; - lastArgs = lastCallTime = lastThis = timerId = undefined; - } - - function flush() { - return timerId === undefined ? result : trailingEdge(now$1()); - } - - function debounced() { - var time = now$1(), - isInvoking = shouldInvoke(time); - - lastArgs = arguments; - lastThis = this; - lastCallTime = time; - - if (isInvoking) { - if (timerId === undefined) { - return leadingEdge(lastCallTime); - } - if (maxing) { - // Handle invocations in a tight loop. - timerId = setTimeout(timerExpired, wait); - return invokeFunc(lastCallTime); - } - } - if (timerId === undefined) { - timerId = setTimeout(timerExpired, wait); - } - return result; - } - debounced.cancel = cancel; - debounced.flush = flush; - return debounced; - } - - /** - * Creates a throttled function that only invokes `func` at most once per - * every `wait` milliseconds. The throttled function comes with a `cancel` - * method to cancel delayed `func` invocations and a `flush` method to - * immediately invoke them. Provide `options` to indicate whether `func` - * should be invoked on the leading and/or trailing edge of the `wait` - * timeout. The `func` is invoked with the last arguments provided to the - * throttled function. Subsequent calls to the throttled function return the - * result of the last `func` invocation. - * - * **Note:** If `leading` and `trailing` options are `true`, `func` is - * invoked on the trailing edge of the timeout only if the throttled function - * is invoked more than once during the `wait` timeout. - * - * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred - * until to the next tick, similar to `setTimeout` with a timeout of `0`. - * - * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) - * for details over the differences between `_.throttle` and `_.debounce`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to throttle. - * @param {number} [wait=0] The number of milliseconds to throttle invocations to. - * @param {Object} [options={}] The options object. - * @param {boolean} [options.leading=true] - * Specify invoking on the leading edge of the timeout. - * @param {boolean} [options.trailing=true] - * Specify invoking on the trailing edge of the timeout. - * @returns {Function} Returns the new throttled function. - * @example - * - * // Avoid excessively updating the position while scrolling. - * jQuery(window).on('scroll', _.throttle(updatePosition, 100)); - * - * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes. - * var throttled = _.throttle(renewToken, 300000, { 'trailing': false }); - * jQuery(element).on('click', throttled); - * - * // Cancel the trailing throttled invocation. - * jQuery(window).on('popstate', throttled.cancel); - */ - function throttle(func, wait, options) { - var leading = true, - trailing = true; - - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT$1); - } - if (isObject$1(options)) { - leading = 'leading' in options ? !!options.leading : leading; - trailing = 'trailing' in options ? !!options.trailing : trailing; - } - return debounce$2(func, wait, { - 'leading': leading, - 'maxWait': wait, - 'trailing': trailing - }); - } - - /** - * Checks if `value` is the - * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) - * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(_.noop); - * // => true - * - * _.isObject(null); - * // => false - */ - function isObject$1(value) { - var type = typeof value; - return !!value && (type == 'object' || type == 'function'); - } - - /** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ - function isObjectLike$2(value) { - return !!value && typeof value == 'object'; - } - - /** - * Checks if `value` is classified as a `Symbol` primitive or object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. - * @example - * - * _.isSymbol(Symbol.iterator); - * // => true - * - * _.isSymbol('abc'); - * // => false - */ - function isSymbol$2(value) { - return typeof value == 'symbol' || - (isObjectLike$2(value) && objectToString$2.call(value) == symbolTag$2); - } - - /** - * Converts `value` to a number. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to process. - * @returns {number} Returns the number. - * @example - * - * _.toNumber(3.2); - * // => 3.2 - * - * _.toNumber(Number.MIN_VALUE); - * // => 5e-324 - * - * _.toNumber(Infinity); - * // => Infinity - * - * _.toNumber('3.2'); - * // => 3.2 - */ - function toNumber$1(value) { - if (typeof value == 'number') { - return value; - } - if (isSymbol$2(value)) { - return NAN$1; - } - if (isObject$1(value)) { - var other = typeof value.valueOf == 'function' ? value.valueOf() : value; - value = isObject$1(other) ? (other + '') : other; - } - if (typeof value != 'string') { - return value === 0 ? value : +value; - } - value = value.replace(reTrim$1, ''); - var isBinary = reIsBinary$1.test(value); - return (isBinary || reIsOctal$1.test(value)) - ? freeParseInt$1(value.slice(2), isBinary ? 2 : 8) - : (reIsBadHex$1.test(value) ? NAN$1 : +value); - } - - var lodash_throttle = throttle; - - var snabbdom_cjs = createCommonjsModule$1(function (module, exports) { - - Object.defineProperty(exports, '__esModule', { value: true }); - - function createElement(tagName, options) { - return document.createElement(tagName, options); - } - function createElementNS(namespaceURI, qualifiedName, options) { - return document.createElementNS(namespaceURI, qualifiedName, options); - } - function createTextNode(text) { - return document.createTextNode(text); - } - function createComment(text) { - return document.createComment(text); - } - function insertBefore(parentNode, newNode, referenceNode) { - parentNode.insertBefore(newNode, referenceNode); - } - function removeChild(node, child) { - node.removeChild(child); - } - function appendChild(node, child) { - node.appendChild(child); - } - function parentNode(node) { - return node.parentNode; - } - function nextSibling(node) { - return node.nextSibling; - } - function tagName(elm) { - return elm.tagName; - } - function setTextContent(node, text) { - node.textContent = text; - } - function getTextContent(node) { - return node.textContent; - } - function isElement(node) { - return node.nodeType === 1; - } - function isText(node) { - return node.nodeType === 3; - } - function isComment(node) { - return node.nodeType === 8; - } - const htmlDomApi = { - createElement, - createElementNS, - createTextNode, - createComment, - insertBefore, - removeChild, - appendChild, - parentNode, - nextSibling, - tagName, - setTextContent, - getTextContent, - isElement, - isText, - isComment, - }; - - function vnode(sel, data, children, text, elm) { - const key = data === undefined ? undefined : data.key; - return { sel, data, children, text, elm, key }; - } - - const array = Array.isArray; - function primitive(s) { - return typeof s === "string" || - typeof s === "number" || - s instanceof String || - s instanceof Number; - } - - function isUndef(s) { - return s === undefined; - } - function isDef(s) { - return s !== undefined; - } - const emptyNode = vnode("", {}, [], undefined, undefined); - function sameVnode(vnode1, vnode2) { - var _a, _b; - const isSameKey = vnode1.key === vnode2.key; - const isSameIs = ((_a = vnode1.data) === null || _a === void 0 ? void 0 : _a.is) === ((_b = vnode2.data) === null || _b === void 0 ? void 0 : _b.is); - const isSameSel = vnode1.sel === vnode2.sel; - return isSameSel && isSameKey && isSameIs; - } - function isVnode(vnode) { - return vnode.sel !== undefined; - } - function createKeyToOldIdx(children, beginIdx, endIdx) { - var _a; - const map = {}; - for (let i = beginIdx; i <= endIdx; ++i) { - const key = (_a = children[i]) === null || _a === void 0 ? void 0 : _a.key; - if (key !== undefined) { - map[key] = i; - } - } - return map; - } - const hooks = [ - "create", - "update", - "remove", - "destroy", - "pre", - "post", - ]; - function init$1(modules, domApi) { - const cbs = { - create: [], - update: [], - remove: [], - destroy: [], - pre: [], - post: [], - }; - const api = domApi !== undefined ? domApi : htmlDomApi; - for (const hook of hooks) { - for (const module of modules) { - const currentHook = module[hook]; - if (currentHook !== undefined) { - cbs[hook].push(currentHook); - } - } - } - function emptyNodeAt(elm) { - const id = elm.id ? "#" + elm.id : ""; - // elm.className doesn't return a string when elm is an SVG element inside a shadowRoot. - // https://stackoverflow.com/questions/29454340/detecting-classname-of-svganimatedstring - const classes = elm.getAttribute("class"); - const c = classes ? "." + classes.split(" ").join(".") : ""; - return vnode(api.tagName(elm).toLowerCase() + id + c, {}, [], undefined, elm); - } - function createRmCb(childElm, listeners) { - return function rmCb() { - if (--listeners === 0) { - const parent = api.parentNode(childElm); - api.removeChild(parent, childElm); - } - }; - } - function createElm(vnode, insertedVnodeQueue) { - var _a, _b; - let i; - let data = vnode.data; - if (data !== undefined) { - const init = (_a = data.hook) === null || _a === void 0 ? void 0 : _a.init; - if (isDef(init)) { - init(vnode); - data = vnode.data; - } - } - const children = vnode.children; - const sel = vnode.sel; - if (sel === "!") { - if (isUndef(vnode.text)) { - vnode.text = ""; - } - vnode.elm = api.createComment(vnode.text); - } - else if (sel !== undefined) { - // Parse selector - const hashIdx = sel.indexOf("#"); - const dotIdx = sel.indexOf(".", hashIdx); - const hash = hashIdx > 0 ? hashIdx : sel.length; - const dot = dotIdx > 0 ? dotIdx : sel.length; - const tag = hashIdx !== -1 || dotIdx !== -1 - ? sel.slice(0, Math.min(hash, dot)) - : sel; - const elm = (vnode.elm = - isDef(data) && isDef((i = data.ns)) - ? api.createElementNS(i, tag, data) - : api.createElement(tag, data)); - if (hash < dot) - elm.setAttribute("id", sel.slice(hash + 1, dot)); - if (dotIdx > 0) - elm.setAttribute("class", sel.slice(dot + 1).replace(/\./g, " ")); - for (i = 0; i < cbs.create.length; ++i) - cbs.create[i](emptyNode, vnode); - if (array(children)) { - for (i = 0; i < children.length; ++i) { - const ch = children[i]; - if (ch != null) { - api.appendChild(elm, createElm(ch, insertedVnodeQueue)); - } - } - } - else if (primitive(vnode.text)) { - api.appendChild(elm, api.createTextNode(vnode.text)); - } - const hook = vnode.data.hook; - if (isDef(hook)) { - (_b = hook.create) === null || _b === void 0 ? void 0 : _b.call(hook, emptyNode, vnode); - if (hook.insert) { - insertedVnodeQueue.push(vnode); - } - } - } - else { - vnode.elm = api.createTextNode(vnode.text); - } - return vnode.elm; - } - function addVnodes(parentElm, before, vnodes, startIdx, endIdx, insertedVnodeQueue) { - for (; startIdx <= endIdx; ++startIdx) { - const ch = vnodes[startIdx]; - if (ch != null) { - api.insertBefore(parentElm, createElm(ch, insertedVnodeQueue), before); - } - } - } - function invokeDestroyHook(vnode) { - var _a, _b; - const data = vnode.data; - if (data !== undefined) { - (_b = (_a = data === null || data === void 0 ? void 0 : data.hook) === null || _a === void 0 ? void 0 : _a.destroy) === null || _b === void 0 ? void 0 : _b.call(_a, vnode); - for (let i = 0; i < cbs.destroy.length; ++i) - cbs.destroy[i](vnode); - if (vnode.children !== undefined) { - for (let j = 0; j < vnode.children.length; ++j) { - const child = vnode.children[j]; - if (child != null && typeof child !== "string") { - invokeDestroyHook(child); - } - } - } - } - } - function removeVnodes(parentElm, vnodes, startIdx, endIdx) { - var _a, _b; - for (; startIdx <= endIdx; ++startIdx) { - let listeners; - let rm; - const ch = vnodes[startIdx]; - if (ch != null) { - if (isDef(ch.sel)) { - invokeDestroyHook(ch); - listeners = cbs.remove.length + 1; - rm = createRmCb(ch.elm, listeners); - for (let i = 0; i < cbs.remove.length; ++i) - cbs.remove[i](ch, rm); - const removeHook = (_b = (_a = ch === null || ch === void 0 ? void 0 : ch.data) === null || _a === void 0 ? void 0 : _a.hook) === null || _b === void 0 ? void 0 : _b.remove; - if (isDef(removeHook)) { - removeHook(ch, rm); - } - else { - rm(); - } - } - else { - // Text node - api.removeChild(parentElm, ch.elm); - } - } - } - } - function updateChildren(parentElm, oldCh, newCh, insertedVnodeQueue) { - let oldStartIdx = 0; - let newStartIdx = 0; - let oldEndIdx = oldCh.length - 1; - let oldStartVnode = oldCh[0]; - let oldEndVnode = oldCh[oldEndIdx]; - let newEndIdx = newCh.length - 1; - let newStartVnode = newCh[0]; - let newEndVnode = newCh[newEndIdx]; - let oldKeyToIdx; - let idxInOld; - let elmToMove; - let before; - while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) { - if (oldStartVnode == null) { - oldStartVnode = oldCh[++oldStartIdx]; // Vnode might have been moved left - } - else if (oldEndVnode == null) { - oldEndVnode = oldCh[--oldEndIdx]; - } - else if (newStartVnode == null) { - newStartVnode = newCh[++newStartIdx]; - } - else if (newEndVnode == null) { - newEndVnode = newCh[--newEndIdx]; - } - else if (sameVnode(oldStartVnode, newStartVnode)) { - patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue); - oldStartVnode = oldCh[++oldStartIdx]; - newStartVnode = newCh[++newStartIdx]; - } - else if (sameVnode(oldEndVnode, newEndVnode)) { - patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue); - oldEndVnode = oldCh[--oldEndIdx]; - newEndVnode = newCh[--newEndIdx]; - } - else if (sameVnode(oldStartVnode, newEndVnode)) { - // Vnode moved right - patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue); - api.insertBefore(parentElm, oldStartVnode.elm, api.nextSibling(oldEndVnode.elm)); - oldStartVnode = oldCh[++oldStartIdx]; - newEndVnode = newCh[--newEndIdx]; - } - else if (sameVnode(oldEndVnode, newStartVnode)) { - // Vnode moved left - patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue); - api.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm); - oldEndVnode = oldCh[--oldEndIdx]; - newStartVnode = newCh[++newStartIdx]; - } - else { - if (oldKeyToIdx === undefined) { - oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); - } - idxInOld = oldKeyToIdx[newStartVnode.key]; - if (isUndef(idxInOld)) { - // New element - api.insertBefore(parentElm, createElm(newStartVnode, insertedVnodeQueue), oldStartVnode.elm); - } - else { - elmToMove = oldCh[idxInOld]; - if (elmToMove.sel !== newStartVnode.sel) { - api.insertBefore(parentElm, createElm(newStartVnode, insertedVnodeQueue), oldStartVnode.elm); - } - else { - patchVnode(elmToMove, newStartVnode, insertedVnodeQueue); - oldCh[idxInOld] = undefined; - api.insertBefore(parentElm, elmToMove.elm, oldStartVnode.elm); - } - } - newStartVnode = newCh[++newStartIdx]; - } - } - if (oldStartIdx <= oldEndIdx || newStartIdx <= newEndIdx) { - if (oldStartIdx > oldEndIdx) { - before = newCh[newEndIdx + 1] == null ? null : newCh[newEndIdx + 1].elm; - addVnodes(parentElm, before, newCh, newStartIdx, newEndIdx, insertedVnodeQueue); - } - else { - removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx); - } - } - } - function patchVnode(oldVnode, vnode, insertedVnodeQueue) { - var _a, _b, _c, _d, _e; - const hook = (_a = vnode.data) === null || _a === void 0 ? void 0 : _a.hook; - (_b = hook === null || hook === void 0 ? void 0 : hook.prepatch) === null || _b === void 0 ? void 0 : _b.call(hook, oldVnode, vnode); - const elm = (vnode.elm = oldVnode.elm); - const oldCh = oldVnode.children; - const ch = vnode.children; - if (oldVnode === vnode) - return; - if (vnode.data !== undefined) { - for (let i = 0; i < cbs.update.length; ++i) - cbs.update[i](oldVnode, vnode); - (_d = (_c = vnode.data.hook) === null || _c === void 0 ? void 0 : _c.update) === null || _d === void 0 ? void 0 : _d.call(_c, oldVnode, vnode); - } - if (isUndef(vnode.text)) { - if (isDef(oldCh) && isDef(ch)) { - if (oldCh !== ch) - updateChildren(elm, oldCh, ch, insertedVnodeQueue); - } - else if (isDef(ch)) { - if (isDef(oldVnode.text)) - api.setTextContent(elm, ""); - addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue); - } - else if (isDef(oldCh)) { - removeVnodes(elm, oldCh, 0, oldCh.length - 1); - } - else if (isDef(oldVnode.text)) { - api.setTextContent(elm, ""); - } - } - else if (oldVnode.text !== vnode.text) { - if (isDef(oldCh)) { - removeVnodes(elm, oldCh, 0, oldCh.length - 1); - } - api.setTextContent(elm, vnode.text); - } - (_e = hook === null || hook === void 0 ? void 0 : hook.postpatch) === null || _e === void 0 ? void 0 : _e.call(hook, oldVnode, vnode); - } - return function patch(oldVnode, vnode) { - let i, elm, parent; - const insertedVnodeQueue = []; - for (i = 0; i < cbs.pre.length; ++i) - cbs.pre[i](); - if (!isVnode(oldVnode)) { - oldVnode = emptyNodeAt(oldVnode); - } - if (sameVnode(oldVnode, vnode)) { - patchVnode(oldVnode, vnode, insertedVnodeQueue); - } - else { - elm = oldVnode.elm; - parent = api.parentNode(elm); - createElm(vnode, insertedVnodeQueue); - if (parent !== null) { - api.insertBefore(parent, vnode.elm, api.nextSibling(elm)); - removeVnodes(parent, [oldVnode], 0, 0); - } - } - for (i = 0; i < insertedVnodeQueue.length; ++i) { - insertedVnodeQueue[i].data.hook.insert(insertedVnodeQueue[i]); - } - for (i = 0; i < cbs.post.length; ++i) - cbs.post[i](); - return vnode; - }; - } - - function addNS(data, children, sel) { - data.ns = "http://www.w3.org/2000/svg"; - if (sel !== "foreignObject" && children !== undefined) { - for (let i = 0; i < children.length; ++i) { - const childData = children[i].data; - if (childData !== undefined) { - addNS(childData, children[i].children, children[i].sel); - } - } - } - } - function h(sel, b, c) { - let data = {}; - let children; - let text; - let i; - if (c !== undefined) { - if (b !== null) { - data = b; - } - if (array(c)) { - children = c; - } - else if (primitive(c)) { - text = c.toString(); - } - else if (c && c.sel) { - children = [c]; - } - } - else if (b !== undefined && b !== null) { - if (array(b)) { - children = b; - } - else if (primitive(b)) { - text = b.toString(); - } - else if (b && b.sel) { - children = [b]; - } - else { - data = b; - } - } - if (children !== undefined) { - for (i = 0; i < children.length; ++i) { - if (primitive(children[i])) - children[i] = vnode(undefined, undefined, undefined, children[i], undefined); - } - } - if (sel[0] === "s" && - sel[1] === "v" && - sel[2] === "g" && - (sel.length === 3 || sel[3] === "." || sel[3] === "#")) { - addNS(data, children, sel); - } - return vnode(sel, data, children, text, undefined); - } - - function copyToThunk(vnode, thunk) { - vnode.data.fn = thunk.data.fn; - vnode.data.args = thunk.data.args; - thunk.data = vnode.data; - thunk.children = vnode.children; - thunk.text = vnode.text; - thunk.elm = vnode.elm; - } - function init(thunk) { - const cur = thunk.data; - const vnode = cur.fn(...cur.args); - copyToThunk(vnode, thunk); - } - function prepatch(oldVnode, thunk) { - let i; - const old = oldVnode.data; - const cur = thunk.data; - const oldArgs = old.args; - const args = cur.args; - if (old.fn !== cur.fn || oldArgs.length !== args.length) { - copyToThunk(cur.fn(...args), thunk); - return; - } - for (i = 0; i < args.length; ++i) { - if (oldArgs[i] !== args[i]) { - copyToThunk(cur.fn(...args), thunk); - return; - } - } - copyToThunk(oldVnode, thunk); - } - const thunk = function thunk(sel, key, fn, args) { - if (args === undefined) { - args = fn; - fn = key; - key = undefined; - } - return h(sel, { - key: key, - hook: { init, prepatch }, - fn: fn, - args: args, - }); - }; - - function pre(vnode, newVnode) { - const attachData = vnode.data.attachData; - // Copy created placeholder and real element from old vnode - newVnode.data.attachData.placeholder = attachData.placeholder; - newVnode.data.attachData.real = attachData.real; - // Mount real element in vnode so the patch process operates on it - vnode.elm = vnode.data.attachData.real; - } - function post(_, vnode) { - // Mount dummy placeholder in vnode so potential reorders use it - vnode.elm = vnode.data.attachData.placeholder; - } - function destroy(vnode) { - // Remove placeholder - if (vnode.elm !== undefined) { - vnode.elm.parentNode.removeChild(vnode.elm); - } - // Remove real element from where it was inserted - vnode.elm = vnode.data.attachData.real; - } - function create(_, vnode) { - const real = vnode.elm; - const attachData = vnode.data.attachData; - const placeholder = document.createElement("span"); - // Replace actual element with dummy placeholder - // Snabbdom will then insert placeholder instead - vnode.elm = placeholder; - attachData.target.appendChild(real); - attachData.real = real; - attachData.placeholder = placeholder; - } - function attachTo(target, vnode) { - if (vnode.data === undefined) - vnode.data = {}; - if (vnode.data.hook === undefined) - vnode.data.hook = {}; - const data = vnode.data; - const hook = vnode.data.hook; - data.attachData = { target: target, placeholder: undefined, real: undefined }; - hook.create = create; - hook.prepatch = pre; - hook.postpatch = post; - hook.destroy = destroy; - return vnode; - } - - function toVNode(node, domApi) { - const api = domApi !== undefined ? domApi : htmlDomApi; - let text; - if (api.isElement(node)) { - const id = node.id ? "#" + node.id : ""; - const cn = node.getAttribute("class"); - const c = cn ? "." + cn.split(" ").join(".") : ""; - const sel = api.tagName(node).toLowerCase() + id + c; - const attrs = {}; - const children = []; - let name; - let i, n; - const elmAttrs = node.attributes; - const elmChildren = node.childNodes; - for (i = 0, n = elmAttrs.length; i < n; i++) { - name = elmAttrs[i].nodeName; - if (name !== "id" && name !== "class") { - attrs[name] = elmAttrs[i].nodeValue; - } - } - for (i = 0, n = elmChildren.length; i < n; i++) { - children.push(toVNode(elmChildren[i], domApi)); - } - return vnode(sel, { attrs }, children, undefined, node); - } - else if (api.isText(node)) { - text = api.getTextContent(node); - return vnode(undefined, undefined, undefined, text, node); - } - else if (api.isComment(node)) { - text = api.getTextContent(node); - return vnode("!", {}, [], text, node); - } - else { - return vnode("", {}, [], undefined, node); - } - } - - const xlinkNS = "http://www.w3.org/1999/xlink"; - const xmlNS = "http://www.w3.org/XML/1998/namespace"; - const colonChar = 58; - const xChar = 120; - function updateAttrs(oldVnode, vnode) { - let key; - const elm = vnode.elm; - let oldAttrs = oldVnode.data.attrs; - let attrs = vnode.data.attrs; - if (!oldAttrs && !attrs) - return; - if (oldAttrs === attrs) - return; - oldAttrs = oldAttrs || {}; - attrs = attrs || {}; - // update modified attributes, add new attributes - for (key in attrs) { - const cur = attrs[key]; - const old = oldAttrs[key]; - if (old !== cur) { - if (cur === true) { - elm.setAttribute(key, ""); - } - else if (cur === false) { - elm.removeAttribute(key); - } - else { - if (key.charCodeAt(0) !== xChar) { - elm.setAttribute(key, cur); - } - else if (key.charCodeAt(3) === colonChar) { - // Assume xml namespace - elm.setAttributeNS(xmlNS, key, cur); - } - else if (key.charCodeAt(5) === colonChar) { - // Assume xlink namespace - elm.setAttributeNS(xlinkNS, key, cur); - } - else { - elm.setAttribute(key, cur); - } - } - } - } - // remove removed attributes - // use `in` operator since the previous `for` iteration uses it (.i.e. add even attributes with undefined value) - // the other option is to remove all attributes with value == undefined - for (key in oldAttrs) { - if (!(key in attrs)) { - elm.removeAttribute(key); - } - } - } - const attributesModule = { - create: updateAttrs, - update: updateAttrs, - }; - - function updateClass(oldVnode, vnode) { - let cur; - let name; - const elm = vnode.elm; - let oldClass = oldVnode.data.class; - let klass = vnode.data.class; - if (!oldClass && !klass) - return; - if (oldClass === klass) - return; - oldClass = oldClass || {}; - klass = klass || {}; - for (name in oldClass) { - if (oldClass[name] && !Object.prototype.hasOwnProperty.call(klass, name)) { - // was `true` and now not provided - elm.classList.remove(name); - } - } - for (name in klass) { - cur = klass[name]; - if (cur !== oldClass[name]) { - elm.classList[cur ? "add" : "remove"](name); - } - } - } - const classModule = { create: updateClass, update: updateClass }; - - const CAPS_REGEX = /[A-Z]/g; - function updateDataset(oldVnode, vnode) { - const elm = vnode.elm; - let oldDataset = oldVnode.data.dataset; - let dataset = vnode.data.dataset; - let key; - if (!oldDataset && !dataset) - return; - if (oldDataset === dataset) - return; - oldDataset = oldDataset || {}; - dataset = dataset || {}; - const d = elm.dataset; - for (key in oldDataset) { - if (!dataset[key]) { - if (d) { - if (key in d) { - delete d[key]; - } - } - else { - elm.removeAttribute("data-" + key.replace(CAPS_REGEX, "-$&").toLowerCase()); - } - } - } - for (key in dataset) { - if (oldDataset[key] !== dataset[key]) { - if (d) { - d[key] = dataset[key]; - } - else { - elm.setAttribute("data-" + key.replace(CAPS_REGEX, "-$&").toLowerCase(), dataset[key]); - } - } - } - } - const datasetModule = { - create: updateDataset, - update: updateDataset, - }; - - function invokeHandler(handler, vnode, event) { - if (typeof handler === "function") { - // call function handler - handler.call(vnode, event, vnode); - } - else if (typeof handler === "object") { - // call multiple handlers - for (let i = 0; i < handler.length; i++) { - invokeHandler(handler[i], vnode, event); - } - } - } - function handleEvent(event, vnode) { - const name = event.type; - const on = vnode.data.on; - // call event handler(s) if exists - if (on && on[name]) { - invokeHandler(on[name], vnode, event); - } - } - function createListener() { - return function handler(event) { - handleEvent(event, handler.vnode); - }; - } - function updateEventListeners(oldVnode, vnode) { - const oldOn = oldVnode.data.on; - const oldListener = oldVnode.listener; - const oldElm = oldVnode.elm; - const on = vnode && vnode.data.on; - const elm = (vnode && vnode.elm); - let name; - // optimization for reused immutable handlers - if (oldOn === on) { - return; - } - // remove existing listeners which no longer used - if (oldOn && oldListener) { - // if element changed or deleted we remove all existing listeners unconditionally - if (!on) { - for (name in oldOn) { - // remove listener if element was changed or existing listeners removed - oldElm.removeEventListener(name, oldListener, false); - } - } - else { - for (name in oldOn) { - // remove listener if existing listener removed - if (!on[name]) { - oldElm.removeEventListener(name, oldListener, false); - } - } - } - } - // add new listeners which has not already attached - if (on) { - // reuse existing listener or create new - const listener = (vnode.listener = - oldVnode.listener || createListener()); - // update vnode for listener - listener.vnode = vnode; - // if element changed or added we add all needed listeners unconditionally - if (!oldOn) { - for (name in on) { - // add listener if element was changed or new listeners added - elm.addEventListener(name, listener, false); - } - } - else { - for (name in on) { - // add listener if new listener added - if (!oldOn[name]) { - elm.addEventListener(name, listener, false); - } - } - } - } - } - const eventListenersModule = { - create: updateEventListeners, - update: updateEventListeners, - destroy: updateEventListeners, - }; - - function updateProps(oldVnode, vnode) { - let key; - let cur; - let old; - const elm = vnode.elm; - let oldProps = oldVnode.data.props; - let props = vnode.data.props; - if (!oldProps && !props) - return; - if (oldProps === props) - return; - oldProps = oldProps || {}; - props = props || {}; - for (key in props) { - cur = props[key]; - old = oldProps[key]; - if (old !== cur && (key !== "value" || elm[key] !== cur)) { - elm[key] = cur; - } - } - } - const propsModule = { create: updateProps, update: updateProps }; - - // Bindig `requestAnimationFrame` like this fixes a bug in IE/Edge. See #360 and #409. - const raf = (typeof window !== "undefined" && - window.requestAnimationFrame.bind(window)) || - setTimeout; - const nextFrame = function (fn) { - raf(function () { - raf(fn); - }); - }; - let reflowForced = false; - function setNextFrame(obj, prop, val) { - nextFrame(function () { - obj[prop] = val; - }); - } - function updateStyle(oldVnode, vnode) { - let cur; - let name; - const elm = vnode.elm; - let oldStyle = oldVnode.data.style; - let style = vnode.data.style; - if (!oldStyle && !style) - return; - if (oldStyle === style) - return; - oldStyle = oldStyle || {}; - style = style || {}; - const oldHasDel = "delayed" in oldStyle; - for (name in oldStyle) { - if (!style[name]) { - if (name[0] === "-" && name[1] === "-") { - elm.style.removeProperty(name); - } - else { - elm.style[name] = ""; - } - } - } - for (name in style) { - cur = style[name]; - if (name === "delayed" && style.delayed) { - for (const name2 in style.delayed) { - cur = style.delayed[name2]; - if (!oldHasDel || cur !== oldStyle.delayed[name2]) { - setNextFrame(elm.style, name2, cur); - } - } - } - else if (name !== "remove" && cur !== oldStyle[name]) { - if (name[0] === "-" && name[1] === "-") { - elm.style.setProperty(name, cur); - } - else { - elm.style[name] = cur; - } - } - } - } - function applyDestroyStyle(vnode) { - let style; - let name; - const elm = vnode.elm; - const s = vnode.data.style; - if (!s || !(style = s.destroy)) - return; - for (name in style) { - elm.style[name] = style[name]; - } - } - function applyRemoveStyle(vnode, rm) { - const s = vnode.data.style; - if (!s || !s.remove) { - rm(); - return; - } - if (!reflowForced) { - // eslint-disable-next-line @typescript-eslint/no-unused-expressions - vnode.elm.offsetLeft; - reflowForced = true; - } - let name; - const elm = vnode.elm; - let i = 0; - const style = s.remove; - let amount = 0; - const applied = []; - for (name in style) { - applied.push(name); - elm.style[name] = style[name]; - } - const compStyle = getComputedStyle(elm); - const props = compStyle["transition-property"].split(", "); - for (; i < props.length; ++i) { - if (applied.indexOf(props[i]) !== -1) - amount++; - } - elm.addEventListener("transitionend", function (ev) { - if (ev.target === elm) - --amount; - if (amount === 0) - rm(); - }); - } - function forceReflow() { - reflowForced = false; - } - const styleModule = { - pre: forceReflow, - create: updateStyle, - update: updateStyle, - destroy: applyDestroyStyle, - remove: applyRemoveStyle, - }; - - /* eslint-disable @typescript-eslint/no-namespace, import/export */ - function flattenAndFilter(children, flattened) { - for (const child of children) { - // filter out falsey children, except 0 since zero can be a valid value e.g inside a chart - if (child !== undefined && - child !== null && - child !== false && - child !== "") { - if (Array.isArray(child)) { - flattenAndFilter(child, flattened); - } - else if (typeof child === "string" || - typeof child === "number" || - typeof child === "boolean") { - flattened.push(vnode(undefined, undefined, undefined, String(child), undefined)); - } - else { - flattened.push(child); - } - } - } - return flattened; - } - /** - * jsx/tsx compatible factory function - * see: https://www.typescriptlang.org/docs/handbook/jsx.html#factory-functions - */ - function jsx(tag, data, ...children) { - const flatChildren = flattenAndFilter(children, []); - if (typeof tag === "function") { - // tag is a function component - return tag(data, flatChildren); - } - else { - if (flatChildren.length === 1 && - !flatChildren[0].sel && - flatChildren[0].text) { - // only child is a simple text node, pass as text for a simpler vtree - return h(tag, data, flatChildren[0].text); - } - else { - return h(tag, data, flatChildren); - } - } - } - (function (jsx) { - })(jsx || (jsx = {})); - - exports.array = array; - exports.attachTo = attachTo; - exports.attributesModule = attributesModule; - exports.classModule = classModule; - exports.datasetModule = datasetModule; - exports.eventListenersModule = eventListenersModule; - exports.h = h; - exports.htmlDomApi = htmlDomApi; - exports.init = init$1; - exports.jsx = jsx; - exports.primitive = primitive; - exports.propsModule = propsModule; - exports.styleModule = styleModule; - exports.thunk = thunk; - exports.toVNode = toVNode; - exports.vnode = vnode; - }); - - /** - * lodash (Custom Build) - * Build: `lodash modularize exports="npm" -o ./` - * Copyright jQuery Foundation and other contributors - * Released under MIT license - * Based on Underscore.js 1.8.3 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */ - - /** Used as references for various `Number` constants. */ - var INFINITY = 1 / 0; - - /** `Object#toString` result references. */ - var symbolTag$1 = '[object Symbol]'; - - /** Used to match words composed of alphanumeric characters. */ - var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g; - - /** Used to match Latin Unicode letters (excluding mathematical operators). */ - var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g; - - /** Used to compose unicode character classes. */ - var rsAstralRange = '\\ud800-\\udfff', - rsComboMarksRange = '\\u0300-\\u036f\\ufe20-\\ufe23', - rsComboSymbolsRange = '\\u20d0-\\u20f0', - rsDingbatRange = '\\u2700-\\u27bf', - rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff', - rsMathOpRange = '\\xac\\xb1\\xd7\\xf7', - rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf', - rsPunctuationRange = '\\u2000-\\u206f', - rsSpaceRange = ' \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000', - rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde', - rsVarRange = '\\ufe0e\\ufe0f', - rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange; - - /** Used to compose unicode capture groups. */ - var rsApos = "['\u2019]", - rsAstral = '[' + rsAstralRange + ']', - rsBreak = '[' + rsBreakRange + ']', - rsCombo = '[' + rsComboMarksRange + rsComboSymbolsRange + ']', - rsDigits = '\\d+', - rsDingbat = '[' + rsDingbatRange + ']', - rsLower = '[' + rsLowerRange + ']', - rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']', - rsFitz = '\\ud83c[\\udffb-\\udfff]', - rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', - rsNonAstral = '[^' + rsAstralRange + ']', - rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', - rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', - rsUpper = '[' + rsUpperRange + ']', - rsZWJ = '\\u200d'; - - /** Used to compose unicode regexes. */ - var rsLowerMisc = '(?:' + rsLower + '|' + rsMisc + ')', - rsUpperMisc = '(?:' + rsUpper + '|' + rsMisc + ')', - rsOptLowerContr = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?', - rsOptUpperContr = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?', - reOptMod = rsModifier + '?', - rsOptVar = '[' + rsVarRange + ']?', - rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', - rsSeq = rsOptVar + reOptMod + rsOptJoin, - rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq, - rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; - - /** Used to match apostrophes. */ - var reApos = RegExp(rsApos, 'g'); - - /** - * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and - * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols). - */ - var reComboMark = RegExp(rsCombo, 'g'); - - /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ - var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); - - /** Used to match complex or compound words. */ - var reUnicodeWord = RegExp([ - rsUpper + '?' + rsLower + '+' + rsOptLowerContr + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')', - rsUpperMisc + '+' + rsOptUpperContr + '(?=' + [rsBreak, rsUpper + rsLowerMisc, '$'].join('|') + ')', - rsUpper + '?' + rsLowerMisc + '+' + rsOptLowerContr, - rsUpper + '+' + rsOptUpperContr, - rsDigits, - rsEmoji - ].join('|'), 'g'); - - /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ - var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboMarksRange + rsComboSymbolsRange + rsVarRange + ']'); - - /** Used to detect strings that need a more robust regexp to match words. */ - var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/; - - /** Used to map Latin Unicode letters to basic Latin letters. */ - var deburredLetters = { - // Latin-1 Supplement block. - '\xc0': 'A', '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A', - '\xe0': 'a', '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a', - '\xc7': 'C', '\xe7': 'c', - '\xd0': 'D', '\xf0': 'd', - '\xc8': 'E', '\xc9': 'E', '\xca': 'E', '\xcb': 'E', - '\xe8': 'e', '\xe9': 'e', '\xea': 'e', '\xeb': 'e', - '\xcc': 'I', '\xcd': 'I', '\xce': 'I', '\xcf': 'I', - '\xec': 'i', '\xed': 'i', '\xee': 'i', '\xef': 'i', - '\xd1': 'N', '\xf1': 'n', - '\xd2': 'O', '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O', - '\xf2': 'o', '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o', - '\xd9': 'U', '\xda': 'U', '\xdb': 'U', '\xdc': 'U', - '\xf9': 'u', '\xfa': 'u', '\xfb': 'u', '\xfc': 'u', - '\xdd': 'Y', '\xfd': 'y', '\xff': 'y', - '\xc6': 'Ae', '\xe6': 'ae', - '\xde': 'Th', '\xfe': 'th', - '\xdf': 'ss', - // Latin Extended-A block. - '\u0100': 'A', '\u0102': 'A', '\u0104': 'A', - '\u0101': 'a', '\u0103': 'a', '\u0105': 'a', - '\u0106': 'C', '\u0108': 'C', '\u010a': 'C', '\u010c': 'C', - '\u0107': 'c', '\u0109': 'c', '\u010b': 'c', '\u010d': 'c', - '\u010e': 'D', '\u0110': 'D', '\u010f': 'd', '\u0111': 'd', - '\u0112': 'E', '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E', - '\u0113': 'e', '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e', - '\u011c': 'G', '\u011e': 'G', '\u0120': 'G', '\u0122': 'G', - '\u011d': 'g', '\u011f': 'g', '\u0121': 'g', '\u0123': 'g', - '\u0124': 'H', '\u0126': 'H', '\u0125': 'h', '\u0127': 'h', - '\u0128': 'I', '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I', - '\u0129': 'i', '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i', - '\u0134': 'J', '\u0135': 'j', - '\u0136': 'K', '\u0137': 'k', '\u0138': 'k', - '\u0139': 'L', '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L', - '\u013a': 'l', '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l', - '\u0143': 'N', '\u0145': 'N', '\u0147': 'N', '\u014a': 'N', - '\u0144': 'n', '\u0146': 'n', '\u0148': 'n', '\u014b': 'n', - '\u014c': 'O', '\u014e': 'O', '\u0150': 'O', - '\u014d': 'o', '\u014f': 'o', '\u0151': 'o', - '\u0154': 'R', '\u0156': 'R', '\u0158': 'R', - '\u0155': 'r', '\u0157': 'r', '\u0159': 'r', - '\u015a': 'S', '\u015c': 'S', '\u015e': 'S', '\u0160': 'S', - '\u015b': 's', '\u015d': 's', '\u015f': 's', '\u0161': 's', - '\u0162': 'T', '\u0164': 'T', '\u0166': 'T', - '\u0163': 't', '\u0165': 't', '\u0167': 't', - '\u0168': 'U', '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U', - '\u0169': 'u', '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u', - '\u0174': 'W', '\u0175': 'w', - '\u0176': 'Y', '\u0177': 'y', '\u0178': 'Y', - '\u0179': 'Z', '\u017b': 'Z', '\u017d': 'Z', - '\u017a': 'z', '\u017c': 'z', '\u017e': 'z', - '\u0132': 'IJ', '\u0133': 'ij', - '\u0152': 'Oe', '\u0153': 'oe', - '\u0149': "'n", '\u017f': 'ss' - }; - - /** Detect free variable `global` from Node.js. */ - var freeGlobal$1 = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal; - - /** Detect free variable `self`. */ - var freeSelf$1 = typeof self == 'object' && self && self.Object === Object && self; - - /** Used as a reference to the global object. */ - var root$1 = freeGlobal$1 || freeSelf$1 || Function('return this')(); - - /** - * A specialized version of `_.reduce` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @param {boolean} [initAccum] Specify using the first element of `array` as - * the initial value. - * @returns {*} Returns the accumulated value. - */ - function arrayReduce(array, iteratee, accumulator, initAccum) { - var index = -1, - length = array ? array.length : 0; - - if (initAccum && length) { - accumulator = array[++index]; - } - while (++index < length) { - accumulator = iteratee(accumulator, array[index], index, array); - } - return accumulator; - } - - /** - * Converts an ASCII `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ - function asciiToArray(string) { - return string.split(''); - } - - /** - * Splits an ASCII `string` into an array of its words. - * - * @private - * @param {string} The string to inspect. - * @returns {Array} Returns the words of `string`. - */ - function asciiWords(string) { - return string.match(reAsciiWord) || []; - } - - /** - * The base implementation of `_.propertyOf` without support for deep paths. - * - * @private - * @param {Object} object The object to query. - * @returns {Function} Returns the new accessor function. - */ - function basePropertyOf(object) { - return function(key) { - return object == null ? undefined : object[key]; - }; - } - - /** - * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A - * letters to basic Latin letters. - * - * @private - * @param {string} letter The matched letter to deburr. - * @returns {string} Returns the deburred letter. - */ - var deburrLetter = basePropertyOf(deburredLetters); - - /** - * Checks if `string` contains Unicode symbols. - * - * @private - * @param {string} string The string to inspect. - * @returns {boolean} Returns `true` if a symbol is found, else `false`. - */ - function hasUnicode(string) { - return reHasUnicode.test(string); - } - - /** - * Checks if `string` contains a word composed of Unicode symbols. - * - * @private - * @param {string} string The string to inspect. - * @returns {boolean} Returns `true` if a word is found, else `false`. - */ - function hasUnicodeWord(string) { - return reHasUnicodeWord.test(string); - } - - /** - * Converts `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ - function stringToArray(string) { - return hasUnicode(string) - ? unicodeToArray(string) - : asciiToArray(string); - } - - /** - * Converts a Unicode `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ - function unicodeToArray(string) { - return string.match(reUnicode) || []; - } - - /** - * Splits a Unicode `string` into an array of its words. - * - * @private - * @param {string} The string to inspect. - * @returns {Array} Returns the words of `string`. - */ - function unicodeWords(string) { - return string.match(reUnicodeWord) || []; - } - - /** Used for built-in method references. */ - var objectProto$1 = Object.prototype; - - /** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ - var objectToString$1 = objectProto$1.toString; - - /** Built-in value references. */ - var Symbol$1 = root$1.Symbol; - - /** Used to convert symbols to primitives and strings. */ - var symbolProto = Symbol$1 ? Symbol$1.prototype : undefined, - symbolToString = symbolProto ? symbolProto.toString : undefined; - - /** - * The base implementation of `_.slice` without an iteratee call guard. - * - * @private - * @param {Array} array The array to slice. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the slice of `array`. - */ - function baseSlice(array, start, end) { - var index = -1, - length = array.length; - - if (start < 0) { - start = -start > length ? 0 : (length + start); - } - end = end > length ? length : end; - if (end < 0) { - end += length; - } - length = start > end ? 0 : ((end - start) >>> 0); - start >>>= 0; - - var result = Array(length); - while (++index < length) { - result[index] = array[index + start]; - } - return result; - } - - /** - * The base implementation of `_.toString` which doesn't convert nullish - * values to empty strings. - * - * @private - * @param {*} value The value to process. - * @returns {string} Returns the string. - */ - function baseToString(value) { - // Exit early for strings to avoid a performance hit in some environments. - if (typeof value == 'string') { - return value; - } - if (isSymbol$1(value)) { - return symbolToString ? symbolToString.call(value) : ''; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; - } - - /** - * Casts `array` to a slice if it's needed. - * - * @private - * @param {Array} array The array to inspect. - * @param {number} start The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the cast slice. - */ - function castSlice(array, start, end) { - var length = array.length; - end = end === undefined ? length : end; - return (!start && end >= length) ? array : baseSlice(array, start, end); - } - - /** - * Creates a function like `_.lowerFirst`. - * - * @private - * @param {string} methodName The name of the `String` case method to use. - * @returns {Function} Returns the new case function. - */ - function createCaseFirst(methodName) { - return function(string) { - string = toString(string); - - var strSymbols = hasUnicode(string) - ? stringToArray(string) - : undefined; - - var chr = strSymbols - ? strSymbols[0] - : string.charAt(0); - - var trailing = strSymbols - ? castSlice(strSymbols, 1).join('') - : string.slice(1); - - return chr[methodName]() + trailing; - }; - } - - /** - * Creates a function like `_.camelCase`. - * - * @private - * @param {Function} callback The function to combine each word. - * @returns {Function} Returns the new compounder function. - */ - function createCompounder(callback) { - return function(string) { - return arrayReduce(words(deburr(string).replace(reApos, '')), callback, ''); - }; - } - - /** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ - function isObjectLike$1(value) { - return !!value && typeof value == 'object'; - } - - /** - * Checks if `value` is classified as a `Symbol` primitive or object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. - * @example - * - * _.isSymbol(Symbol.iterator); - * // => true - * - * _.isSymbol('abc'); - * // => false - */ - function isSymbol$1(value) { - return typeof value == 'symbol' || - (isObjectLike$1(value) && objectToString$1.call(value) == symbolTag$1); - } - - /** - * Converts `value` to a string. An empty string is returned for `null` - * and `undefined` values. The sign of `-0` is preserved. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to process. - * @returns {string} Returns the string. - * @example - * - * _.toString(null); - * // => '' - * - * _.toString(-0); - * // => '-0' - * - * _.toString([1, 2, 3]); - * // => '1,2,3' - */ - function toString(value) { - return value == null ? '' : baseToString(value); - } - - /** - * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the camel cased string. - * @example - * - * _.camelCase('Foo Bar'); - * // => 'fooBar' - * - * _.camelCase('--foo-bar--'); - * // => 'fooBar' - * - * _.camelCase('__FOO_BAR__'); - * // => 'fooBar' - */ - var camelCase = createCompounder(function(result, word, index) { - word = word.toLowerCase(); - return result + (index ? capitalize(word) : word); - }); - - /** - * Converts the first character of `string` to upper case and the remaining - * to lower case. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to capitalize. - * @returns {string} Returns the capitalized string. - * @example - * - * _.capitalize('FRED'); - * // => 'Fred' - */ - function capitalize(string) { - return upperFirst(toString(string).toLowerCase()); - } - - /** - * Deburrs `string` by converting - * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table) - * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A) - * letters to basic Latin letters and removing - * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to deburr. - * @returns {string} Returns the deburred string. - * @example - * - * _.deburr('déjà vu'); - * // => 'deja vu' - */ - function deburr(string) { - string = toString(string); - return string && string.replace(reLatin, deburrLetter).replace(reComboMark, ''); - } - - /** - * Converts the first character of `string` to upper case. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the converted string. - * @example - * - * _.upperFirst('fred'); - * // => 'Fred' - * - * _.upperFirst('FRED'); - * // => 'FRED' - */ - var upperFirst = createCaseFirst('toUpperCase'); - - /** - * Splits `string` into an array of its words. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to inspect. - * @param {RegExp|string} [pattern] The pattern to match words. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the words of `string`. - * @example - * - * _.words('fred, barney, & pebbles'); - * // => ['fred', 'barney', 'pebbles'] - * - * _.words('fred, barney, & pebbles', /[^, ]+/g); - * // => ['fred', 'barney', '&', 'pebbles'] - */ - function words(string, pattern, guard) { - string = toString(string); - pattern = guard ? undefined : pattern; - - if (pattern === undefined) { - return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string); - } - return string.match(pattern) || []; - } - - var lodash_camelcase = camelCase; - - /** - * Constants. - */ - - var IS_MAC = typeof window != 'undefined' && /Mac|iPod|iPhone|iPad/.test(window.navigator.platform); - - var MODIFIERS = { - alt: 'altKey', - control: 'ctrlKey', - meta: 'metaKey', - shift: 'shiftKey' - }; - - var ALIASES = { - add: '+', - break: 'pause', - cmd: 'meta', - command: 'meta', - ctl: 'control', - ctrl: 'control', - del: 'delete', - down: 'arrowdown', - esc: 'escape', - ins: 'insert', - left: 'arrowleft', - mod: IS_MAC ? 'meta' : 'control', - opt: 'alt', - option: 'alt', - return: 'enter', - right: 'arrowright', - space: ' ', - spacebar: ' ', - up: 'arrowup', - win: 'meta', - windows: 'meta' - }; - - var CODES = { - backspace: 8, - tab: 9, - enter: 13, - shift: 16, - control: 17, - alt: 18, - pause: 19, - capslock: 20, - escape: 27, - ' ': 32, - pageup: 33, - pagedown: 34, - end: 35, - home: 36, - arrowleft: 37, - arrowup: 38, - arrowright: 39, - arrowdown: 40, - insert: 45, - delete: 46, - meta: 91, - numlock: 144, - scrolllock: 145, - ';': 186, - '=': 187, - ',': 188, - '-': 189, - '.': 190, - '/': 191, - '`': 192, - '[': 219, - '\\': 220, - ']': 221, - '\'': 222 - }; - - for (var f = 1; f < 20; f++) { - CODES['f' + f] = 111 + f; - } - - /** - * Is hotkey? - */ - - function isHotkey(hotkey, options, event) { - if (options && !('byKey' in options)) { - event = options; - options = null; - } - - if (!Array.isArray(hotkey)) { - hotkey = [hotkey]; - } - - var array = hotkey.map(function (string) { - return parseHotkey(string, options); - }); - var check = function check(e) { - return array.some(function (object) { - return compareHotkey(object, e); - }); - }; - var ret = event == null ? check : check(event); - return ret; - } - - function isCodeHotkey(hotkey, event) { - return isHotkey(hotkey, event); - } - - function isKeyHotkey(hotkey, event) { - return isHotkey(hotkey, { byKey: true }, event); - } - - /** - * Parse. - */ - - function parseHotkey(hotkey, options) { - var byKey = options && options.byKey; - var ret = {}; - - // Special case to handle the `+` key since we use it as a separator. - hotkey = hotkey.replace('++', '+add'); - var values = hotkey.split('+'); - var length = values.length; - - // Ensure that all the modifiers are set to false unless the hotkey has them. - - for (var k in MODIFIERS) { - ret[MODIFIERS[k]] = false; - } - - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = values[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var value = _step.value; - - var optional = value.endsWith('?') && value.length > 1; - - if (optional) { - value = value.slice(0, -1); - } - - var name = toKeyName(value); - var modifier = MODIFIERS[name]; - - if (value.length > 1 && !modifier && !ALIASES[value] && !CODES[name]) { - throw new TypeError('Unknown modifier: "' + value + '"'); - } - - if (length === 1 || !modifier) { - if (byKey) { - ret.key = name; - } else { - ret.which = toKeyCode(value); - } - } - - if (modifier) { - ret[modifier] = optional ? null : true; - } - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - - return ret; - } - - /** - * Compare. - */ - - function compareHotkey(object, event) { - for (var key in object) { - var expected = object[key]; - var actual = void 0; - - if (expected == null) { - continue; - } - - if (key === 'key' && event.key != null) { - actual = event.key.toLowerCase(); - } else if (key === 'which') { - actual = expected === 91 && event.which === 93 ? 91 : event.which; - } else { - actual = event[key]; - } - - if (actual == null && expected === false) { - continue; - } - - if (actual !== expected) { - return false; - } - } - - return true; - } - - /** - * Utils. - */ - - function toKeyCode(name) { - name = toKeyName(name); - var code = CODES[name] || name.toUpperCase().charCodeAt(0); - return code; - } - - function toKeyName(name) { - name = name.toLowerCase(); - name = ALIASES[name] || name; - return name; - } - - /** - * Export. - */ - - var _default = isHotkey; - var isHotkey_1 = isHotkey; - var isCodeHotkey_1 = isCodeHotkey; - var isKeyHotkey_1 = isKeyHotkey; - var parseHotkey_1 = parseHotkey; - var compareHotkey_1 = compareHotkey; - var toKeyCode_1 = toKeyCode; - var toKeyName_1 = toKeyName; - - var lib$4 = /*#__PURE__*/Object.defineProperty({ - default: _default, - isHotkey: isHotkey_1, - isCodeHotkey: isCodeHotkey_1, - isKeyHotkey: isKeyHotkey_1, - parseHotkey: parseHotkey_1, - compareHotkey: compareHotkey_1, - toKeyCode: toKeyCode_1, - toKeyName: toKeyName_1 - }, '__esModule', {value: true}); - - /** - * lodash (Custom Build) - * Build: `lodash modularize exports="npm" -o ./` - * Copyright jQuery Foundation and other contributors - * Released under MIT license - * Based on Underscore.js 1.8.3 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */ - - /** Used as the `TypeError` message for "Functions" methods. */ - var FUNC_ERROR_TEXT = 'Expected a function'; - - /** Used as references for various `Number` constants. */ - var NAN = 0 / 0; - - /** `Object#toString` result references. */ - var symbolTag = '[object Symbol]'; - - /** Used to match leading and trailing whitespace. */ - var reTrim = /^\s+|\s+$/g; - - /** Used to detect bad signed hexadecimal string values. */ - var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; - - /** Used to detect binary string values. */ - var reIsBinary = /^0b[01]+$/i; - - /** Used to detect octal string values. */ - var reIsOctal = /^0o[0-7]+$/i; - - /** Built-in method references without a dependency on `root`. */ - var freeParseInt = parseInt; - - /** Detect free variable `global` from Node.js. */ - var freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal; - - /** Detect free variable `self`. */ - var freeSelf = typeof self == 'object' && self && self.Object === Object && self; - - /** Used as a reference to the global object. */ - var root = freeGlobal || freeSelf || Function('return this')(); - - /** Used for built-in method references. */ - var objectProto = Object.prototype; - - /** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ - var objectToString = objectProto.toString; - - /* Built-in method references for those with the same name as other `lodash` methods. */ - var nativeMax = Math.max, - nativeMin = Math.min; - - /** - * Gets the timestamp of the number of milliseconds that have elapsed since - * the Unix epoch (1 January 1970 00:00:00 UTC). - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Date - * @returns {number} Returns the timestamp. - * @example - * - * _.defer(function(stamp) { - * console.log(_.now() - stamp); - * }, _.now()); - * // => Logs the number of milliseconds it took for the deferred invocation. - */ - var now = function() { - return root.Date.now(); - }; - - /** - * Creates a debounced function that delays invoking `func` until after `wait` - * milliseconds have elapsed since the last time the debounced function was - * invoked. The debounced function comes with a `cancel` method to cancel - * delayed `func` invocations and a `flush` method to immediately invoke them. - * Provide `options` to indicate whether `func` should be invoked on the - * leading and/or trailing edge of the `wait` timeout. The `func` is invoked - * with the last arguments provided to the debounced function. Subsequent - * calls to the debounced function return the result of the last `func` - * invocation. - * - * **Note:** If `leading` and `trailing` options are `true`, `func` is - * invoked on the trailing edge of the timeout only if the debounced function - * is invoked more than once during the `wait` timeout. - * - * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred - * until to the next tick, similar to `setTimeout` with a timeout of `0`. - * - * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) - * for details over the differences between `_.debounce` and `_.throttle`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to debounce. - * @param {number} [wait=0] The number of milliseconds to delay. - * @param {Object} [options={}] The options object. - * @param {boolean} [options.leading=false] - * Specify invoking on the leading edge of the timeout. - * @param {number} [options.maxWait] - * The maximum time `func` is allowed to be delayed before it's invoked. - * @param {boolean} [options.trailing=true] - * Specify invoking on the trailing edge of the timeout. - * @returns {Function} Returns the new debounced function. - * @example - * - * // Avoid costly calculations while the window size is in flux. - * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); - * - * // Invoke `sendMail` when clicked, debouncing subsequent calls. - * jQuery(element).on('click', _.debounce(sendMail, 300, { - * 'leading': true, - * 'trailing': false - * })); - * - * // Ensure `batchLog` is invoked once after 1 second of debounced calls. - * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 }); - * var source = new EventSource('/stream'); - * jQuery(source).on('message', debounced); - * - * // Cancel the trailing debounced invocation. - * jQuery(window).on('popstate', debounced.cancel); - */ - function debounce$1(func, wait, options) { - var lastArgs, - lastThis, - maxWait, - result, - timerId, - lastCallTime, - lastInvokeTime = 0, - leading = false, - maxing = false, - trailing = true; - - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - wait = toNumber(wait) || 0; - if (isObject(options)) { - leading = !!options.leading; - maxing = 'maxWait' in options; - maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait; - trailing = 'trailing' in options ? !!options.trailing : trailing; - } - - function invokeFunc(time) { - var args = lastArgs, - thisArg = lastThis; - - lastArgs = lastThis = undefined; - lastInvokeTime = time; - result = func.apply(thisArg, args); - return result; - } - - function leadingEdge(time) { - // Reset any `maxWait` timer. - lastInvokeTime = time; - // Start the timer for the trailing edge. - timerId = setTimeout(timerExpired, wait); - // Invoke the leading edge. - return leading ? invokeFunc(time) : result; - } - - function remainingWait(time) { - var timeSinceLastCall = time - lastCallTime, - timeSinceLastInvoke = time - lastInvokeTime, - result = wait - timeSinceLastCall; - - return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result; - } - - function shouldInvoke(time) { - var timeSinceLastCall = time - lastCallTime, - timeSinceLastInvoke = time - lastInvokeTime; - - // Either this is the first call, activity has stopped and we're at the - // trailing edge, the system time has gone backwards and we're treating - // it as the trailing edge, or we've hit the `maxWait` limit. - return (lastCallTime === undefined || (timeSinceLastCall >= wait) || - (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait)); - } - - function timerExpired() { - var time = now(); - if (shouldInvoke(time)) { - return trailingEdge(time); - } - // Restart the timer. - timerId = setTimeout(timerExpired, remainingWait(time)); - } - - function trailingEdge(time) { - timerId = undefined; - - // Only invoke if we have `lastArgs` which means `func` has been - // debounced at least once. - if (trailing && lastArgs) { - return invokeFunc(time); - } - lastArgs = lastThis = undefined; - return result; - } - - function cancel() { - if (timerId !== undefined) { - clearTimeout(timerId); - } - lastInvokeTime = 0; - lastArgs = lastCallTime = lastThis = timerId = undefined; - } - - function flush() { - return timerId === undefined ? result : trailingEdge(now()); - } - - function debounced() { - var time = now(), - isInvoking = shouldInvoke(time); - - lastArgs = arguments; - lastThis = this; - lastCallTime = time; - - if (isInvoking) { - if (timerId === undefined) { - return leadingEdge(lastCallTime); - } - if (maxing) { - // Handle invocations in a tight loop. - timerId = setTimeout(timerExpired, wait); - return invokeFunc(lastCallTime); - } - } - if (timerId === undefined) { - timerId = setTimeout(timerExpired, wait); - } - return result; - } - debounced.cancel = cancel; - debounced.flush = flush; - return debounced; - } - - /** - * Checks if `value` is the - * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) - * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(_.noop); - * // => true - * - * _.isObject(null); - * // => false - */ - function isObject(value) { - var type = typeof value; - return !!value && (type == 'object' || type == 'function'); - } - - /** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ - function isObjectLike(value) { - return !!value && typeof value == 'object'; - } - - /** - * Checks if `value` is classified as a `Symbol` primitive or object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. - * @example - * - * _.isSymbol(Symbol.iterator); - * // => true - * - * _.isSymbol('abc'); - * // => false - */ - function isSymbol(value) { - return typeof value == 'symbol' || - (isObjectLike(value) && objectToString.call(value) == symbolTag); - } - - /** - * Converts `value` to a number. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to process. - * @returns {number} Returns the number. - * @example - * - * _.toNumber(3.2); - * // => 3.2 - * - * _.toNumber(Number.MIN_VALUE); - * // => 5e-324 - * - * _.toNumber(Infinity); - * // => Infinity - * - * _.toNumber('3.2'); - * // => 3.2 - */ - function toNumber(value) { - if (typeof value == 'number') { - return value; - } - if (isSymbol(value)) { - return NAN; - } - if (isObject(value)) { - var other = typeof value.valueOf == 'function' ? value.valueOf() : value; - value = isObject(other) ? (other + '') : other; - } - if (typeof value != 'string') { - return value === 0 ? value : +value; - } - value = value.replace(reTrim, ''); - var isBinary = reIsBinary.test(value); - return (isBinary || reIsOctal.test(value)) - ? freeParseInt(value.slice(2), isBinary ? 2 : 8) - : (reIsBadHex.test(value) ? NAN : +value); - } - - var lodash_debounce = debounce$1; - - /** - * lodash (Custom Build) - * Build: `lodash modularize exports="npm" -o ./` - * Copyright jQuery Foundation and other contributors - * Released under MIT license - * Based on Underscore.js 1.8.3 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */ - - var lodash_clonedeep = createCommonjsModule$1(function (module, exports) { - /** Used as the size to enable large array optimizations. */ - var LARGE_ARRAY_SIZE = 200; - - /** Used to stand-in for `undefined` hash values. */ - var HASH_UNDEFINED = '__lodash_hash_undefined__'; - - /** Used as references for various `Number` constants. */ - var MAX_SAFE_INTEGER = 9007199254740991; - - /** `Object#toString` result references. */ - var argsTag = '[object Arguments]', - arrayTag = '[object Array]', - boolTag = '[object Boolean]', - dateTag = '[object Date]', - errorTag = '[object Error]', - funcTag = '[object Function]', - genTag = '[object GeneratorFunction]', - mapTag = '[object Map]', - numberTag = '[object Number]', - objectTag = '[object Object]', - promiseTag = '[object Promise]', - regexpTag = '[object RegExp]', - setTag = '[object Set]', - stringTag = '[object String]', - symbolTag = '[object Symbol]', - weakMapTag = '[object WeakMap]'; - - var arrayBufferTag = '[object ArrayBuffer]', - dataViewTag = '[object DataView]', - float32Tag = '[object Float32Array]', - float64Tag = '[object Float64Array]', - int8Tag = '[object Int8Array]', - int16Tag = '[object Int16Array]', - int32Tag = '[object Int32Array]', - uint8Tag = '[object Uint8Array]', - uint8ClampedTag = '[object Uint8ClampedArray]', - uint16Tag = '[object Uint16Array]', - uint32Tag = '[object Uint32Array]'; - - /** - * Used to match `RegExp` - * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). - */ - var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; - - /** Used to match `RegExp` flags from their coerced string values. */ - var reFlags = /\w*$/; - - /** Used to detect host constructors (Safari). */ - var reIsHostCtor = /^\[object .+?Constructor\]$/; - - /** Used to detect unsigned integer values. */ - var reIsUint = /^(?:0|[1-9]\d*)$/; - - /** Used to identify `toStringTag` values supported by `_.clone`. */ - var cloneableTags = {}; - cloneableTags[argsTag] = cloneableTags[arrayTag] = - cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = - cloneableTags[boolTag] = cloneableTags[dateTag] = - cloneableTags[float32Tag] = cloneableTags[float64Tag] = - cloneableTags[int8Tag] = cloneableTags[int16Tag] = - cloneableTags[int32Tag] = cloneableTags[mapTag] = - cloneableTags[numberTag] = cloneableTags[objectTag] = - cloneableTags[regexpTag] = cloneableTags[setTag] = - cloneableTags[stringTag] = cloneableTags[symbolTag] = - cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = - cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; - cloneableTags[errorTag] = cloneableTags[funcTag] = - cloneableTags[weakMapTag] = false; - - /** Detect free variable `global` from Node.js. */ - var freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal; - - /** Detect free variable `self`. */ - var freeSelf = typeof self == 'object' && self && self.Object === Object && self; - - /** Used as a reference to the global object. */ - var root = freeGlobal || freeSelf || Function('return this')(); - - /** Detect free variable `exports`. */ - var freeExports = exports && !exports.nodeType && exports; - - /** Detect free variable `module`. */ - var freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module; - - /** Detect the popular CommonJS extension `module.exports`. */ - var moduleExports = freeModule && freeModule.exports === freeExports; - - /** - * Adds the key-value `pair` to `map`. - * - * @private - * @param {Object} map The map to modify. - * @param {Array} pair The key-value pair to add. - * @returns {Object} Returns `map`. - */ - function addMapEntry(map, pair) { - // Don't return `map.set` because it's not chainable in IE 11. - map.set(pair[0], pair[1]); - return map; - } - - /** - * Adds `value` to `set`. - * - * @private - * @param {Object} set The set to modify. - * @param {*} value The value to add. - * @returns {Object} Returns `set`. - */ - function addSetEntry(set, value) { - // Don't return `set.add` because it's not chainable in IE 11. - set.add(value); - return set; - } - - /** - * A specialized version of `_.forEach` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns `array`. - */ - function arrayEach(array, iteratee) { - var index = -1, - length = array ? array.length : 0; - - while (++index < length) { - if (iteratee(array[index], index, array) === false) { - break; - } - } - return array; - } - - /** - * Appends the elements of `values` to `array`. - * - * @private - * @param {Array} array The array to modify. - * @param {Array} values The values to append. - * @returns {Array} Returns `array`. - */ - function arrayPush(array, values) { - var index = -1, - length = values.length, - offset = array.length; - - while (++index < length) { - array[offset + index] = values[index]; - } - return array; - } - - /** - * A specialized version of `_.reduce` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @param {boolean} [initAccum] Specify using the first element of `array` as - * the initial value. - * @returns {*} Returns the accumulated value. - */ - function arrayReduce(array, iteratee, accumulator, initAccum) { - var index = -1, - length = array ? array.length : 0; - - if (initAccum && length) { - accumulator = array[++index]; - } - while (++index < length) { - accumulator = iteratee(accumulator, array[index], index, array); - } - return accumulator; - } - - /** - * The base implementation of `_.times` without support for iteratee shorthands - * or max array length checks. - * - * @private - * @param {number} n The number of times to invoke `iteratee`. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the array of results. - */ - function baseTimes(n, iteratee) { - var index = -1, - result = Array(n); - - while (++index < n) { - result[index] = iteratee(index); - } - return result; - } - - /** - * Gets the value at `key` of `object`. - * - * @private - * @param {Object} [object] The object to query. - * @param {string} key The key of the property to get. - * @returns {*} Returns the property value. - */ - function getValue(object, key) { - return object == null ? undefined : object[key]; - } - - /** - * Checks if `value` is a host object in IE < 9. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a host object, else `false`. - */ - function isHostObject(value) { - // Many host objects are `Object` objects that can coerce to strings - // despite having improperly defined `toString` methods. - var result = false; - if (value != null && typeof value.toString != 'function') { - try { - result = !!(value + ''); - } catch (e) {} - } - return result; - } - - /** - * Converts `map` to its key-value pairs. - * - * @private - * @param {Object} map The map to convert. - * @returns {Array} Returns the key-value pairs. - */ - function mapToArray(map) { - var index = -1, - result = Array(map.size); - - map.forEach(function(value, key) { - result[++index] = [key, value]; - }); - return result; - } - - /** - * Creates a unary function that invokes `func` with its argument transformed. - * - * @private - * @param {Function} func The function to wrap. - * @param {Function} transform The argument transform. - * @returns {Function} Returns the new function. - */ - function overArg(func, transform) { - return function(arg) { - return func(transform(arg)); - }; - } - - /** - * Converts `set` to an array of its values. - * - * @private - * @param {Object} set The set to convert. - * @returns {Array} Returns the values. - */ - function setToArray(set) { - var index = -1, - result = Array(set.size); - - set.forEach(function(value) { - result[++index] = value; - }); - return result; - } - - /** Used for built-in method references. */ - var arrayProto = Array.prototype, - funcProto = Function.prototype, - objectProto = Object.prototype; - - /** Used to detect overreaching core-js shims. */ - var coreJsData = root['__core-js_shared__']; - - /** Used to detect methods masquerading as native. */ - var maskSrcKey = (function() { - var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); - return uid ? ('Symbol(src)_1.' + uid) : ''; - }()); - - /** Used to resolve the decompiled source of functions. */ - var funcToString = funcProto.toString; - - /** Used to check objects for own properties. */ - var hasOwnProperty = objectProto.hasOwnProperty; - - /** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ - var objectToString = objectProto.toString; - - /** Used to detect if a method is native. */ - var reIsNative = RegExp('^' + - funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') - .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' - ); - - /** Built-in value references. */ - var Buffer = moduleExports ? root.Buffer : undefined, - Symbol = root.Symbol, - Uint8Array = root.Uint8Array, - getPrototype = overArg(Object.getPrototypeOf, Object), - objectCreate = Object.create, - propertyIsEnumerable = objectProto.propertyIsEnumerable, - splice = arrayProto.splice; - - /* Built-in method references for those with the same name as other `lodash` methods. */ - var nativeGetSymbols = Object.getOwnPropertySymbols, - nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined, - nativeKeys = overArg(Object.keys, Object); - - /* Built-in method references that are verified to be native. */ - var DataView = getNative(root, 'DataView'), - Map = getNative(root, 'Map'), - Promise = getNative(root, 'Promise'), - Set = getNative(root, 'Set'), - WeakMap = getNative(root, 'WeakMap'), - nativeCreate = getNative(Object, 'create'); - - /** Used to detect maps, sets, and weakmaps. */ - var dataViewCtorString = toSource(DataView), - mapCtorString = toSource(Map), - promiseCtorString = toSource(Promise), - setCtorString = toSource(Set), - weakMapCtorString = toSource(WeakMap); - - /** Used to convert symbols to primitives and strings. */ - var symbolProto = Symbol ? Symbol.prototype : undefined, - symbolValueOf = symbolProto ? symbolProto.valueOf : undefined; - - /** - * Creates a hash object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ - function Hash(entries) { - var index = -1, - length = entries ? entries.length : 0; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } - } - - /** - * Removes all key-value entries from the hash. - * - * @private - * @name clear - * @memberOf Hash - */ - function hashClear() { - this.__data__ = nativeCreate ? nativeCreate(null) : {}; - } - - /** - * Removes `key` and its value from the hash. - * - * @private - * @name delete - * @memberOf Hash - * @param {Object} hash The hash to modify. - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ - function hashDelete(key) { - return this.has(key) && delete this.__data__[key]; - } - - /** - * Gets the hash value for `key`. - * - * @private - * @name get - * @memberOf Hash - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ - function hashGet(key) { - var data = this.__data__; - if (nativeCreate) { - var result = data[key]; - return result === HASH_UNDEFINED ? undefined : result; - } - return hasOwnProperty.call(data, key) ? data[key] : undefined; - } - - /** - * Checks if a hash value for `key` exists. - * - * @private - * @name has - * @memberOf Hash - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function hashHas(key) { - var data = this.__data__; - return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key); - } - - /** - * Sets the hash `key` to `value`. - * - * @private - * @name set - * @memberOf Hash - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the hash instance. - */ - function hashSet(key, value) { - var data = this.__data__; - data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; - return this; - } - - // Add methods to `Hash`. - Hash.prototype.clear = hashClear; - Hash.prototype['delete'] = hashDelete; - Hash.prototype.get = hashGet; - Hash.prototype.has = hashHas; - Hash.prototype.set = hashSet; - - /** - * Creates an list cache object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ - function ListCache(entries) { - var index = -1, - length = entries ? entries.length : 0; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } - } - - /** - * Removes all key-value entries from the list cache. - * - * @private - * @name clear - * @memberOf ListCache - */ - function listCacheClear() { - this.__data__ = []; - } - - /** - * Removes `key` and its value from the list cache. - * - * @private - * @name delete - * @memberOf ListCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ - function listCacheDelete(key) { - var data = this.__data__, - index = assocIndexOf(data, key); - - if (index < 0) { - return false; - } - var lastIndex = data.length - 1; - if (index == lastIndex) { - data.pop(); - } else { - splice.call(data, index, 1); - } - return true; - } - - /** - * Gets the list cache value for `key`. - * - * @private - * @name get - * @memberOf ListCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ - function listCacheGet(key) { - var data = this.__data__, - index = assocIndexOf(data, key); - - return index < 0 ? undefined : data[index][1]; - } - - /** - * Checks if a list cache value for `key` exists. - * - * @private - * @name has - * @memberOf ListCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function listCacheHas(key) { - return assocIndexOf(this.__data__, key) > -1; - } - - /** - * Sets the list cache `key` to `value`. - * - * @private - * @name set - * @memberOf ListCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the list cache instance. - */ - function listCacheSet(key, value) { - var data = this.__data__, - index = assocIndexOf(data, key); - - if (index < 0) { - data.push([key, value]); - } else { - data[index][1] = value; - } - return this; - } - - // Add methods to `ListCache`. - ListCache.prototype.clear = listCacheClear; - ListCache.prototype['delete'] = listCacheDelete; - ListCache.prototype.get = listCacheGet; - ListCache.prototype.has = listCacheHas; - ListCache.prototype.set = listCacheSet; - - /** - * Creates a map cache object to store key-value pairs. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ - function MapCache(entries) { - var index = -1, - length = entries ? entries.length : 0; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } - } - - /** - * Removes all key-value entries from the map. - * - * @private - * @name clear - * @memberOf MapCache - */ - function mapCacheClear() { - this.__data__ = { - 'hash': new Hash, - 'map': new (Map || ListCache), - 'string': new Hash - }; - } - - /** - * Removes `key` and its value from the map. - * - * @private - * @name delete - * @memberOf MapCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ - function mapCacheDelete(key) { - return getMapData(this, key)['delete'](key); - } - - /** - * Gets the map value for `key`. - * - * @private - * @name get - * @memberOf MapCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ - function mapCacheGet(key) { - return getMapData(this, key).get(key); - } - - /** - * Checks if a map value for `key` exists. - * - * @private - * @name has - * @memberOf MapCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function mapCacheHas(key) { - return getMapData(this, key).has(key); - } - - /** - * Sets the map `key` to `value`. - * - * @private - * @name set - * @memberOf MapCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the map cache instance. - */ - function mapCacheSet(key, value) { - getMapData(this, key).set(key, value); - return this; - } - - // Add methods to `MapCache`. - MapCache.prototype.clear = mapCacheClear; - MapCache.prototype['delete'] = mapCacheDelete; - MapCache.prototype.get = mapCacheGet; - MapCache.prototype.has = mapCacheHas; - MapCache.prototype.set = mapCacheSet; - - /** - * Creates a stack cache object to store key-value pairs. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ - function Stack(entries) { - this.__data__ = new ListCache(entries); - } - - /** - * Removes all key-value entries from the stack. - * - * @private - * @name clear - * @memberOf Stack - */ - function stackClear() { - this.__data__ = new ListCache; - } - - /** - * Removes `key` and its value from the stack. - * - * @private - * @name delete - * @memberOf Stack - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ - function stackDelete(key) { - return this.__data__['delete'](key); - } - - /** - * Gets the stack value for `key`. - * - * @private - * @name get - * @memberOf Stack - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ - function stackGet(key) { - return this.__data__.get(key); - } - - /** - * Checks if a stack value for `key` exists. - * - * @private - * @name has - * @memberOf Stack - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function stackHas(key) { - return this.__data__.has(key); - } - - /** - * Sets the stack `key` to `value`. - * - * @private - * @name set - * @memberOf Stack - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the stack cache instance. - */ - function stackSet(key, value) { - var cache = this.__data__; - if (cache instanceof ListCache) { - var pairs = cache.__data__; - if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { - pairs.push([key, value]); - return this; - } - cache = this.__data__ = new MapCache(pairs); - } - cache.set(key, value); - return this; - } - - // Add methods to `Stack`. - Stack.prototype.clear = stackClear; - Stack.prototype['delete'] = stackDelete; - Stack.prototype.get = stackGet; - Stack.prototype.has = stackHas; - Stack.prototype.set = stackSet; - - /** - * Creates an array of the enumerable property names of the array-like `value`. - * - * @private - * @param {*} value The value to query. - * @param {boolean} inherited Specify returning inherited property names. - * @returns {Array} Returns the array of property names. - */ - function arrayLikeKeys(value, inherited) { - // Safari 8.1 makes `arguments.callee` enumerable in strict mode. - // Safari 9 makes `arguments.length` enumerable in strict mode. - var result = (isArray(value) || isArguments(value)) - ? baseTimes(value.length, String) - : []; - - var length = result.length, - skipIndexes = !!length; - - for (var key in value) { - if ((inherited || hasOwnProperty.call(value, key)) && - !(skipIndexes && (key == 'length' || isIndex(key, length)))) { - result.push(key); - } - } - return result; - } - - /** - * Assigns `value` to `key` of `object` if the existing value is not equivalent - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ - function assignValue(object, key, value) { - var objValue = object[key]; - if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || - (value === undefined && !(key in object))) { - object[key] = value; - } - } - - /** - * Gets the index at which the `key` is found in `array` of key-value pairs. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} key The key to search for. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function assocIndexOf(array, key) { - var length = array.length; - while (length--) { - if (eq(array[length][0], key)) { - return length; - } - } - return -1; - } - - /** - * The base implementation of `_.assign` without support for multiple sources - * or `customizer` functions. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @returns {Object} Returns `object`. - */ - function baseAssign(object, source) { - return object && copyObject(source, keys(source), object); - } - - /** - * The base implementation of `_.clone` and `_.cloneDeep` which tracks - * traversed objects. - * - * @private - * @param {*} value The value to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @param {boolean} [isFull] Specify a clone including symbols. - * @param {Function} [customizer] The function to customize cloning. - * @param {string} [key] The key of `value`. - * @param {Object} [object] The parent object of `value`. - * @param {Object} [stack] Tracks traversed objects and their clone counterparts. - * @returns {*} Returns the cloned value. - */ - function baseClone(value, isDeep, isFull, customizer, key, object, stack) { - var result; - if (customizer) { - result = object ? customizer(value, key, object, stack) : customizer(value); - } - if (result !== undefined) { - return result; - } - if (!isObject(value)) { - return value; - } - var isArr = isArray(value); - if (isArr) { - result = initCloneArray(value); - if (!isDeep) { - return copyArray(value, result); - } - } else { - var tag = getTag(value), - isFunc = tag == funcTag || tag == genTag; - - if (isBuffer(value)) { - return cloneBuffer(value, isDeep); - } - if (tag == objectTag || tag == argsTag || (isFunc && !object)) { - if (isHostObject(value)) { - return object ? value : {}; - } - result = initCloneObject(isFunc ? {} : value); - if (!isDeep) { - return copySymbols(value, baseAssign(result, value)); - } - } else { - if (!cloneableTags[tag]) { - return object ? value : {}; - } - result = initCloneByTag(value, tag, baseClone, isDeep); - } - } - // Check for circular references and return its corresponding clone. - stack || (stack = new Stack); - var stacked = stack.get(value); - if (stacked) { - return stacked; - } - stack.set(value, result); - - if (!isArr) { - var props = isFull ? getAllKeys(value) : keys(value); - } - arrayEach(props || value, function(subValue, key) { - if (props) { - key = subValue; - subValue = value[key]; - } - // Recursively populate clone (susceptible to call stack limits). - assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack)); - }); - return result; - } - - /** - * The base implementation of `_.create` without support for assigning - * properties to the created object. - * - * @private - * @param {Object} prototype The object to inherit from. - * @returns {Object} Returns the new object. - */ - function baseCreate(proto) { - return isObject(proto) ? objectCreate(proto) : {}; - } - - /** - * The base implementation of `getAllKeys` and `getAllKeysIn` which uses - * `keysFunc` and `symbolsFunc` to get the enumerable property names and - * symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {Function} keysFunc The function to get the keys of `object`. - * @param {Function} symbolsFunc The function to get the symbols of `object`. - * @returns {Array} Returns the array of property names and symbols. - */ - function baseGetAllKeys(object, keysFunc, symbolsFunc) { - var result = keysFunc(object); - return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); - } - - /** - * The base implementation of `getTag`. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ - function baseGetTag(value) { - return objectToString.call(value); - } - - /** - * The base implementation of `_.isNative` without bad shim checks. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a native function, - * else `false`. - */ - function baseIsNative(value) { - if (!isObject(value) || isMasked(value)) { - return false; - } - var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor; - return pattern.test(toSource(value)); - } - - /** - * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ - function baseKeys(object) { - if (!isPrototype(object)) { - return nativeKeys(object); - } - var result = []; - for (var key in Object(object)) { - if (hasOwnProperty.call(object, key) && key != 'constructor') { - result.push(key); - } - } - return result; - } - - /** - * Creates a clone of `buffer`. - * - * @private - * @param {Buffer} buffer The buffer to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Buffer} Returns the cloned buffer. - */ - function cloneBuffer(buffer, isDeep) { - if (isDeep) { - return buffer.slice(); - } - var result = new buffer.constructor(buffer.length); - buffer.copy(result); - return result; - } - - /** - * Creates a clone of `arrayBuffer`. - * - * @private - * @param {ArrayBuffer} arrayBuffer The array buffer to clone. - * @returns {ArrayBuffer} Returns the cloned array buffer. - */ - function cloneArrayBuffer(arrayBuffer) { - var result = new arrayBuffer.constructor(arrayBuffer.byteLength); - new Uint8Array(result).set(new Uint8Array(arrayBuffer)); - return result; - } - - /** - * Creates a clone of `dataView`. - * - * @private - * @param {Object} dataView The data view to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the cloned data view. - */ - function cloneDataView(dataView, isDeep) { - var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; - return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); - } - - /** - * Creates a clone of `map`. - * - * @private - * @param {Object} map The map to clone. - * @param {Function} cloneFunc The function to clone values. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the cloned map. - */ - function cloneMap(map, isDeep, cloneFunc) { - var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map); - return arrayReduce(array, addMapEntry, new map.constructor); - } - - /** - * Creates a clone of `regexp`. - * - * @private - * @param {Object} regexp The regexp to clone. - * @returns {Object} Returns the cloned regexp. - */ - function cloneRegExp(regexp) { - var result = new regexp.constructor(regexp.source, reFlags.exec(regexp)); - result.lastIndex = regexp.lastIndex; - return result; - } - - /** - * Creates a clone of `set`. - * - * @private - * @param {Object} set The set to clone. - * @param {Function} cloneFunc The function to clone values. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the cloned set. - */ - function cloneSet(set, isDeep, cloneFunc) { - var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set); - return arrayReduce(array, addSetEntry, new set.constructor); - } - - /** - * Creates a clone of the `symbol` object. - * - * @private - * @param {Object} symbol The symbol object to clone. - * @returns {Object} Returns the cloned symbol object. - */ - function cloneSymbol(symbol) { - return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {}; - } - - /** - * Creates a clone of `typedArray`. - * - * @private - * @param {Object} typedArray The typed array to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the cloned typed array. - */ - function cloneTypedArray(typedArray, isDeep) { - var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; - return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); - } - - /** - * Copies the values of `source` to `array`. - * - * @private - * @param {Array} source The array to copy values from. - * @param {Array} [array=[]] The array to copy values to. - * @returns {Array} Returns `array`. - */ - function copyArray(source, array) { - var index = -1, - length = source.length; - - array || (array = Array(length)); - while (++index < length) { - array[index] = source[index]; - } - return array; - } - - /** - * Copies properties of `source` to `object`. - * - * @private - * @param {Object} source The object to copy properties from. - * @param {Array} props The property identifiers to copy. - * @param {Object} [object={}] The object to copy properties to. - * @param {Function} [customizer] The function to customize copied values. - * @returns {Object} Returns `object`. - */ - function copyObject(source, props, object, customizer) { - object || (object = {}); - - var index = -1, - length = props.length; - - while (++index < length) { - var key = props[index]; - - var newValue = customizer - ? customizer(object[key], source[key], key, object, source) - : undefined; - - assignValue(object, key, newValue === undefined ? source[key] : newValue); - } - return object; - } - - /** - * Copies own symbol properties of `source` to `object`. - * - * @private - * @param {Object} source The object to copy symbols from. - * @param {Object} [object={}] The object to copy symbols to. - * @returns {Object} Returns `object`. - */ - function copySymbols(source, object) { - return copyObject(source, getSymbols(source), object); - } - - /** - * Creates an array of own enumerable property names and symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names and symbols. - */ - function getAllKeys(object) { - return baseGetAllKeys(object, keys, getSymbols); - } - - /** - * Gets the data for `map`. - * - * @private - * @param {Object} map The map to query. - * @param {string} key The reference key. - * @returns {*} Returns the map data. - */ - function getMapData(map, key) { - var data = map.__data__; - return isKeyable(key) - ? data[typeof key == 'string' ? 'string' : 'hash'] - : data.map; - } - - /** - * Gets the native function at `key` of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the method to get. - * @returns {*} Returns the function if it's native, else `undefined`. - */ - function getNative(object, key) { - var value = getValue(object, key); - return baseIsNative(value) ? value : undefined; - } - - /** - * Creates an array of the own enumerable symbol properties of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of symbols. - */ - var getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray; - - /** - * Gets the `toStringTag` of `value`. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ - var getTag = baseGetTag; - - // Fallback for data views, maps, sets, and weak maps in IE 11, - // for data views in Edge < 14, and promises in Node.js. - if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || - (Map && getTag(new Map) != mapTag) || - (Promise && getTag(Promise.resolve()) != promiseTag) || - (Set && getTag(new Set) != setTag) || - (WeakMap && getTag(new WeakMap) != weakMapTag)) { - getTag = function(value) { - var result = objectToString.call(value), - Ctor = result == objectTag ? value.constructor : undefined, - ctorString = Ctor ? toSource(Ctor) : undefined; - - if (ctorString) { - switch (ctorString) { - case dataViewCtorString: return dataViewTag; - case mapCtorString: return mapTag; - case promiseCtorString: return promiseTag; - case setCtorString: return setTag; - case weakMapCtorString: return weakMapTag; - } - } - return result; - }; - } - - /** - * Initializes an array clone. - * - * @private - * @param {Array} array The array to clone. - * @returns {Array} Returns the initialized clone. - */ - function initCloneArray(array) { - var length = array.length, - result = array.constructor(length); - - // Add properties assigned by `RegExp#exec`. - if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { - result.index = array.index; - result.input = array.input; - } - return result; - } - - /** - * Initializes an object clone. - * - * @private - * @param {Object} object The object to clone. - * @returns {Object} Returns the initialized clone. - */ - function initCloneObject(object) { - return (typeof object.constructor == 'function' && !isPrototype(object)) - ? baseCreate(getPrototype(object)) - : {}; - } - - /** - * Initializes an object clone based on its `toStringTag`. - * - * **Note:** This function only supports cloning values with tags of - * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. - * - * @private - * @param {Object} object The object to clone. - * @param {string} tag The `toStringTag` of the object to clone. - * @param {Function} cloneFunc The function to clone values. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the initialized clone. - */ - function initCloneByTag(object, tag, cloneFunc, isDeep) { - var Ctor = object.constructor; - switch (tag) { - case arrayBufferTag: - return cloneArrayBuffer(object); - - case boolTag: - case dateTag: - return new Ctor(+object); - - case dataViewTag: - return cloneDataView(object, isDeep); - - case float32Tag: case float64Tag: - case int8Tag: case int16Tag: case int32Tag: - case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: - return cloneTypedArray(object, isDeep); - - case mapTag: - return cloneMap(object, isDeep, cloneFunc); - - case numberTag: - case stringTag: - return new Ctor(object); - - case regexpTag: - return cloneRegExp(object); - - case setTag: - return cloneSet(object, isDeep, cloneFunc); - - case symbolTag: - return cloneSymbol(object); - } - } - - /** - * Checks if `value` is a valid array-like index. - * - * @private - * @param {*} value The value to check. - * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. - * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. - */ - function isIndex(value, length) { - length = length == null ? MAX_SAFE_INTEGER : length; - return !!length && - (typeof value == 'number' || reIsUint.test(value)) && - (value > -1 && value % 1 == 0 && value < length); - } - - /** - * Checks if `value` is suitable for use as unique object key. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is suitable, else `false`. - */ - function isKeyable(value) { - var type = typeof value; - return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') - ? (value !== '__proto__') - : (value === null); - } - - /** - * Checks if `func` has its source masked. - * - * @private - * @param {Function} func The function to check. - * @returns {boolean} Returns `true` if `func` is masked, else `false`. - */ - function isMasked(func) { - return !!maskSrcKey && (maskSrcKey in func); - } - - /** - * Checks if `value` is likely a prototype object. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. - */ - function isPrototype(value) { - var Ctor = value && value.constructor, - proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; - - return value === proto; - } - - /** - * Converts `func` to its source code. - * - * @private - * @param {Function} func The function to process. - * @returns {string} Returns the source code. - */ - function toSource(func) { - if (func != null) { - try { - return funcToString.call(func); - } catch (e) {} - try { - return (func + ''); - } catch (e) {} - } - return ''; - } - - /** - * This method is like `_.clone` except that it recursively clones `value`. - * - * @static - * @memberOf _ - * @since 1.0.0 - * @category Lang - * @param {*} value The value to recursively clone. - * @returns {*} Returns the deep cloned value. - * @see _.clone - * @example - * - * var objects = [{ 'a': 1 }, { 'b': 2 }]; - * - * var deep = _.cloneDeep(objects); - * console.log(deep[0] === objects[0]); - * // => false - */ - function cloneDeep(value) { - return baseClone(value, true, true); - } - - /** - * Performs a - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * comparison between two values to determine if they are equivalent. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'a': 1 }; - * var other = { 'a': 1 }; - * - * _.eq(object, object); - * // => true - * - * _.eq(object, other); - * // => false - * - * _.eq('a', 'a'); - * // => true - * - * _.eq('a', Object('a')); - * // => false - * - * _.eq(NaN, NaN); - * // => true - */ - function eq(value, other) { - return value === other || (value !== value && other !== other); - } - - /** - * Checks if `value` is likely an `arguments` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an `arguments` object, - * else `false`. - * @example - * - * _.isArguments(function() { return arguments; }()); - * // => true - * - * _.isArguments([1, 2, 3]); - * // => false - */ - function isArguments(value) { - // Safari 8.1 makes `arguments.callee` enumerable in strict mode. - return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && - (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag); - } - - /** - * Checks if `value` is classified as an `Array` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array, else `false`. - * @example - * - * _.isArray([1, 2, 3]); - * // => true - * - * _.isArray(document.body.children); - * // => false - * - * _.isArray('abc'); - * // => false - * - * _.isArray(_.noop); - * // => false - */ - var isArray = Array.isArray; - - /** - * Checks if `value` is array-like. A value is considered array-like if it's - * not a function and has a `value.length` that's an integer greater than or - * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is array-like, else `false`. - * @example - * - * _.isArrayLike([1, 2, 3]); - * // => true - * - * _.isArrayLike(document.body.children); - * // => true - * - * _.isArrayLike('abc'); - * // => true - * - * _.isArrayLike(_.noop); - * // => false - */ - function isArrayLike(value) { - return value != null && isLength(value.length) && !isFunction(value); - } - - /** - * This method is like `_.isArrayLike` except that it also checks if `value` - * is an object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array-like object, - * else `false`. - * @example - * - * _.isArrayLikeObject([1, 2, 3]); - * // => true - * - * _.isArrayLikeObject(document.body.children); - * // => true - * - * _.isArrayLikeObject('abc'); - * // => false - * - * _.isArrayLikeObject(_.noop); - * // => false - */ - function isArrayLikeObject(value) { - return isObjectLike(value) && isArrayLike(value); - } - - /** - * Checks if `value` is a buffer. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. - * @example - * - * _.isBuffer(new Buffer(2)); - * // => true - * - * _.isBuffer(new Uint8Array(2)); - * // => false - */ - var isBuffer = nativeIsBuffer || stubFalse; - - /** - * Checks if `value` is classified as a `Function` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a function, else `false`. - * @example - * - * _.isFunction(_); - * // => true - * - * _.isFunction(/abc/); - * // => false - */ - function isFunction(value) { - // The use of `Object#toString` avoids issues with the `typeof` operator - // in Safari 8-9 which returns 'object' for typed array and other constructors. - var tag = isObject(value) ? objectToString.call(value) : ''; - return tag == funcTag || tag == genTag; - } - - /** - * Checks if `value` is a valid array-like length. - * - * **Note:** This method is loosely based on - * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. - * @example - * - * _.isLength(3); - * // => true - * - * _.isLength(Number.MIN_VALUE); - * // => false - * - * _.isLength(Infinity); - * // => false - * - * _.isLength('3'); - * // => false - */ - function isLength(value) { - return typeof value == 'number' && - value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; - } - - /** - * Checks if `value` is the - * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) - * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(_.noop); - * // => true - * - * _.isObject(null); - * // => false - */ - function isObject(value) { - var type = typeof value; - return !!value && (type == 'object' || type == 'function'); - } - - /** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ - function isObjectLike(value) { - return !!value && typeof value == 'object'; - } - - /** - * Creates an array of the own enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. See the - * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) - * for more details. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keys(new Foo); - * // => ['a', 'b'] (iteration order is not guaranteed) - * - * _.keys('hi'); - * // => ['0', '1'] - */ - function keys(object) { - return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); - } - - /** - * This method returns a new empty array. - * - * @static - * @memberOf _ - * @since 4.13.0 - * @category Util - * @returns {Array} Returns the new empty array. - * @example - * - * var arrays = _.times(2, _.stubArray); - * - * console.log(arrays); - * // => [[], []] - * - * console.log(arrays[0] === arrays[1]); - * // => false - */ - function stubArray() { - return []; - } - - /** - * This method returns `false`. - * - * @static - * @memberOf _ - * @since 4.13.0 - * @category Util - * @returns {boolean} Returns `false`. - * @example - * - * _.times(2, _.stubFalse); - * // => [false, false] - */ - function stubFalse() { - return false; - } - - module.exports = cloneDeep; - }); - - var hasProperty = function has(object, key) { - return Object.prototype.hasOwnProperty.call(object, key); - }; - - var _apply; - - function _classPrivateFieldLooseBase$8(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError("attempted to use private field on non-instance"); } return receiver; } - - var id$8 = 0; - - function _classPrivateFieldLooseKey$8(name) { return "__private_" + id$8++ + "_" + name; } - - - - function insertReplacement(source, rx, replacement) { - const newParts = []; - source.forEach(chunk => { - // When the source contains multiple placeholders for interpolation, - // we should ignore chunks that are not strings, because those - // can be JSX objects and will be otherwise incorrectly turned into strings. - // Without this condition we’d get this: [object Object] hello [object Object] my