├── .gitignore
├── README.md
├── chat
├── __init__.py
├── apps.py
├── consumers.py
├── management
│ ├── __init__.py
│ └── commands
│ │ ├── __init__.py
│ │ └── train.py
├── migrations
│ └── __init__.py
├── routing.py
├── tasks.py
├── templates
│ └── chat
│ │ └── chat.html
├── urls.py
└── views.py
├── config
├── __init__.py
├── asgi.py
├── celery.py
├── settings
│ ├── __init__.py
│ ├── base.py
│ ├── development.py
│ └── production.py
├── urls.py
└── wsgi.py
├── entrypoint.sh
├── manage.py
├── requirements.txt
└── theme
├── __init__.py
├── apps.py
├── static_src
├── .gitignore
├── package-lock.json
├── package.json
├── postcss.config.js
├── src
│ └── styles.css
└── tailwind.config.js
└── templates
└── base.html
/.gitignore:
--------------------------------------------------------------------------------
1 | # Byte-compiled / optimized / DLL files
2 | __pycache__/
3 | *.py[cod]
4 | *$py.class
5 |
6 | # C extensions
7 | *.so
8 |
9 | # Distribution / packaging
10 | .Python
11 | build/
12 | develop-eggs/
13 | dist/
14 | downloads/
15 | eggs/
16 | .eggs/
17 | lib/
18 | lib64/
19 | parts/
20 | sdist/
21 | var/
22 | wheels/
23 | pip-wheel-metadata/
24 | share/python-wheels/
25 | *.egg-info/
26 | .installed.cfg
27 | *.egg
28 | MANIFEST
29 |
30 | # PyInstaller
31 | # Usually these files are written by a python script from a template
32 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
33 | *.manifest
34 | *.spec
35 |
36 | # Installer logs
37 | pip-log.txt
38 | pip-delete-this-directory.txt
39 |
40 | # Unit test / coverage reports
41 | htmlcov/
42 | .tox/
43 | .nox/
44 | .coverage
45 | .coverage.*
46 | .cache
47 | nosetests.xml
48 | coverage.xml
49 | *.cover
50 | *.py,cover
51 | .hypothesis/
52 | .pytest_cache/
53 |
54 | # Translations
55 | *.mo
56 | *.pot
57 |
58 | # Django stuff:
59 | *.log
60 | local_settings.py
61 | db.sqlite3
62 | db.sqlite3-journal
63 |
64 | # Flask stuff:
65 | instance/
66 | .webassets-cache
67 |
68 | # Scrapy stuff:
69 | .scrapy
70 |
71 | # Sphinx documentation
72 | docs/_build/
73 |
74 | # PyBuilder
75 | target/
76 |
77 | # Jupyter Notebook
78 | .ipynb_checkpoints
79 |
80 | # IPython
81 | profile_default/
82 | ipython_config.py
83 |
84 | # pyenv
85 | .python-version
86 |
87 | # pipenv
88 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
89 | # However, in case of collaboration, if having platform-specific dependencies or dependencies
90 | # having no cross-platform support, pipenv may install dependencies that don't work, or not
91 | # install all needed dependencies.
92 | #Pipfile.lock
93 |
94 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow
95 | __pypackages__/
96 |
97 | # Celery stuff
98 | celerybeat-schedule
99 | celerybeat.pid
100 |
101 | # SageMath parsed files
102 | *.sage.py
103 |
104 | # Environments
105 | .env
106 | .venv
107 | env/
108 | venv/
109 | ENV/
110 | env.bak/
111 | venv.bak/
112 |
113 | # Spyder project settings
114 | .spyderproject
115 | .spyproject
116 |
117 | # Rope project settings
118 | .ropeproject
119 |
120 | # mkdocs documentation
121 | /site
122 |
123 | # mypy
124 | .mypy_cache/
125 | .dmypy.json
126 | dmypy.json
127 |
128 | # Pyre type checker
129 | .pyre/
130 |
131 | /data
132 |
133 | media/
134 | mediafiles/
135 | staticfiles/
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # ChatBot Using Django
2 |
3 | Build a Chatbot Using Python, Django
4 |
5 | 
6 |
7 | ## Technologies Used
8 | - ChatterBot Library - To generate automated responses to a user’s input.
9 | - Celery - Getting the automated response from a machine-learning dialog engine is going to take a while. So Celery will be used to perform this task in the background.
10 | - WebSockets using Django Channels - To send to the client the automated response generated by the machine learning model immediately when it’s available.
11 | - Redis - Will be used as a message broker and result backend for Celery. In addition, it will be used as a channel layer for WebSocket communication.
12 | - TailwindCSS - To create the user interface.
13 |
14 | Related blog post: https://dev.to/documatic/build-a-chatbot-using-python-django-46hb
15 |
--------------------------------------------------------------------------------
/chat/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dawn0123/chatbot_using_django/e7547c17b41ca92524529fc5243882041299453b/chat/__init__.py
--------------------------------------------------------------------------------
/chat/apps.py:
--------------------------------------------------------------------------------
1 | from django.apps import AppConfig
2 |
3 |
4 | class ChatConfig(AppConfig):
5 | default_auto_field = 'django.db.models.BigAutoField'
6 | name = 'chat'
7 |
--------------------------------------------------------------------------------
/chat/consumers.py:
--------------------------------------------------------------------------------
1 | import json
2 |
3 | from asgiref.sync import async_to_sync
4 | from channels.generic.websocket import WebsocketConsumer
5 |
6 | from .tasks import get_response
7 |
8 |
9 | class ChatConsumer(WebsocketConsumer):
10 | def receive(self, text_data):
11 | text_data_json = json.loads(text_data)
12 | get_response.delay(self.channel_name, text_data_json)
13 |
14 | async_to_sync(self.channel_layer.send)(
15 | self.channel_name,
16 | {
17 | "type": "chat_message",
18 | "text": {"msg": text_data_json["text"], "source": "user"},
19 | },
20 | )
21 |
22 | def chat_message(self, event):
23 | text = event["text"]
24 | self.send(text_data=json.dumps({"text": text}))
25 |
--------------------------------------------------------------------------------
/chat/management/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dawn0123/chatbot_using_django/e7547c17b41ca92524529fc5243882041299453b/chat/management/__init__.py
--------------------------------------------------------------------------------
/chat/management/commands/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dawn0123/chatbot_using_django/e7547c17b41ca92524529fc5243882041299453b/chat/management/commands/__init__.py
--------------------------------------------------------------------------------
/chat/management/commands/train.py:
--------------------------------------------------------------------------------
1 | from django.core.management.base import BaseCommand
2 | from chatterbot import ChatBot
3 | from chatterbot.ext.django_chatterbot import settings
4 | from chatterbot.trainers import ListTrainer
5 |
6 |
7 | class Command(BaseCommand):
8 | help = "Training the chatbot"
9 |
10 | def handle(self, *args, **options):
11 | chatterbot = ChatBot(**settings.CHATTERBOT)
12 | trainer = ListTrainer(chatterbot)
13 | trainer.train(
14 | [
15 | "Hello",
16 | "Hi there!",
17 | "How are you doing?",
18 | "I'm doing great.",
19 | "That is good to hear",
20 | "Thank you.",
21 | "You're welcome.",
22 | ]
23 | )
24 | self.stdout.write(self.style.SUCCESS("Successfull!"))
25 |
--------------------------------------------------------------------------------
/chat/migrations/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dawn0123/chatbot_using_django/e7547c17b41ca92524529fc5243882041299453b/chat/migrations/__init__.py
--------------------------------------------------------------------------------
/chat/routing.py:
--------------------------------------------------------------------------------
1 | from django.urls import re_path
2 |
3 | from . import consumers
4 |
5 | websocket_urlpatterns = [
6 | re_path(r"ws/chat/$", consumers.ChatConsumer.as_asgi()),
7 | ]
8 |
--------------------------------------------------------------------------------
/chat/tasks.py:
--------------------------------------------------------------------------------
1 | from asgiref.sync import async_to_sync
2 | from celery import shared_task
3 | from channels.layers import get_channel_layer
4 | from chatterbot import ChatBot
5 | from chatterbot.ext.django_chatterbot import settings
6 |
7 | channel_layer = get_channel_layer()
8 |
9 |
10 | @shared_task
11 | def get_response(channel_name, input_data):
12 | chatterbot = ChatBot(**settings.CHATTERBOT)
13 | response = chatterbot.get_response(input_data)
14 | response_data = response.serialize()
15 |
16 | async_to_sync(channel_layer.send)(
17 | channel_name,
18 | {
19 | "type": "chat.message",
20 | "text": {"msg": response_data["text"], "source": "bot"},
21 | },
22 | )
23 |
--------------------------------------------------------------------------------
/chat/templates/chat/chat.html:
--------------------------------------------------------------------------------
1 | {% extends 'base.html' %} {% block body %}
2 |
3 |
4 |
8 |
9 |
15 |
22 |
23 |
24 |
25 | {% endblock %} {% block scripts%}
26 |
84 | {% endblock %}
85 |
--------------------------------------------------------------------------------
/chat/urls.py:
--------------------------------------------------------------------------------
1 | from django.urls import path
2 | from .views import ChatView
3 |
4 |
5 | app_name = "chat"
6 |
7 | urlpatterns = [path("", ChatView.as_view(), name="chat_view")]
8 |
--------------------------------------------------------------------------------
/chat/views.py:
--------------------------------------------------------------------------------
1 | from django.views.generic import TemplateView
2 |
3 |
4 | class ChatView(TemplateView):
5 | template_name: str = "chat/chat.html"
6 |
--------------------------------------------------------------------------------
/config/__init__.py:
--------------------------------------------------------------------------------
1 | from .celery import app as celery_app
2 |
3 | __all__ = ('celery_app',)
4 |
--------------------------------------------------------------------------------
/config/asgi.py:
--------------------------------------------------------------------------------
1 | """
2 | ASGI config for config project.
3 |
4 | It exposes the ASGI callable as a module-level variable named ``application``.
5 |
6 | For more information on this file, see
7 | https://docs.djangoproject.com/en/4.1/howto/deployment/asgi/
8 | """
9 |
10 | import os
11 |
12 | from channels.auth import AuthMiddlewareStack
13 | from channels.routing import ProtocolTypeRouter, URLRouter
14 | from channels.security.websocket import AllowedHostsOriginValidator
15 | from django.core.asgi import get_asgi_application
16 | from decouple import config
17 |
18 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", config("DJANGO_SETTINGS_MODULE"))
19 |
20 | # Initialize Django ASGI application early to ensure the AppRegistry
21 | # is populated before importing code that may import ORM models.
22 | django_asgi_app = get_asgi_application()
23 |
24 | import chat.routing
25 |
26 | application = ProtocolTypeRouter(
27 | {
28 | "http": django_asgi_app,
29 | "websocket": AllowedHostsOriginValidator(
30 | AuthMiddlewareStack(URLRouter(chat.routing.websocket_urlpatterns))
31 | ),
32 | }
33 | )
34 |
--------------------------------------------------------------------------------
/config/celery.py:
--------------------------------------------------------------------------------
1 | import os
2 |
3 | from decouple import config
4 | from celery import Celery
5 |
6 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", config("DJANGO_SETTINGS_MODULE"))
7 | app = Celery("config")
8 | app.config_from_object("django.conf:settings", namespace="CELERY")
9 | app.autodiscover_tasks()
10 |
--------------------------------------------------------------------------------
/config/settings/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dawn0123/chatbot_using_django/e7547c17b41ca92524529fc5243882041299453b/config/settings/__init__.py
--------------------------------------------------------------------------------
/config/settings/base.py:
--------------------------------------------------------------------------------
1 | from pathlib import Path
2 | import os
3 | from decouple import config, Csv
4 |
5 | # Build paths inside the project like this: BASE_DIR / 'subdir'.
6 | BASE_DIR = Path(__file__).resolve().parent.parent
7 |
8 |
9 | # Quick-start development settings - unsuitable for production
10 | # See https://docs.djangoproject.com/en/4.1/howto/deployment/checklist/
11 |
12 | # SECURITY WARNING: keep the secret key used in production secret!
13 | SECRET_KEY = config("SECRET_KEY")
14 |
15 | # SECURITY WARNING: don't run with debug turned on in production!
16 | DEBUG = config("DEBUG", default=False, cast=bool)
17 |
18 | ALLOWED_HOSTS = config("ALLOWED_HOSTS", cast=Csv())
19 |
20 |
21 | # Application definition
22 |
23 | INSTALLED_APPS = [
24 | "daphne",
25 | "django.contrib.admin",
26 | "django.contrib.auth",
27 | "django.contrib.contenttypes",
28 | "django.contrib.sessions",
29 | "django.contrib.messages",
30 | "django.contrib.staticfiles",
31 | # Third party apps
32 | "chatterbot.ext.django_chatterbot",
33 | "tailwind",
34 | "django_browser_reload",
35 | # Local apps
36 | "chat",
37 | "theme",
38 | ]
39 |
40 | MIDDLEWARE = [
41 | "django.middleware.security.SecurityMiddleware",
42 | "django.contrib.sessions.middleware.SessionMiddleware",
43 | "django.middleware.common.CommonMiddleware",
44 | "django.middleware.csrf.CsrfViewMiddleware",
45 | "django.contrib.auth.middleware.AuthenticationMiddleware",
46 | "django.contrib.messages.middleware.MessageMiddleware",
47 | "django.middleware.clickjacking.XFrameOptionsMiddleware",
48 | ]
49 |
50 | ROOT_URLCONF = "config.urls"
51 |
52 | TEMPLATES = [
53 | {
54 | "BACKEND": "django.template.backends.django.DjangoTemplates",
55 | "DIRS": [],
56 | "APP_DIRS": True,
57 | "OPTIONS": {
58 | "context_processors": [
59 | "django.template.context_processors.debug",
60 | "django.template.context_processors.request",
61 | "django.contrib.auth.context_processors.auth",
62 | "django.contrib.messages.context_processors.messages",
63 | ],
64 | },
65 | },
66 | ]
67 |
68 | WSGI_APPLICATION = "config.wsgi.application"
69 | ASGI_APPLICATION = "config.asgi.application"
70 |
71 | # Database
72 | # https://docs.djangoproject.com/en/4.1/ref/settings/#databases
73 |
74 | DATABASES = {
75 | "default": {
76 | "ENGINE": "django.db.backends.postgresql",
77 | "NAME": config("DB_NAME"),
78 | "USER": config("DB_USERNAME"),
79 | "PASSWORD": config("DB_PASSWORD"),
80 | "HOST": config("DB_HOSTNAME"),
81 | "PORT": config("DB_PORT", cast=int),
82 | }
83 | }
84 |
85 |
86 | # Password validation
87 | # https://docs.djangoproject.com/en/4.1/ref/settings/#auth-password-validators
88 |
89 | AUTH_PASSWORD_VALIDATORS = [
90 | {
91 | "NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator",
92 | },
93 | {
94 | "NAME": "django.contrib.auth.password_validation.MinimumLengthValidator",
95 | },
96 | {
97 | "NAME": "django.contrib.auth.password_validation.CommonPasswordValidator",
98 | },
99 | {
100 | "NAME": "django.contrib.auth.password_validation.NumericPasswordValidator",
101 | },
102 | ]
103 |
104 |
105 | # Internationalization
106 | # https://docs.djangoproject.com/en/4.1/topics/i18n/
107 |
108 | LANGUAGE_CODE = "en-us"
109 |
110 | TIME_ZONE = "UTC"
111 |
112 | USE_I18N = True
113 |
114 | USE_TZ = True
115 |
116 |
117 | # Static files (CSS, JavaScript, Images)
118 | # https://docs.djangoproject.com/en/4.1/howto/static-files/
119 |
120 | STATIC_URL = "static/"
121 |
122 | # Default primary key field type
123 | # https://docs.djangoproject.com/en/4.1/ref/settings/#default-auto-field
124 |
125 | DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"
126 |
127 | # Celery
128 | CELERY_BROKER_URL = config("CELERY_BROKER_URL")
129 | CELERY_RESULT_BACKEND = config("REDIS_BACKEND")
130 |
131 | # Redis Cache
132 | CACHES = {
133 | "default": {
134 | "BACKEND": "django.core.cache.backends.redis.RedisCache",
135 | "LOCATION": config("REDIS_BACKEND"),
136 | },
137 | }
138 |
139 | # Django Channels
140 | CHANNEL_LAYERS = {
141 | "default": {
142 | "BACKEND": "channels_redis.core.RedisChannelLayer",
143 | "CONFIG": {
144 | "hosts": [config("REDIS_BACKEND")],
145 | },
146 | },
147 | }
148 |
149 | # Chatterbot
150 | CHATTERBOT = {
151 | "name": "User Support Bot",
152 | "logic_adapters": [
153 | "chatterbot.logic.BestMatch",
154 | ],
155 | }
156 |
157 | # Tailwind
158 | TAILWIND_APP_NAME = "theme"
159 |
--------------------------------------------------------------------------------
/config/settings/development.py:
--------------------------------------------------------------------------------
1 | from .base import *
2 |
3 | STATIC_URL = "static/"
4 | STATIC_ROOT = os.path.join(BASE_DIR, "../", "staticfiles")
5 |
--------------------------------------------------------------------------------
/config/settings/production.py:
--------------------------------------------------------------------------------
1 | from .base import *
2 |
--------------------------------------------------------------------------------
/config/urls.py:
--------------------------------------------------------------------------------
1 | from django.contrib import admin
2 | from django.urls import path, include
3 |
4 | urlpatterns = [
5 | path("admin/", admin.site.urls),
6 | path("", include("chat.urls", namespace="chat")),
7 | ]
8 |
--------------------------------------------------------------------------------
/config/wsgi.py:
--------------------------------------------------------------------------------
1 | """
2 | WSGI config for config project.
3 |
4 | It exposes the WSGI callable as a module-level variable named ``application``.
5 |
6 | For more information on this file, see
7 | https://docs.djangoproject.com/en/4.1/howto/deployment/wsgi/
8 | """
9 |
10 | import os
11 |
12 | from django.core.wsgi import get_wsgi_application
13 |
14 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings")
15 |
16 | application = get_wsgi_application()
17 |
--------------------------------------------------------------------------------
/entrypoint.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | echo 'Waiting for postgres...'
4 |
5 | while ! nc -z $DB_HOSTNAME $DB_PORT; do
6 | sleep 0.1
7 | done
8 |
9 | echo 'PostgreSQL started'
10 |
11 | echo 'Running migrations...'
12 | python manage.py migrate
13 |
14 | echo 'Collecting static files...'
15 | python manage.py collectstatic --no-input
16 |
17 | exec "$@"
--------------------------------------------------------------------------------
/manage.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | """Django's command-line utility for administrative tasks."""
3 | import os
4 | import sys
5 |
6 | from decouple import config
7 |
8 |
9 | def main():
10 | """Run administrative tasks."""
11 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', config('DJANGO_SETTINGS_MODULE'))
12 | try:
13 | from django.core.management import execute_from_command_line
14 | except ImportError as exc:
15 | raise ImportError(
16 | "Couldn't import Django. Are you sure it's installed and "
17 | "available on your PYTHONPATH environment variable? Did you "
18 | "forget to activate a virtual environment?"
19 | ) from exc
20 | execute_from_command_line(sys.argv)
21 |
22 |
23 | if __name__ == '__main__':
24 | main()
25 |
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | celery==5.2.7
2 | channels==4.0.0
3 | channels-redis==4.0.0
4 | daphne==4.0.0
5 | Django==4.1.2
6 | psycopg2-binary==2.9.5
7 | python-decouple==3.6
8 | redis==4.3.4
9 | chatterbot==1.0.4
10 | django-tailwind==3.4.0
--------------------------------------------------------------------------------
/theme/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dawn0123/chatbot_using_django/e7547c17b41ca92524529fc5243882041299453b/theme/__init__.py
--------------------------------------------------------------------------------
/theme/apps.py:
--------------------------------------------------------------------------------
1 | from django.apps import AppConfig
2 |
3 |
4 | class ThemeConfig(AppConfig):
5 | name = 'theme'
6 |
--------------------------------------------------------------------------------
/theme/static_src/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 |
--------------------------------------------------------------------------------
/theme/static_src/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "theme",
3 | "version": "3.4.0",
4 | "lockfileVersion": 2,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "theme",
9 | "version": "3.4.0",
10 | "license": "MIT",
11 | "devDependencies": {
12 | "@tailwindcss/aspect-ratio": "^0.4.0",
13 | "@tailwindcss/forms": "^0.5.2",
14 | "@tailwindcss/line-clamp": "^0.4.0",
15 | "@tailwindcss/typography": "^0.5.2",
16 | "cross-env": "^7.0.3",
17 | "postcss": "^8.4.14",
18 | "postcss-import": "^14.1.0",
19 | "postcss-nested": "^5.0.6",
20 | "postcss-simple-vars": "^6.0.3",
21 | "rimraf": "^3.0.2",
22 | "tailwindcss": "^3.1.6"
23 | }
24 | },
25 | "node_modules/@nodelib/fs.scandir": {
26 | "version": "2.1.5",
27 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
28 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
29 | "dev": true,
30 | "dependencies": {
31 | "@nodelib/fs.stat": "2.0.5",
32 | "run-parallel": "^1.1.9"
33 | },
34 | "engines": {
35 | "node": ">= 8"
36 | }
37 | },
38 | "node_modules/@nodelib/fs.stat": {
39 | "version": "2.0.5",
40 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
41 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
42 | "dev": true,
43 | "engines": {
44 | "node": ">= 8"
45 | }
46 | },
47 | "node_modules/@nodelib/fs.walk": {
48 | "version": "1.2.8",
49 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
50 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
51 | "dev": true,
52 | "dependencies": {
53 | "@nodelib/fs.scandir": "2.1.5",
54 | "fastq": "^1.6.0"
55 | },
56 | "engines": {
57 | "node": ">= 8"
58 | }
59 | },
60 | "node_modules/@tailwindcss/aspect-ratio": {
61 | "version": "0.4.2",
62 | "resolved": "https://registry.npmjs.org/@tailwindcss/aspect-ratio/-/aspect-ratio-0.4.2.tgz",
63 | "integrity": "sha512-8QPrypskfBa7QIMuKHg2TA7BqES6vhBrDLOv8Unb6FcFyd3TjKbc6lcmb9UPQHxfl24sXoJ41ux/H7qQQvfaSQ==",
64 | "dev": true,
65 | "peerDependencies": {
66 | "tailwindcss": ">=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1"
67 | }
68 | },
69 | "node_modules/@tailwindcss/forms": {
70 | "version": "0.5.3",
71 | "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.3.tgz",
72 | "integrity": "sha512-y5mb86JUoiUgBjY/o6FJSFZSEttfb3Q5gllE4xoKjAAD+vBrnIhE4dViwUuow3va8mpH4s9jyUbUbrRGoRdc2Q==",
73 | "dev": true,
74 | "dependencies": {
75 | "mini-svg-data-uri": "^1.2.3"
76 | },
77 | "peerDependencies": {
78 | "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1"
79 | }
80 | },
81 | "node_modules/@tailwindcss/line-clamp": {
82 | "version": "0.4.2",
83 | "resolved": "https://registry.npmjs.org/@tailwindcss/line-clamp/-/line-clamp-0.4.2.tgz",
84 | "integrity": "sha512-HFzAQuqYCjyy/SX9sLGB1lroPzmcnWv1FHkIpmypte10hptf4oPUfucryMKovZh2u0uiS9U5Ty3GghWfEJGwVw==",
85 | "dev": true,
86 | "peerDependencies": {
87 | "tailwindcss": ">=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1"
88 | }
89 | },
90 | "node_modules/@tailwindcss/typography": {
91 | "version": "0.5.7",
92 | "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.7.tgz",
93 | "integrity": "sha512-JTTSTrgZfp6Ki4svhPA4mkd9nmQ/j9EfE7SbHJ1cLtthKkpW2OxsFXzSmxbhYbEkfNIyAyhle5p4SYyKRbz/jg==",
94 | "dev": true,
95 | "dependencies": {
96 | "lodash.castarray": "^4.4.0",
97 | "lodash.isplainobject": "^4.0.6",
98 | "lodash.merge": "^4.6.2",
99 | "postcss-selector-parser": "6.0.10"
100 | },
101 | "peerDependencies": {
102 | "tailwindcss": ">=3.0.0 || insiders"
103 | }
104 | },
105 | "node_modules/acorn": {
106 | "version": "7.4.1",
107 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
108 | "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
109 | "dev": true,
110 | "bin": {
111 | "acorn": "bin/acorn"
112 | },
113 | "engines": {
114 | "node": ">=0.4.0"
115 | }
116 | },
117 | "node_modules/acorn-node": {
118 | "version": "1.8.2",
119 | "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz",
120 | "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==",
121 | "dev": true,
122 | "dependencies": {
123 | "acorn": "^7.0.0",
124 | "acorn-walk": "^7.0.0",
125 | "xtend": "^4.0.2"
126 | }
127 | },
128 | "node_modules/acorn-walk": {
129 | "version": "7.2.0",
130 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
131 | "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
132 | "dev": true,
133 | "engines": {
134 | "node": ">=0.4.0"
135 | }
136 | },
137 | "node_modules/anymatch": {
138 | "version": "3.1.2",
139 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
140 | "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
141 | "dev": true,
142 | "dependencies": {
143 | "normalize-path": "^3.0.0",
144 | "picomatch": "^2.0.4"
145 | },
146 | "engines": {
147 | "node": ">= 8"
148 | }
149 | },
150 | "node_modules/arg": {
151 | "version": "5.0.2",
152 | "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
153 | "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
154 | "dev": true
155 | },
156 | "node_modules/balanced-match": {
157 | "version": "1.0.2",
158 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
159 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
160 | "dev": true
161 | },
162 | "node_modules/binary-extensions": {
163 | "version": "2.2.0",
164 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
165 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
166 | "dev": true,
167 | "engines": {
168 | "node": ">=8"
169 | }
170 | },
171 | "node_modules/brace-expansion": {
172 | "version": "1.1.11",
173 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
174 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
175 | "dev": true,
176 | "dependencies": {
177 | "balanced-match": "^1.0.0",
178 | "concat-map": "0.0.1"
179 | }
180 | },
181 | "node_modules/braces": {
182 | "version": "3.0.2",
183 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
184 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
185 | "dev": true,
186 | "dependencies": {
187 | "fill-range": "^7.0.1"
188 | },
189 | "engines": {
190 | "node": ">=8"
191 | }
192 | },
193 | "node_modules/camelcase-css": {
194 | "version": "2.0.1",
195 | "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
196 | "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
197 | "dev": true,
198 | "engines": {
199 | "node": ">= 6"
200 | }
201 | },
202 | "node_modules/chokidar": {
203 | "version": "3.5.3",
204 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
205 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
206 | "dev": true,
207 | "funding": [
208 | {
209 | "type": "individual",
210 | "url": "https://paulmillr.com/funding/"
211 | }
212 | ],
213 | "dependencies": {
214 | "anymatch": "~3.1.2",
215 | "braces": "~3.0.2",
216 | "glob-parent": "~5.1.2",
217 | "is-binary-path": "~2.1.0",
218 | "is-glob": "~4.0.1",
219 | "normalize-path": "~3.0.0",
220 | "readdirp": "~3.6.0"
221 | },
222 | "engines": {
223 | "node": ">= 8.10.0"
224 | },
225 | "optionalDependencies": {
226 | "fsevents": "~2.3.2"
227 | }
228 | },
229 | "node_modules/chokidar/node_modules/glob-parent": {
230 | "version": "5.1.2",
231 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
232 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
233 | "dev": true,
234 | "dependencies": {
235 | "is-glob": "^4.0.1"
236 | },
237 | "engines": {
238 | "node": ">= 6"
239 | }
240 | },
241 | "node_modules/color-name": {
242 | "version": "1.1.4",
243 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
244 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
245 | "dev": true
246 | },
247 | "node_modules/concat-map": {
248 | "version": "0.0.1",
249 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
250 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
251 | "dev": true
252 | },
253 | "node_modules/cross-env": {
254 | "version": "7.0.3",
255 | "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz",
256 | "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==",
257 | "dev": true,
258 | "dependencies": {
259 | "cross-spawn": "^7.0.1"
260 | },
261 | "bin": {
262 | "cross-env": "src/bin/cross-env.js",
263 | "cross-env-shell": "src/bin/cross-env-shell.js"
264 | },
265 | "engines": {
266 | "node": ">=10.14",
267 | "npm": ">=6",
268 | "yarn": ">=1"
269 | }
270 | },
271 | "node_modules/cross-spawn": {
272 | "version": "7.0.3",
273 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
274 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
275 | "dev": true,
276 | "dependencies": {
277 | "path-key": "^3.1.0",
278 | "shebang-command": "^2.0.0",
279 | "which": "^2.0.1"
280 | },
281 | "engines": {
282 | "node": ">= 8"
283 | }
284 | },
285 | "node_modules/cssesc": {
286 | "version": "3.0.0",
287 | "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
288 | "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
289 | "dev": true,
290 | "bin": {
291 | "cssesc": "bin/cssesc"
292 | },
293 | "engines": {
294 | "node": ">=4"
295 | }
296 | },
297 | "node_modules/defined": {
298 | "version": "1.0.1",
299 | "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz",
300 | "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==",
301 | "dev": true,
302 | "funding": {
303 | "url": "https://github.com/sponsors/ljharb"
304 | }
305 | },
306 | "node_modules/detective": {
307 | "version": "5.2.1",
308 | "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz",
309 | "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==",
310 | "dev": true,
311 | "dependencies": {
312 | "acorn-node": "^1.8.2",
313 | "defined": "^1.0.0",
314 | "minimist": "^1.2.6"
315 | },
316 | "bin": {
317 | "detective": "bin/detective.js"
318 | },
319 | "engines": {
320 | "node": ">=0.8.0"
321 | }
322 | },
323 | "node_modules/didyoumean": {
324 | "version": "1.2.2",
325 | "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
326 | "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
327 | "dev": true
328 | },
329 | "node_modules/dlv": {
330 | "version": "1.1.3",
331 | "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
332 | "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
333 | "dev": true
334 | },
335 | "node_modules/fast-glob": {
336 | "version": "3.2.12",
337 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
338 | "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
339 | "dev": true,
340 | "dependencies": {
341 | "@nodelib/fs.stat": "^2.0.2",
342 | "@nodelib/fs.walk": "^1.2.3",
343 | "glob-parent": "^5.1.2",
344 | "merge2": "^1.3.0",
345 | "micromatch": "^4.0.4"
346 | },
347 | "engines": {
348 | "node": ">=8.6.0"
349 | }
350 | },
351 | "node_modules/fast-glob/node_modules/glob-parent": {
352 | "version": "5.1.2",
353 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
354 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
355 | "dev": true,
356 | "dependencies": {
357 | "is-glob": "^4.0.1"
358 | },
359 | "engines": {
360 | "node": ">= 6"
361 | }
362 | },
363 | "node_modules/fastq": {
364 | "version": "1.13.0",
365 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
366 | "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
367 | "dev": true,
368 | "dependencies": {
369 | "reusify": "^1.0.4"
370 | }
371 | },
372 | "node_modules/fill-range": {
373 | "version": "7.0.1",
374 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
375 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
376 | "dev": true,
377 | "dependencies": {
378 | "to-regex-range": "^5.0.1"
379 | },
380 | "engines": {
381 | "node": ">=8"
382 | }
383 | },
384 | "node_modules/fs.realpath": {
385 | "version": "1.0.0",
386 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
387 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
388 | "dev": true
389 | },
390 | "node_modules/fsevents": {
391 | "version": "2.3.2",
392 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
393 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
394 | "dev": true,
395 | "hasInstallScript": true,
396 | "optional": true,
397 | "os": [
398 | "darwin"
399 | ],
400 | "engines": {
401 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
402 | }
403 | },
404 | "node_modules/function-bind": {
405 | "version": "1.1.1",
406 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
407 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
408 | "dev": true
409 | },
410 | "node_modules/glob": {
411 | "version": "7.2.3",
412 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
413 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
414 | "dev": true,
415 | "dependencies": {
416 | "fs.realpath": "^1.0.0",
417 | "inflight": "^1.0.4",
418 | "inherits": "2",
419 | "minimatch": "^3.1.1",
420 | "once": "^1.3.0",
421 | "path-is-absolute": "^1.0.0"
422 | },
423 | "engines": {
424 | "node": "*"
425 | },
426 | "funding": {
427 | "url": "https://github.com/sponsors/isaacs"
428 | }
429 | },
430 | "node_modules/glob-parent": {
431 | "version": "6.0.2",
432 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
433 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
434 | "dev": true,
435 | "dependencies": {
436 | "is-glob": "^4.0.3"
437 | },
438 | "engines": {
439 | "node": ">=10.13.0"
440 | }
441 | },
442 | "node_modules/has": {
443 | "version": "1.0.3",
444 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
445 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
446 | "dev": true,
447 | "dependencies": {
448 | "function-bind": "^1.1.1"
449 | },
450 | "engines": {
451 | "node": ">= 0.4.0"
452 | }
453 | },
454 | "node_modules/inflight": {
455 | "version": "1.0.6",
456 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
457 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
458 | "dev": true,
459 | "dependencies": {
460 | "once": "^1.3.0",
461 | "wrappy": "1"
462 | }
463 | },
464 | "node_modules/inherits": {
465 | "version": "2.0.4",
466 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
467 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
468 | "dev": true
469 | },
470 | "node_modules/is-binary-path": {
471 | "version": "2.1.0",
472 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
473 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
474 | "dev": true,
475 | "dependencies": {
476 | "binary-extensions": "^2.0.0"
477 | },
478 | "engines": {
479 | "node": ">=8"
480 | }
481 | },
482 | "node_modules/is-core-module": {
483 | "version": "2.11.0",
484 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
485 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
486 | "dev": true,
487 | "dependencies": {
488 | "has": "^1.0.3"
489 | },
490 | "funding": {
491 | "url": "https://github.com/sponsors/ljharb"
492 | }
493 | },
494 | "node_modules/is-extglob": {
495 | "version": "2.1.1",
496 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
497 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
498 | "dev": true,
499 | "engines": {
500 | "node": ">=0.10.0"
501 | }
502 | },
503 | "node_modules/is-glob": {
504 | "version": "4.0.3",
505 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
506 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
507 | "dev": true,
508 | "dependencies": {
509 | "is-extglob": "^2.1.1"
510 | },
511 | "engines": {
512 | "node": ">=0.10.0"
513 | }
514 | },
515 | "node_modules/is-number": {
516 | "version": "7.0.0",
517 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
518 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
519 | "dev": true,
520 | "engines": {
521 | "node": ">=0.12.0"
522 | }
523 | },
524 | "node_modules/isexe": {
525 | "version": "2.0.0",
526 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
527 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
528 | "dev": true
529 | },
530 | "node_modules/lilconfig": {
531 | "version": "2.0.6",
532 | "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz",
533 | "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==",
534 | "dev": true,
535 | "engines": {
536 | "node": ">=10"
537 | }
538 | },
539 | "node_modules/lodash.castarray": {
540 | "version": "4.4.0",
541 | "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz",
542 | "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==",
543 | "dev": true
544 | },
545 | "node_modules/lodash.isplainobject": {
546 | "version": "4.0.6",
547 | "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
548 | "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
549 | "dev": true
550 | },
551 | "node_modules/lodash.merge": {
552 | "version": "4.6.2",
553 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
554 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
555 | "dev": true
556 | },
557 | "node_modules/merge2": {
558 | "version": "1.4.1",
559 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
560 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
561 | "dev": true,
562 | "engines": {
563 | "node": ">= 8"
564 | }
565 | },
566 | "node_modules/micromatch": {
567 | "version": "4.0.5",
568 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
569 | "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
570 | "dev": true,
571 | "dependencies": {
572 | "braces": "^3.0.2",
573 | "picomatch": "^2.3.1"
574 | },
575 | "engines": {
576 | "node": ">=8.6"
577 | }
578 | },
579 | "node_modules/mini-svg-data-uri": {
580 | "version": "1.4.4",
581 | "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz",
582 | "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==",
583 | "dev": true,
584 | "bin": {
585 | "mini-svg-data-uri": "cli.js"
586 | }
587 | },
588 | "node_modules/minimatch": {
589 | "version": "3.1.2",
590 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
591 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
592 | "dev": true,
593 | "dependencies": {
594 | "brace-expansion": "^1.1.7"
595 | },
596 | "engines": {
597 | "node": "*"
598 | }
599 | },
600 | "node_modules/minimist": {
601 | "version": "1.2.7",
602 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
603 | "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==",
604 | "dev": true,
605 | "funding": {
606 | "url": "https://github.com/sponsors/ljharb"
607 | }
608 | },
609 | "node_modules/nanoid": {
610 | "version": "3.3.4",
611 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
612 | "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
613 | "dev": true,
614 | "bin": {
615 | "nanoid": "bin/nanoid.cjs"
616 | },
617 | "engines": {
618 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
619 | }
620 | },
621 | "node_modules/normalize-path": {
622 | "version": "3.0.0",
623 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
624 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
625 | "dev": true,
626 | "engines": {
627 | "node": ">=0.10.0"
628 | }
629 | },
630 | "node_modules/object-hash": {
631 | "version": "3.0.0",
632 | "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
633 | "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
634 | "dev": true,
635 | "engines": {
636 | "node": ">= 6"
637 | }
638 | },
639 | "node_modules/once": {
640 | "version": "1.4.0",
641 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
642 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
643 | "dev": true,
644 | "dependencies": {
645 | "wrappy": "1"
646 | }
647 | },
648 | "node_modules/path-is-absolute": {
649 | "version": "1.0.1",
650 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
651 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
652 | "dev": true,
653 | "engines": {
654 | "node": ">=0.10.0"
655 | }
656 | },
657 | "node_modules/path-key": {
658 | "version": "3.1.1",
659 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
660 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
661 | "dev": true,
662 | "engines": {
663 | "node": ">=8"
664 | }
665 | },
666 | "node_modules/path-parse": {
667 | "version": "1.0.7",
668 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
669 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
670 | "dev": true
671 | },
672 | "node_modules/picocolors": {
673 | "version": "1.0.0",
674 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
675 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
676 | "dev": true
677 | },
678 | "node_modules/picomatch": {
679 | "version": "2.3.1",
680 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
681 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
682 | "dev": true,
683 | "engines": {
684 | "node": ">=8.6"
685 | },
686 | "funding": {
687 | "url": "https://github.com/sponsors/jonschlinkert"
688 | }
689 | },
690 | "node_modules/pify": {
691 | "version": "2.3.0",
692 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
693 | "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
694 | "dev": true,
695 | "engines": {
696 | "node": ">=0.10.0"
697 | }
698 | },
699 | "node_modules/postcss": {
700 | "version": "8.4.18",
701 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz",
702 | "integrity": "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==",
703 | "dev": true,
704 | "funding": [
705 | {
706 | "type": "opencollective",
707 | "url": "https://opencollective.com/postcss/"
708 | },
709 | {
710 | "type": "tidelift",
711 | "url": "https://tidelift.com/funding/github/npm/postcss"
712 | }
713 | ],
714 | "dependencies": {
715 | "nanoid": "^3.3.4",
716 | "picocolors": "^1.0.0",
717 | "source-map-js": "^1.0.2"
718 | },
719 | "engines": {
720 | "node": "^10 || ^12 || >=14"
721 | }
722 | },
723 | "node_modules/postcss-import": {
724 | "version": "14.1.0",
725 | "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz",
726 | "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==",
727 | "dev": true,
728 | "dependencies": {
729 | "postcss-value-parser": "^4.0.0",
730 | "read-cache": "^1.0.0",
731 | "resolve": "^1.1.7"
732 | },
733 | "engines": {
734 | "node": ">=10.0.0"
735 | },
736 | "peerDependencies": {
737 | "postcss": "^8.0.0"
738 | }
739 | },
740 | "node_modules/postcss-js": {
741 | "version": "4.0.0",
742 | "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz",
743 | "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==",
744 | "dev": true,
745 | "dependencies": {
746 | "camelcase-css": "^2.0.1"
747 | },
748 | "engines": {
749 | "node": "^12 || ^14 || >= 16"
750 | },
751 | "funding": {
752 | "type": "opencollective",
753 | "url": "https://opencollective.com/postcss/"
754 | },
755 | "peerDependencies": {
756 | "postcss": "^8.3.3"
757 | }
758 | },
759 | "node_modules/postcss-load-config": {
760 | "version": "3.1.4",
761 | "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz",
762 | "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==",
763 | "dev": true,
764 | "dependencies": {
765 | "lilconfig": "^2.0.5",
766 | "yaml": "^1.10.2"
767 | },
768 | "engines": {
769 | "node": ">= 10"
770 | },
771 | "funding": {
772 | "type": "opencollective",
773 | "url": "https://opencollective.com/postcss/"
774 | },
775 | "peerDependencies": {
776 | "postcss": ">=8.0.9",
777 | "ts-node": ">=9.0.0"
778 | },
779 | "peerDependenciesMeta": {
780 | "postcss": {
781 | "optional": true
782 | },
783 | "ts-node": {
784 | "optional": true
785 | }
786 | }
787 | },
788 | "node_modules/postcss-nested": {
789 | "version": "5.0.6",
790 | "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz",
791 | "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==",
792 | "dev": true,
793 | "dependencies": {
794 | "postcss-selector-parser": "^6.0.6"
795 | },
796 | "engines": {
797 | "node": ">=12.0"
798 | },
799 | "funding": {
800 | "type": "opencollective",
801 | "url": "https://opencollective.com/postcss/"
802 | },
803 | "peerDependencies": {
804 | "postcss": "^8.2.14"
805 | }
806 | },
807 | "node_modules/postcss-selector-parser": {
808 | "version": "6.0.10",
809 | "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
810 | "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==",
811 | "dev": true,
812 | "dependencies": {
813 | "cssesc": "^3.0.0",
814 | "util-deprecate": "^1.0.2"
815 | },
816 | "engines": {
817 | "node": ">=4"
818 | }
819 | },
820 | "node_modules/postcss-simple-vars": {
821 | "version": "6.0.3",
822 | "resolved": "https://registry.npmjs.org/postcss-simple-vars/-/postcss-simple-vars-6.0.3.tgz",
823 | "integrity": "sha512-fkNn4Zio8vN4vIig9IFdb8lVlxWnYR769RgvxCM6YWlFKie/nQaOcaMMMFz/s4gsfHW4/5bJW+i57zD67mQU7g==",
824 | "dev": true,
825 | "engines": {
826 | "node": ">=10.0"
827 | },
828 | "funding": {
829 | "type": "opencollective",
830 | "url": "https://opencollective.com/postcss/"
831 | },
832 | "peerDependencies": {
833 | "postcss": "^8.2.1"
834 | }
835 | },
836 | "node_modules/postcss-value-parser": {
837 | "version": "4.2.0",
838 | "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
839 | "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
840 | "dev": true
841 | },
842 | "node_modules/queue-microtask": {
843 | "version": "1.2.3",
844 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
845 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
846 | "dev": true,
847 | "funding": [
848 | {
849 | "type": "github",
850 | "url": "https://github.com/sponsors/feross"
851 | },
852 | {
853 | "type": "patreon",
854 | "url": "https://www.patreon.com/feross"
855 | },
856 | {
857 | "type": "consulting",
858 | "url": "https://feross.org/support"
859 | }
860 | ]
861 | },
862 | "node_modules/quick-lru": {
863 | "version": "5.1.1",
864 | "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
865 | "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
866 | "dev": true,
867 | "engines": {
868 | "node": ">=10"
869 | },
870 | "funding": {
871 | "url": "https://github.com/sponsors/sindresorhus"
872 | }
873 | },
874 | "node_modules/read-cache": {
875 | "version": "1.0.0",
876 | "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
877 | "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
878 | "dev": true,
879 | "dependencies": {
880 | "pify": "^2.3.0"
881 | }
882 | },
883 | "node_modules/readdirp": {
884 | "version": "3.6.0",
885 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
886 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
887 | "dev": true,
888 | "dependencies": {
889 | "picomatch": "^2.2.1"
890 | },
891 | "engines": {
892 | "node": ">=8.10.0"
893 | }
894 | },
895 | "node_modules/resolve": {
896 | "version": "1.22.1",
897 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
898 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
899 | "dev": true,
900 | "dependencies": {
901 | "is-core-module": "^2.9.0",
902 | "path-parse": "^1.0.7",
903 | "supports-preserve-symlinks-flag": "^1.0.0"
904 | },
905 | "bin": {
906 | "resolve": "bin/resolve"
907 | },
908 | "funding": {
909 | "url": "https://github.com/sponsors/ljharb"
910 | }
911 | },
912 | "node_modules/reusify": {
913 | "version": "1.0.4",
914 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
915 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
916 | "dev": true,
917 | "engines": {
918 | "iojs": ">=1.0.0",
919 | "node": ">=0.10.0"
920 | }
921 | },
922 | "node_modules/rimraf": {
923 | "version": "3.0.2",
924 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
925 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
926 | "dev": true,
927 | "dependencies": {
928 | "glob": "^7.1.3"
929 | },
930 | "bin": {
931 | "rimraf": "bin.js"
932 | },
933 | "funding": {
934 | "url": "https://github.com/sponsors/isaacs"
935 | }
936 | },
937 | "node_modules/run-parallel": {
938 | "version": "1.2.0",
939 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
940 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
941 | "dev": true,
942 | "funding": [
943 | {
944 | "type": "github",
945 | "url": "https://github.com/sponsors/feross"
946 | },
947 | {
948 | "type": "patreon",
949 | "url": "https://www.patreon.com/feross"
950 | },
951 | {
952 | "type": "consulting",
953 | "url": "https://feross.org/support"
954 | }
955 | ],
956 | "dependencies": {
957 | "queue-microtask": "^1.2.2"
958 | }
959 | },
960 | "node_modules/shebang-command": {
961 | "version": "2.0.0",
962 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
963 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
964 | "dev": true,
965 | "dependencies": {
966 | "shebang-regex": "^3.0.0"
967 | },
968 | "engines": {
969 | "node": ">=8"
970 | }
971 | },
972 | "node_modules/shebang-regex": {
973 | "version": "3.0.0",
974 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
975 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
976 | "dev": true,
977 | "engines": {
978 | "node": ">=8"
979 | }
980 | },
981 | "node_modules/source-map-js": {
982 | "version": "1.0.2",
983 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
984 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
985 | "dev": true,
986 | "engines": {
987 | "node": ">=0.10.0"
988 | }
989 | },
990 | "node_modules/supports-preserve-symlinks-flag": {
991 | "version": "1.0.0",
992 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
993 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
994 | "dev": true,
995 | "engines": {
996 | "node": ">= 0.4"
997 | },
998 | "funding": {
999 | "url": "https://github.com/sponsors/ljharb"
1000 | }
1001 | },
1002 | "node_modules/tailwindcss": {
1003 | "version": "3.2.1",
1004 | "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.2.1.tgz",
1005 | "integrity": "sha512-Uw+GVSxp5CM48krnjHObqoOwlCt5Qo6nw1jlCRwfGy68dSYb/LwS9ZFidYGRiM+w6rMawkZiu1mEMAsHYAfoLg==",
1006 | "dev": true,
1007 | "dependencies": {
1008 | "arg": "^5.0.2",
1009 | "chokidar": "^3.5.3",
1010 | "color-name": "^1.1.4",
1011 | "detective": "^5.2.1",
1012 | "didyoumean": "^1.2.2",
1013 | "dlv": "^1.1.3",
1014 | "fast-glob": "^3.2.12",
1015 | "glob-parent": "^6.0.2",
1016 | "is-glob": "^4.0.3",
1017 | "lilconfig": "^2.0.6",
1018 | "micromatch": "^4.0.5",
1019 | "normalize-path": "^3.0.0",
1020 | "object-hash": "^3.0.0",
1021 | "picocolors": "^1.0.0",
1022 | "postcss": "^8.4.17",
1023 | "postcss-import": "^14.1.0",
1024 | "postcss-js": "^4.0.0",
1025 | "postcss-load-config": "^3.1.4",
1026 | "postcss-nested": "6.0.0",
1027 | "postcss-selector-parser": "^6.0.10",
1028 | "postcss-value-parser": "^4.2.0",
1029 | "quick-lru": "^5.1.1",
1030 | "resolve": "^1.22.1"
1031 | },
1032 | "bin": {
1033 | "tailwind": "lib/cli.js",
1034 | "tailwindcss": "lib/cli.js"
1035 | },
1036 | "engines": {
1037 | "node": ">=12.13.0"
1038 | },
1039 | "peerDependencies": {
1040 | "postcss": "^8.0.9"
1041 | }
1042 | },
1043 | "node_modules/tailwindcss/node_modules/postcss-nested": {
1044 | "version": "6.0.0",
1045 | "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.0.tgz",
1046 | "integrity": "sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==",
1047 | "dev": true,
1048 | "dependencies": {
1049 | "postcss-selector-parser": "^6.0.10"
1050 | },
1051 | "engines": {
1052 | "node": ">=12.0"
1053 | },
1054 | "funding": {
1055 | "type": "opencollective",
1056 | "url": "https://opencollective.com/postcss/"
1057 | },
1058 | "peerDependencies": {
1059 | "postcss": "^8.2.14"
1060 | }
1061 | },
1062 | "node_modules/to-regex-range": {
1063 | "version": "5.0.1",
1064 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
1065 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
1066 | "dev": true,
1067 | "dependencies": {
1068 | "is-number": "^7.0.0"
1069 | },
1070 | "engines": {
1071 | "node": ">=8.0"
1072 | }
1073 | },
1074 | "node_modules/util-deprecate": {
1075 | "version": "1.0.2",
1076 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
1077 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
1078 | "dev": true
1079 | },
1080 | "node_modules/which": {
1081 | "version": "2.0.2",
1082 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
1083 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
1084 | "dev": true,
1085 | "dependencies": {
1086 | "isexe": "^2.0.0"
1087 | },
1088 | "bin": {
1089 | "node-which": "bin/node-which"
1090 | },
1091 | "engines": {
1092 | "node": ">= 8"
1093 | }
1094 | },
1095 | "node_modules/wrappy": {
1096 | "version": "1.0.2",
1097 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
1098 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
1099 | "dev": true
1100 | },
1101 | "node_modules/xtend": {
1102 | "version": "4.0.2",
1103 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
1104 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
1105 | "dev": true,
1106 | "engines": {
1107 | "node": ">=0.4"
1108 | }
1109 | },
1110 | "node_modules/yaml": {
1111 | "version": "1.10.2",
1112 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
1113 | "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
1114 | "dev": true,
1115 | "engines": {
1116 | "node": ">= 6"
1117 | }
1118 | }
1119 | },
1120 | "dependencies": {
1121 | "@nodelib/fs.scandir": {
1122 | "version": "2.1.5",
1123 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
1124 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
1125 | "dev": true,
1126 | "requires": {
1127 | "@nodelib/fs.stat": "2.0.5",
1128 | "run-parallel": "^1.1.9"
1129 | }
1130 | },
1131 | "@nodelib/fs.stat": {
1132 | "version": "2.0.5",
1133 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
1134 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
1135 | "dev": true
1136 | },
1137 | "@nodelib/fs.walk": {
1138 | "version": "1.2.8",
1139 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
1140 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
1141 | "dev": true,
1142 | "requires": {
1143 | "@nodelib/fs.scandir": "2.1.5",
1144 | "fastq": "^1.6.0"
1145 | }
1146 | },
1147 | "@tailwindcss/aspect-ratio": {
1148 | "version": "0.4.2",
1149 | "resolved": "https://registry.npmjs.org/@tailwindcss/aspect-ratio/-/aspect-ratio-0.4.2.tgz",
1150 | "integrity": "sha512-8QPrypskfBa7QIMuKHg2TA7BqES6vhBrDLOv8Unb6FcFyd3TjKbc6lcmb9UPQHxfl24sXoJ41ux/H7qQQvfaSQ==",
1151 | "dev": true,
1152 | "requires": {}
1153 | },
1154 | "@tailwindcss/forms": {
1155 | "version": "0.5.3",
1156 | "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.3.tgz",
1157 | "integrity": "sha512-y5mb86JUoiUgBjY/o6FJSFZSEttfb3Q5gllE4xoKjAAD+vBrnIhE4dViwUuow3va8mpH4s9jyUbUbrRGoRdc2Q==",
1158 | "dev": true,
1159 | "requires": {
1160 | "mini-svg-data-uri": "^1.2.3"
1161 | }
1162 | },
1163 | "@tailwindcss/line-clamp": {
1164 | "version": "0.4.2",
1165 | "resolved": "https://registry.npmjs.org/@tailwindcss/line-clamp/-/line-clamp-0.4.2.tgz",
1166 | "integrity": "sha512-HFzAQuqYCjyy/SX9sLGB1lroPzmcnWv1FHkIpmypte10hptf4oPUfucryMKovZh2u0uiS9U5Ty3GghWfEJGwVw==",
1167 | "dev": true,
1168 | "requires": {}
1169 | },
1170 | "@tailwindcss/typography": {
1171 | "version": "0.5.7",
1172 | "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.7.tgz",
1173 | "integrity": "sha512-JTTSTrgZfp6Ki4svhPA4mkd9nmQ/j9EfE7SbHJ1cLtthKkpW2OxsFXzSmxbhYbEkfNIyAyhle5p4SYyKRbz/jg==",
1174 | "dev": true,
1175 | "requires": {
1176 | "lodash.castarray": "^4.4.0",
1177 | "lodash.isplainobject": "^4.0.6",
1178 | "lodash.merge": "^4.6.2",
1179 | "postcss-selector-parser": "6.0.10"
1180 | }
1181 | },
1182 | "acorn": {
1183 | "version": "7.4.1",
1184 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
1185 | "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
1186 | "dev": true
1187 | },
1188 | "acorn-node": {
1189 | "version": "1.8.2",
1190 | "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz",
1191 | "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==",
1192 | "dev": true,
1193 | "requires": {
1194 | "acorn": "^7.0.0",
1195 | "acorn-walk": "^7.0.0",
1196 | "xtend": "^4.0.2"
1197 | }
1198 | },
1199 | "acorn-walk": {
1200 | "version": "7.2.0",
1201 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
1202 | "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
1203 | "dev": true
1204 | },
1205 | "anymatch": {
1206 | "version": "3.1.2",
1207 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
1208 | "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
1209 | "dev": true,
1210 | "requires": {
1211 | "normalize-path": "^3.0.0",
1212 | "picomatch": "^2.0.4"
1213 | }
1214 | },
1215 | "arg": {
1216 | "version": "5.0.2",
1217 | "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
1218 | "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
1219 | "dev": true
1220 | },
1221 | "balanced-match": {
1222 | "version": "1.0.2",
1223 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
1224 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
1225 | "dev": true
1226 | },
1227 | "binary-extensions": {
1228 | "version": "2.2.0",
1229 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
1230 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
1231 | "dev": true
1232 | },
1233 | "brace-expansion": {
1234 | "version": "1.1.11",
1235 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
1236 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
1237 | "dev": true,
1238 | "requires": {
1239 | "balanced-match": "^1.0.0",
1240 | "concat-map": "0.0.1"
1241 | }
1242 | },
1243 | "braces": {
1244 | "version": "3.0.2",
1245 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
1246 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
1247 | "dev": true,
1248 | "requires": {
1249 | "fill-range": "^7.0.1"
1250 | }
1251 | },
1252 | "camelcase-css": {
1253 | "version": "2.0.1",
1254 | "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
1255 | "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
1256 | "dev": true
1257 | },
1258 | "chokidar": {
1259 | "version": "3.5.3",
1260 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
1261 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
1262 | "dev": true,
1263 | "requires": {
1264 | "anymatch": "~3.1.2",
1265 | "braces": "~3.0.2",
1266 | "fsevents": "~2.3.2",
1267 | "glob-parent": "~5.1.2",
1268 | "is-binary-path": "~2.1.0",
1269 | "is-glob": "~4.0.1",
1270 | "normalize-path": "~3.0.0",
1271 | "readdirp": "~3.6.0"
1272 | },
1273 | "dependencies": {
1274 | "glob-parent": {
1275 | "version": "5.1.2",
1276 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
1277 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
1278 | "dev": true,
1279 | "requires": {
1280 | "is-glob": "^4.0.1"
1281 | }
1282 | }
1283 | }
1284 | },
1285 | "color-name": {
1286 | "version": "1.1.4",
1287 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
1288 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
1289 | "dev": true
1290 | },
1291 | "concat-map": {
1292 | "version": "0.0.1",
1293 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
1294 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
1295 | "dev": true
1296 | },
1297 | "cross-env": {
1298 | "version": "7.0.3",
1299 | "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz",
1300 | "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==",
1301 | "dev": true,
1302 | "requires": {
1303 | "cross-spawn": "^7.0.1"
1304 | }
1305 | },
1306 | "cross-spawn": {
1307 | "version": "7.0.3",
1308 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
1309 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
1310 | "dev": true,
1311 | "requires": {
1312 | "path-key": "^3.1.0",
1313 | "shebang-command": "^2.0.0",
1314 | "which": "^2.0.1"
1315 | }
1316 | },
1317 | "cssesc": {
1318 | "version": "3.0.0",
1319 | "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
1320 | "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
1321 | "dev": true
1322 | },
1323 | "defined": {
1324 | "version": "1.0.1",
1325 | "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz",
1326 | "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==",
1327 | "dev": true
1328 | },
1329 | "detective": {
1330 | "version": "5.2.1",
1331 | "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz",
1332 | "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==",
1333 | "dev": true,
1334 | "requires": {
1335 | "acorn-node": "^1.8.2",
1336 | "defined": "^1.0.0",
1337 | "minimist": "^1.2.6"
1338 | }
1339 | },
1340 | "didyoumean": {
1341 | "version": "1.2.2",
1342 | "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
1343 | "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
1344 | "dev": true
1345 | },
1346 | "dlv": {
1347 | "version": "1.1.3",
1348 | "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
1349 | "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
1350 | "dev": true
1351 | },
1352 | "fast-glob": {
1353 | "version": "3.2.12",
1354 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
1355 | "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
1356 | "dev": true,
1357 | "requires": {
1358 | "@nodelib/fs.stat": "^2.0.2",
1359 | "@nodelib/fs.walk": "^1.2.3",
1360 | "glob-parent": "^5.1.2",
1361 | "merge2": "^1.3.0",
1362 | "micromatch": "^4.0.4"
1363 | },
1364 | "dependencies": {
1365 | "glob-parent": {
1366 | "version": "5.1.2",
1367 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
1368 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
1369 | "dev": true,
1370 | "requires": {
1371 | "is-glob": "^4.0.1"
1372 | }
1373 | }
1374 | }
1375 | },
1376 | "fastq": {
1377 | "version": "1.13.0",
1378 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
1379 | "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
1380 | "dev": true,
1381 | "requires": {
1382 | "reusify": "^1.0.4"
1383 | }
1384 | },
1385 | "fill-range": {
1386 | "version": "7.0.1",
1387 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
1388 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
1389 | "dev": true,
1390 | "requires": {
1391 | "to-regex-range": "^5.0.1"
1392 | }
1393 | },
1394 | "fs.realpath": {
1395 | "version": "1.0.0",
1396 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
1397 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
1398 | "dev": true
1399 | },
1400 | "fsevents": {
1401 | "version": "2.3.2",
1402 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
1403 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
1404 | "dev": true,
1405 | "optional": true
1406 | },
1407 | "function-bind": {
1408 | "version": "1.1.1",
1409 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
1410 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
1411 | "dev": true
1412 | },
1413 | "glob": {
1414 | "version": "7.2.3",
1415 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
1416 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
1417 | "dev": true,
1418 | "requires": {
1419 | "fs.realpath": "^1.0.0",
1420 | "inflight": "^1.0.4",
1421 | "inherits": "2",
1422 | "minimatch": "^3.1.1",
1423 | "once": "^1.3.0",
1424 | "path-is-absolute": "^1.0.0"
1425 | }
1426 | },
1427 | "glob-parent": {
1428 | "version": "6.0.2",
1429 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
1430 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
1431 | "dev": true,
1432 | "requires": {
1433 | "is-glob": "^4.0.3"
1434 | }
1435 | },
1436 | "has": {
1437 | "version": "1.0.3",
1438 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
1439 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
1440 | "dev": true,
1441 | "requires": {
1442 | "function-bind": "^1.1.1"
1443 | }
1444 | },
1445 | "inflight": {
1446 | "version": "1.0.6",
1447 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
1448 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
1449 | "dev": true,
1450 | "requires": {
1451 | "once": "^1.3.0",
1452 | "wrappy": "1"
1453 | }
1454 | },
1455 | "inherits": {
1456 | "version": "2.0.4",
1457 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
1458 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
1459 | "dev": true
1460 | },
1461 | "is-binary-path": {
1462 | "version": "2.1.0",
1463 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
1464 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
1465 | "dev": true,
1466 | "requires": {
1467 | "binary-extensions": "^2.0.0"
1468 | }
1469 | },
1470 | "is-core-module": {
1471 | "version": "2.11.0",
1472 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
1473 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
1474 | "dev": true,
1475 | "requires": {
1476 | "has": "^1.0.3"
1477 | }
1478 | },
1479 | "is-extglob": {
1480 | "version": "2.1.1",
1481 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
1482 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
1483 | "dev": true
1484 | },
1485 | "is-glob": {
1486 | "version": "4.0.3",
1487 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
1488 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
1489 | "dev": true,
1490 | "requires": {
1491 | "is-extglob": "^2.1.1"
1492 | }
1493 | },
1494 | "is-number": {
1495 | "version": "7.0.0",
1496 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
1497 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
1498 | "dev": true
1499 | },
1500 | "isexe": {
1501 | "version": "2.0.0",
1502 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
1503 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
1504 | "dev": true
1505 | },
1506 | "lilconfig": {
1507 | "version": "2.0.6",
1508 | "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz",
1509 | "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==",
1510 | "dev": true
1511 | },
1512 | "lodash.castarray": {
1513 | "version": "4.4.0",
1514 | "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz",
1515 | "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==",
1516 | "dev": true
1517 | },
1518 | "lodash.isplainobject": {
1519 | "version": "4.0.6",
1520 | "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
1521 | "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
1522 | "dev": true
1523 | },
1524 | "lodash.merge": {
1525 | "version": "4.6.2",
1526 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
1527 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
1528 | "dev": true
1529 | },
1530 | "merge2": {
1531 | "version": "1.4.1",
1532 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
1533 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
1534 | "dev": true
1535 | },
1536 | "micromatch": {
1537 | "version": "4.0.5",
1538 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
1539 | "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
1540 | "dev": true,
1541 | "requires": {
1542 | "braces": "^3.0.2",
1543 | "picomatch": "^2.3.1"
1544 | }
1545 | },
1546 | "mini-svg-data-uri": {
1547 | "version": "1.4.4",
1548 | "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz",
1549 | "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==",
1550 | "dev": true
1551 | },
1552 | "minimatch": {
1553 | "version": "3.1.2",
1554 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
1555 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
1556 | "dev": true,
1557 | "requires": {
1558 | "brace-expansion": "^1.1.7"
1559 | }
1560 | },
1561 | "minimist": {
1562 | "version": "1.2.7",
1563 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
1564 | "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==",
1565 | "dev": true
1566 | },
1567 | "nanoid": {
1568 | "version": "3.3.4",
1569 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
1570 | "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
1571 | "dev": true
1572 | },
1573 | "normalize-path": {
1574 | "version": "3.0.0",
1575 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
1576 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
1577 | "dev": true
1578 | },
1579 | "object-hash": {
1580 | "version": "3.0.0",
1581 | "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
1582 | "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
1583 | "dev": true
1584 | },
1585 | "once": {
1586 | "version": "1.4.0",
1587 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1588 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
1589 | "dev": true,
1590 | "requires": {
1591 | "wrappy": "1"
1592 | }
1593 | },
1594 | "path-is-absolute": {
1595 | "version": "1.0.1",
1596 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
1597 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
1598 | "dev": true
1599 | },
1600 | "path-key": {
1601 | "version": "3.1.1",
1602 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
1603 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
1604 | "dev": true
1605 | },
1606 | "path-parse": {
1607 | "version": "1.0.7",
1608 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
1609 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
1610 | "dev": true
1611 | },
1612 | "picocolors": {
1613 | "version": "1.0.0",
1614 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
1615 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
1616 | "dev": true
1617 | },
1618 | "picomatch": {
1619 | "version": "2.3.1",
1620 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
1621 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
1622 | "dev": true
1623 | },
1624 | "pify": {
1625 | "version": "2.3.0",
1626 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
1627 | "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
1628 | "dev": true
1629 | },
1630 | "postcss": {
1631 | "version": "8.4.18",
1632 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz",
1633 | "integrity": "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==",
1634 | "dev": true,
1635 | "requires": {
1636 | "nanoid": "^3.3.4",
1637 | "picocolors": "^1.0.0",
1638 | "source-map-js": "^1.0.2"
1639 | }
1640 | },
1641 | "postcss-import": {
1642 | "version": "14.1.0",
1643 | "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz",
1644 | "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==",
1645 | "dev": true,
1646 | "requires": {
1647 | "postcss-value-parser": "^4.0.0",
1648 | "read-cache": "^1.0.0",
1649 | "resolve": "^1.1.7"
1650 | }
1651 | },
1652 | "postcss-js": {
1653 | "version": "4.0.0",
1654 | "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz",
1655 | "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==",
1656 | "dev": true,
1657 | "requires": {
1658 | "camelcase-css": "^2.0.1"
1659 | }
1660 | },
1661 | "postcss-load-config": {
1662 | "version": "3.1.4",
1663 | "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz",
1664 | "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==",
1665 | "dev": true,
1666 | "requires": {
1667 | "lilconfig": "^2.0.5",
1668 | "yaml": "^1.10.2"
1669 | }
1670 | },
1671 | "postcss-nested": {
1672 | "version": "5.0.6",
1673 | "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz",
1674 | "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==",
1675 | "dev": true,
1676 | "requires": {
1677 | "postcss-selector-parser": "^6.0.6"
1678 | }
1679 | },
1680 | "postcss-selector-parser": {
1681 | "version": "6.0.10",
1682 | "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
1683 | "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==",
1684 | "dev": true,
1685 | "requires": {
1686 | "cssesc": "^3.0.0",
1687 | "util-deprecate": "^1.0.2"
1688 | }
1689 | },
1690 | "postcss-simple-vars": {
1691 | "version": "6.0.3",
1692 | "resolved": "https://registry.npmjs.org/postcss-simple-vars/-/postcss-simple-vars-6.0.3.tgz",
1693 | "integrity": "sha512-fkNn4Zio8vN4vIig9IFdb8lVlxWnYR769RgvxCM6YWlFKie/nQaOcaMMMFz/s4gsfHW4/5bJW+i57zD67mQU7g==",
1694 | "dev": true,
1695 | "requires": {}
1696 | },
1697 | "postcss-value-parser": {
1698 | "version": "4.2.0",
1699 | "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
1700 | "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
1701 | "dev": true
1702 | },
1703 | "queue-microtask": {
1704 | "version": "1.2.3",
1705 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
1706 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
1707 | "dev": true
1708 | },
1709 | "quick-lru": {
1710 | "version": "5.1.1",
1711 | "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
1712 | "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
1713 | "dev": true
1714 | },
1715 | "read-cache": {
1716 | "version": "1.0.0",
1717 | "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
1718 | "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
1719 | "dev": true,
1720 | "requires": {
1721 | "pify": "^2.3.0"
1722 | }
1723 | },
1724 | "readdirp": {
1725 | "version": "3.6.0",
1726 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
1727 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
1728 | "dev": true,
1729 | "requires": {
1730 | "picomatch": "^2.2.1"
1731 | }
1732 | },
1733 | "resolve": {
1734 | "version": "1.22.1",
1735 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
1736 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
1737 | "dev": true,
1738 | "requires": {
1739 | "is-core-module": "^2.9.0",
1740 | "path-parse": "^1.0.7",
1741 | "supports-preserve-symlinks-flag": "^1.0.0"
1742 | }
1743 | },
1744 | "reusify": {
1745 | "version": "1.0.4",
1746 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
1747 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
1748 | "dev": true
1749 | },
1750 | "rimraf": {
1751 | "version": "3.0.2",
1752 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
1753 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
1754 | "dev": true,
1755 | "requires": {
1756 | "glob": "^7.1.3"
1757 | }
1758 | },
1759 | "run-parallel": {
1760 | "version": "1.2.0",
1761 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
1762 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
1763 | "dev": true,
1764 | "requires": {
1765 | "queue-microtask": "^1.2.2"
1766 | }
1767 | },
1768 | "shebang-command": {
1769 | "version": "2.0.0",
1770 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
1771 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
1772 | "dev": true,
1773 | "requires": {
1774 | "shebang-regex": "^3.0.0"
1775 | }
1776 | },
1777 | "shebang-regex": {
1778 | "version": "3.0.0",
1779 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
1780 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
1781 | "dev": true
1782 | },
1783 | "source-map-js": {
1784 | "version": "1.0.2",
1785 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
1786 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
1787 | "dev": true
1788 | },
1789 | "supports-preserve-symlinks-flag": {
1790 | "version": "1.0.0",
1791 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
1792 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
1793 | "dev": true
1794 | },
1795 | "tailwindcss": {
1796 | "version": "3.2.1",
1797 | "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.2.1.tgz",
1798 | "integrity": "sha512-Uw+GVSxp5CM48krnjHObqoOwlCt5Qo6nw1jlCRwfGy68dSYb/LwS9ZFidYGRiM+w6rMawkZiu1mEMAsHYAfoLg==",
1799 | "dev": true,
1800 | "requires": {
1801 | "arg": "^5.0.2",
1802 | "chokidar": "^3.5.3",
1803 | "color-name": "^1.1.4",
1804 | "detective": "^5.2.1",
1805 | "didyoumean": "^1.2.2",
1806 | "dlv": "^1.1.3",
1807 | "fast-glob": "^3.2.12",
1808 | "glob-parent": "^6.0.2",
1809 | "is-glob": "^4.0.3",
1810 | "lilconfig": "^2.0.6",
1811 | "micromatch": "^4.0.5",
1812 | "normalize-path": "^3.0.0",
1813 | "object-hash": "^3.0.0",
1814 | "picocolors": "^1.0.0",
1815 | "postcss": "^8.4.17",
1816 | "postcss-import": "^14.1.0",
1817 | "postcss-js": "^4.0.0",
1818 | "postcss-load-config": "^3.1.4",
1819 | "postcss-nested": "6.0.0",
1820 | "postcss-selector-parser": "^6.0.10",
1821 | "postcss-value-parser": "^4.2.0",
1822 | "quick-lru": "^5.1.1",
1823 | "resolve": "^1.22.1"
1824 | },
1825 | "dependencies": {
1826 | "postcss-nested": {
1827 | "version": "6.0.0",
1828 | "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.0.tgz",
1829 | "integrity": "sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==",
1830 | "dev": true,
1831 | "requires": {
1832 | "postcss-selector-parser": "^6.0.10"
1833 | }
1834 | }
1835 | }
1836 | },
1837 | "to-regex-range": {
1838 | "version": "5.0.1",
1839 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
1840 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
1841 | "dev": true,
1842 | "requires": {
1843 | "is-number": "^7.0.0"
1844 | }
1845 | },
1846 | "util-deprecate": {
1847 | "version": "1.0.2",
1848 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
1849 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
1850 | "dev": true
1851 | },
1852 | "which": {
1853 | "version": "2.0.2",
1854 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
1855 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
1856 | "dev": true,
1857 | "requires": {
1858 | "isexe": "^2.0.0"
1859 | }
1860 | },
1861 | "wrappy": {
1862 | "version": "1.0.2",
1863 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
1864 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
1865 | "dev": true
1866 | },
1867 | "xtend": {
1868 | "version": "4.0.2",
1869 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
1870 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
1871 | "dev": true
1872 | },
1873 | "yaml": {
1874 | "version": "1.10.2",
1875 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
1876 | "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
1877 | "dev": true
1878 | }
1879 | }
1880 | }
1881 |
--------------------------------------------------------------------------------
/theme/static_src/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "theme",
3 | "version": "3.4.0",
4 | "description": "",
5 | "scripts": {
6 | "start": "npm run dev",
7 | "build": "npm run build:clean && npm run build:tailwind",
8 | "build:clean": "rimraf ../static/css/dist",
9 | "build:tailwind": "cross-env NODE_ENV=production tailwindcss --postcss -i ./src/styles.css -o ../static/css/dist/styles.css --minify",
10 | "dev": "cross-env NODE_ENV=development tailwindcss --postcss -i ./src/styles.css -o ../static/css/dist/styles.css -w",
11 | "tailwindcss": "node ./node_modules/tailwindcss/lib/cli.js"
12 | },
13 | "keywords": [],
14 | "author": "",
15 | "license": "MIT",
16 | "devDependencies": {
17 | "@tailwindcss/aspect-ratio": "^0.4.0",
18 | "@tailwindcss/forms": "^0.5.2",
19 | "@tailwindcss/line-clamp": "^0.4.0",
20 | "@tailwindcss/typography": "^0.5.2",
21 | "cross-env": "^7.0.3",
22 | "postcss": "^8.4.14",
23 | "postcss-import": "^14.1.0",
24 | "postcss-nested": "^5.0.6",
25 | "postcss-simple-vars": "^6.0.3",
26 | "rimraf": "^3.0.2",
27 | "tailwindcss": "^3.1.6"
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/theme/static_src/postcss.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: {
3 | "postcss-import": {},
4 | "postcss-simple-vars": {},
5 | "postcss-nested": {}
6 | },
7 | }
8 |
--------------------------------------------------------------------------------
/theme/static_src/src/styles.css:
--------------------------------------------------------------------------------
1 | @tailwind base;
2 | @tailwind components;
3 | @tailwind utilities;
4 |
--------------------------------------------------------------------------------
/theme/static_src/tailwind.config.js:
--------------------------------------------------------------------------------
1 | /**
2 | * This is a minimal config.
3 | *
4 | * If you need the full config, get it from here:
5 | * https://unpkg.com/browse/tailwindcss@latest/stubs/defaultConfig.stub.js
6 | */
7 |
8 | module.exports = {
9 | content: [
10 | /**
11 | * HTML. Paths to Django template files that will contain Tailwind CSS classes.
12 | */
13 |
14 | /* Templates within theme app (/templates), e.g. base.html. */
15 | '../templates/**/*.html',
16 |
17 | /*
18 | * Main templates directory of the project (BASE_DIR/templates).
19 | * Adjust the following line to match your project structure.
20 | */
21 | '../../templates/**/*.html',
22 |
23 | /*
24 | * Templates in other django apps (BASE_DIR//templates).
25 | * Adjust the following line to match your project structure.
26 | */
27 | '../../**/templates/**/*.html',
28 |
29 | /**
30 | * JS: If you use Tailwind CSS in JavaScript, uncomment the following lines and make sure
31 | * patterns match your project structure.
32 | */
33 | /* JS 1: Ignore any JavaScript in node_modules folder. */
34 | // '!../../**/node_modules',
35 | /* JS 2: Process all JavaScript files in the project. */
36 | // '../../**/*.js',
37 |
38 | /**
39 | * Python: If you use Tailwind CSS classes in Python, uncomment the following line
40 | * and make sure the pattern below matches your project structure.
41 | */
42 | // '../../**/*.py'
43 | ],
44 | theme: {
45 | extend: {},
46 | },
47 | plugins: [
48 | /**
49 | * '@tailwindcss/forms' is the forms plugin that provides a minimal styling
50 | * for forms. If you don't like it or have own styling for forms,
51 | * comment the line below to disable '@tailwindcss/forms'.
52 | */
53 | require('@tailwindcss/forms'),
54 | require('@tailwindcss/typography'),
55 | require('@tailwindcss/line-clamp'),
56 | require('@tailwindcss/aspect-ratio'),
57 | ],
58 | }
59 |
--------------------------------------------------------------------------------
/theme/templates/base.html:
--------------------------------------------------------------------------------
1 | {% load static tailwind_tags %}
2 |
3 |
4 |
5 | {% block title %}Django Chatbot{% endblock %}
6 |
7 |
8 |
9 | {% tailwind_css %}
10 |
11 |
12 |
13 | {% block body %} {% endblock %}
14 |
15 | {% block scripts%}{% endblock %}
16 |
17 |
--------------------------------------------------------------------------------