diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index aa9f2c0b..00000000 --- a/.eslintignore +++ /dev/null @@ -1,8 +0,0 @@ -web/static/**/*.min.* -node_modules/* -.mypy_cache -.pytest_cache -.tox -web/static/lib/* -web/static/fonts/* -web/static/css/* diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 14c24943..00000000 --- a/.eslintrc.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - "env": { - "browser": true - }, - "extends": "eslint:recommended", - "parserOptions": { - "ecmaVersion": 12 - }, - "rules": { - // "no-undef": "off" - }, - "globals": { - "CodeMirror": "readonly", - "flatpickr": "readonly" - } -}; diff --git a/.gitignore b/.gitignore index 355ca578..157de767 100644 --- a/.gitignore +++ b/.gitignore @@ -339,3 +339,4 @@ $RECYCLE.BIN/ *.lnk # End of https://www.toptal.com/developers/gitignore/api/node,python,macos,windows,git +Install.sh diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 1f0ba906..f5487ed0 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -21,7 +21,7 @@ exclude: > repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.4.0 + rev: v4.6.0 hooks: - id: pretty-format-json args: [--autofix] @@ -30,18 +30,18 @@ repos: - id: check-yaml - id: end-of-file-fixer - repo: https://github.com/PyCQA/isort - rev: 5.12.0 + rev: 5.13.2 hooks: - id: isort exclude: migrations* | docs* additional_dependencies: [toml] - repo: https://github.com/psf/black - rev: 23.9.1 + rev: 24.8.0 hooks: - id: black - language_version: python3.9 + language_version: python3.11 - repo: https://github.com/macisamuele/language-formatters-pre-commit-hooks - rev: v2.10.0 + rev: v2.14.0 hooks: - id: pretty-format-toml args: [--autofix] @@ -49,7 +49,3 @@ repos: args: [--autofix] - id: pretty-format-yaml args: [--autofix, --indent, '2'] -- repo: https://github.com/Riverside-Healthcare/djLint - rev: v1.33.0 - hooks: - - id: djlint-jinja diff --git a/.version b/.version index ccc99d02..4a36342f 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -2.12.3 +3.0.0 diff --git a/babel.config.js b/babel.config.js index 5c7c7c58..eab28de2 100644 --- a/babel.config.js +++ b/babel.config.js @@ -1,5 +1,5 @@ -module.exports = function (api) { - api.cache(true); +export default function (api) { + api.cache(false); const presets = [['@babel/preset-env']]; const plugins = []; return { diff --git a/config.py b/config.py index 017d38f7..4b438337 100644 --- a/config.py +++ b/config.py @@ -14,6 +14,7 @@ class Config: """All prod configuration set here. For dev there are overrides below.""" # pylint: disable=too-few-public-methods + # ruff: noqa: RUF012 ALLOWED_HOSTS = ["*", "localhost"] @@ -244,7 +245,7 @@ class Config: """ DEVOPS_URL = "https://dev.azure.com/orgname/" - DEVOPS_TOKEN = r"token" + DEVOPS_TOKEN = r"token" # noqa: S105 """ Default SQL Connection Settings @@ -324,6 +325,8 @@ class DevConfig(Config): class DemoConfig(Config): + """Configuration for a demo.""" + DEBUG = False DEMO = True AUTH_METHOD = "DEV" @@ -348,7 +351,7 @@ class TestConfig(DevConfig): # pylint: disable=too-few-public-methods SQLALCHEMY_DATABASE_URI = os.environ.get( "DATABASE_URL", - "postgresql+psycopg2://postgres@localhost/atlas_hub_scrap_test" + "postgresql+psycopg2://postgres@localhost/atlas_hub_scrap_test", # "sqlite:///../test.sqlite", ).replace("postgres://", "postgresql://") @@ -371,9 +374,9 @@ class TestConfig(DevConfig): # docker run -p 22:22 -d emberstack/sftp --name sftp SFTP_SERVER_USER = "demo" - SFTP_SERVER_PASS = "demo" + SFTP_SERVER_PASS = "demo" # noqa: S105 # docker run -d --name ftpd_server -p 21:21 onekilo79/ftpd_test # docker run -d --name ftpd_server -p 21:21 -p 30000-30009:30000-30009 -e FTP_USER_NAME=demo -e FTP_USER_PASS=demo -e FTP_USER_HOME=/home/demo -e "PUBLICHOST=localhost" -e "ADDED_FLAGS=-d -d" stilliard/pure-ftpd FTP_SERVER_USER = "demo" - FTP_SERVER_PASS = "demo" + FTP_SERVER_PASS = "demo" # noqa: S105 diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 00000000..71dc2d0f --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,39 @@ +import globals from "globals"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; +import js from "@eslint/js"; +import { FlatCompat } from "@eslint/eslintrc"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); +const compat = new FlatCompat({ + baseDirectory: __dirname, + recommendedConfig: js.configs.recommended, + allConfig: js.configs.all +}); + +export default [{ + ignores: [ + "web/static/**/*.min.*", + "node_modules/*", + "**/.mypy_cache", + "**/.pytest_cache", + "**/.tox", + "web/static/lib/*", + "web/static/fonts/*", + "web/static/css/*", + ], +}, ...compat.extends("eslint:recommended"), { + languageOptions: { + globals: { + ...globals.browser, + CodeMirror: "readonly", + flatpickr: "readonly", + }, + + ecmaVersion: 12, + sourceType: "script", + }, + + rules: {}, +}]; diff --git a/gulpfile.mjs b/gulpfile.mjs index 89958507..2e21ba7f 100644 --- a/gulpfile.mjs +++ b/gulpfile.mjs @@ -1,56 +1,100 @@ -import gulp from 'gulp'; +import pkg from 'gulp'; +const { src, dest, task, parallel,series } = pkg; import autoprefexer from 'gulp-autoprefixer'; import * as dartSass from 'sass'; import gulpSass from 'gulp-sass'; const sass = gulpSass(dartSass); - +import postcss from 'gulp-postcss'; import replace from 'gulp-replace'; -import fontawesomeSubset from 'fontawesome-subset'; +import {fontawesomeSubset} from 'fontawesome-subset'; import {deleteSync} from 'del'; import purgecss from 'gulp-purgecss'; -import cssnano from 'gulp-cssnano'; +import cssnano from 'cssnano'; -gulp.task('font:inter', function() { - return gulp.src('node_modules/@fontsource/inter/**/*').pipe(replace(/\.\/files\//g, '/static/fonts/inter/files/')).pipe(gulp.dest('web/static/fonts/inter')) +task('font:inter', function() { + return src('node_modules/@fontsource/inter/**/*', { removeBOM: false }) + .pipe(replace(/\.\/files\//g, '/static/fonts/inter/files/')) + .pipe(dest('web/static/fonts/inter')) }); -gulp.task('font:rasa', function() { - return gulp.src('node_modules/@fontsource/rasa/**/*').pipe(replace(/\.\/files\//g, '/static/fonts/rasa/files/')).pipe(gulp.dest('web/static/fonts/rasa')) +task('font:rasa', function() { + return src('node_modules/@fontsource/rasa/**/*', { removeBOM: false }) + .pipe(replace(/\.\/files\//g, '/static/fonts/rasa/files/')) + .pipe(dest('web/static/fonts/rasa')) }); -gulp.task('fontawesome', function(done) { +task('fontawesome', function(done) { deleteSync('web/static/fonts/fontawesome/webfonts', {force:true}); - fontawesomeSubset.fontawesomeSubset({ + fontawesomeSubset({ regular:['circle-play', 'circle-question'], - solid: ['triangle-exclamation', 'angle-down', 'circle-pause', 'right-to-bracket', 'users','eye', 'eye-slash', 'arrow-up-right-from-square', 'calendar', 'circle-stop','circle-question', 'circle-notch','circle-xmark', 'circle-check', 'angle-right', 'file-arrow-down', 'circle-info', 'magnifying-glass', 'pen-to-square', 'trash', 'delete-left', 'sort', 'terminal', 'list', 'ban', 'toggle-on', 'toggle-off', 'plus', 'rotate', 'download', 'copy', 'check'] + solid: ['triangle-exclamation' + , 'angle-down' + , 'circle-pause' + , 'right-to-bracket' + , 'users' + , 'eye' + , 'eye-slash' + , 'arrow-up-right-from-square' + , 'calendar' + , 'circle-stop' + , 'circle-question' + , 'circle-notch' + , 'circle-xmark' + , 'circle-check' + , 'angle-right' + , 'file-arrow-down' + , 'circle-info' + , 'magnifying-glass' + , 'pen-to-square' + , 'trash' + , 'delete-left' + , 'sort' + , 'terminal' + , 'list' + , 'ban' + , 'toggle-on' + , 'toggle-off' + , 'plus' + , 'rotate' + , 'download' + , 'copy' + , 'check'] }, 'web/static/fonts/fontawesome/webfonts') done(); }); -gulp.task('sass', function() { - return gulp.src("web/static/assets/**/*.scss") +task('sass', function() { + const plugins = [ + cssnano({ + preset: ['default', { discardComments: false }], + }), + ]; + return src("web/static/assets/**/*.scss") .pipe(sass().on('error', sass.logError)) + .pipe(postcss(plugins)) .pipe( purgecss({ - content: ['web/static/lib/**/*.js', 'web/static/js/**/*.js', 'web/templates/**/*.html.j2', 'runner/templates/**/*.html.j2', 'scheduler/templates/**/*.html.j2'], - safelist: ['has-text-success', 'mr-3', 'has-text-warning'], - whitelist: ['has-text-success', 'mr-3', 'has-text-warning'] + content: ['web/static/lib/**/*.js' + , 'web/static/js/**/*.js' + , 'web/templates/**/*.html.j2' + , 'runner/templates/**/*.html.j2' + , 'scheduler/templates/**/*.html.j2' + , 'web/web/*.py'], + safelist: [], + whitelist: [] }) ) - .pipe(autoprefexer({ - overrideBrowserslist: ['last 2 versions'] - })) - .pipe(cssnano()) - .pipe(gulp.dest('web/static/css/')) + .pipe(autoprefexer()) + .pipe(dest('web/static/css/')) }); -gulp.task('build', gulp.parallel('font:inter','font:rasa', gulp.series('fontawesome','sass'))); +task('build', parallel('font:inter','font:rasa', series('fontawesome','sass'))); -gulp.task('watch', gulp.series('build', function (cb) { - gulp.watch('web/static/assets/**/*.scss', gulp.series('sass')); - gulp.watch('web/fonts/fontawesome/**/*.scss', gulp.series('fontawesome','sass')); - gulp.watch('web/**/*.html*', gulp.series('fontawesome', 'sass')); +task('watch', series('build', function (cb) { + watch('web/static/assets/**/*.scss', series('sass')); + watch('web/fonts/fontawesome/**/*.scss', series('fontawesome','sass')); + watch('web/**/*.html*', series('fontawesome', 'sass')); cb(); })); diff --git a/migrations/env.py b/migrations/env.py index 9411efaa..441bc582 100644 --- a/migrations/env.py +++ b/migrations/env.py @@ -24,21 +24,21 @@ def get_engine(): try: # this works with Flask-SQLAlchemy<3 and Alchemical - return current_app.extensions['migrate'].db.get_engine() + return current_app.extensions["migrate"].db.get_engine() except TypeError: # this works with Flask-SQLAlchemy>=3 - return current_app.extensions['migrate'].db.engine + return current_app.extensions["migrate"].db.engine def get_engine_url(): try: return get_engine().url.render_as_string(hide_password=False).replace( - '%', '%%') + "%", "%%") except AttributeError: - return str(get_engine().url).replace('%', '%%') + return str(get_engine().url).replace("%", "%%") -config.set_main_option('sqlalchemy.url', get_engine_url()) -target_db = current_app.extensions['migrate'].db +config.set_main_option("sqlalchemy.url", get_engine_url()) +target_db = current_app.extensions["migrate"].db # other values from the config, defined by the needs of env.py, # can be acquired: @@ -46,7 +46,7 @@ def get_engine_url(): # ... etc. def get_metadata(): - if hasattr(target_db, 'metadatas'): + if hasattr(target_db, "metadatas"): return target_db.metadatas[None] return target_db.metadata diff --git a/migrations/versions/41eb15d37c84_.py b/migrations/versions/41eb15d37c84_.py new file mode 100644 index 00000000..2f9950f4 --- /dev/null +++ b/migrations/versions/41eb15d37c84_.py @@ -0,0 +1,99 @@ +"""empty message + +Revision ID: 41eb15d37c84 +Revises: e075a9d31b1a +Create Date: 2024-02-13 20:17:23.622449 + +""" +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision = '41eb15d37c84' +down_revision = 'e075a9d31b1a' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('connection_database', schema=None) as batch_op: + batch_op.create_index(batch_op.f('ix_connection_database_connection_id'), ['connection_id'], unique=False) + + with op.batch_alter_table('project', schema=None) as batch_op: + batch_op.alter_column('cron_year', + existing_type=sa.INTEGER(), + type_=sa.String(length=120), + existing_nullable=True) + batch_op.alter_column('cron_month', + existing_type=sa.INTEGER(), + type_=sa.String(length=120), + existing_nullable=True) + batch_op.alter_column('cron_week', + existing_type=sa.INTEGER(), + type_=sa.String(length=120), + existing_nullable=True) + batch_op.alter_column('cron_day', + existing_type=sa.INTEGER(), + type_=sa.String(length=120), + existing_nullable=True) + batch_op.alter_column('cron_week_day', + existing_type=sa.INTEGER(), + type_=sa.String(length=120), + existing_nullable=True) + batch_op.alter_column('cron_hour', + existing_type=sa.INTEGER(), + type_=sa.String(length=120), + existing_nullable=True) + batch_op.alter_column('cron_min', + existing_type=sa.INTEGER(), + type_=sa.String(length=120), + existing_nullable=True) + batch_op.alter_column('cron_sec', + existing_type=sa.INTEGER(), + type_=sa.String(length=120), + existing_nullable=True) + + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('project', schema=None) as batch_op: + batch_op.alter_column('cron_sec', + existing_type=sa.String(length=120), + type_=sa.INTEGER(), + existing_nullable=True) + batch_op.alter_column('cron_min', + existing_type=sa.String(length=120), + type_=sa.INTEGER(), + existing_nullable=True) + batch_op.alter_column('cron_hour', + existing_type=sa.String(length=120), + type_=sa.INTEGER(), + existing_nullable=True) + batch_op.alter_column('cron_week_day', + existing_type=sa.String(length=120), + type_=sa.INTEGER(), + existing_nullable=True) + batch_op.alter_column('cron_day', + existing_type=sa.String(length=120), + type_=sa.INTEGER(), + existing_nullable=True) + batch_op.alter_column('cron_week', + existing_type=sa.String(length=120), + type_=sa.INTEGER(), + existing_nullable=True) + batch_op.alter_column('cron_month', + existing_type=sa.String(length=120), + type_=sa.INTEGER(), + existing_nullable=True) + batch_op.alter_column('cron_year', + existing_type=sa.String(length=120), + type_=sa.INTEGER(), + existing_nullable=True) + + with op.batch_alter_table('connection_database', schema=None) as batch_op: + batch_op.drop_index(batch_op.f('ix_connection_database_connection_id')) + + # ### end Alembic commands ### diff --git a/migrations/versions/73214b16a952_.py b/migrations/versions/73214b16a952_.py new file mode 100644 index 00000000..b1feb6f3 --- /dev/null +++ b/migrations/versions/73214b16a952_.py @@ -0,0 +1,65 @@ +"""empty message + +Revision ID: 73214b16a952 +Revises: 9ba33783b877 +Create Date: 2024-08-09 17:56:31.257536 + +""" +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision = '73214b16a952' +down_revision = '9ba33783b877' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('connection_database', schema=None) as batch_op: + batch_op.drop_index('ix_connection_database_type_id') + + with op.batch_alter_table('connection_database_type', schema=None) as batch_op: + batch_op.create_index(batch_op.f('ix_connection_database_type_id'), ['id'], unique=False) + + with op.batch_alter_table('task', schema=None) as batch_op: + batch_op.drop_index('ix_task_destination_file_type_id') + batch_op.drop_index('ix_task_processing_type_id') + batch_op.drop_index('ix_task_status_id') + + with op.batch_alter_table('task_destination_file_type', schema=None) as batch_op: + batch_op.create_index(batch_op.f('ix_task_destination_file_type_id'), ['id'], unique=False) + + with op.batch_alter_table('task_processing_type', schema=None) as batch_op: + batch_op.create_index(batch_op.f('ix_task_processing_type_id'), ['id'], unique=False) + + with op.batch_alter_table('task_status', schema=None) as batch_op: + batch_op.create_index(batch_op.f('ix_task_status_id'), ['id'], unique=False) + + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('task_status', schema=None) as batch_op: + batch_op.drop_index(batch_op.f('ix_task_status_id')) + + with op.batch_alter_table('task_processing_type', schema=None) as batch_op: + batch_op.drop_index(batch_op.f('ix_task_processing_type_id')) + + with op.batch_alter_table('task_destination_file_type', schema=None) as batch_op: + batch_op.drop_index(batch_op.f('ix_task_destination_file_type_id')) + + with op.batch_alter_table('task', schema=None) as batch_op: + batch_op.create_index('ix_task_status_id', ['status_id'], unique=False) + batch_op.create_index('ix_task_processing_type_id', ['processing_type_id'], unique=False) + batch_op.create_index('ix_task_destination_file_type_id', ['destination_file_type_id'], unique=False) + + with op.batch_alter_table('connection_database_type', schema=None) as batch_op: + batch_op.drop_index(batch_op.f('ix_connection_database_type_id')) + + with op.batch_alter_table('connection_database', schema=None) as batch_op: + batch_op.create_index('ix_connection_database_type_id', ['type_id'], unique=False) + + # ### end Alembic commands ### diff --git a/migrations/versions/9ba33783b877_.py b/migrations/versions/9ba33783b877_.py new file mode 100644 index 00000000..bfe68e2f --- /dev/null +++ b/migrations/versions/9ba33783b877_.py @@ -0,0 +1,93 @@ +"""empty message + +Revision ID: 9ba33783b877 +Revises: 41eb15d37c84 +Create Date: 2024-07-26 10:33:31.112172 + +""" +import sqlalchemy as sa +from alembic import op +from sqlalchemy.dialects import postgresql + +# revision identifiers, used by Alembic. +revision = '9ba33783b877' +down_revision = '41eb15d37c84' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + # these are auto added by postgres, but added to this file so they will not be added again. + # with op.batch_alter_table('connection_database_type', schema=None) as batch_op: + # batch_op.create_index(batch_op.f('ix_connection_database_type_id'), ['id'], unique=False) + + with op.batch_alter_table('login', schema=None) as batch_op: + batch_op.alter_column('login_date', + existing_type=postgresql.TIMESTAMP(), + nullable=False, + existing_server_default=sa.text('now()')) + + with op.batch_alter_table('project', schema=None) as batch_op: + batch_op.alter_column('created', + existing_type=postgresql.TIMESTAMP(), + nullable=False, + existing_server_default=sa.text('now()')) + + with op.batch_alter_table('task', schema=None) as batch_op: + batch_op.alter_column('created', + existing_type=postgresql.TIMESTAMP(), + nullable=False, + existing_server_default=sa.text('now()')) + batch_op.drop_index('ix_task_email_error') + + # these are auto added by postgres, but added to this file so they will not be added again. + # with op.batch_alter_table('task_destination_file_type', schema=None) as batch_op: + # batch_op.create_index(batch_op.f('ix_task_destination_file_type_id'), ['id'], unique=False) + + + # these are auto added by postgres, but added to this file so they will not be added again. + # with op.batch_alter_table('task_processing_type', schema=None) as batch_op: + # batch_op.create_index(batch_op.f('ix_task_processing_type_id'), ['id'], unique=False) + + # with op.batch_alter_table('task_status', schema=None) as batch_op: + # batch_op.create_index(batch_op.f('ix_task_status_id'), ['id'], unique=False) + + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('task_status', schema=None) as batch_op: + batch_op.drop_index(batch_op.f('ix_task_status_id')) + + with op.batch_alter_table('task_processing_type', schema=None) as batch_op: + batch_op.drop_index(batch_op.f('ix_task_processing_type_id')) + + + with op.batch_alter_table('task_destination_file_type', schema=None) as batch_op: + batch_op.drop_index(batch_op.f('ix_task_destination_file_type_id')) + + with op.batch_alter_table('task', schema=None) as batch_op: + batch_op.create_index('ix_task_email_error', ['email_error'], unique=False) + batch_op.alter_column('created', + existing_type=postgresql.TIMESTAMP(), + nullable=True, + existing_server_default=sa.text('now()')) + + with op.batch_alter_table('project', schema=None) as batch_op: + batch_op.alter_column('created', + existing_type=postgresql.TIMESTAMP(), + nullable=True, + existing_server_default=sa.text('now()')) + + with op.batch_alter_table('login', schema=None) as batch_op: + batch_op.alter_column('login_date', + existing_type=postgresql.TIMESTAMP(), + nullable=True, + existing_server_default=sa.text('now()')) + + with op.batch_alter_table('connection_database_type', schema=None) as batch_op: + batch_op.drop_index(batch_op.f('ix_connection_database_type_id')) + + # ### end Alembic commands ### diff --git a/package-lock.json b/package-lock.json index d40af78f..7b2ece70 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,122 +1,123 @@ { "name": "atlas_automation_hub", - "version": "2.10.4", + "version": "3.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "atlas_automation_hub", - "version": "2.10.4", + "version": "3.0.0", "hasInstallScript": true, "license": "AGPL-3.0-or-later", "dependencies": { - "@babel/preset-env": "^7.22.20", - "@fontsource/inter": "5.0.3", - "@fontsource/rasa": "5.0.3", - "@hotwired/turbo": "^7.3.0", - "@rollup/plugin-babel": "^6.0.3", - "@rollup/plugin-commonjs": "^25.0.4", - "@rollup/plugin-json": "^6.0.0", - "@rollup/plugin-node-resolve": "^15.2.1", - "bulma": "0.9.4", - "bulma-checkradio": "2.1.3", - "bulma-switch": "2.0.4", + "@babel/preset-env": "^7.25.4", + "@fontsource/inter": "5.1.0", + "@fontsource/rasa": "5.1.0", + "@hotwired/turbo": "^8.0.5", + "@rollup/plugin-babel": "^6.0.4", + "@rollup/plugin-commonjs": "^26.0.1", + "@rollup/plugin-json": "^6.1.0", + "@rollup/plugin-node-resolve": "^15.2.3", + "bulma": "^1.0.2", + "bulma-checkradio": "^2.1.3", + "bulma-switch": "^2.0.4", "bulma-tooltip": "3.0.2", - "del": "7.0.0", + "codemirror": "^6.0.1", + "del": "7.1.0", "fontawesome-subset": "4.4.0", - "gulp": "4.0.2", - "gulp-autoprefixer": "8.0.0", + "git-cz": "^4.9.0", + "gulp": "5.0.0", + "gulp-autoprefixer": "9.0.0", "gulp-replace": "1.1.4", "gulp-sass": "5.1.0", "npm-run-all": "^4.1.5", - "rollup": "^3.29.2", - "sass": "^1.67.0", - "uglify-js": "^3.17.4" + "rollup": "^4.21.3", + "sass": "^1.78.0", + "uglify-js": "^3.19.3" }, "devDependencies": { - "@fortawesome/fontawesome-free": "6.4.0", - "@semantic-release/changelog": "6.0.3", - "@semantic-release/commit-analyzer": "^11.0.0", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "^9.10.0", + "@fortawesome/fontawesome-free": "6.6.0", + "@semantic-release/changelog": "^6.0.3", + "@semantic-release/commit-analyzer": "13.0.0", "@semantic-release/exec": "6.0.3", "@semantic-release/git": "10.0.1", - "@semantic-release/github": "^9.0.6", - "@semantic-release/npm": "^11.0.0", - "@semantic-release/release-notes-generator": "^12.0.0", - "browser-sync": "^2.29.1", + "@semantic-release/github": "^10.0.6", + "@semantic-release/npm": "^12.0.1", + "@semantic-release/release-notes-generator": "14.0.0", + "browser-sync": "^3.0.2", + "cssnano": "^7.0.6", "cz-conventional-changelog": "3.3.0", - "eslint": "^8.49.0", + "eslint": "^9.10.0", + "globals": "^15.9.0", "gulp-concat": "2.6.1", - "gulp-cssnano": "2.1.3", - "gulp-purgecss": "5.0.0", + "gulp-postcss": "10.0.0", + "gulp-purgecss": "6.0.0", "gulp-rename": "2.0.0", "gulp-uglify": "3.0.2", - "prettier": "^3.0.3", - "semantic-release": "^22.0.0" - } - }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "prettier": "^3.3.3", + "semantic-release": "^24.0.0" } }, "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "license": "Apache-2.0", "peer": true, "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "license": "MIT", "dependencies": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.20.tgz", - "integrity": "sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz", + "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.4.tgz", - "integrity": "sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", + "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", + "license": "MIT", "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.21.4", - "@babel/generator": "^7.21.4", - "@babel/helper-compilation-targets": "^7.21.4", - "@babel/helper-module-transforms": "^7.21.2", - "@babel/helpers": "^7.21.0", - "@babel/parser": "^7.21.4", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.4", - "@babel/types": "^7.21.4", - "convert-source-map": "^1.7.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-module-transforms": "^7.25.2", + "@babel/helpers": "^7.25.0", + "@babel/parser": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.2", + "@babel/types": "^7.25.2", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" + "json5": "^2.2.3", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -126,70 +127,55 @@ "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "peer": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.5.tgz", - "integrity": "sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==", - "peer": true, + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.6.tgz", + "integrity": "sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==", + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", + "@babel/types": "^7.25.6", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/generator/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", - "peer": true, - "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", - "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.5.tgz", - "integrity": "sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz", + "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==", + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", - "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", + "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", + "@babel/compat-data": "^7.25.2", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -197,40 +183,18 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", - "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.15", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.4.tgz", + "integrity": "sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/helper-replace-supers": "^7.25.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/traverse": "^7.25.4", "semver": "^6.3.1" }, "engines": { @@ -240,22 +204,15 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.5.tgz", - "integrity": "sha512-1VpEFOIbMRaXyDeUwUfmTIxExLwQ+zkW+Bh5zXpApA3oQedBx9v/updixWxnx/bZpKw7u8VxWjb/qWpIcmPq8A==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz", + "integrity": "sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==", + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-annotate-as-pure": "^7.24.7", "regexpu-core": "^5.3.1", - "semver": "^6.3.0" + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -264,18 +221,11 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz", - "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", + "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", + "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-plugin-utils": "^7.22.5", @@ -287,69 +237,42 @@ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", - "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", - "dependencies": { - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.15.tgz", - "integrity": "sha512-qLNsZbgrNh0fDQBCPocSL8guki1hcPvltGDv/NxvUoABwFq7GkKSu1nRXeJkVZc+wJvne2E0RKQz+2SQrz6eAA==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz", + "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==", + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.15" + "@babel/traverse": "^7.24.8", + "@babel/types": "^7.24.8" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.15" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.20.tgz", - "integrity": "sha512-dLT7JVWIUUxKOs1UnJUBR3S70YK+pKX6AbJgB2vMIvEkZkrfJDbYDJesnPshtKV4LhDOR3Oc5YULeDizRek+5A==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", + "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.2" }, "engines": { "node": ">=6.9.0" @@ -359,32 +282,35 @@ } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", - "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", + "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", + "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", - "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz", + "integrity": "sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==", + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-wrap-function": "^7.22.20" + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-wrap-function": "^7.25.0", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -394,13 +320,14 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", - "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz", + "integrity": "sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==", + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-member-expression-to-functions": "^7.22.15", - "@babel/helper-optimise-call-expression": "^7.22.5" + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -410,106 +337,109 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", - "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", + "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", - "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", - "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz", + "integrity": "sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==", + "license": "MIT", "dependencies": { - "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.15", - "@babel/types": "^7.22.19" + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.0", + "@babel/types": "^7.25.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", - "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.6.tgz", + "integrity": "sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==", + "license": "MIT", "peer": true, "dependencies": { - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.0", - "@babel/types": "^7.21.0" + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-validator-identifier": "^7.24.7", "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.22.16", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.16.tgz", - "integrity": "sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz", + "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.6" + }, "bin": { "parser": "bin/babel-parser.js" }, @@ -517,12 +447,44 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.25.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.3.tgz", + "integrity": "sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.0.tgz", + "integrity": "sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz", - "integrity": "sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz", + "integrity": "sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -532,13 +494,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz", - "integrity": "sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz", + "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.22.15" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -547,10 +510,39 @@ "@babel/core": "^7.13.0" } }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz", + "integrity": "sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -562,6 +554,7 @@ "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, @@ -573,6 +566,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -587,6 +581,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -598,6 +593,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" }, @@ -606,11 +602,12 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", - "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.25.6.tgz", + "integrity": "sha512-aABl0jHw9bZ2karQ/uUD6XP4u0SG22SJrOHFoL6XB1R7dTovOP4TzTlsxOYC5yQ1pdscVK2JTUnF6QL3ARoAiQ==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -620,11 +617,12 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz", - "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.6.tgz", + "integrity": "sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -637,6 +635,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -648,6 +647,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -659,6 +659,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -670,6 +671,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -681,6 +683,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -692,6 +695,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -703,6 +707,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -714,6 +719,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -725,6 +731,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -739,6 +746,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -753,6 +761,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -765,11 +774,12 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", - "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", + "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -779,14 +789,15 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.15.tgz", - "integrity": "sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.4.tgz", + "integrity": "sha512-jz8cV2XDDTqjKPwVPJBIjORVEmSGYhdRa8e5k5+vN+uwcjSrSxUaebBRa4ko1jqNF2uxyg8G6XYk30Jv285xzg==", + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-remap-async-to-generator": "^7.25.0", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/traverse": "^7.25.4" }, "engines": { "node": ">=6.9.0" @@ -796,13 +807,14 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", - "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz", + "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==", + "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.5" + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-remap-async-to-generator": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -812,11 +824,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", - "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz", + "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -826,11 +839,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.15.tgz", - "integrity": "sha512-G1czpdJBZCtngoK1sJgloLiOHUnkb/bLZwqVZD8kXmq0ZnVfTTWUcs9OWtp0mBtYJ+4LQY1fllqBkOIPhXmFmw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz", + "integrity": "sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -840,12 +854,13 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", - "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.4.tgz", + "integrity": "sha512-nZeZHyCWPfjkdU5pA/uHiTaDAFUEqkpzf1YoQT2NeSynCGYq9rxfyI3XpQbfx/a0hSnFH6TGlEXvae5Vi7GD8g==", + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-class-features-plugin": "^7.25.4", + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -855,12 +870,13 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz", - "integrity": "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz", + "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==", + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.11", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, "engines": { @@ -871,18 +887,16 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz", - "integrity": "sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", - "@babel/helper-split-export-declaration": "^7.22.6", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.4.tgz", + "integrity": "sha512-oexUfaQle2pF/b6E0dwsxQtAol9TLSO88kQvym6HHBWFliV2lGdrPieX+WgMRLSJDVzdYywk7jXbLPuO2KLTLg==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-replace-supers": "^7.25.0", + "@babel/traverse": "^7.25.4", "globals": "^11.1.0" }, "engines": { @@ -896,17 +910,19 @@ "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", - "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", + "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/template": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/template": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -916,11 +932,12 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.15.tgz", - "integrity": "sha512-HzG8sFl1ZVGTme74Nw+X01XsUTqERVQ6/RLHo3XjGRzm7XD6QTtfS3NJotVgCGy8BzkDqRjRBD8dAyJn5TuvSQ==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz", + "integrity": "sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -930,12 +947,13 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", - "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz", + "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==", + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -945,11 +963,12 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", - "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz", + "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -958,12 +977,29 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.0.tgz", + "integrity": "sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz", - "integrity": "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", + "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, "engines": { @@ -974,12 +1010,13 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", - "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz", + "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==", + "license": "MIT", "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -989,11 +1026,12 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz", - "integrity": "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz", + "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, "engines": { @@ -1004,11 +1042,13 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz", - "integrity": "sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", + "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1018,13 +1058,14 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", - "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", + "version": "7.25.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz", + "integrity": "sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==", + "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.1" }, "engines": { "node": ">=6.9.0" @@ -1034,11 +1075,12 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz", - "integrity": "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz", + "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-json-strings": "^7.8.3" }, "engines": { @@ -1049,11 +1091,12 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", - "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz", + "integrity": "sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1063,11 +1106,12 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz", - "integrity": "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz", + "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { @@ -1078,11 +1122,12 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", - "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz", + "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1092,12 +1137,13 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz", - "integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz", + "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==", + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1107,13 +1153,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.15.tgz", - "integrity": "sha512-jWL4eh90w0HQOTKP2MoXXUpVxilxsB2Vl4ji69rSjS3EcZ/v4sBmn+A3NpepuJzBhOaEBbR7udonlHHn5DWidg==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz", + "integrity": "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==", + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5" + "@babel/helper-module-transforms": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-simple-access": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1123,14 +1170,15 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.11.tgz", - "integrity": "sha512-rIqHmHoMEOhI3VkVf5jQ15l539KrwhzqcBO6wdCNWPWc/JWt9ILNYNUssbRpeq0qWns8svuw8LnMNCvWBIJ8wA==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz", + "integrity": "sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==", + "license": "MIT", "dependencies": { - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.22.9", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5" + "@babel/helper-module-transforms": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -1140,12 +1188,13 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", - "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz", + "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==", + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1155,12 +1204,13 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", - "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz", + "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==", + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1170,11 +1220,12 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", - "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz", + "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1184,11 +1235,12 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz", - "integrity": "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz", + "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, "engines": { @@ -1199,11 +1251,12 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz", - "integrity": "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz", + "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, "engines": { @@ -1214,15 +1267,15 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz", - "integrity": "sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz", + "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==", + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.22.15" + "@babel/plugin-transform-parameters": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1232,12 +1285,13 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", - "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz", + "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1247,11 +1301,12 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz", - "integrity": "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz", + "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, "engines": { @@ -1262,12 +1317,13 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.15.tgz", - "integrity": "sha512-ngQ2tBhq5vvSJw2Q2Z9i7ealNkpDMU0rGWnHPKqRZO0tzZ5tlaoz4hDvhXioOoaE0X2vfNss1djwg0DXlfu30A==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz", + "integrity": "sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "engines": { @@ -1278,11 +1334,12 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz", - "integrity": "sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", + "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1292,12 +1349,13 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz", - "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.4.tgz", + "integrity": "sha512-ao8BG7E2b/URaUQGqN3Tlsg+M3KlHY6rJ1O1gXAEUnZoyNQnvKyH87Kfg+FoxSeyWUB8ISZZsC91C44ZuBFytw==", + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-class-features-plugin": "^7.25.4", + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1307,13 +1365,14 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz", - "integrity": "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz", + "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==", + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.11", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { @@ -1324,11 +1383,12 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", - "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", + "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1338,11 +1398,12 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz", - "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz", + "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "regenerator-transform": "^0.15.2" }, "engines": { @@ -1353,11 +1414,12 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", - "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz", + "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1367,11 +1429,12 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", - "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", + "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1381,12 +1444,13 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", - "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", + "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1396,11 +1460,12 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", - "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz", + "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1410,11 +1475,12 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", - "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", + "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1424,11 +1490,12 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", - "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz", + "integrity": "sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1438,11 +1505,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz", - "integrity": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz", + "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1452,12 +1520,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz", - "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz", + "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==", + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1467,12 +1536,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", - "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz", + "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==", + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1482,12 +1552,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz", - "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.4.tgz", + "integrity": "sha512-qesBxiWkgN1Q+31xUE9RcMk79eOXXDCv6tfyGMRSs4RGlioSg2WVyQAm07k726cSE56pa+Kb0y9epX2qaXzTvA==", + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.25.2", + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1497,24 +1568,28 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.20.tgz", - "integrity": "sha512-11MY04gGC4kSzlPHRfvVkNAZhUxOvm7DCJ37hPDnUENwe06npjIRAfInEMTGSb4LZK5ZgDFkv5hw0lGebHeTyg==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.4.tgz", + "integrity": "sha512-W9Gyo+KmcxjGahtt3t9fb14vFRWvPpu5pT6GBlovAK6BTBcxgjfVMSQCfJl4oi35ODrxP6xx2Wr8LNST57Mraw==", + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.22.20", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.15", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.15", + "@babel/compat-data": "^7.25.4", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-option": "^7.24.8", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.3", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.0", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.0", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.0", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.22.5", - "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-assertions": "^7.24.7", + "@babel/plugin-syntax-import-attributes": "^7.24.7", "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", @@ -1526,60 +1601,60 @@ "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.22.5", - "@babel/plugin-transform-async-generator-functions": "^7.22.15", - "@babel/plugin-transform-async-to-generator": "^7.22.5", - "@babel/plugin-transform-block-scoped-functions": "^7.22.5", - "@babel/plugin-transform-block-scoping": "^7.22.15", - "@babel/plugin-transform-class-properties": "^7.22.5", - "@babel/plugin-transform-class-static-block": "^7.22.11", - "@babel/plugin-transform-classes": "^7.22.15", - "@babel/plugin-transform-computed-properties": "^7.22.5", - "@babel/plugin-transform-destructuring": "^7.22.15", - "@babel/plugin-transform-dotall-regex": "^7.22.5", - "@babel/plugin-transform-duplicate-keys": "^7.22.5", - "@babel/plugin-transform-dynamic-import": "^7.22.11", - "@babel/plugin-transform-exponentiation-operator": "^7.22.5", - "@babel/plugin-transform-export-namespace-from": "^7.22.11", - "@babel/plugin-transform-for-of": "^7.22.15", - "@babel/plugin-transform-function-name": "^7.22.5", - "@babel/plugin-transform-json-strings": "^7.22.11", - "@babel/plugin-transform-literals": "^7.22.5", - "@babel/plugin-transform-logical-assignment-operators": "^7.22.11", - "@babel/plugin-transform-member-expression-literals": "^7.22.5", - "@babel/plugin-transform-modules-amd": "^7.22.5", - "@babel/plugin-transform-modules-commonjs": "^7.22.15", - "@babel/plugin-transform-modules-systemjs": "^7.22.11", - "@babel/plugin-transform-modules-umd": "^7.22.5", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.22.5", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", - "@babel/plugin-transform-numeric-separator": "^7.22.11", - "@babel/plugin-transform-object-rest-spread": "^7.22.15", - "@babel/plugin-transform-object-super": "^7.22.5", - "@babel/plugin-transform-optional-catch-binding": "^7.22.11", - "@babel/plugin-transform-optional-chaining": "^7.22.15", - "@babel/plugin-transform-parameters": "^7.22.15", - "@babel/plugin-transform-private-methods": "^7.22.5", - "@babel/plugin-transform-private-property-in-object": "^7.22.11", - "@babel/plugin-transform-property-literals": "^7.22.5", - "@babel/plugin-transform-regenerator": "^7.22.10", - "@babel/plugin-transform-reserved-words": "^7.22.5", - "@babel/plugin-transform-shorthand-properties": "^7.22.5", - "@babel/plugin-transform-spread": "^7.22.5", - "@babel/plugin-transform-sticky-regex": "^7.22.5", - "@babel/plugin-transform-template-literals": "^7.22.5", - "@babel/plugin-transform-typeof-symbol": "^7.22.5", - "@babel/plugin-transform-unicode-escapes": "^7.22.10", - "@babel/plugin-transform-unicode-property-regex": "^7.22.5", - "@babel/plugin-transform-unicode-regex": "^7.22.5", - "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", + "@babel/plugin-transform-arrow-functions": "^7.24.7", + "@babel/plugin-transform-async-generator-functions": "^7.25.4", + "@babel/plugin-transform-async-to-generator": "^7.24.7", + "@babel/plugin-transform-block-scoped-functions": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.25.0", + "@babel/plugin-transform-class-properties": "^7.25.4", + "@babel/plugin-transform-class-static-block": "^7.24.7", + "@babel/plugin-transform-classes": "^7.25.4", + "@babel/plugin-transform-computed-properties": "^7.24.7", + "@babel/plugin-transform-destructuring": "^7.24.8", + "@babel/plugin-transform-dotall-regex": "^7.24.7", + "@babel/plugin-transform-duplicate-keys": "^7.24.7", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.0", + "@babel/plugin-transform-dynamic-import": "^7.24.7", + "@babel/plugin-transform-exponentiation-operator": "^7.24.7", + "@babel/plugin-transform-export-namespace-from": "^7.24.7", + "@babel/plugin-transform-for-of": "^7.24.7", + "@babel/plugin-transform-function-name": "^7.25.1", + "@babel/plugin-transform-json-strings": "^7.24.7", + "@babel/plugin-transform-literals": "^7.25.2", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", + "@babel/plugin-transform-member-expression-literals": "^7.24.7", + "@babel/plugin-transform-modules-amd": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.8", + "@babel/plugin-transform-modules-systemjs": "^7.25.0", + "@babel/plugin-transform-modules-umd": "^7.24.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", + "@babel/plugin-transform-new-target": "^7.24.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", + "@babel/plugin-transform-numeric-separator": "^7.24.7", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-object-super": "^7.24.7", + "@babel/plugin-transform-optional-catch-binding": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.8", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.25.4", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-property-literals": "^7.24.7", + "@babel/plugin-transform-regenerator": "^7.24.7", + "@babel/plugin-transform-reserved-words": "^7.24.7", + "@babel/plugin-transform-shorthand-properties": "^7.24.7", + "@babel/plugin-transform-spread": "^7.24.7", + "@babel/plugin-transform-sticky-regex": "^7.24.7", + "@babel/plugin-transform-template-literals": "^7.24.7", + "@babel/plugin-transform-typeof-symbol": "^7.24.8", + "@babel/plugin-transform-unicode-escapes": "^7.24.7", + "@babel/plugin-transform-unicode-property-regex": "^7.24.7", + "@babel/plugin-transform-unicode-regex": "^7.24.7", + "@babel/plugin-transform-unicode-sets-regex": "^7.25.4", "@babel/preset-modules": "0.1.6-no-external-plugins", - "@babel/types": "^7.22.19", - "babel-plugin-polyfill-corejs2": "^0.4.5", - "babel-plugin-polyfill-corejs3": "^0.8.3", - "babel-plugin-polyfill-regenerator": "^0.5.2", - "core-js-compat": "^3.31.0", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.6", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.37.1", "semver": "^6.3.1" }, "engines": { @@ -1589,29 +1664,11 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/preset-env/node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", - "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-env/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/preset-modules": { "version": "0.1.6-no-external-plugins", "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/types": "^7.4.4", @@ -1624,12 +1681,14 @@ "node_modules/@babel/regjsgen": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "license": "MIT" }, "node_modules/@babel/runtime": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.15.tgz", - "integrity": "sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz", + "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==", + "license": "MIT", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -1638,33 +1697,31 @@ } }, "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", + "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.5.tgz", - "integrity": "sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==", - "peer": true, + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.6.tgz", + "integrity": "sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==", + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5", - "debug": "^4.1.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.6", + "@babel/parser": "^7.25.6", + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.6", + "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { @@ -1675,275 +1732,254 @@ "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "peer": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/@babel/types": { - "version": "7.22.19", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.19.tgz", - "integrity": "sha512-P7LAw/LbojPzkgp5oznjE6tQEIWbp4PkkfrZDINTro9zgBRtI324/EYsiSI7lhPbpIQ+DCeR2NNmMWANGGfZsg==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz", + "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==", + "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.19", + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/@commitlint/config-validator": { - "version": "17.0.3", - "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-17.0.3.tgz", - "integrity": "sha512-3tLRPQJKapksGE7Kee9axv+9z5I2GDHitDH4q63q7NmNA0wkB+DAorJ0RHz2/K00Zb1/MVdHzhCga34FJvDihQ==", - "dev": true, - "optional": true, + "node_modules/@codemirror/autocomplete": { + "version": "6.18.1", + "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.18.1.tgz", + "integrity": "sha512-iWHdj/B1ethnHRTwZj+C1obmmuCzquH29EbcKr0qIjA9NfDeBDJ7vs+WOHsFeLeflE4o+dHfYndJloMKHUkWUA==", + "license": "MIT", "dependencies": { - "@commitlint/types": "^17.0.0", - "ajv": "^8.11.0" + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.17.0", + "@lezer/common": "^1.0.0" }, - "engines": { - "node": ">=v14" + "peerDependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0" } }, - "node_modules/@commitlint/execute-rule": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-17.0.0.tgz", - "integrity": "sha512-nVjL/w/zuqjCqSJm8UfpNaw66V9WzuJtQvEnCrK4jDw6qKTmZB+1JQ8m6BQVZbNBcwfYdDNKnhIhqI0Rk7lgpQ==", - "dev": true, - "optional": true, - "engines": { - "node": ">=v14" + "node_modules/@codemirror/commands": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.6.1.tgz", + "integrity": "sha512-iBfKbyIoXS1FGdsKcZmnrxmbc8VcbMrSgD7AVrsnX+WyAYjmUDWvE93dt5D874qS4CCVu4O1JpbagHdXbbLiOw==", + "license": "MIT", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.4.0", + "@codemirror/view": "^6.27.0", + "@lezer/common": "^1.1.0" } }, - "node_modules/@commitlint/load": { - "version": "17.0.3", - "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-17.0.3.tgz", - "integrity": "sha512-3Dhvr7GcKbKa/ey4QJ5MZH3+J7QFlARohUow6hftQyNjzoXXROm+RwpBes4dDFrXG1xDw9QPXA7uzrOShCd4bw==", - "dev": true, - "optional": true, + "node_modules/@codemirror/language": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.10.2.tgz", + "integrity": "sha512-kgbTYTo0Au6dCSc/TFy7fK3fpJmgHDv1sG1KNQKJXVi+xBTEeBPY/M30YXiU6mMXeH+YIDLsbrT4ZwNRdtF+SA==", + "license": "MIT", "dependencies": { - "@commitlint/config-validator": "^17.0.3", - "@commitlint/execute-rule": "^17.0.0", - "@commitlint/resolve-extends": "^17.0.3", - "@commitlint/types": "^17.0.0", - "@types/node": ">=12", - "chalk": "^4.1.0", - "cosmiconfig": "^7.0.0", - "cosmiconfig-typescript-loader": "^2.0.0", - "lodash": "^4.17.19", - "resolve-from": "^5.0.0", - "typescript": "^4.6.4" - }, - "engines": { - "node": ">=v14" + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.23.0", + "@lezer/common": "^1.1.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0", + "style-mod": "^4.0.0" } }, - "node_modules/@commitlint/load/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "optional": true, + "node_modules/@codemirror/lint": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.8.1.tgz", + "integrity": "sha512-IZ0Y7S4/bpaunwggW2jYqwLuHj0QtESf5xcROewY6+lDNwZ/NzvR4t+vpYgg9m7V8UXLPYqG+lu3DF470E5Oxg==", + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "crelt": "^1.0.5" } }, - "node_modules/@commitlint/load/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "optional": true, + "node_modules/@codemirror/search": { + "version": "6.5.6", + "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.5.6.tgz", + "integrity": "sha512-rpMgcsh7o0GuCDUXKPvww+muLA1pDJaFrpq/CCHtpQJYz8xopu4D1hPcKRoDD0YlF8gZaqTNIRa4VRBWyhyy7Q==", + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "crelt": "^1.0.5" } }, - "node_modules/@commitlint/load/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "optional": true, + "node_modules/@codemirror/state": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.4.1.tgz", + "integrity": "sha512-QkEyUiLhsJoZkbumGZlswmAhA7CBU02Wrz7zvH4SrcifbsqwlXShVXg65f3v/ts57W3dqyamEriMhij1Z3Zz4A==", + "license": "MIT" + }, + "node_modules/@codemirror/view": { + "version": "6.33.0", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.33.0.tgz", + "integrity": "sha512-AroaR3BvnjRW8fiZBalAaK+ZzB5usGgI014YKElYZvQdNH5ZIidHlO+cyf/2rWzyBFRkvG6VhiXeAEbC53P2YQ==", + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "@codemirror/state": "^6.4.0", + "style-mod": "^4.1.0", + "w3c-keyname": "^2.2.4" } }, - "node_modules/@commitlint/load/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "optional": true - }, - "node_modules/@commitlint/load/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", "dev": true, + "license": "MIT", "optional": true, "engines": { - "node": ">=8" + "node": ">=0.1.90" } }, - "node_modules/@commitlint/load/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@commitlint/config-validator": { + "version": "19.5.0", + "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-19.5.0.tgz", + "integrity": "sha512-CHtj92H5rdhKt17RmgALhfQt95VayrUo2tSqY9g2w+laAXyk7K/Ef6uPm9tn5qSIwSmrLjKaXK9eiNuxmQrDBw==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { - "has-flag": "^4.0.0" + "@commitlint/types": "^19.5.0", + "ajv": "^8.11.0" }, "engines": { - "node": ">=8" + "node": ">=v18" } }, - "node_modules/@commitlint/resolve-extends": { - "version": "17.0.3", - "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-17.0.3.tgz", - "integrity": "sha512-H/RFMvrcBeJCMdnVC4i8I94108UDccIHrTke2tyQEg9nXQnR5/Hd6MhyNWkREvcrxh9Y+33JLb+PiPiaBxCtBA==", + "node_modules/@commitlint/config-validator/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { - "@commitlint/config-validator": "^17.0.3", - "@commitlint/types": "^17.0.0", - "import-fresh": "^3.0.0", - "lodash": "^4.17.19", - "resolve-from": "^5.0.0", - "resolve-global": "^1.0.0" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" }, - "engines": { - "node": ">=v14" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@commitlint/types": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-17.0.0.tgz", - "integrity": "sha512-hBAw6U+SkAT5h47zDMeOu3HSiD0SODw4Aq7rRNh1ceUmL7GyLKYhPbUvlRWqZ65XjBLPHZhFyQlRaPNz8qvUyQ==", + "node_modules/@commitlint/config-validator/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/@commitlint/execute-rule": { + "version": "19.5.0", + "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-19.5.0.tgz", + "integrity": "sha512-aqyGgytXhl2ejlk+/rfgtwpPexYyri4t8/n4ku6rRJoRhGZpLFMqrZ+YaubeGysCP6oz4mMA34YSTaSOKEeNrg==", "dev": true, + "license": "MIT", "optional": true, - "dependencies": { - "chalk": "^4.1.0" - }, "engines": { - "node": ">=v14" + "node": ">=v18" } }, - "node_modules/@commitlint/types/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@commitlint/load": { + "version": "19.5.0", + "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-19.5.0.tgz", + "integrity": "sha512-INOUhkL/qaKqwcTUvCE8iIUf5XHsEPCLY9looJ/ipzi7jtGhgmtH7OOFiNvwYgH7mA8osUWOUDV8t4E2HAi4xA==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { - "color-convert": "^2.0.1" + "@commitlint/config-validator": "^19.5.0", + "@commitlint/execute-rule": "^19.5.0", + "@commitlint/resolve-extends": "^19.5.0", + "@commitlint/types": "^19.5.0", + "chalk": "^5.3.0", + "cosmiconfig": "^9.0.0", + "cosmiconfig-typescript-loader": "^5.0.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "lodash.uniq": "^4.5.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=v18" } }, - "node_modules/@commitlint/types/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@commitlint/load/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "dev": true, + "license": "MIT", "optional": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, "funding": { "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@commitlint/types/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@commitlint/resolve-extends": { + "version": "19.5.0", + "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-19.5.0.tgz", + "integrity": "sha512-CU/GscZhCUsJwcKTJS9Ndh3AKGZTNFIOoQB2n8CmFnizE0VnEuJoum+COW+C1lNABEeqk6ssfc1Kkalm4bDklA==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { - "color-name": "~1.1.4" + "@commitlint/config-validator": "^19.5.0", + "@commitlint/types": "^19.5.0", + "global-directory": "^4.0.1", + "import-meta-resolve": "^4.0.0", + "lodash.mergewith": "^4.6.2", + "resolve-from": "^5.0.0" }, "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@commitlint/types/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "optional": true - }, - "node_modules/@commitlint/types/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "optional": true, - "engines": { - "node": ">=8" + "node": ">=v18" } }, - "node_modules/@commitlint/types/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@commitlint/types": { + "version": "19.5.0", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-19.5.0.tgz", + "integrity": "sha512-DSHae2obMSMkAtTBSOulg5X7/z+rGLxcXQIkg3OmWvY6wifojge5uVMydfhUvs7yQj+V7jNmRZ2Xzl8GJyqRgg==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { - "has-flag": "^4.0.0" + "@types/conventional-commits-parser": "^5.0.0", + "chalk": "^5.3.0" }, "engines": { - "node": ">=8" + "node": ">=v18" } }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "node_modules/@commitlint/types/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "dev": true, + "license": "MIT", "optional": true, - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, "engines": { - "node": ">=12" + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/@eslint-community/eslint-utils": { @@ -1951,6 +1987,7 @@ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dev": true, + "license": "MIT", "dependencies": { "eslint-visitor-keys": "^3.3.0" }, @@ -1961,25 +1998,55 @@ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/@eslint-community/regexpp": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz", - "integrity": "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==", + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz", + "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==", "dev": true, + "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, + "node_modules/@eslint/config-array": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", + "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.4", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@eslint/eslintrc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", - "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", + "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", + "espree": "^10.0.1", + "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -1987,95 +2054,108 @@ "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, - "node_modules/@eslint/eslintrc/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "license": "MIT", + "engines": { + "node": ">=18" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/@eslint/eslintrc/node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "node_modules/@eslint/js": { + "version": "9.10.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.10.0.tgz", + "integrity": "sha512-fuXtbiP5GWIn8Fz+LWoOMVf/Jxm+aajZYkhi6CuEm4SxymFM+eUWzbO9qXT+L0iCkL5+KGYMCSGxo686H19S1g==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@eslint/js": { - "version": "8.49.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.49.0.tgz", - "integrity": "sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==", + "node_modules/@eslint/object-schema": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", + "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", "dev": true, + "license": "Apache-2.0", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.1.0.tgz", + "integrity": "sha512-autAXT203ixhqei9xt+qkYOvY8l6LAFIdT2UXc/RPNeUVfqRF1BV94GTJyVPFKT8nFM6MyVJhjLj9E8JWvf5zQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@fontsource/inter": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@fontsource/inter/-/inter-5.0.3.tgz", - "integrity": "sha512-JJvh5xht71F6e0E5r2+Ffu8g+CYAxMvnGJm9ZMg5IIjy8UwxLp+8C99TgPJupdEyBpEJv0wuMG2Rd183z/bV8g==" + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@fontsource/inter/-/inter-5.1.0.tgz", + "integrity": "sha512-zKZR3kf1G0noIes1frLfOHP5EXVVm0M7sV/l9f/AaYf+M/DId35FO4LkigWjqWYjTJZGgplhdv4cB+ssvCqr5A==", + "license": "OFL-1.1" }, "node_modules/@fontsource/rasa": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@fontsource/rasa/-/rasa-5.0.3.tgz", - "integrity": "sha512-7QYG8778nIeaJZfzSJzggntMy44ZpzpEsyR0t+Jlqo6hqpzFeVilg2ZK6M6f1IM9DBNLZormJPX38P8BCUM9ww==" + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@fontsource/rasa/-/rasa-5.1.0.tgz", + "integrity": "sha512-Qu9RtD43irTFShXT11Z6QHWXxuiCnsNWyd/yRiWcdOjWUI7kzEQ4V4Q9HSgL0m5V40BLIY5QdXXSnxHjQMXwFg==", + "license": "OFL-1.1" }, "node_modules/@fortawesome/fontawesome-free": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.4.0.tgz", - "integrity": "sha512-0NyytTlPJwB/BF5LtRV8rrABDbe3TdTXqNB3PdZ+UUUZAEIrdOJdmABqKjt4AXwIoJNaRVVZEXxpNrqvE1GAYQ==", + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.6.0.tgz", + "integrity": "sha512-60G28ke/sXdtS9KZCpZSHHkCbdsOGEhIUGlwq6yhY74UpTiToIh8np7A8yphhM4BWsvNFtIvLpi4co+h9Mr9Ow==", "devOptional": true, - "hasInstallScript": true, + "license": "(CC-BY-4.0 AND OFL-1.1 AND MIT)", "engines": { "node": ">=6" } }, - "node_modules/@hotwired/turbo": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@hotwired/turbo/-/turbo-7.3.0.tgz", - "integrity": "sha512-Dcu+NaSvHLT7EjrDrkEmH4qET2ZJZ5IcCWmNXxNQTBwlnE5tBZfN6WxZ842n5cHV52DH/AKNirbPBtcEXDLW4g==", + "node_modules/@gulpjs/messages": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@gulpjs/messages/-/messages-1.1.0.tgz", + "integrity": "sha512-Ys9sazDatyTgZVb4xPlDufLweJ/Os2uHWOv+Caxvy2O85JcnT4M3vc73bi8pdLWlv3fdWQz3pdI9tVwo8rQQSg==", + "license": "MIT", "engines": { - "node": ">= 14" + "node": ">=10.13.0" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", - "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", - "dev": true, + "node_modules/@gulpjs/to-absolute-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@gulpjs/to-absolute-glob/-/to-absolute-glob-4.0.0.tgz", + "integrity": "sha512-kjotm7XJrJ6v+7knhPaRgaT6q8F8K2jiafwYdNHLzmV0uGLuZY43FK6smNSHUPrhq5kX2slCUy+RGG/xGqmIKA==", + "license": "MIT", "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" + "is-negated-glob": "^1.0.0" }, "engines": { - "node": ">=10.10.0" + "node": ">=10.13.0" + } + }, + "node_modules/@hotwired/turbo": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/@hotwired/turbo/-/turbo-8.0.6.tgz", + "integrity": "sha512-mwZRfwcJ4yatUnW5tcCY9NDvo0kjuuLQF/y8pXigHhS+c/JY/ccNluVyuERR9Sraqx0qdpenkO3pNeSWz1mE3w==", + "license": "MIT", + "engines": { + "node": ">= 14" } }, "node_modules/@humanwhocodes/module-importer": { @@ -2083,6 +2163,7 @@ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=12.22" }, @@ -2091,61 +2172,193 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true + "node_modules/@humanwhocodes/retry": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.0.tgz", + "integrity": "sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "peer": true, + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "peer": true, + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@lezer/common": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.1.tgz", + "integrity": "sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ==", + "license": "MIT" + }, + "node_modules/@lezer/highlight": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.1.tgz", + "integrity": "sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==", + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@lezer/lr": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.2.tgz", + "integrity": "sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==", + "license": "MIT", "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@lezer/common": "^1.0.0" } }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -2158,6 +2371,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", "engines": { "node": ">= 8" } @@ -2166,6 +2380,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -2175,151 +2390,178 @@ } }, "node_modules/@octokit/auth-token": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", - "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-5.1.1.tgz", + "integrity": "sha512-rh3G3wDO8J9wSjfI436JUKzHIxq8NaiL0tVeB2aXmG6p/9859aUOAjA9pmSPNGGZxfwmaJ9ozOJImuNVJdpvbA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 18" } }, "node_modules/@octokit/core": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.0.0.tgz", - "integrity": "sha512-YbAtMWIrbZ9FCXbLwT9wWB8TyLjq9mxpKdgB3dUNxQcIVTf9hJ70gRPwAcqGZdY6WdJPZ0I7jLaaNDCiloGN2A==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-6.1.2.tgz", + "integrity": "sha512-hEb7Ma4cGJGEUNOAVmyfdB/3WirWMg5hDuNFVejGEDFqupeOysLc2sG6HJxY2etBp5YQu5Wtxwi020jS9xlUwg==", "dev": true, + "license": "MIT", "dependencies": { - "@octokit/auth-token": "^4.0.0", - "@octokit/graphql": "^7.0.0", - "@octokit/request": "^8.0.2", - "@octokit/request-error": "^5.0.0", - "@octokit/types": "^11.0.0", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" + "@octokit/auth-token": "^5.0.0", + "@octokit/graphql": "^8.0.0", + "@octokit/request": "^9.0.0", + "@octokit/request-error": "^6.0.1", + "@octokit/types": "^13.0.0", + "before-after-hook": "^3.0.2", + "universal-user-agent": "^7.0.0" }, "engines": { "node": ">= 18" } }, "node_modules/@octokit/endpoint": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.0.tgz", - "integrity": "sha512-szrQhiqJ88gghWY2Htt8MqUDO6++E/EIXqJ2ZEp5ma3uGS46o7LZAzSLt49myB7rT+Hfw5Y6gO3LmOxGzHijAQ==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.1.tgz", + "integrity": "sha512-JYjh5rMOwXMJyUpj028cu0Gbp7qe/ihxfJMLc8VZBMMqSwLgOxDI1911gV4Enl1QSavAQNJcwmwBF9M0VvLh6Q==", "dev": true, + "license": "MIT", "dependencies": { - "@octokit/types": "^11.0.0", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" + "@octokit/types": "^13.0.0", + "universal-user-agent": "^7.0.2" }, "engines": { "node": ">= 18" } }, "node_modules/@octokit/graphql": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.0.1.tgz", - "integrity": "sha512-T5S3oZ1JOE58gom6MIcrgwZXzTaxRnxBso58xhozxHpOqSTgDS6YNeEUvZ/kRvXgPrRz/KHnZhtb7jUMRi9E6w==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-8.1.1.tgz", + "integrity": "sha512-ukiRmuHTi6ebQx/HFRCXKbDlOh/7xEV6QUXaE7MJEKGNAncGI/STSbOkl12qVXZrfZdpXctx5O9X1AIaebiDBg==", "dev": true, + "license": "MIT", "dependencies": { - "@octokit/request": "^8.0.1", - "@octokit/types": "^11.0.0", - "universal-user-agent": "^6.0.0" + "@octokit/request": "^9.0.0", + "@octokit/types": "^13.0.0", + "universal-user-agent": "^7.0.0" }, "engines": { "node": ">= 18" } }, "node_modules/@octokit/openapi-types": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz", - "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==", - "dev": true + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-22.2.0.tgz", + "integrity": "sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==", + "dev": true, + "license": "MIT" }, "node_modules/@octokit/plugin-paginate-rest": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-8.0.0.tgz", - "integrity": "sha512-2xZ+baZWUg+qudVXnnvXz7qfrTmDeYPCzangBVq/1gXxii/OiS//4shJp9dnCCvj1x+JAm9ji1Egwm1BA47lPQ==", + "version": "11.3.3", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.3.3.tgz", + "integrity": "sha512-o4WRoOJZlKqEEgj+i9CpcmnByvtzoUYC6I8PD2SA95M+BJ2x8h7oLcVOg9qcowWXBOdcTRsMZiwvM3EyLm9AfA==", "dev": true, + "license": "MIT", "dependencies": { - "@octokit/types": "^11.0.0" + "@octokit/types": "^13.5.0" }, "engines": { "node": ">= 18" }, "peerDependencies": { - "@octokit/core": ">=5" + "@octokit/core": ">=6" } }, "node_modules/@octokit/plugin-retry": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-6.0.0.tgz", - "integrity": "sha512-a1/A4A+PB1QoAHQfLJxGHhLfSAT03bR1jJz3GgQJZvty2ozawFWs93MiBQXO7SL2YbO7CIq0Goj4qLOBj8JeMQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-7.1.1.tgz", + "integrity": "sha512-G9Ue+x2odcb8E1XIPhaFBnTTIrrUDfXN05iFXiqhR+SeeeDMMILcAnysOsxUpEWcQp2e5Ft397FCXTcPkiPkLw==", "dev": true, + "license": "MIT", "dependencies": { - "@octokit/request-error": "^5.0.0", - "@octokit/types": "^11.0.0", + "@octokit/request-error": "^6.0.0", + "@octokit/types": "^13.0.0", "bottleneck": "^2.15.3" }, "engines": { "node": ">= 18" }, "peerDependencies": { - "@octokit/core": ">=5" + "@octokit/core": ">=6" } }, "node_modules/@octokit/plugin-throttling": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-7.0.0.tgz", - "integrity": "sha512-KL2k/d0uANc8XqP5S64YcNFCudR3F5AaKO39XWdUtlJIjT9Ni79ekWJ6Kj5xvAw87udkOMEPcVf9xEge2+ahew==", + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-9.3.1.tgz", + "integrity": "sha512-Qd91H4liUBhwLB2h6jZ99bsxoQdhgPk6TdwnClPyTBSDAdviGPceViEgUwj+pcQDmB/rfAXAXK7MTochpHM3yQ==", "dev": true, + "license": "MIT", "dependencies": { - "@octokit/types": "^11.0.0", + "@octokit/types": "^13.0.0", "bottleneck": "^2.15.3" }, "engines": { "node": ">= 18" }, "peerDependencies": { - "@octokit/core": "^5.0.0" + "@octokit/core": "^6.0.0" } }, "node_modules/@octokit/request": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.1.1.tgz", - "integrity": "sha512-8N+tdUz4aCqQmXl8FpHYfKG9GelDFd7XGVzyN8rc6WxVlYcfpHECnuRkgquzz+WzvHTK62co5di8gSXnzASZPQ==", + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.1.3.tgz", + "integrity": "sha512-V+TFhu5fdF3K58rs1pGUJIDH5RZLbZm5BI+MNF+6o/ssFNT4vWlCh/tVpF3NxGtP15HUxTTMUbsG5llAuU2CZA==", "dev": true, + "license": "MIT", "dependencies": { - "@octokit/endpoint": "^9.0.0", - "@octokit/request-error": "^5.0.0", - "@octokit/types": "^11.1.0", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" + "@octokit/endpoint": "^10.0.0", + "@octokit/request-error": "^6.0.1", + "@octokit/types": "^13.1.0", + "universal-user-agent": "^7.0.2" }, "engines": { "node": ">= 18" } }, "node_modules/@octokit/request-error": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.0.0.tgz", - "integrity": "sha512-1ue0DH0Lif5iEqT52+Rf/hf0RmGO9NWFjrzmrkArpG9trFfDM/efx00BJHdLGuro4BR/gECxCU2Twf5OKrRFsQ==", + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.4.tgz", + "integrity": "sha512-VpAhIUxwhWZQImo/dWAN/NpPqqojR6PSLgLYAituLM6U+ddx9hCioFGwBr5Mi+oi5CLeJkcAs3gJ0PYYzU6wUg==", "dev": true, + "license": "MIT", "dependencies": { - "@octokit/types": "^11.0.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" + "@octokit/types": "^13.0.0" }, "engines": { "node": ">= 18" } }, "node_modules/@octokit/types": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-11.1.0.tgz", - "integrity": "sha512-Fz0+7GyLm/bHt8fwEqgvRBWwIV1S6wRRyq+V6exRKLVWaKGsuy6H9QFYeBVDV7rK6fO3XwHgQOPxv+cLj2zpXQ==", + "version": "13.5.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.5.0.tgz", + "integrity": "sha512-HdqWTf5Z3qwDVlzCrP8UJquMwunpDiMPt5er+QjGzL4hqr/vBVY/MauQgS1xWxCDT1oMx1EULyqxncdCY/NVSQ==", "dev": true, + "license": "MIT", "dependencies": { - "@octokit/openapi-types": "^18.0.0" + "@octokit/openapi-types": "^22.2.0" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pnpm/config.env-replace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", + "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.22.0" } }, "node_modules/@pnpm/network.ca-file": { @@ -2327,6 +2569,7 @@ "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "4.2.10" }, @@ -2334,12 +2577,21 @@ "node": ">=12.22.0" } }, + "node_modules/@pnpm/network.ca-file/node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true, + "license": "ISC" + }, "node_modules/@pnpm/npm-conf": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-1.0.5.tgz", - "integrity": "sha512-hD8ml183638O3R6/Txrh0L8VzGOrFXgRtRDG4qQC4tONdZ5Z1M+tlUUDUvrjYdmK6G+JTBTeaCLMna11cXzi8A==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.3.1.tgz", + "integrity": "sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==", "dev": true, + "license": "MIT", "dependencies": { + "@pnpm/config.env-replace": "^1.1.0", "@pnpm/network.ca-file": "^1.0.1", "config-chain": "^1.1.11" }, @@ -2348,9 +2600,10 @@ } }, "node_modules/@rollup/plugin-babel": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-6.0.3.tgz", - "integrity": "sha512-fKImZKppa1A/gX73eg4JGo+8kQr/q1HBQaCGKECZ0v4YBBv3lFqi14+7xyApECzvkLTHCifx+7ntcrvtBIRcpg==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-6.0.4.tgz", + "integrity": "sha512-YF7Y52kFdFT/xVSuVdjkV5ZdX/3YtmX0QulG+x0taQOtJdHYzVU61aSSkAgVJ7NOv6qPkIYiJSgSWWN/DM5sGw==", + "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.18.6", "@rollup/pluginutils": "^5.0.1" @@ -2361,7 +2614,7 @@ "peerDependencies": { "@babel/core": "^7.0.0", "@types/babel__core": "^7.1.9", - "rollup": "^1.20.0||^2.0.0||^3.0.0" + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" }, "peerDependenciesMeta": { "@types/babel__core": { @@ -2373,22 +2626,23 @@ } }, "node_modules/@rollup/plugin-commonjs": { - "version": "25.0.4", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.4.tgz", - "integrity": "sha512-L92Vz9WUZXDnlQQl3EwbypJR4+DM2EbsO+/KOcEkP4Mc6Ct453EeDB2uH9lgRwj4w5yflgNpq9pHOiY8aoUXBQ==", + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-26.0.1.tgz", + "integrity": "sha512-UnsKoZK6/aGIH6AdkptXhNvhaqftcjq3zZdT+LY5Ftms6JR06nADcDsYp5hTU9E2lbJUEOhdlY5J4DNTneM+jQ==", + "license": "MIT", "dependencies": { "@rollup/pluginutils": "^5.0.1", "commondir": "^1.0.1", "estree-walker": "^2.0.2", - "glob": "^8.0.3", + "glob": "^10.4.1", "is-reference": "1.2.1", - "magic-string": "^0.27.0" + "magic-string": "^0.30.3" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0 || 14 >= 14.17" }, "peerDependencies": { - "rollup": "^2.68.0||^3.0.0" + "rollup": "^2.68.0||^3.0.0||^4.0.0" }, "peerDependenciesMeta": { "rollup": { @@ -2396,55 +2650,19 @@ } } }, - "node_modules/@rollup/plugin-commonjs/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@rollup/plugin-commonjs/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@rollup/plugin-commonjs/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@rollup/plugin-json": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.0.0.tgz", - "integrity": "sha512-i/4C5Jrdr1XUarRhVu27EEwjt4GObltD7c+MkCIpO2QIbojw8MUs+CCTqOphQi3Qtg1FLmYt+l+6YeoIf51J7w==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.1.0.tgz", + "integrity": "sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==", + "license": "MIT", "dependencies": { - "@rollup/pluginutils": "^5.0.1" + "@rollup/pluginutils": "^5.1.0" }, "engines": { "node": ">=14.0.0" }, "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0" + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" }, "peerDependenciesMeta": { "rollup": { @@ -2453,9 +2671,10 @@ } }, "node_modules/@rollup/plugin-node-resolve": { - "version": "15.2.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.1.tgz", - "integrity": "sha512-nsbUg588+GDSu8/NS8T4UAshO6xeaOfINNuXeVHcKV02LJtoRaM1SiOacClw4kws1SFiNhdLGxlbMY9ga/zs/w==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz", + "integrity": "sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==", + "license": "MIT", "dependencies": { "@rollup/pluginutils": "^5.0.1", "@types/resolve": "1.20.2", @@ -2468,7 +2687,7 @@ "node": ">=14.0.0" }, "peerDependencies": { - "rollup": "^2.78.0||^3.0.0" + "rollup": "^2.78.0||^3.0.0||^4.0.0" }, "peerDependenciesMeta": { "rollup": { @@ -2477,9 +2696,10 @@ } }, "node_modules/@rollup/pluginutils": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", - "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", + "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^2.0.2", @@ -2489,7 +2709,7 @@ "node": ">=14.0.0" }, "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0" + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" }, "peerDependenciesMeta": { "rollup": { @@ -2497,15 +2717,231 @@ } } }, - "node_modules/@semantic-release/changelog": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@semantic-release/changelog/-/changelog-6.0.3.tgz", - "integrity": "sha512-dZuR5qByyfe3Y03TpmCvAxCyTnp7r5XwtHRf/8vD9EAn4ZWbavUX8adMtXYzE86EVh0gyLA7lm5yW4IV30XUag==", - "dev": true, - "dependencies": { - "@semantic-release/error": "^3.0.0", - "aggregate-error": "^3.0.0", - "fs-extra": "^11.0.0", + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.3.tgz", + "integrity": "sha512-MmKSfaB9GX+zXl6E8z4koOr/xU63AMVleLEa64v7R0QF/ZloMs5vcD1sHgM64GXXS1csaJutG+ddtzcueI/BLg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.3.tgz", + "integrity": "sha512-zrt8ecH07PE3sB4jPOggweBjJMzI1JG5xI2DIsUbkA+7K+Gkjys6eV7i9pOenNSDJH3eOr/jLb/PzqtmdwDq5g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.3.tgz", + "integrity": "sha512-P0UxIOrKNBFTQaXTxOH4RxuEBVCgEA5UTNV6Yz7z9QHnUJ7eLX9reOd/NYMO3+XZO2cco19mXTxDMXxit4R/eQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.3.tgz", + "integrity": "sha512-L1M0vKGO5ASKntqtsFEjTq/fD91vAqnzeaF6sfNAy55aD+Hi2pBI5DKwCO+UNDQHWsDViJLqshxOahXyLSh3EA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.3.tgz", + "integrity": "sha512-btVgIsCjuYFKUjopPoWiDqmoUXQDiW2A4C3Mtmp5vACm7/GnyuprqIDPNczeyR5W8rTXEbkmrJux7cJmD99D2g==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.3.tgz", + "integrity": "sha512-zmjbSphplZlau6ZTkxd3+NMtE4UKVy7U4aVFMmHcgO5CUbw17ZP6QCgyxhzGaU/wFFdTfiojjbLG3/0p9HhAqA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.3.tgz", + "integrity": "sha512-nSZfcZtAnQPRZmUkUQwZq2OjQciR6tEoJaZVFvLHsj0MF6QhNMg0fQ6mUOsiCUpTqxTx0/O6gX0V/nYc7LrgPw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.3.tgz", + "integrity": "sha512-MnvSPGO8KJXIMGlQDYfvYS3IosFN2rKsvxRpPO2l2cum+Z3exiExLwVU+GExL96pn8IP+GdH8Tz70EpBhO0sIQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.3.tgz", + "integrity": "sha512-+W+p/9QNDr2vE2AXU0qIy0qQE75E8RTwTwgqS2G5CRQ11vzq0tbnfBd6brWhS9bCRjAjepJe2fvvkvS3dno+iw==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.3.tgz", + "integrity": "sha512-yXH6K6KfqGXaxHrtr+Uoy+JpNlUlI46BKVyonGiaD74ravdnF9BUNC+vV+SIuB96hUMGShhKV693rF9QDfO6nQ==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.3.tgz", + "integrity": "sha512-R8cwY9wcnApN/KDYWTH4gV/ypvy9yZUHlbJvfaiXSB48JO3KpwSpjOGqO4jnGkLDSk1hgjYkTbTt6Q7uvPf8eg==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.3.tgz", + "integrity": "sha512-kZPbX/NOPh0vhS5sI+dR8L1bU2cSO9FgxwM8r7wHzGydzfSjLRCFAT87GR5U9scj2rhzN3JPYVC7NoBbl4FZ0g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.3.tgz", + "integrity": "sha512-S0Yq+xA1VEH66uiMNhijsWAafffydd2X5b77eLHfRmfLsRSpbiAWiRHV6DEpz6aOToPsgid7TI9rGd6zB1rhbg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.3.tgz", + "integrity": "sha512-9isNzeL34yquCPyerog+IMCNxKR8XYmGd0tHSV+OVx0TmE0aJOo9uw4fZfUuk2qxobP5sug6vNdZR6u7Mw7Q+Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.3.tgz", + "integrity": "sha512-nMIdKnfZfzn1Vsk+RuOvl43ONTZXoAPUUxgcU0tXooqg4YrAqzfKzVenqqk2g5efWh46/D28cKFrOzDSW28gTA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.3.tgz", + "integrity": "sha512-fOvu7PCQjAj4eWDEuD8Xz5gpzFqXzGlxHZozHP4b9Jxv9APtdxL6STqztDzMLuRXEc4UpXGGhx029Xgm91QBeA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@sec-ant/readable-stream": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", + "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@semantic-release/changelog": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@semantic-release/changelog/-/changelog-6.0.3.tgz", + "integrity": "sha512-dZuR5qByyfe3Y03TpmCvAxCyTnp7r5XwtHRf/8vD9EAn4ZWbavUX8adMtXYzE86EVh0gyLA7lm5yW4IV30XUag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@semantic-release/error": "^3.0.0", + "aggregate-error": "^3.0.0", + "fs-extra": "^11.0.0", "lodash": "^4.17.4" }, "engines": { @@ -2516,21 +2952,23 @@ } }, "node_modules/@semantic-release/commit-analyzer": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-11.0.0.tgz", - "integrity": "sha512-uEXyf4Z0AWJuxI9TbSQP5kkIYqus1/E1NcmE7pIv6d6/m/5EJcNWAGR4FOo34vrV26FhEaRVkxFfYzp/M7BKIg==", + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-13.0.0.tgz", + "integrity": "sha512-KtXWczvTAB1ZFZ6B4O+w8HkfYm/OgQb1dUGNFZtDgQ0csggrmkq8sTxhd+lwGF8kMb59/RnG9o4Tn7M/I8dQ9Q==", "dev": true, + "license": "MIT", "dependencies": { - "conventional-changelog-angular": "^7.0.0", - "conventional-commits-filter": "^4.0.0", - "conventional-commits-parser": "^5.0.0", + "conventional-changelog-angular": "^8.0.0", + "conventional-changelog-writer": "^8.0.0", + "conventional-commits-filter": "^5.0.0", + "conventional-commits-parser": "^6.0.0", "debug": "^4.0.0", - "import-from": "^4.0.0", + "import-from-esm": "^1.0.3", "lodash-es": "^4.17.21", "micromatch": "^4.0.2" }, "engines": { - "node": "^18.17 || >=20.6.1" + "node": ">=20.8.1" }, "peerDependencies": { "semantic-release": ">=20.1.0" @@ -2541,6 +2979,7 @@ "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-3.0.0.tgz", "integrity": "sha512-5hiM4Un+tpl4cKw3lV4UgzJj+SmfNIDCLLw0TepzQxz9ZGV5ixnqkzIVF+3tp0ZHgcMKE+VNGHJjEeyFG2dcSw==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.17" } @@ -2550,6 +2989,7 @@ "resolved": "https://registry.npmjs.org/@semantic-release/exec/-/exec-6.0.3.tgz", "integrity": "sha512-bxAq8vLOw76aV89vxxICecEa8jfaWwYITw6X74zzlO0mc/Bgieqx9kBRz9z96pHectiTAtsCwsQcUyLYWnp3VQ==", "dev": true, + "license": "MIT", "dependencies": { "@semantic-release/error": "^3.0.0", "aggregate-error": "^3.0.0", @@ -2570,6 +3010,7 @@ "resolved": "https://registry.npmjs.org/@semantic-release/git/-/git-10.0.1.tgz", "integrity": "sha512-eWrx5KguUcU2wUPaO6sfvZI0wPafUKAMNC18aXY4EnNcrZL86dEmpNVnC9uMpGZkmZJ9EfCVJBQx4pV4EMGT1w==", "dev": true, + "license": "MIT", "dependencies": { "@semantic-release/error": "^3.0.0", "aggregate-error": "^3.0.0", @@ -2588,30 +3029,31 @@ } }, "node_modules/@semantic-release/github": { - "version": "9.0.6", - "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-9.0.6.tgz", - "integrity": "sha512-GBGt9c3c2UdSvso4jcyQQSUpZA9hbfHqGQerZKN9WvVzCIkaBy8xkhOyiFVX08LjRHHT/H221SJNBLtuihX5iw==", + "version": "10.3.4", + "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-10.3.4.tgz", + "integrity": "sha512-JghCkEk7e2u+iauMje8lgHH11pbtaz9yTdMn/PyfulCdBshIwpp+Mu/NR8Ml216auEUtvmBpQX5+Cth2TsVUVw==", "dev": true, + "license": "MIT", "dependencies": { - "@octokit/core": "^5.0.0", - "@octokit/plugin-paginate-rest": "^8.0.0", - "@octokit/plugin-retry": "^6.0.0", - "@octokit/plugin-throttling": "^7.0.0", + "@octokit/core": "^6.0.0", + "@octokit/plugin-paginate-rest": "^11.0.0", + "@octokit/plugin-retry": "^7.0.0", + "@octokit/plugin-throttling": "^9.0.0", "@semantic-release/error": "^4.0.0", "aggregate-error": "^5.0.0", "debug": "^4.3.4", "dir-glob": "^3.0.1", - "globby": "^13.1.4", + "globby": "^14.0.0", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.0", - "issue-parser": "^6.0.0", + "issue-parser": "^7.0.0", "lodash-es": "^4.17.21", - "mime": "^3.0.0", - "p-filter": "^3.0.0", + "mime": "^4.0.0", + "p-filter": "^4.0.0", "url-join": "^5.0.0" }, "engines": { - "node": ">=18" + "node": ">=20.8.1" }, "peerDependencies": { "semantic-release": ">=20.1.0" @@ -2622,6 +3064,7 @@ "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" } @@ -2631,6 +3074,7 @@ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", "dev": true, + "license": "MIT", "dependencies": { "clean-stack": "^5.2.0", "indent-string": "^5.0.0" @@ -2647,6 +3091,7 @@ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", "dev": true, + "license": "MIT", "dependencies": { "escape-string-regexp": "5.0.0" }, @@ -2662,6 +3107,7 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -2674,6 +3120,7 @@ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -2682,27 +3129,28 @@ } }, "node_modules/@semantic-release/npm": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-11.0.0.tgz", - "integrity": "sha512-ozNCiPUp14Xp2rgeY7j96yFTEhDncLSWOJr0IAUr888+ax6fH5xgYkNVv08vpkV8C5GIXBgnGd9coRiOCD6oqQ==", + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-12.0.1.tgz", + "integrity": "sha512-/6nntGSUGK2aTOI0rHPwY3ZjgY9FkXmEHbW9Kr+62NVOsyqpKKeP0lrCH+tphv+EsNdJNmqqwijTEnVWUMQ2Nw==", "dev": true, + "license": "MIT", "dependencies": { "@semantic-release/error": "^4.0.0", "aggregate-error": "^5.0.0", - "execa": "^8.0.0", + "execa": "^9.0.0", "fs-extra": "^11.0.0", "lodash-es": "^4.17.21", "nerf-dart": "^1.0.0", "normalize-url": "^8.0.0", - "npm": "^10.0.0", + "npm": "^10.5.0", "rc": "^1.2.8", - "read-pkg": "^8.0.0", + "read-pkg": "^9.0.0", "registry-auth-token": "^5.0.0", "semver": "^7.1.2", "tempy": "^3.0.0" }, "engines": { - "node": "^18.17 || >=20" + "node": ">=20.8.1" }, "peerDependencies": { "semantic-release": ">=20.1.0" @@ -2713,8 +3161,22 @@ "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@semantic-release/npm/node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", + "dev": true, + "license": "MIT", "engines": { "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@semantic-release/npm/node_modules/aggregate-error": { @@ -2722,6 +3184,7 @@ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", "dev": true, + "license": "MIT", "dependencies": { "clean-stack": "^5.2.0", "indent-string": "^5.0.0" @@ -2738,6 +3201,7 @@ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", "dev": true, + "license": "MIT", "dependencies": { "escape-string-regexp": "5.0.0" }, @@ -2753,6 +3217,7 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -2761,47 +3226,73 @@ } }, "node_modules/@semantic-release/npm/node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.3.1.tgz", + "integrity": "sha512-gdhefCCNy/8tpH/2+ajP9IQc14vXchNdd0weyzSJEFURhRMGncQ+zKFxwjAufIewPEJm9BPOaJnvg2UtlH2gPQ==", "dev": true, + "license": "MIT", "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.0", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^5.2.0", + "pretty-ms": "^9.0.0", "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.0.0" }, "engines": { - "node": ">=16.17" + "node": "^18.19.0 || >=20.5.0" }, "funding": { "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "node_modules/@semantic-release/npm/node_modules/figures": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-unicode-supported": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@semantic-release/npm/node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", "dev": true, + "license": "MIT", + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, "engines": { - "node": ">=16" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@semantic-release/npm/node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.0.tgz", + "integrity": "sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==", "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=16.17.0" + "node": ">=18.18.0" } }, "node_modules/@semantic-release/npm/node_modules/indent-string": { @@ -2809,6 +3300,7 @@ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -2817,34 +3309,37 @@ } }, "node_modules/@semantic-release/npm/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", "dev": true, + "license": "MIT", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@semantic-release/npm/node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "node_modules/@semantic-release/npm/node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@semantic-release/npm/node_modules/npm-run-path": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", - "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^4.0.0" }, @@ -2855,26 +3350,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@semantic-release/npm/node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@semantic-release/npm/node_modules/path-key": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -2882,11 +3363,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@semantic-release/npm/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@semantic-release/npm/node_modules/signal-exit": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, + "license": "ISC", "engines": { "node": ">=14" }, @@ -2895,139 +3390,160 @@ } }, "node_modules/@semantic-release/npm/node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@semantic-release/release-notes-generator": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-12.0.0.tgz", - "integrity": "sha512-m7Ds8ComP1KJgA2Lke2xMwE1TOOU40U7AzP4lT8hJ2tUAeicziPz/1GeDFmRkTOkMFlfHvE6kuvMkvU+mIzIDQ==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-14.0.0.tgz", + "integrity": "sha512-XRxwr4e46yUMaXT8KGFBlRJlp5+NOMaufdq8qaEWlcJ7cT4Pn/iRmDGglZ2TgDe6GVP+u1boXFEnSs7N8Yzhng==", "dev": true, + "license": "MIT", "dependencies": { - "conventional-changelog-angular": "^7.0.0", - "conventional-changelog-writer": "^7.0.0", - "conventional-commits-filter": "^4.0.0", - "conventional-commits-parser": "^5.0.0", + "conventional-changelog-angular": "^8.0.0", + "conventional-changelog-writer": "^8.0.0", + "conventional-commits-filter": "^5.0.0", + "conventional-commits-parser": "^6.0.0", "debug": "^4.0.0", "get-stream": "^7.0.0", - "import-from": "^4.0.0", + "import-from-esm": "^1.0.3", "into-stream": "^7.0.0", "lodash-es": "^4.17.21", - "read-pkg-up": "^10.0.0" + "read-pkg-up": "^11.0.0" }, "engines": { - "node": "^18.17 || >=20.6.1" + "node": ">=20.8.1" }, "peerDependencies": { "semantic-release": ">=20.1.0" } }, - "node_modules/@semantic-release/release-notes-generator/node_modules/get-stream": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-7.0.0.tgz", - "integrity": "sha512-ql6FW5b8tgMYvI4UaoxG3EQN3VyZ6VeQpxNBGg5BZ4xD4u+HJeprzhMMA4OCBEGQgSR+m87pstWMpiVW64W8Fw==", + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=16" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", + "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@socket.io/component-emitter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", - "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", - "dev": true - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", + "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==", "dev": true, - "optional": true + "license": "MIT" }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", "dev": true, - "optional": true - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true, - "optional": true + "license": "ISC", + "engines": { + "node": ">=10.13.0" + } }, - "node_modules/@tsconfig/node16": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", - "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "node_modules/@types/conventional-commits-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", + "integrity": "sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ==", "dev": true, - "optional": true + "license": "MIT", + "optional": true, + "dependencies": { + "@types/node": "*" + } }, "node_modules/@types/cookie": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/cors": { - "version": "2.8.13", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz", - "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==", + "version": "2.8.17", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", + "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/estree": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", - "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "license": "MIT" }, "node_modules/@types/expect": { "version": "1.20.4", "resolved": "https://registry.npmjs.org/@types/expect/-/expect-1.20.4.tgz", - "integrity": "sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==" + "integrity": "sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==", + "license": "MIT" }, "node_modules/@types/node": { - "version": "18.0.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.1.tgz", - "integrity": "sha512-CmR8+Tsy95hhwtZBKJBs0/FFq4XX7sDZHlGGf+0q+BRZfMbOTkzkj0AFAuTyXbObDIoanaBBW0+KEW+m3N16Wg==" + "version": "22.5.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.5.tgz", + "integrity": "sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.2" + } }, "node_modules/@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", - "dev": true - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", "dev": true, - "optional": true + "license": "MIT" }, "node_modules/@types/resolve": { "version": "1.20.2", "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", - "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==" + "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", + "license": "MIT" + }, + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "dev": true, + "license": "MIT" }, "node_modules/@types/vinyl": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.6.tgz", - "integrity": "sha512-ayJ0iOCDNHnKpKTgBG6Q6JOnHTj9zFta+3j2b8Ejza0e4cvRyMn0ZoLEmbPrTHe5YYRlDYPvPWVdV4cTaRyH7g==", + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.12.tgz", + "integrity": "sha512-Sr2fYMBUVGYq8kj3UthXFAu5UN6ZW+rYr4NACjZQJvHvj+c8lYv0CahmZ2P/r7iUkN44gGUBwqxZkrKXYPb7cw==", + "license": "MIT", "dependencies": { "@types/expect": "^1.20.4", "@types/node": "*" @@ -3038,6 +3554,7 @@ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, + "license": "MIT", "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -3047,10 +3564,11 @@ } }, "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -3063,25 +3581,17 @@ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/agent-base": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", - "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.3.4" }, @@ -3094,6 +3604,7 @@ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, + "license": "MIT", "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -3103,15 +3614,15 @@ } }, "node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "optional": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" }, "funding": { @@ -3119,16 +3630,11 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==", - "dev": true - }, "node_modules/ansi-colors": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "license": "MIT", "dependencies": { "ansi-wrap": "^0.1.0" }, @@ -3137,29 +3643,26 @@ } }, "node_modules/ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/ansi-gray": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==", + "license": "MIT", "dependencies": { - "ansi-wrap": "0.1.0" + "type-fest": "^0.21.3" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", "engines": { "node": ">=8" } @@ -3168,6 +3671,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -3179,216 +3683,49 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/ansicolors": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", - "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==", - "dev": true + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true, + "license": "MIT" }, "node_modules/anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "node_modules/anymatch/node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/append-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", - "integrity": "sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", "dependencies": { - "buffer-equal": "^1.0.0" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==" - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true, - "optional": true - }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" }, "node_modules/argv-formatter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/argv-formatter/-/argv-formatter-1.0.0.tgz", "integrity": "sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-filter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", - "integrity": "sha512-A2BETWCqhsecSvCkWAeVBFLH6sXEUGASuzkpjL3GR1SlL/PWL6M3J8EAAld2Uubmh39tvkJTqC9LeLHCUKmFXA==", - "dependencies": { - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", - "integrity": "sha512-tVqVTHt+Q5Xb09qRkbu+DidW1yYzz5izWS2Xm2yFm7qJnmUfz4HPzNxbHkdRJbz2lrqI7S+z17xNYdFcBBO8Hw==", - "dependencies": { - "make-iterator": "^1.0.0" - }, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -3397,17 +3734,22 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3417,6 +3759,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -3425,80 +3768,45 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", - "dev": true + "dev": true, + "license": "MIT" }, - "node_modules/array-initial": { + "node_modules/array-slice": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", - "integrity": "sha512-BC4Yl89vneCYfpLrs5JU2aAu9/a+xWbeKhvISg9PT7eWFB9UlRvI+rKEtk6mgxWr3dSkk9gQ8hCrdqt06NXPdw==", - "dependencies": { - "array-slice": "^1.0.0", - "is-number": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-initial/node_modules/is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/array-last": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", - "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "license": "MIT", "dependencies": { - "is-number": "^4.0.0" + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-last/node_modules/is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array-slice": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", - "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-sort": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", - "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", - "dependencies": { - "default-compare": "^1.0.0", - "get-value": "^2.0.6", - "kind-of": "^5.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -3508,64 +3816,61 @@ "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, + "license": "MIT", "dependencies": { "lodash": "^4.17.14" } }, "node_modules/async-done": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", - "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-2.0.0.tgz", + "integrity": "sha512-j0s3bzYq9yKIVLKGE/tWlCpa3PfFLcrDZLTSVdnnCTGagXuXBJO4SsY9Xdk/fQBirCkH4evW5xOeJXqlAQFdsw==", + "license": "MIT", "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.2", - "process-nextick-args": "^2.0.0", - "stream-exhaust": "^1.0.1" + "end-of-stream": "^1.4.4", + "once": "^1.4.0", + "stream-exhaust": "^1.0.2" }, "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, - "node_modules/async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" - }, "node_modules/async-each-series": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz", "integrity": "sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/async-settle": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", - "integrity": "sha512-VPXfB4Vk49z1LHHodrEQ6Xf7W4gg1w0dAPROHngx7qgDjqmIQ+fXmwgGXTW/ITLai0YLSvWepJOP9EVpMnEAcw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-2.0.0.tgz", + "integrity": "sha512-Obu/KE8FurfQRN6ODdHN9LuXqwC+JFIM9NRyZqJJ4ZfLJmIYN9Rg0/kb+wF70VV5+fJusTMQlJ1t5rF7J/ETdg==", + "license": "MIT", "dependencies": { - "async-done": "^1.2.2" + "async-done": "^2.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "bin": { - "atob": "bin/atob.js" - }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "license": "ISC", "engines": { - "node": ">= 4.5.0" + "node": ">= 4.0.0" } }, "node_modules/autoprefixer": { - "version": "10.4.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz", - "integrity": "sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==", + "version": "10.4.20", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", + "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", "funding": [ { "type": "opencollective", @@ -3574,14 +3879,19 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "browserslist": "^4.20.3", - "caniuse-lite": "^1.0.30001335", - "fraction.js": "^4.2.0", + "browserslist": "^4.23.3", + "caniuse-lite": "^1.0.30001646", + "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", + "picocolors": "^1.0.1", "postcss-value-parser": "^4.2.0" }, "bin": { @@ -3595,9 +3905,13 @@ } }, "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -3605,159 +3919,104 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "dev": true, - "dependencies": { - "follow-redirects": "^1.14.0" - } + "node_modules/b4a": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", + "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==", + "license": "Apache-2.0" }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz", - "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==", + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", + "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", + "license": "MIT", "dependencies": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.2", + "@babel/helper-define-polyfill-provider": "^0.6.2", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz", - "integrity": "sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==", + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", + "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", + "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.2", - "core-js-compat": "^3.31.0" + "@babel/helper-define-polyfill-provider": "^0.6.2", + "core-js-compat": "^3.38.0" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz", - "integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", + "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", + "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.2" + "@babel/helper-define-polyfill-provider": "^0.6.2" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/bach": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", - "integrity": "sha512-bZOOfCb3gXBXbTFXq3OZtGR88LwGeJvzu6szttaIzymOTS4ZttBNOWSv7aLZja2EMycKtRYV0Oa8SNKH/zkxvg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/bach/-/bach-2.0.1.tgz", + "integrity": "sha512-A7bvGMGiTOxGMpNupYl9HQTf0FFDNF4VCmks4PJpFyN1AX2pdKuxuwdvUz2Hu388wcgp+OvGFNsumBfFNkR7eg==", + "license": "MIT", "dependencies": { - "arr-filter": "^1.1.1", - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "array-each": "^1.0.0", - "array-initial": "^1.0.0", - "array-last": "^1.1.1", - "async-done": "^1.2.2", - "async-settle": "^1.0.0", - "now-and-later": "^2.0.0" + "async-done": "^2.0.0", + "async-settle": "^2.0.0", + "now-and-later": "^3.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">=10.13.0" } }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" }, - "node_modules/base/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } + "node_modules/bare-events": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.4.2.tgz", + "integrity": "sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q==", + "license": "Apache-2.0", + "optional": true }, - "node_modules/base/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" - } + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" }, "node_modules/base64id": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", "dev": true, + "license": "MIT", "engines": { "node": "^4.5.0 || >= 5.9" } @@ -3766,26 +4025,33 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/before-after-hook": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", - "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", - "dev": true + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-3.0.2.tgz", + "integrity": "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/binaryextensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-2.3.0.tgz", "integrity": "sha512-nAihlQsYGyc5Bwq6+EsubvANYGExeJKHDO3RjnvwU042fawQTQfM3Kxn7IHUXQOz4bzfwsGYYHGSvXyW4zOGLg==", + "license": "MIT", "engines": { "node": ">=0.8" }, @@ -3793,58 +4059,78 @@ "url": "https://bevry.me/fund" } }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "optional": true, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", "dependencies": { - "file-uri-to-path": "1.0.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true, + "license": "ISC" + }, "node_modules/bottleneck": { "version": "2.19.5", "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "fill-range": "^7.1.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/browser-sync": { - "version": "2.29.3", - "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.29.3.tgz", - "integrity": "sha512-NiM38O6XU84+MN+gzspVmXV2fTOoe+jBqIBx3IBdhZrdeURr6ZgznJr/p+hQ+KzkKEiGH/GcC4SQFSL0jV49bg==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-3.0.2.tgz", + "integrity": "sha512-PC9c7aWJFVR4IFySrJxOqLwB9ENn3/TaXCXtAa0SzLwocLN3qMjN+IatbjvtCX92BjNXsY6YWg9Eb7F3Wy255g==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "browser-sync-client": "^2.29.3", - "browser-sync-ui": "^2.29.3", + "browser-sync-client": "^3.0.2", + "browser-sync-ui": "^3.0.2", "bs-recipes": "1.3.4", "chalk": "4.1.2", "chokidar": "^3.5.1", @@ -3858,7 +4144,6 @@ "fs-extra": "3.0.1", "http-proxy": "^1.18.1", "immutable": "^3", - "localtunnel": "^2.0.1", "micromatch": "^4.0.2", "opn": "5.3.0", "portscanner": "2.2.0", @@ -3881,10 +4166,11 @@ } }, "node_modules/browser-sync-client": { - "version": "2.29.3", - "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.29.3.tgz", - "integrity": "sha512-4tK5JKCl7v/3aLbmCBMzpufiYLsB1+UI+7tUXCCp5qF0AllHy/jAqYu6k7hUF3hYtlClKpxExWaR+rH+ny07wQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-3.0.2.tgz", + "integrity": "sha512-tBWdfn9L0wd2Pjuz/NWHtNEKthVb1Y67vg8/qyGNtCqetNz5lkDkFnrsx5UhPNPYUO8vci50IWC/BhYaQskDiQ==", "dev": true, + "license": "ISC", "dependencies": { "etag": "1.8.1", "fresh": "0.5.2", @@ -3895,10 +4181,11 @@ } }, "node_modules/browser-sync-ui": { - "version": "2.29.3", - "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.29.3.tgz", - "integrity": "sha512-kBYOIQjU/D/3kYtUIJtj82e797Egk1FB2broqItkr3i4eF1qiHbFCG6srksu9gWhfmuM/TNG76jMfzAdxEPakg==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-3.0.2.tgz", + "integrity": "sha512-V3FwWAI+abVbFLTyJjXJlCMBwjc3GXf/BPGfwO2fMFACWbIGW9/4SrBOFYEOOtqzCjQE0Di+U3VIb7eES4omNA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "async-each-series": "0.1.1", "chalk": "4.1.2", @@ -3914,6 +4201,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -3929,6 +4217,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -3945,6 +4234,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -3956,31 +4246,25 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/browser-sync-ui/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/browser-sync-ui/node_modules/immutable": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", - "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/browser-sync-ui/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -3993,6 +4277,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -4003,45 +4288,12 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/browser-sync/node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/browser-sync/node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-sync/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/browser-sync/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -4053,211 +4305,64 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/browser-sync/node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "node_modules/browser-sync/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], + "license": "MIT", "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "node": ">=7.0.0" } }, - "node_modules/browser-sync/node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "node_modules/browser-sync/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/browser-sync/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/browser-sync/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/browser-sync/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } + "license": "MIT" }, "node_modules/browser-sync/node_modules/fs-extra": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", "integrity": "sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^3.0.0", "universalify": "^0.1.0" } }, - "node_modules/browser-sync/node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/browser-sync/node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/browser-sync/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/browser-sync/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/browser-sync/node_modules/immutable": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", - "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/browser-sync/node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-sync/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-sync/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, "node_modules/browser-sync/node_modules/jsonfile": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", "integrity": "sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==", "dev": true, + "license": "MIT", "optionalDependencies": { "graceful-fs": "^4.1.6" } }, - "node_modules/browser-sync/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/browser-sync/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/browser-sync/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -4265,75 +4370,20 @@ "node": ">=8" } }, - "node_modules/browser-sync/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, "node_modules/browser-sync/node_modules/universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4.0.0" } }, - "node_modules/browser-sync/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/browser-sync/node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/browser-sync/node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/browserslist": { - "version": "4.21.10", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", - "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", "funding": [ { "type": "opencollective", @@ -4348,11 +4398,12 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001517", - "electron-to-chromium": "^1.4.477", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.11" + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" }, "bin": { "browserslist": "cli.js" @@ -4365,25 +4416,39 @@ "version": "1.3.4", "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", "integrity": "sha512-BXvDkqhDNxXEjeGM8LFkSbR+jzmP/CYpCiVKYn+soB1dDldeU15EBNDkwVXndKuX35wnNUaPd0qSoQEAkmQtMw==", - "dev": true + "dev": true, + "license": "ISC" }, - "node_modules/buffer-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", - "integrity": "sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ==", - "engines": { - "node": ">=0.4.0" + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, "node_modules/builtin-modules": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "license": "MIT", "engines": { "node": ">=6" }, @@ -4392,72 +4457,72 @@ } }, "node_modules/bulma": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/bulma/-/bulma-0.9.4.tgz", - "integrity": "sha512-86FlT5+1GrsgKbPLRRY7cGDg8fsJiP/jzTqXXVqiUZZ2aZT8uemEOHlU1CDU+TxklPEZ11HZNNWclRBBecP4CQ==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bulma/-/bulma-1.0.2.tgz", + "integrity": "sha512-D7GnDuF6seb6HkcnRMM9E739QpEY9chDzzeFrHMyEns/EXyDJuQ0XA0KxbBl/B2NTsKSoDomW61jFGFaAxhK5A==", + "license": "MIT" }, "node_modules/bulma-checkradio": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/bulma-checkradio/-/bulma-checkradio-2.1.3.tgz", "integrity": "sha512-8OmZ7PURyftNLGXSTNAYNTJHIe0OkoH/8z9iWfSXGxiv3AlrKneMtiVpBKofXsvc9ZHBUI1YjefiW5WFhgFgAQ==", + "license": "MIT", "dependencies": { "bulma": "^0.9.3" } }, + "node_modules/bulma-checkradio/node_modules/bulma": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/bulma/-/bulma-0.9.4.tgz", + "integrity": "sha512-86FlT5+1GrsgKbPLRRY7cGDg8fsJiP/jzTqXXVqiUZZ2aZT8uemEOHlU1CDU+TxklPEZ11HZNNWclRBBecP4CQ==", + "license": "MIT" + }, "node_modules/bulma-switch": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/bulma-switch/-/bulma-switch-2.0.4.tgz", - "integrity": "sha512-kMu4H0Pr0VjvfsnT6viRDCgptUq0Rvy7y7PX6q+IHg1xUynsjszPjhAdal5ysAlCG5HNO+5YXxeiu92qYGQolw==" + "integrity": "sha512-kMu4H0Pr0VjvfsnT6viRDCgptUq0Rvy7y7PX6q+IHg1xUynsjszPjhAdal5ysAlCG5HNO+5YXxeiu92qYGQolw==", + "license": "MIT" }, "node_modules/bulma-tooltip": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/bulma-tooltip/-/bulma-tooltip-3.0.2.tgz", - "integrity": "sha512-CsT3APjhlZScskFg38n8HYL8oYNUHQtcu4sz6ERarxkUpBRbk9v0h/5KAvXeKapVSn2dp9l7bOGit5SECP8EWQ==" + "integrity": "sha512-CsT3APjhlZScskFg38n8HYL8oYNUHQtcu4sz6ERarxkUpBRbk9v0h/5KAvXeKapVSn2dp9l7bOGit5SECP8EWQ==", + "license": "MIT" }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, - "node_modules/cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/cachedir": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.2.0.tgz", - "integrity": "sha512-VvxA0xhNqIIfg0V9AmJkDg91DaJwryutH5rVEZAhcNi4iJFj9f+QxmAjgK1LT9I8OgToX27fypX6/MeCXVbBjQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", + "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "license": "MIT", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4468,46 +4533,28 @@ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/caniuse-api": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", - "integrity": "sha512-SBTl70K0PkDUIebbkXrxWqZlHNs0wRgRD6QZ8guctShjbh63gEPfF+Wj0Yw+75f5Y8tSzqAI/NcisYv/cCah2Q==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", "dev": true, + "license": "MIT", "dependencies": { - "browserslist": "^1.3.6", - "caniuse-db": "^1.0.30000529", + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", "lodash.memoize": "^4.1.2", "lodash.uniq": "^4.5.0" } }, - "node_modules/caniuse-api/node_modules/browserslist": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", - "integrity": "sha512-qHJblDE2bXVRYzuDetv/wAeHOJyO97+9wxC1cdCtyzgNuSozOyRCiiLaCR1f71AN66lQdVVBipWm63V+a7bPOw==", - "deprecated": "Browserslist 2 could fail on reading Browserslist >3.0 config used in other tools.", - "dev": true, - "dependencies": { - "caniuse-db": "^1.0.30000639", - "electron-to-chromium": "^1.2.7" - }, - "bin": { - "browserslist": "cli.js" - } - }, - "node_modules/caniuse-db": { - "version": "1.0.30001363", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30001363.tgz", - "integrity": "sha512-voQLvHWF4h768zvo39WJ/17FLqlrorRsGJ5FsG3I5m6NMcDyoeR8R0w3tWazcsEGoUcQHw6VH4Y/WXipBP34sA==", - "dev": true - }, "node_modules/caniuse-lite": { - "version": "1.0.30001519", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001519.tgz", - "integrity": "sha512-0QHgqR+Jv4bxHMp8kZ1Kn8CH55OikjKJ6JmKkZYP1F3D7w+lnFXF70nG5eNfsZS89jadi5Ywy5UCSKLAglIRkg==", + "version": "1.0.30001660", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001660.tgz", + "integrity": "sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==", "funding": [ { "type": "opencollective", @@ -4521,25 +4568,14 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] - }, - "node_modules/cardinal": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", - "integrity": "sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==", - "dev": true, - "dependencies": { - "ansicolors": "~0.3.2", - "redeyed": "~2.1.0" - }, - "bin": { - "cdl": "bin/cdl.js" - } + ], + "license": "CC-BY-4.0" }, "node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -4549,161 +4585,228 @@ "node": ">=4" } }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, "node_modules/chardet": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", - "dependencies": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" }, "optionalDependencies": { - "fsevents": "^1.2.7" + "fsevents": "~2.3.2" } }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" } }, - "node_modules/chokidar/node_modules/glob-parent/node_modules/is-glob": { + "node_modules/cli-cursor": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "license": "MIT", "dependencies": { - "is-extglob": "^2.1.0" + "restore-cursor": "^3.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/clap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", - "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", + "node_modules/cli-highlight": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz", + "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==", "dev": true, + "license": "ISC", "dependencies": { - "chalk": "^1.1.3" + "chalk": "^4.0.0", + "highlight.js": "^10.7.1", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^16.0.0" + }, + "bin": { + "highlight": "bin/highlight" }, "engines": { - "node": ">=0.10.0" + "node": ">=8.0.0", + "npm": ">=5.0.0" } }, - "node_modules/clap/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "node_modules/cli-highlight/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/clap/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/cli-highlight/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/clap/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/cli-highlight/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, + "license": "ISC", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "node_modules/clap/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/cli-highlight/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=0.10.0" + "node": ">=7.0.0" } }, - "node_modules/clap/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/cli-highlight/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/cli-highlight/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=8" } }, - "node_modules/class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "node_modules/cli-highlight/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "node_modules/cli-highlight/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, "engines": { - "node": ">=6" + "node": ">=10" } }, - "node_modules/cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "node_modules/cli-highlight/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, - "dependencies": { - "restore-cursor": "^2.0.0" - }, + "license": "ISC", "engines": { - "node": ">=4" + "node": ">=10" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/cli-table3": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.2.tgz", - "integrity": "sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", "dev": true, + "license": "MIT", "dependencies": { "string-width": "^4.2.0" }, @@ -4714,93 +4817,36 @@ "@colors/colors": "1.5.0" } }, - "node_modules/cli-table3/node_modules/is-fullwidth-code-point": { + "node_modules/cli-width": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-table3/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, + "license": "ISC", "engines": { - "node": ">=8" + "node": ">= 10" } }, - "node_modules/cli-width": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", - "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", - "dev": true - }, "node_modules/cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cliui/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cliui/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", "dependencies": { - "ansi-regex": "^2.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true, + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "license": "MIT", "engines": { "node": ">=0.8" } @@ -4809,6 +4855,8 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==", + "dev": true, + "license": "MIT", "engines": { "node": ">= 0.10" } @@ -4816,153 +4864,99 @@ "node_modules/clone-stats": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==" + "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==", + "license": "MIT" }, "node_modules/cloneable-readable": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", + "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.1", "process-nextick-args": "^2.0.0", "readable-stream": "^2.3.5" } }, - "node_modules/coa": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", - "integrity": "sha512-KAGck/eNAmCL0dcT3BiuYwLbExK6lduR8DxM3C1TyDzaXhZHyZ8ooX5I5+na2e3dPFuibfxrGdorr0/Lr7RYCQ==", - "dev": true, + "node_modules/codemirror": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.1.tgz", + "integrity": "sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==", + "license": "MIT", "dependencies": { - "q": "^1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", - "engines": { - "node": ">=0.10.0" + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/commands": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/lint": "^6.0.0", + "@codemirror/search": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0" } }, - "node_modules/collection-map": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", - "integrity": "sha512-5D2XXSpkOnleOI21TG7p3T0bGAsZ/XknZpKBmGYyluO8pw4zA3K8ZlrBIbC4FXg3m6z/RNFiUFfT2sQK01+UHA==", + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", "dependencies": { - "arr-map": "^2.0.2", - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", - "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/color": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", - "integrity": "sha512-Ajpjd8asqZ6EdxQeqGzU5WBhhTfJ/0cA4Wlbre7e5vXfmDSmda7Ov6jeKoru+b0vHcb1CqvuroTHp5zIWzhVMA==", - "dev": true, - "dependencies": { - "clone": "^1.0.2", - "color-convert": "^1.3.0", - "color-string": "^0.3.0" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" + "color-name": "1.1.3" } }, "node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/color-string": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", - "integrity": "sha512-sz29j1bmSDfoAxKIEU6zwoIZXN6BrFbAMIhfYCNyiZXBDuU/aiHlN84lp/xDzL2ubyFhLDobHIlU1X70XRrMDA==", - "dev": true, - "dependencies": { - "color-name": "^1.0.0" - } + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" }, "node_modules/color-support": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "license": "ISC", "bin": { "color-support": "bin.js" } }, - "node_modules/colormin": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", - "integrity": "sha512-XSEQUUQUR/lXqGyddiNH3XYFUPYlYr1vXy9rTFMsSOw+J7Q6EQkdlQIrTlYn4TccpsOaUE1PYQNjBn20gwCdgQ==", - "dev": true, - "dependencies": { - "color": "^0.11.0", - "css-color-names": "0.0.4", - "has": "^1.0.1" - } - }, - "node_modules/colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha512-ENwblkFQpqqia6b++zLD/KUWafYlVY/UNnAp7oz7LY7E924wmpye416wBOmvv/HMWzl8gL1kJlfvId/1Dg176w==", + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", "dev": true, - "engines": { - "node": ">=0.1.90" - } + "license": "MIT" }, "node_modules/commander": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", - "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "dev": true, + "license": "MIT", "engines": { - "node": "^12.20.0 || >=14" + "node": ">=18" } }, "node_modules/commitizen": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/commitizen/-/commitizen-4.2.4.tgz", - "integrity": "sha512-LlZChbDzg3Ir3O2S7jSo/cgWp5/QwylQVr59K4xayVq8S4/RdKzSyJkghAiZZHfhh5t4pxunUoyeg0ml1q/7aw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/commitizen/-/commitizen-4.3.0.tgz", + "integrity": "sha512-H0iNtClNEhT0fotHvGV3E9tDejDeS04sN1veIebsKYGMuGscFaswRoYJKmT3eW85eIJAs0F28bG2+a/9wCOfPw==", "dev": true, + "license": "MIT", "dependencies": { - "cachedir": "2.2.0", - "cz-conventional-changelog": "3.2.0", + "cachedir": "2.3.0", + "cz-conventional-changelog": "3.3.0", "dedent": "0.7.0", - "detect-indent": "6.0.0", + "detect-indent": "6.1.0", "find-node-modules": "^2.1.2", "find-root": "1.1.0", - "fs-extra": "8.1.0", - "glob": "7.1.4", - "inquirer": "6.5.2", + "fs-extra": "9.1.0", + "glob": "7.2.3", + "inquirer": "8.2.5", "is-utf8": "^0.2.1", - "lodash": "^4.17.20", - "minimist": "1.2.5", + "lodash": "4.17.21", + "minimist": "1.2.7", "strip-bom": "4.0.0", - "strip-json-comments": "3.0.1" + "strip-json-comments": "3.1.1" }, "bin": { "commitizen": "bin/commitizen", @@ -4970,105 +4964,76 @@ "git-cz": "bin/git-cz" }, "engines": { - "node": ">= 10" - } - }, - "node_modules/commitizen/node_modules/cz-conventional-changelog": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cz-conventional-changelog/-/cz-conventional-changelog-3.2.0.tgz", - "integrity": "sha512-yAYxeGpVi27hqIilG1nh4A9Bnx4J3Ov+eXy4koL3drrR+IO9GaWPsKjik20ht608Asqi8TQPf0mczhEeyAtMzg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.1", - "commitizen": "^4.0.3", - "conventional-commit-types": "^3.0.0", - "lodash.map": "^4.5.1", - "longest": "^2.0.1", - "word-wrap": "^1.0.3" - }, - "engines": { - "node": ">= 10" - }, - "optionalDependencies": { - "@commitlint/load": ">6.1.1" + "node": ">= 12" } }, "node_modules/commitizen/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, + "license": "MIT", "dependencies": { + "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/commitizen/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "node": ">=10" } }, - "node_modules/commitizen/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "node_modules/commitizen/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, "engines": { - "node": ">= 4.0.0" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "license": "MIT" }, "node_modules/compare-func": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", "dev": true, + "license": "MIT", "dependencies": { "array-ify": "^1.0.0", "dot-prop": "^5.1.0" } }, - "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" - }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "engines": [ - "node >= 0.8" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" }, "node_modules/concat-with-sourcemaps": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", "dev": true, + "license": "ISC", "dependencies": { "source-map": "^0.6.1" } @@ -5078,16 +5043,25 @@ "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", "dev": true, + "license": "MIT", "dependencies": { "ini": "^1.3.4", "proto-list": "~1.2.1" } }, + "node_modules/config-chain/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "license": "ISC" + }, "node_modules/connect": { "version": "3.6.6", "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", "integrity": "sha512-OO7axMmPpu/2XuX1+2Yrg0ddju31B6xLZMWkJ5rYBu4YRmRVlOjvlY6kw2FJKiAzyxGwnrDUAG4s1Pf0sbBMCQ==", "dev": true, + "license": "MIT", "dependencies": { "debug": "2.6.9", "finalhandler": "1.1.0", @@ -5103,6 +5077,7 @@ "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8" } @@ -5112,6 +5087,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -5120,118 +5096,137 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/conventional-changelog-angular": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz", - "integrity": "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-8.0.0.tgz", + "integrity": "sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA==", "dev": true, + "license": "ISC", "dependencies": { "compare-func": "^2.0.0" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/conventional-changelog-writer": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-7.0.1.tgz", - "integrity": "sha512-Uo+R9neH3r/foIvQ0MKcsXkX642hdm9odUp7TqgFS7BsalTcjzRlIfWZrZR1gbxOozKucaKt5KAbjW8J8xRSmA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-8.0.0.tgz", + "integrity": "sha512-TQcoYGRatlAnT2qEWDON/XSfnVG38JzA7E0wcGScu7RElQBkg9WWgZd1peCWFcWDh1xfb2CfsrcvOn1bbSzztA==", "dev": true, + "license": "MIT", "dependencies": { - "conventional-commits-filter": "^4.0.0", + "@types/semver": "^7.5.5", + "conventional-commits-filter": "^5.0.0", "handlebars": "^4.7.7", - "json-stringify-safe": "^5.0.1", - "meow": "^12.0.1", - "semver": "^7.5.2", - "split2": "^4.0.0" + "meow": "^13.0.0", + "semver": "^7.5.2" }, "bin": { - "conventional-changelog-writer": "cli.mjs" + "conventional-changelog-writer": "dist/cli/index.js" }, "engines": { - "node": ">=16" + "node": ">=18" + } + }, + "node_modules/conventional-changelog-writer/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/conventional-commit-types": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/conventional-commit-types/-/conventional-commit-types-3.0.0.tgz", "integrity": "sha512-SmmCYnOniSsAa9GqWOeLqc179lfr5TRu5b4QFDkbsrJ5TZjPJx85wtOr3zn+1dbeNiXDKGPbZ72IKbPhLXh/Lg==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/conventional-commits-filter": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-4.0.0.tgz", - "integrity": "sha512-rnpnibcSOdFcdclpFwWa+pPlZJhXE7l+XK04zxhbWrhgpR96h33QLz8hITTXbcYICxVr3HZFtbtUAQ+4LdBo9A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-5.0.0.tgz", + "integrity": "sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==", "dev": true, + "license": "MIT", "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/conventional-commits-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", - "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-6.0.0.tgz", + "integrity": "sha512-TbsINLp48XeMXR8EvGjTnKGsZqBemisPoyWESlpRyR8lif0lcwzqz+NMtYSj1ooF/WYjSuu7wX0CtdeeMEQAmA==", "dev": true, + "license": "MIT", "dependencies": { - "is-text-path": "^2.0.0", - "JSONStream": "^1.3.5", - "meow": "^12.0.1", - "split2": "^4.0.0" + "meow": "^13.0.0" }, "bin": { - "conventional-commits-parser": "cli.mjs" + "conventional-commits-parser": "dist/cli/index.js" }, "engines": { - "node": ">=16" + "node": ">=18" } }, - "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dependencies": { - "safe-buffer": "~5.1.1" + "node_modules/convert-hrtime": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/convert-hrtime/-/convert-hrtime-5.0.0.tgz", + "integrity": "sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/convert-source-map/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" }, "node_modules/cookie": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/copy-props": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.5.tgz", - "integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-4.0.0.tgz", + "integrity": "sha512-bVWtw1wQLzzKiYROtvNlbJgxgBYt2bMJpkCbKmXM3xyijvcjjWXEk5nyrrT3bgJ7ODb19ZohE2T0Y3FgNPyoTw==", + "license": "MIT", "dependencies": { - "each-props": "^1.3.2", + "each-props": "^3.0.0", "is-plain-object": "^5.0.0" + }, + "engines": { + "node": ">= 10.13.0" } }, "node_modules/core-js-compat": { - "version": "3.32.2", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.32.2.tgz", - "integrity": "sha512-+GjlguTDINOijtVRUxrQOv3kfu9rl+qPNdX2LTbJ/ZyVTuxK+ksVSAGX1nHstu4hrv1En/uPTtWgq2gI5wt4AQ==", + "version": "3.38.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz", + "integrity": "sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==", + "license": "MIT", "dependencies": { - "browserslist": "^4.21.10" + "browserslist": "^4.23.3" }, "funding": { "type": "opencollective", @@ -5241,13 +5236,15 @@ "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" }, "node_modules/cors": { "version": "2.8.5", "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", "dev": true, + "license": "MIT", "dependencies": { "object-assign": "^4", "vary": "^1" @@ -5257,54 +5254,62 @@ } }, "node_modules/cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dev": true, - "optional": true, + "license": "MIT", "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" }, "engines": { - "node": ">=10" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/cosmiconfig-typescript-loader": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-2.0.2.tgz", - "integrity": "sha512-KmE+bMjWMXJbkWCeY4FJX/npHuZPNr9XF9q9CIQ/bpFwi1qHfCmSiKarrCcRa0LO4fWjk93pVoeRtJAkTGcYNw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-5.0.0.tgz", + "integrity": "sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { - "cosmiconfig": "^7", - "ts-node": "^10.8.1" + "jiti": "^1.19.1" }, "engines": { - "node": ">=12", - "npm": ">=6" + "node": ">=v16" }, "peerDependencies": { "@types/node": "*", - "cosmiconfig": ">=7", - "typescript": ">=3" + "cosmiconfig": ">=8.2", + "typescript": ">=4" } }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true, - "optional": true + "node_modules/crelt": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz", + "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==", + "license": "MIT" }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -5319,6 +5324,7 @@ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^1.0.1" }, @@ -5334,6 +5340,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -5341,13 +5348,61 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==", + "node_modules/css-declaration-sorter": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz", + "integrity": "sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==", "dev": true, + "license": "ISC", "engines": { - "node": "*" + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, "node_modules/cssesc": { @@ -5355,6 +5410,7 @@ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true, + "license": "MIT", "bin": { "cssesc": "bin/cssesc" }, @@ -5363,209 +5419,126 @@ } }, "node_modules/cssnano": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", - "integrity": "sha512-0o0IMQE0Ezo4b41Yrm8U6Rp9/Ag81vNXY1gZMnT1XhO4DpjEf2utKERqWJbOoz3g1Wdc1d3QSta/cIuJ1wSTEg==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-7.0.6.tgz", + "integrity": "sha512-54woqx8SCbp8HwvNZYn68ZFAepuouZW4lTwiMVnBErM3VkO7/Sd4oTOt3Zz3bPx3kxQ36aISppyXj2Md4lg8bw==", "dev": true, + "license": "MIT", "dependencies": { - "autoprefixer": "^6.3.1", - "decamelize": "^1.1.2", - "defined": "^1.0.0", - "has": "^1.0.1", - "object-assign": "^4.0.1", - "postcss": "^5.0.14", - "postcss-calc": "^5.2.0", - "postcss-colormin": "^2.1.8", - "postcss-convert-values": "^2.3.4", - "postcss-discard-comments": "^2.0.4", - "postcss-discard-duplicates": "^2.0.1", - "postcss-discard-empty": "^2.0.1", - "postcss-discard-overridden": "^0.1.1", - "postcss-discard-unused": "^2.2.1", - "postcss-filter-plugins": "^2.0.0", - "postcss-merge-idents": "^2.1.5", - "postcss-merge-longhand": "^2.0.1", - "postcss-merge-rules": "^2.0.3", - "postcss-minify-font-values": "^1.0.2", - "postcss-minify-gradients": "^1.0.1", - "postcss-minify-params": "^1.0.4", - "postcss-minify-selectors": "^2.0.4", - "postcss-normalize-charset": "^1.1.0", - "postcss-normalize-url": "^3.0.7", - "postcss-ordered-values": "^2.1.0", - "postcss-reduce-idents": "^2.2.2", - "postcss-reduce-initial": "^1.0.0", - "postcss-reduce-transforms": "^1.0.3", - "postcss-svgo": "^2.1.1", - "postcss-unique-selectors": "^2.0.2", - "postcss-value-parser": "^3.2.3", - "postcss-zindex": "^2.0.1" - } - }, - "node_modules/cssnano/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cssnano/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "dev": true, + "cssnano-preset-default": "^7.0.6", + "lilconfig": "^3.1.2" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/cssnano/node_modules/autoprefixer": { - "version": "6.7.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", - "integrity": "sha512-WKExI/eSGgGAkWAO+wMVdFObZV7hQen54UpD1kCCTN3tvlL3W1jL4+lPP/M7MwoP7Q4RHzKtO3JQ4HxYEcd+xQ==", + "node_modules/cssnano-preset-default": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-7.0.6.tgz", + "integrity": "sha512-ZzrgYupYxEvdGGuqL+JKOY70s7+saoNlHSCK/OGn1vB2pQK8KSET8jvenzItcY+kA7NoWvfbb/YhlzuzNKjOhQ==", "dev": true, + "license": "MIT", "dependencies": { - "browserslist": "^1.7.6", - "caniuse-db": "^1.0.30000634", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "postcss": "^5.2.16", - "postcss-value-parser": "^3.2.3" + "browserslist": "^4.23.3", + "css-declaration-sorter": "^7.2.0", + "cssnano-utils": "^5.0.0", + "postcss-calc": "^10.0.2", + "postcss-colormin": "^7.0.2", + "postcss-convert-values": "^7.0.4", + "postcss-discard-comments": "^7.0.3", + "postcss-discard-duplicates": "^7.0.1", + "postcss-discard-empty": "^7.0.0", + "postcss-discard-overridden": "^7.0.0", + "postcss-merge-longhand": "^7.0.4", + "postcss-merge-rules": "^7.0.4", + "postcss-minify-font-values": "^7.0.0", + "postcss-minify-gradients": "^7.0.0", + "postcss-minify-params": "^7.0.2", + "postcss-minify-selectors": "^7.0.4", + "postcss-normalize-charset": "^7.0.0", + "postcss-normalize-display-values": "^7.0.0", + "postcss-normalize-positions": "^7.0.0", + "postcss-normalize-repeat-style": "^7.0.0", + "postcss-normalize-string": "^7.0.0", + "postcss-normalize-timing-functions": "^7.0.0", + "postcss-normalize-unicode": "^7.0.2", + "postcss-normalize-url": "^7.0.0", + "postcss-normalize-whitespace": "^7.0.0", + "postcss-ordered-values": "^7.0.1", + "postcss-reduce-initial": "^7.0.2", + "postcss-reduce-transforms": "^7.0.0", + "postcss-svgo": "^7.0.1", + "postcss-unique-selectors": "^7.0.3" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/cssnano/node_modules/browserslist": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", - "integrity": "sha512-qHJblDE2bXVRYzuDetv/wAeHOJyO97+9wxC1cdCtyzgNuSozOyRCiiLaCR1f71AN66lQdVVBipWm63V+a7bPOw==", - "deprecated": "Browserslist 2 could fail on reading Browserslist >3.0 config used in other tools.", - "dev": true, - "dependencies": { - "caniuse-db": "^1.0.30000639", - "electron-to-chromium": "^1.2.7" - }, - "bin": { - "browserslist": "cli.js" - } - }, - "node_modules/cssnano/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cssnano/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/cssnano/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cssnano/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/cssnano/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/cssnano/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/cssnano-utils": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-5.0.0.tgz", + "integrity": "sha512-Uij0Xdxc24L6SirFr25MlwC2rCFX6scyUmuKpzI+JQ7cyqDEwD42fJ0xfB3yLfOnRDU5LKGgjQ9FA6LYh76GWQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cssnano/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" }, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/cssnano/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^1.0.0" + "css-tree": "~2.2.0" }, "engines": { - "node": ">=0.8.0" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" } }, - "node_modules/csso": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", - "integrity": "sha512-FmCI/hmqDeHHLaIQckMhMZneS84yzUZdrWDAvJVVxOwcKE1P1LF9FGmzr1ktIQSxOw6fl3PaQsmfg+GN+VvR3w==", + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", "dev": true, + "license": "MIT", "dependencies": { - "clap": "^1.0.9", - "source-map": "^0.5.3" - }, - "bin": { - "csso": "bin/csso" + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" } }, - "node_modules/csso/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "license": "CC0-1.0" }, "node_modules/cz-conventional-changelog": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/cz-conventional-changelog/-/cz-conventional-changelog-3.3.0.tgz", "integrity": "sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^2.4.1", "commitizen": "^4.0.3", @@ -5581,58 +5554,87 @@ "@commitlint/load": ">6.1.1" } }, - "node_modules/d": { + "node_modules/data-view-buffer": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "license": "MIT", "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" }, "engines": { - "node": ">=6.0" + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, "engines": { - "node": ">=0.10" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4.0.0" } @@ -5641,42 +5643,50 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/deepmerge": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/default-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", - "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "license": "MIT", "dependencies": { - "kind-of": "^5.0.2" + "clone": "^1.0.2" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/default-resolution": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", - "integrity": "sha512-2xaP6GiwVwOEbXCGoJ4ufgC76m8cj805jrghScewJC2ZDsb9U0b4BIrba+xt/Uytyd0HvQ6+WymSRTfnYj59GQ==", + "node_modules/defaults/node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">=0.8" } }, - "node_modules/define-properties": { + "node_modules/define-data-property": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -5685,27 +5695,28 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "license": "MIT", "dependencies": { - "is-descriptor": "^0.1.0" + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==", - "dev": true - }, "node_modules/del": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-7.0.0.tgz", - "integrity": "sha512-tQbV/4u5WVB8HMJr08pgw0b6nG4RGt/tj+7Numvq+zqcvUFeMaIWWOUFltiU+6go8BSO2/ogsB4EasDaj0y68Q==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/del/-/del-7.1.0.tgz", + "integrity": "sha512-v2KyNk7efxhlyHpjEvfyxaAihKKK0nWCuf6ZtqZcFFpQRG0bJ12Qsr0RpvsICMjAAZ8DOVCxrlqpxISlMHC4Kg==", + "license": "MIT", "dependencies": { "globby": "^13.1.2", "graceful-fs": "^4.2.10", @@ -5723,40 +5734,57 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/del/node_modules/globby": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "license": "MIT", + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, - "node_modules/deprecation": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", - "dev": true - }, "node_modules/destroy": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/detect-file": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/detect-indent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.0.0.tgz", - "integrity": "sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -5773,20 +5801,11 @@ "node": ">= 0.8.0" } }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.3.1" - } - }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "license": "MIT", "dependencies": { "path-type": "^4.0.0" }, @@ -5794,16 +5813,63 @@ "node": ">=8" } }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "dev": true, + "license": "MIT", "dependencies": { - "esutils": "^2.0.2" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" }, "engines": { - "node": ">=6.0.0" + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" } }, "node_modules/dot-prop": { @@ -5811,6 +5877,7 @@ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", "dev": true, + "license": "MIT", "dependencies": { "is-obj": "^2.0.0" }, @@ -5823,41 +5890,30 @@ "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "readable-stream": "^2.0.2" } }, - "node_modules/duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dependencies": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, "node_modules/each-props": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", - "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/each-props/-/each-props-3.0.0.tgz", + "integrity": "sha512-IYf1hpuWrdzse/s/YJOrFmU15lyhSzxelNVAHTEG3DtP4QsLTWZUzcUL3HMXmKQxXpa4EIrBPpwRgj0aehdvAw==", + "license": "MIT", "dependencies": { - "is-plain-object": "^2.0.1", + "is-plain-object": "^5.0.0", "object.defaults": "^1.1.0" - } - }, - "node_modules/each-props/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 10.13.0" } }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" + }, "node_modules/easy-extender": { "version": "2.3.4", "resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.4.tgz", @@ -5870,6 +5926,18 @@ "node": ">= 4.0.0" } }, + "node_modules/easy-transform-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/easy-transform-stream/-/easy-transform-stream-1.0.1.tgz", + "integrity": "sha512-ktkaa6XR7COAR3oj02CF3IOgz2m1hCaY3SfzvKT4Svt2MhHw9XCt+ncJNWfe2TGz31iqzNGZ8spdKQflj+Rlog==", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/eazy-logger": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-4.0.1.tgz", @@ -5887,6 +5955,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -5902,6 +5971,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -5918,6 +5988,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -5929,13 +6000,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, + "dev": true, + "license": "MIT" + }, "node_modules/eazy-logger/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -5945,6 +6018,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -5956,24 +6030,34 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.4.523", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.523.tgz", - "integrity": "sha512-9AreocSUWnzNtvLcbpng6N+GkXnCcBR80IQkxRC9Dfdyg4gaWNUPBujAHUpKkiUkoSoR9UlhA4zD/IgBklmhzg==" + "version": "1.5.23", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.23.tgz", + "integrity": "sha512-mBhODedOXg4v5QWwl21DjM5amzjmI1zw9EPrPK/5Wx7C8jt33bpZNrC7OhHUG3pxRtbLpr3W2dXT+Ph1SsfRZA==", + "license": "ISC" }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "license": "MIT" + }, + "node_modules/emojilib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz", + "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==", + "dev": true, + "license": "MIT" }, "node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -5982,15 +6066,17 @@ "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "license": "MIT", "dependencies": { "once": "^1.4.0" } }, "node_modules/engine.io": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.4.1.tgz", - "integrity": "sha512-JFYQurD/nbsA5BSPmbaOSLa3tSVj8L6o4srSwXXY3NqE+gGUNmmPTbhn8tjzcCtSqhFgIeqef81ngny8JM25hw==", + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.5.tgz", + "integrity": "sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==", "dev": true, + "license": "MIT", "dependencies": { "@types/cookie": "^0.4.1", "@types/cors": "^2.8.12", @@ -6000,78 +6086,109 @@ "cookie": "~0.4.1", "cors": "~2.8.5", "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.11.0" + "engine.io-parser": "~5.2.1", + "ws": "~8.17.1" }, "engines": { - "node": ">=10.0.0" + "node": ">=10.2.0" } }, "node_modules/engine.io-client": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.4.0.tgz", - "integrity": "sha512-GyKPDyoEha+XZ7iEqam49vz6auPnNJ9ZBfy89f+rMMas8AuiMWOZ9PVzu8xb9ZC6rafUqiGHSCfu22ih66E+1g==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.4.tgz", + "integrity": "sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ==", "dev": true, + "license": "MIT", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.11.0", + "engine.io-parser": "~5.2.1", + "ws": "~8.17.1", "xmlhttprequest-ssl": "~2.0.0" } }, "node_modules/engine.io-parser": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.6.tgz", - "integrity": "sha512-tjuoZDMAdEhVnSFleYPCtdL2GXwVTGtNjoeJd9IhIG3C1xs9uwxqRNEu5WpnDZCaozwVlK/nuQhpodhXSIMaxw==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", + "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" } }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/env-ci": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-9.0.0.tgz", - "integrity": "sha512-Q3cjr1tX9xwigprw4G8M3o7PIOO/1LYji6TyGsbD1WfMmD23etZvhgmPXJqkP788yH4dgSSK7oaIMuaayUJIfg==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-11.1.0.tgz", + "integrity": "sha512-Z8dnwSDbV1XYM9SBF2J0GcNVvmfmfh3a49qddGIROhBoVro6MZVTji15z/sJbQ2ko2ei8n988EU1wzoLU/tF+g==", "dev": true, + "license": "MIT", "dependencies": { - "execa": "^7.0.0", + "execa": "^8.0.0", "java-properties": "^1.0.2" }, "engines": { - "node": "^16.14 || >=18" + "node": "^18.17 || >=20.6.1" } }, "node_modules/env-ci/node_modules/execa": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-7.1.1.tgz", - "integrity": "sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "dev": true, + "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^4.3.0", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", "is-stream": "^3.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^5.1.0", "onetime": "^6.0.0", - "signal-exit": "^3.0.7", + "signal-exit": "^4.1.0", "strip-final-newline": "^3.0.0" }, "engines": { - "node": "^14.18.0 || ^16.14.0 || >=18.0.0" + "node": ">=16.17" }, "funding": { "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "node_modules/env-ci/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/env-ci/node_modules/human-signals": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", - "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=14.18.0" + "node": ">=16.17.0" } }, "node_modules/env-ci/node_modules/is-stream": { @@ -6079,6 +6196,7 @@ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -6091,6 +6209,7 @@ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -6099,10 +6218,11 @@ } }, "node_modules/env-ci/node_modules/npm-run-path": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", - "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^4.0.0" }, @@ -6118,6 +6238,7 @@ "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "dev": true, + "license": "MIT", "dependencies": { "mimic-fn": "^4.0.0" }, @@ -6133,6 +6254,7 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -6140,11 +6262,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/env-ci/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/env-ci/node_modules/strip-final-newline": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -6152,53 +6288,90 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/environment": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } }, "node_modules/es-abstract": { - "version": "1.21.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", - "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "license": "MIT", "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.2.0", - "get-symbol-description": "^1.0.0", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", + "is-shared-array-buffer": "^1.0.3", "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", + "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.7", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-length": "^1.0.4", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.9" + "which-typed-array": "^1.1.15" }, "engines": { "node": ">= 0.4" @@ -6207,14 +6380,48 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "license": "MIT", "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -6224,6 +6431,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "license": "MIT", "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -6236,54 +6444,11 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es5-ext": { - "version": "0.10.61", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.61.tgz", - "integrity": "sha512-yFhIqQAzu2Ca2I4SE2Au3rxVfmohU9Y7wqGR+s7+H7krk26NXhIRAZDgqd6xqjCEFUomDEA3/Bo/7fKmIkW1kA==", - "hasInstallScript": true, - "dependencies": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "next-tick": "^1.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "node_modules/es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", - "dependencies": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } - }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", "engines": { "node": ">=6" } @@ -6292,53 +6457,53 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/eslint": { - "version": "8.49.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.49.0.tgz", - "integrity": "sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==", + "version": "9.10.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.10.0.tgz", + "integrity": "sha512-Y4D0IgtBZfOcOUAIQTSXBKoNGfY0REGqHJG6+Q81vNippW5YlKjHFj4soMxamKK1NXHUWuBZTLdU3Km+L/pcHw==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.49.0", - "@humanwhocodes/config-array": "^0.11.11", + "@eslint-community/regexpp": "^4.11.0", + "@eslint/config-array": "^0.18.0", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "9.10.0", + "@eslint/plugin-kit": "^0.1.0", "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.3.0", "@nodelib/fs.walk": "^1.2.8", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", - "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", + "eslint-scope": "^8.0.2", + "eslint-visitor-keys": "^4.0.0", + "espree": "^10.1.0", + "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", + "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", @@ -6350,61 +6515,56 @@ "eslint": "bin/eslint.js" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.2.tgz", + "integrity": "sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", + "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", "dev": true, + "license": "Apache-2.0", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, "node_modules/eslint/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -6420,6 +6580,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -6436,6 +6597,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -6447,13 +6609,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/eslint/node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -6461,20 +6625,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, + "license": "ISC", "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "is-glob": "^4.0.3" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10.13.0" } }, "node_modules/eslint/node_modules/has-flag": { @@ -6482,6 +6643,7 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -6491,110 +6653,50 @@ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/eslint/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/eslint/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { - "p-locate": "^5.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/eslint/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "node_modules/espree": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz", + "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "yocto-queue": "^0.1.0" + "acorn": "^8.12.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.0.0" }, "engines": { - "node": ">=10" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", - "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" + "estraverse": "^5.1.0" }, "engines": { "node": ">=0.10" @@ -6605,6 +6707,7 @@ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -6617,6 +6720,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -6624,12 +6728,14 @@ "node_modules/estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } @@ -6639,6 +6745,7 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -6647,13 +6754,15 @@ "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, + "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -6672,40 +6781,24 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, + "node_modules/execa/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/expand-brackets/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, "node_modules/expand-tilde": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "license": "MIT", "dependencies": { "homedir-polyfill": "^1.0.1" }, @@ -6713,30 +6806,20 @@ "node": ">=0.10.0" } }, - "node_modules/ext": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", - "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", - "dependencies": { - "type": "^2.5.0" - } - }, - "node_modules/ext/node_modules/type": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.6.0.tgz", - "integrity": "sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==" - }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" }, "node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "license": "MIT", "dependencies": { - "is-extendable": "^0.1.0" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" }, "engines": { "node": ">=0.10.0" @@ -6747,6 +6830,7 @@ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, + "license": "MIT", "dependencies": { "chardet": "^0.7.0", "iconv-lite": "^0.4.24", @@ -6756,102 +6840,37 @@ "node": ">=4" } }, - "node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/fancy-log": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", - "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-2.0.0.tgz", + "integrity": "sha512-9CzxZbACXMUXW13tS0tI8XsGGmxWzO2DmYrGuBJOJ8k8q2K7hwfJA5qHjuPPe8wtsco33YR9wc+Rlr5wYFvhSA==", + "dev": true, + "license": "MIT", "dependencies": { - "ansi-gray": "^0.1.1", - "color-support": "^1.1.3", - "parse-node-version": "^1.0.0", - "time-stamp": "^1.0.0" + "color-support": "^1.1.3" }, "engines": { - "node": ">= 0.10" + "node": ">=10.13.0" } }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "license": "MIT" }, "node_modules/fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -6863,79 +6882,85 @@ "node": ">=8.6.0" } }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz", + "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "license": "MIT", + "engines": { + "node": ">= 4.9.1" + } }, "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } }, "node_modules/figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, + "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.5" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, + "license": "MIT", "dependencies": { - "flat-cache": "^3.0.4" + "flat-cache": "^4.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16.0.0" } }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "optional": true - }, "node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/finalhandler": { @@ -6943,6 +6968,7 @@ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", "integrity": "sha512-ejnvM9ZXYzp6PUPUyQBMBf0Co5VX2gr5H2VQe2Ui2jWXNlxv+PYZo8wpAymJNJdLsG1R4p+M4aynF8KuoUEwRw==", "dev": true, + "license": "MIT", "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.1", @@ -6961,6 +6987,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -6969,13 +6996,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/find-node-modules": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/find-node-modules/-/find-node-modules-2.1.3.tgz", "integrity": "sha512-UC2I2+nx1ZuOBclWVNdcnbDR5dlrOdVb7xNjmT/lHE+LsgztWks3dG7boJ37yTS/venXw84B/mAW9uHVoC5QRg==", "dev": true, + "license": "MIT", "dependencies": { "findup-sync": "^4.0.0", "merge": "^2.1.1" @@ -6985,43 +7014,51 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/find-up": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", - "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, + "license": "MIT", "dependencies": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/find-up/node_modules/path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "node_modules/find-up-simple": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.0.tgz", + "integrity": "sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==", "dev": true, + "license": "MIT", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/find-versions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-5.1.0.tgz", - "integrity": "sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-6.0.0.tgz", + "integrity": "sha512-2kCCtc+JvcZ86IGAz3Z2Y0A1baIz9fL31pH/0S1IqZr9Iwnjq8izfPtrCyQKO6TLMPELLsQMre7VDqeIKCsHkA==", "dev": true, + "license": "MIT", "dependencies": { - "semver-regex": "^4.0.5" + "semver-regex": "^4.0.5", + "super-regex": "^1.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -7032,6 +7069,7 @@ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-4.0.0.tgz", "integrity": "sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==", "dev": true, + "license": "MIT", "dependencies": { "detect-file": "^1.0.0", "is-glob": "^4.0.0", @@ -7043,78 +7081,55 @@ } }, "node_modules/fined": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", - "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-2.0.0.tgz", + "integrity": "sha512-OFRzsL6ZMHz5s0JrsEr+TpdGNCtrVtnuG3x1yzGNiQHT0yaDnXAj8V/lWcpJVrnoDpcwXcASxAZYbuXda2Y82A==", + "license": "MIT", "dependencies": { "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", + "is-plain-object": "^5.0.0", "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/fined/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" + "object.pick": "^1.3.0", + "parse-filepath": "^1.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 10.13.0" } }, "node_modules/flagged-respawn": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", - "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-2.0.0.tgz", + "integrity": "sha512-Gq/a6YCi8zexmGHMuJwahTGzXlAZAOsbCVKduWXC6TlLCjjFRlExMJc4GC2NYPYZ0r/brw9P7CpRgQmlPVeOoA==", + "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, + "license": "MIT", "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" + "flatted": "^3.2.9", + "keyv": "^4.5.4" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16" } }, "node_modules/flatted": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", - "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", - "dev": true - }, - "node_modules/flatten": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", - "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==", - "deprecated": "flatten is deprecated in favor of utility frameworks such as lodash.", - "dev": true - }, - "node_modules/flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "dependencies": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true, + "license": "ISC" }, "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", "dev": true, "funding": [ { @@ -7122,6 +7137,7 @@ "url": "https://github.com/sponsors/RubenVerborgh" } ], + "license": "MIT", "engines": { "node": ">=4.0" }, @@ -7135,6 +7151,7 @@ "version": "4.4.0", "resolved": "https://registry.npmjs.org/fontawesome-subset/-/fontawesome-subset-4.4.0.tgz", "integrity": "sha512-kcK1ELa/Gq4R2+gKxzeFbLl0uzSJBeWsjtZPLLf5mCJEfTY9gt/lAOgW7opGaG1ZaFMa88Qu1ghuRsLUkmobYg==", + "license": "GPL-3.0-or-later", "dependencies": { "lodash": ">=4.17.21", "mkdirp": "^2.1.6", @@ -7154,18 +7171,11 @@ } } }, - "node_modules/fontawesome-subset/node_modules/yaml": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz", - "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==", - "engines": { - "node": ">= 14" - } - }, "node_modules/fontverter": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fontverter/-/fontverter-2.0.0.tgz", "integrity": "sha512-DFVX5hvXuhi1Jven1tbpebYTCT9XYnvx6/Z+HFUPb7ZRMCW+pj2clU9VMhoTPgWKPhAs7JJDSk3CW1jNUvKCZQ==", + "license": "BSD-3-Clause", "dependencies": { "wawoff2": "^2.0.0", "woff2sfnt-sfnt2woff": "^1.0.0" @@ -7175,6 +7185,7 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "license": "MIT", "dependencies": { "is-callable": "^1.1.3" } @@ -7183,6 +7194,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -7191,6 +7203,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", + "license": "MIT", "dependencies": { "for-in": "^1.0.1" }, @@ -7198,27 +7211,45 @@ "node": ">=0.10.0" } }, - "node_modules/fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, "engines": { - "node": "*" + "node": ">=14" }, "funding": { - "type": "patreon", - "url": "https://www.patreon.com/infusion" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", - "dependencies": { - "map-cache": "^0.2.2" + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" } }, "node_modules/fresh": { @@ -7226,6 +7257,7 @@ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -7235,16 +7267,18 @@ "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.1", "readable-stream": "^2.0.0" } }, "node_modules/fs-extra": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", - "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -7255,63 +7289,70 @@ } }, "node_modules/fs-mkdirp-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", - "integrity": "sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-2.0.1.tgz", + "integrity": "sha512-UTOY+59K6IA94tec8Wjqm0FSh5OVudGNB0NL/P6fB3HiE3bYOY3VYBGijsnOHNkQSwC1FKkU77pmq7xp9CskLw==", + "license": "MIT", "dependencies": { - "graceful-fs": "^4.1.11", - "through2": "^2.0.3" + "graceful-fs": "^4.2.8", + "streamx": "^2.12.0" }, "engines": { - "node": ">= 0.10" - } - }, - "node_modules/fs-mkdirp-stream/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "node": ">=10.13.0" } }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" }, "node_modules/fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" ], - "dependencies": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - }, "engines": { - "node": ">= 4.0" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function-timeout": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/function-timeout/-/function-timeout-1.0.2.tgz", + "integrity": "sha512-939eZS4gJ3htTHAldmyyuzlrD58P03fHG49v2JfFXbV6OhvZKRC9j2yAtdHw/zrp2zXHuv05zMIy40F0ge7spA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" }, "engines": { "node": ">= 0.4" @@ -7324,6 +7365,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -7332,48 +7374,62 @@ "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "license": "MIT", "peer": true, "engines": { "node": ">=6.9.0" } }, "node_modules/get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } }, "node_modules/get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "license": "MIT", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-7.0.1.tgz", + "integrity": "sha512-3M8C1EOFN6r8AMUhwUAACIoXZJEOufDU5+0gFFN5uNs6XYOralD2Pqkl7m046va6x77FwposWXbAhPPIOus7mQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" }, "engines": { "node": ">= 0.4" @@ -7382,68 +7438,87 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", - "engines": { - "node": ">=0.10.0" + "node_modules/git-cz": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/git-cz/-/git-cz-4.9.0.tgz", + "integrity": "sha512-cSRL8IIOXU7UFLdbziCYqg8f8InwLwqHezkiRHNSph7oZqGv0togId1kMTfKil6gzK0VaSXeVBb4oDl0fQCHiw==", + "license": "Unlicense", + "bin": { + "git-cz": "bin/git-cz.js", + "gitcz": "bin/git-cz.js" } }, "node_modules/git-log-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.0.tgz", - "integrity": "sha512-rnCVNfkTL8tdNryFuaY0fYiBWEBcgF748O6ZI61rslBvr2o7U65c2/6npCRqH40vuAhtgtDiqLTJjBVdrejCzA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.1.tgz", + "integrity": "sha512-PI+sPDvHXNPl5WNOErAK05s3j0lgwUzMN6o8cyQrDaKfT3qd7TmNJKeXX+SknI5I0QhG5fVPAEwSY4tRGDtYoQ==", "dev": true, + "license": "MIT", "dependencies": { "argv-formatter": "~1.0.0", "spawn-error-forwarder": "~1.0.0", "split2": "~1.0.0", "stream-combiner2": "~1.1.1", "through2": "~2.0.0", - "traverse": "~0.6.6" + "traverse": "0.6.8" } }, - "node_modules/git-log-parser/node_modules/split2": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-1.0.0.tgz", - "integrity": "sha512-NKywug4u4pX/AZBB1FCPzZ6/7O+Xhz1qMVbzTvvKvikjO99oPN87SkK08mEY9P63/5lWjK+wgOOgApnTg5r6qg==", - "dev": true, + "node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "license": "ISC", "dependencies": { - "through2": "~2.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/git-log-parser/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "node_modules/glob-stream": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-8.0.2.tgz", + "integrity": "sha512-R8z6eTB55t3QeZMmU1C+Gv+t5UnNRkA55c5yo67fAVfxODxieTwsjNG7utxS/73NdP1NbDgCrhVEg2h00y4fFw==", + "license": "MIT", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "@gulpjs/to-absolute-glob": "^4.0.0", + "anymatch": "^3.1.3", + "fastq": "^1.13.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "is-negated-glob": "^1.0.0", + "normalize-path": "^3.0.0", + "streamx": "^2.12.5" }, "engines": { - "node": "*" + "node": ">=10.13.0" } }, - "node_modules/glob-parent": { + "node_modules/glob-stream/node_modules/glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, @@ -7451,80 +7526,65 @@ "node": ">=10.13.0" } }, - "node_modules/glob-stream": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", - "integrity": "sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==", + "node_modules/glob-watcher": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-6.0.0.tgz", + "integrity": "sha512-wGM28Ehmcnk2NqRORXFOTOR064L4imSw3EeOqU5bIwUf62eXGwg89WivH6VMahL8zlQHeodzvHpXplrqzrz3Nw==", + "license": "MIT", "dependencies": { - "extend": "^3.0.0", - "glob": "^7.1.1", - "glob-parent": "^3.1.0", - "is-negated-glob": "^1.0.0", - "ordered-read-streams": "^1.0.0", - "pumpify": "^1.3.5", - "readable-stream": "^2.1.5", - "remove-trailing-separator": "^1.0.1", - "to-absolute-glob": "^2.0.0", - "unique-stream": "^2.0.2" + "async-done": "^2.0.0", + "chokidar": "^3.5.3" }, "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, - "node_modules/glob-stream/node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "balanced-match": "^1.0.0" } }, - "node_modules/glob-stream/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", "dependencies": { - "is-extglob": "^2.1.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz", - "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==", - "dependencies": { - "anymatch": "^2.0.0", - "async-done": "^1.2.0", - "chokidar": "^2.0.0", - "is-negated-glob": "^1.0.0", - "just-debounce": "^1.0.0", - "normalize-path": "^3.0.0", - "object.defaults": "^1.1.0" + "node": ">=16 || 14 >=14.17" }, - "engines": { - "node": ">= 0.10" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/global-dirs": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", - "integrity": "sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==", + "node_modules/global-directory": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz", + "integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { - "ini": "^1.3.4" + "ini": "4.1.1" }, "engines": { - "node": ">=4" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/global-modules": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "license": "MIT", "dependencies": { "global-prefix": "^1.0.1", "is-windows": "^1.0.1", @@ -7538,6 +7598,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "license": "MIT", "dependencies": { "expand-tilde": "^2.0.2", "homedir-polyfill": "^1.0.1", @@ -7549,10 +7610,17 @@ "node": ">=0.10.0" } }, + "node_modules/global-prefix/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, "node_modules/global-prefix/node_modules/which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -7561,26 +7629,26 @@ } }, "node_modules/globals": { - "version": "13.21.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", - "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", + "version": "15.9.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.9.0.tgz", + "integrity": "sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==", "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "license": "MIT", "dependencies": { - "define-properties": "^1.1.3" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -7590,38 +7658,69 @@ } }, "node_modules/globby": { - "version": "13.1.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.4.tgz", - "integrity": "sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz", + "integrity": "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==", + "dev": true, + "license": "MIT", "dependencies": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^4.0.0" + "@sindresorhus/merge-streams": "^2.1.0", + "fast-glob": "^3.3.2", + "ignore": "^5.2.4", + "path-type": "^5.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.1.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/glogg": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", - "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", - "dependencies": { - "sparkles": "^1.0.0" - }, + "node_modules/globby/node_modules/path-type": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", + "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", + "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "node_modules/globby/node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glogg": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-2.2.0.tgz", + "integrity": "sha512-eWv1ds/zAlz+M1ioHsyKJomfY7jbDDPpwSkv14KQj89bycx1nvK5/2Cj/T9g7kzJcX5Bc7Yv22FjfBZS/jl94A==", + "license": "MIT", + "dependencies": { + "sparkles": "^2.1.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "license": "MIT", "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -7630,47 +7729,45 @@ } }, "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" }, "node_modules/gulp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", - "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-5.0.0.tgz", + "integrity": "sha512-S8Z8066SSileaYw1S2N1I64IUc/myI2bqe2ihOBzO6+nKpvNSg7ZcWJt/AwF8LC/NVN+/QZ560Cb/5OPsyhkhg==", + "license": "MIT", "dependencies": { - "glob-watcher": "^5.0.3", - "gulp-cli": "^2.2.0", - "undertaker": "^1.2.1", - "vinyl-fs": "^3.0.0" + "glob-watcher": "^6.0.0", + "gulp-cli": "^3.0.0", + "undertaker": "^2.0.0", + "vinyl-fs": "^4.0.0" }, "bin": { "gulp": "bin/gulp.js" }, "engines": { - "node": ">= 0.10" + "node": ">=10.13.0" } }, "node_modules/gulp-autoprefixer": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/gulp-autoprefixer/-/gulp-autoprefixer-8.0.0.tgz", - "integrity": "sha512-sVR++PIaXpa81p52dmmA/jt50bw0egmylK5mjagfgOJ8uLDGaF9tHyzvetkY9Uo0gBZUS5sVqN3kX/GlUKOyog==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/gulp-autoprefixer/-/gulp-autoprefixer-9.0.0.tgz", + "integrity": "sha512-lVQz5fqdjm4RMB1O3xLPtaZNMbFFoGKbV+SN3NJgT9X+PIyYld7dXARpoXIKEZAqE9WC2SoDQU0mxqZahWq07A==", + "license": "MIT", "dependencies": { - "autoprefixer": "^10.2.6", - "fancy-log": "^1.3.3", - "plugin-error": "^1.0.1", - "postcss": "^8.3.0", - "through2": "^4.0.2", + "autoprefixer": "^10.4.16", + "gulp-plugin-extras": "^0.2.2", + "postcss": "^8.4.31", "vinyl-sourcemaps-apply": "^0.2.1" }, "engines": { - "node": ">=12" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" }, "peerDependencies": { "gulp": ">=4" @@ -7682,34 +7779,137 @@ } }, "node_modules/gulp-cli": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz", - "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-3.0.0.tgz", + "integrity": "sha512-RtMIitkT8DEMZZygHK2vEuLPqLPAFB4sntSxg4NoDta7ciwGZ18l7JuhCTiS5deOJi2IoK0btE+hs6R4sfj7AA==", + "license": "MIT", "dependencies": { - "ansi-colors": "^1.0.1", - "archy": "^1.0.0", - "array-sort": "^1.0.0", - "color-support": "^1.1.3", - "concat-stream": "^1.6.0", - "copy-props": "^2.0.1", - "fancy-log": "^1.3.2", - "gulplog": "^1.0.0", - "interpret": "^1.4.0", - "isobject": "^3.0.1", - "liftoff": "^3.1.0", - "matchdep": "^2.0.0", - "mute-stdout": "^1.0.0", - "pretty-hrtime": "^1.0.0", - "replace-homedir": "^1.0.0", - "semver-greatest-satisfied-range": "^1.1.0", - "v8flags": "^3.2.0", - "yargs": "^7.1.0" + "@gulpjs/messages": "^1.1.0", + "chalk": "^4.1.2", + "copy-props": "^4.0.0", + "gulplog": "^2.2.0", + "interpret": "^3.1.1", + "liftoff": "^5.0.0", + "mute-stdout": "^2.0.0", + "replace-homedir": "^2.0.0", + "semver-greatest-satisfied-range": "^2.0.0", + "string-width": "^4.2.3", + "v8flags": "^4.0.0", + "yargs": "^16.2.0" }, "bin": { "gulp": "bin/gulp.js" }, "engines": { - "node": ">= 0.10" + "node": ">=10.13.0" + } + }, + "node_modules/gulp-cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/gulp-cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/gulp-cli/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/gulp-cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/gulp-cli/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/gulp-cli/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/gulp-cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gulp-cli/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gulp-cli/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "license": "ISC", + "engines": { + "node": ">=10" } }, "node_modules/gulp-concat": { @@ -7717,6 +7917,7 @@ "resolved": "https://registry.npmjs.org/gulp-concat/-/gulp-concat-2.6.1.tgz", "integrity": "sha512-a2scActrQrDBpBbR3WUZGyGS1JEPLg5PZJdIa7/Bi3GuKAmPYDK6SFhy/NZq5R8KsKKFvtfR0fakbUCcKGCCjg==", "dev": true, + "license": "MIT", "dependencies": { "concat-with-sourcemaps": "^1.0.0", "through2": "^2.0.0", @@ -7726,91 +7927,91 @@ "node": ">= 0.10" } }, - "node_modules/gulp-concat/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, + "node_modules/gulp-plugin-extras": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/gulp-plugin-extras/-/gulp-plugin-extras-0.2.2.tgz", + "integrity": "sha512-0gssXzTNrrOocYBWN4qOZqd03cz3bxhjxVUPZV9iJdBR0ZZbwMQO/OT8hZChYoc9GjKaA5meaqDr6CjkmKA7BA==", + "license": "MIT", "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "@types/vinyl": "^2.0.9", + "chalk": "^5.3.0", + "easy-transform-stream": "^1.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/gulp-cssnano": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/gulp-cssnano/-/gulp-cssnano-2.1.3.tgz", - "integrity": "sha512-r8qdX5pTXsBb/IRm9loE8Ijz8UiPW/URMC/bKJe4FPNHRaz4aEx8Bev03L0FYHd/7BSGu/ebmfumAkpGuTdenA==", + "node_modules/gulp-plugin-extras/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/gulp-postcss": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/gulp-postcss/-/gulp-postcss-10.0.0.tgz", + "integrity": "sha512-z1RF2RJEX/BvFsKN11PXai8lRmihZTiHnlJf7Zu8uHaA/Q7Om4IeN8z1NtMAW5OiLwUY02H0DIFl9tHl0CNSgA==", "dev": true, + "license": "MIT", "dependencies": { - "buffer-from": "^1.0.0", - "cssnano": "^3.0.0", - "object-assign": "^4.0.1", - "plugin-error": "^1.0.1", + "fancy-log": "^2.0.0", + "plugin-error": "^2.0.1", + "postcss-load-config": "^5.0.0", "vinyl-sourcemaps-apply": "^0.2.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.0.0" } }, "node_modules/gulp-purgecss": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/gulp-purgecss/-/gulp-purgecss-5.0.0.tgz", - "integrity": "sha512-/s4bEI1JhwhCDrYu665rfJ/O9uMfAked3k6pQJlDC86JwJAUMXiMxfex6fV0WP36kRb+9ZTLVb6RC/DgfbS4/g==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gulp-purgecss/-/gulp-purgecss-6.0.0.tgz", + "integrity": "sha512-NZS8GQ8Yga/exoI0Coq6VOvjP5DL13NwcFc6K70zIWM3ZVsyr4KgoepeYaOqH5gOCMv7vbzX0q4TeCNmi1687w==", "dev": true, + "license": "MIT", "dependencies": { - "glob": "^8.0.3", + "glob": "^10.3.10", "plugin-error": "^2.0.0", - "purgecss": "^5.0.0", - "through2": "^4.0.1" - } - }, - "node_modules/gulp-purgecss/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/gulp-purgecss/node_modules/glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "purgecss": "^6.0.0", + "through2": "^4.0.1", + "vinyl-sourcemaps-apply": "^0.2.1" } }, - "node_modules/gulp-purgecss/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "node_modules/gulp-purgecss/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">=10" + "node": ">= 6" } }, - "node_modules/gulp-purgecss/node_modules/plugin-error": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-2.0.0.tgz", - "integrity": "sha512-o4bwIOmuFwUg2MU6xt7plGEQY3YyENx6kvwaFZBrUpamA91FdS9w3U+pU0y4OuDoBQe+jf3RLGSfQebSRBEVsQ==", + "node_modules/gulp-purgecss/node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-colors": "^1.0.1" - }, - "engines": { - "node": ">=10.13.0" + "readable-stream": "3" } }, "node_modules/gulp-rename": { @@ -7818,6 +8019,7 @@ "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-2.0.0.tgz", "integrity": "sha512-97Vba4KBzbYmR5VBs9mWmK+HwIf5mj+/zioxfZhOKeXtx5ZjBk57KFlePf5nxq9QsTtFl0ejnHE3zTC9MHXqyQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -7826,6 +8028,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/gulp-replace/-/gulp-replace-1.1.4.tgz", "integrity": "sha512-SVSF7ikuWKhpAW4l4wapAqPPSToJoiNKsbDoUnRrSgwZHH7lH8pbPeQj1aOVYQrbZKhfSVBxVW+Py7vtulRktw==", + "license": "MIT", "dependencies": { "@types/node": "*", "@types/vinyl": "^2.0.4", @@ -7841,6 +8044,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/gulp-sass/-/gulp-sass-5.1.0.tgz", "integrity": "sha512-7VT0uaF+VZCmkNBglfe1b34bxn/AfcssquLKVDYnCDJ3xNBaW7cUuI3p3BQmoKcoKFrs9jdzUxyb+u+NGfL4OQ==", + "license": "MIT", "dependencies": { "lodash.clonedeep": "^4.5.0", "picocolors": "^1.0.0", @@ -7853,11 +8057,27 @@ "node": ">=12" } }, + "node_modules/gulp-sass/node_modules/plugin-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", + "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", + "license": "MIT", + "dependencies": { + "ansi-colors": "^1.0.1", + "arr-diff": "^4.0.0", + "arr-union": "^3.1.0", + "extend-shallow": "^3.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/gulp-uglify": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/gulp-uglify/-/gulp-uglify-3.0.2.tgz", "integrity": "sha512-gk1dhB74AkV2kzqPMQBLA3jPoIAPd/nlNzP2XMDSG8XZrqnlCiDGAqC+rZOumzFvB5zOphlFh6yr3lgcAb/OOg==", "dev": true, + "license": "MIT", "dependencies": { "array-each": "^1.0.1", "extend-shallow": "^3.0.2", @@ -7871,62 +8091,52 @@ "vinyl-sourcemaps-apply": "^0.2.0" } }, - "node_modules/gulp-uglify/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "node_modules/gulp-uglify/node_modules/glogg": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", + "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", "dev": true, + "license": "MIT", "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "sparkles": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.10" } }, - "node_modules/gulp-uglify/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "node_modules/gulp-uglify/node_modules/gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha512-hm6N8nrm3Y08jXie48jsC55eCZz9mnb4OirAStEk2deqeyhXU3C1otDVh+ccttMuc1sBi6RX6ZJ720hs9RCvgw==", "dev": true, + "license": "MIT", "dependencies": { - "is-plain-object": "^2.0.4" + "glogg": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.10" } }, - "node_modules/gulp-uglify/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "node_modules/gulp-uglify/node_modules/sparkles": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", + "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-uglify/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "node": ">= 0.10" } }, "node_modules/gulplog": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha512-hm6N8nrm3Y08jXie48jsC55eCZz9mnb4OirAStEk2deqeyhXU3C1otDVh+ccttMuc1sBi6RX6ZJ720hs9RCvgw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-2.2.0.tgz", + "integrity": "sha512-V2FaKiOhpR3DRXZuYdRLn/qiY0yI5XmqbTKrYbdemJ+xOh2d2MOweI/XFgMzd/9+1twdvMwllnZbWZNJ+BOm4A==", + "license": "MIT", "dependencies": { - "glogg": "^1.0.0" + "glogg": "^2.2.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, "node_modules/handlebars": { @@ -7934,6 +8144,7 @@ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", "dev": true, + "license": "MIT", "dependencies": { "minimist": "^1.2.5", "neo-async": "^2.6.2", @@ -7951,46 +8162,16 @@ } }, "node_modules/harfbuzzjs": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/harfbuzzjs/-/harfbuzzjs-0.3.2.tgz", - "integrity": "sha512-IGgu7///nEOWAjWT8bYyC4uPP8FEFG7EBW6IghJT5605TdpSopFGJPQpKnyWXovXh4fSNqEigEqyNpWw0QdDyg==" - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/harfbuzzjs/-/harfbuzzjs-0.3.6.tgz", + "integrity": "sha512-dzf7y6NS8fiAIvPAL/VKwY8wx2HCzUB0vUfOo6h1J5UilFEEf7iYqFsvgwjHwvM3whbjfOMadNvQekU3KuRnWQ==", + "license": "MIT" }, "node_modules/has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -7999,6 +8180,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", "engines": { "node": ">=4" } @@ -8008,6 +8190,7 @@ "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", "integrity": "sha512-+F4GzLjwHNNDEAJW2DC1xXfEoPkRDmUdJ7CBYw4MpqtDwOnqdImJl7GWlpqx+Wko6//J8uKTnIe4wZSv7yCqmw==", "dev": true, + "license": "MIT", "dependencies": { "sparkles": "^1.0.0" }, @@ -8015,21 +8198,33 @@ "node": ">= 0.10" } }, + "node_modules/has-gulplog/node_modules/sparkles": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", + "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", "dependencies": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -8041,6 +8236,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -8049,11 +8245,12 @@ } }, "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", "dependencies": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -8062,46 +8259,33 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", - "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" + "function-bind": "^1.1.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", - "dependencies": { - "is-buffer": "^1.1.5" - }, + "node_modules/highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "dev": true, + "license": "BSD-3-Clause", "engines": { - "node": ">=0.10.0" + "node": "*" } }, "node_modules/homedir-polyfill": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "license": "MIT", "dependencies": { "parse-passwd": "^1.0.0" }, @@ -8114,6 +8298,7 @@ "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-3.0.0.tgz", "integrity": "sha512-jHRQzjSDzMtFy34AGj1DN+vq54WVuhSvKgrHf0OMiFQTwDD4L/qqofVEWjLOBMTn5+lCD3fPg32W9yOfnEJTTw==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -8122,10 +8307,11 @@ } }, "node_modules/hosted-git-info": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", - "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^10.0.1" }, @@ -8134,25 +8320,18 @@ } }, "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", - "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "engines": { - "node": "14 || >=16.14" - } - }, - "node_modules/html-comment-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", - "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", - "dev": true + "license": "ISC" }, "node_modules/http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, + "license": "MIT", "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", @@ -8169,6 +8348,7 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -8178,6 +8358,7 @@ "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dev": true, + "license": "MIT", "dependencies": { "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", @@ -8188,10 +8369,11 @@ } }, "node_modules/http-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", - "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" @@ -8201,10 +8383,11 @@ } }, "node_modules/https-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.0.tgz", - "integrity": "sha512-0euwPCRyAPSgGdzD1IVN9nJYHtBhJwb6XPfbpQcYbPCwrBidX6GzxmchnaF4sfF/jPb74Ojx5g4yTg3sixlyPw==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^7.0.2", "debug": "4" @@ -8218,6 +8401,7 @@ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=10.17.0" } @@ -8227,6 +8411,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -8234,24 +8419,51 @@ "node": ">=0.10.0" } }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/immutable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", - "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==" + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", + "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, + "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -8268,20 +8480,34 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, - "node_modules/import-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-4.0.0.tgz", - "integrity": "sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ==", + "node_modules/import-from-esm": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/import-from-esm/-/import-from-esm-1.3.4.tgz", + "integrity": "sha512-7EyUlPFC0HOlBDpUFGfYstsU7XHxZJKAAMzCT8wZ0hMW7b+hG51LIKTDcsgtz8Pu6YC0HqRVbX+rVUtsGMUKvg==", "dev": true, - "engines": { - "node": ">=12.2" + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "import-meta-resolve": "^4.0.0" }, + "engines": { + "node": ">=16.20" + } + }, + "node_modules/import-meta-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", + "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", + "dev": true, + "license": "MIT", "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, "node_modules/imurmurhash": { @@ -8289,6 +8515,7 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.19" } @@ -8298,20 +8525,30 @@ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==", - "dev": true + "node_modules/index-to-position": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-0.1.2.tgz", + "integrity": "sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -8320,154 +8557,186 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" }, "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", + "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } }, "node_modules/inquirer": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", - "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.5.tgz", + "integrity": "sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-escapes": "^3.2.0", - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", "external-editor": "^3.0.3", - "figures": "^2.0.0", - "lodash": "^4.17.12", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^2.1.0", - "strip-ansi": "^5.1.0", - "through": "^2.3.6" + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=12.0.0" } }, - "node_modules/inquirer/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "node_modules/inquirer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/inquirer/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "node_modules/inquirer/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^4.1.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "node_modules/inquirer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 0.4" - } - }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "engines": { - "node": ">= 0.10" + "node": ">=7.0.0" } }, - "node_modules/into-stream": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-7.0.0.tgz", - "integrity": "sha512-2dYz766i9HprMBasCMvHMuazJ7u4WzhJwo5kb3iPSiW/iRYV6uPari3zHoqZlnuaR7V1bEiNMxikhp37rdBXbw==", + "node_modules/inquirer/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, - "dependencies": { - "from2": "^2.3.0", - "p-is-promise": "^3.0.0" - }, + "license": "MIT" + }, + "node_modules/inquirer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", + "node_modules/inquirer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "license": "MIT", "dependencies": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==", - "dev": true, + "node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=10.13.0" } }, - "node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "node_modules/into-stream": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-7.0.0.tgz", + "integrity": "sha512-2dYz766i9HprMBasCMvHMuazJ7u4WzhJwo5kb3iPSiW/iRYV6uPari3zHoqZlnuaR7V1bEiNMxikhp37rdBXbw==", + "dev": true, + "license": "MIT", "dependencies": { - "kind-of": "^3.0.2" + "from2": "^2.3.0", + "p-is-promise": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "node_modules/is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" }, "engines": { "node": ">=0.10.0" } }, "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8476,12 +8745,14 @@ "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "license": "MIT" }, "node_modules/is-bigint": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "license": "MIT", "dependencies": { "has-bigints": "^1.0.1" }, @@ -8490,20 +8761,22 @@ } }, "node_modules/is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "license": "MIT", "dependencies": { - "binary-extensions": "^1.0.0" + "binary-extensions": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/is-boolean-object": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -8515,15 +8788,11 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, "node_modules/is-builtin-module": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", + "license": "MIT", "dependencies": { "builtin-modules": "^3.3.0" }, @@ -8538,6 +8807,7 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -8546,42 +8816,40 @@ } }, "node_modules/is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "license": "MIT", "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "license": "MIT", "dependencies": { - "kind-of": "^3.0.2" + "is-typed-array": "^1.1.13" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dependencies": { - "is-buffer": "^1.1.5" + "node": ">= 0.4" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-date-object": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -8592,23 +8860,26 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "license": "MIT", "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-plain-object": "^2.0.4" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "node_modules/is-extendable/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, "engines": { "node": ">=0.10.0" } @@ -8617,23 +8888,25 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true, + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -8641,23 +8914,36 @@ "node": ">=0.10.0" } }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/is-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==" + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "license": "MIT" }, "node_modules/is-negated-glob": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -8666,14 +8952,12 @@ } }, "node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dependencies": { - "kind-of": "^3.0.2" - }, + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=0.12.0" } }, "node_modules/is-number-like": { @@ -8681,6 +8965,7 @@ "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", "dev": true, + "license": "ISC", "dependencies": { "lodash.isfinite": "^3.3.2" } @@ -8689,6 +8974,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -8699,22 +8985,12 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -8723,6 +8999,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-3.0.0.tgz", "integrity": "sha512-kyiNFFLU0Ampr6SDZitD/DwUo4Zs1nSdnygUBqsu3LooL00Qvb5j+UnvApUn/TTj1J3OuE6BTdQ5rudKmU2ZaA==", + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -8734,6 +9011,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -8742,18 +9020,23 @@ } }, "node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-plain-object": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -8762,6 +9045,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "license": "MIT", "dependencies": { "@types/estree": "*" } @@ -8770,6 +9054,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -8785,6 +9070,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "license": "MIT", "dependencies": { "is-unc-path": "^1.0.0" }, @@ -8793,11 +9079,15 @@ } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8808,6 +9098,7 @@ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -8819,6 +9110,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -8829,22 +9121,11 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-svg": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", - "integrity": "sha512-Ya1giYJUkcL/94quj0+XGcmts6cETPBW1MiFz1ReJrnDJ680F52qpAEGAEGU0nq96FRGIGPx6Yo1CyPXcOoyGw==", - "dev": true, - "dependencies": { - "html-comment-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-symbol": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "license": "MIT", "dependencies": { "has-symbols": "^1.0.2" }, @@ -8855,28 +9136,13 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-text-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", - "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==", - "dev": true, - "dependencies": { - "text-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "license": "MIT", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "which-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -8889,6 +9155,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "license": "MIT", "dependencies": { "unc-path-regex": "^0.1.2" }, @@ -8897,12 +9164,13 @@ } }, "node_modules/is-unicode-supported": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", - "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -8911,12 +9179,15 @@ "node_modules/is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==" + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", + "dev": true, + "license": "MIT" }, "node_modules/is-valid-glob": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", "integrity": "sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -8925,6 +9196,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.2" }, @@ -8936,6 +9208,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -8945,6 +9218,7 @@ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -8952,26 +9226,30 @@ "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" }, "node_modules/isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/issue-parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-6.0.0.tgz", - "integrity": "sha512-zKa/Dxq2lGsBIXQ7CUZWTHfvxPC2ej0KfO7fIPqLlHB9J2hJ7rGhZ5rilhuufylr4RXYPzJUeFjKxz305OsNlA==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-7.0.1.tgz", + "integrity": "sha512-3YZcUUR2Wt1WsapF+S/WiA2WmlW0cWAoPccMqne7AxEBhCdFeTPjfv/Axb8V2gyCgY3nRw+ksZ3xSUX+R47iAg==", "dev": true, + "license": "MIT", "dependencies": { "lodash.capitalize": "^4.2.1", "lodash.escaperegexp": "^4.1.2", @@ -8980,13 +9258,14 @@ "lodash.uniqby": "^4.7.0" }, "engines": { - "node": ">=10.13" + "node": "^18.17 || >=20.6.1" } }, "node_modules/istextorbinary": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-3.3.0.tgz", "integrity": "sha512-Tvq1W6NAcZeJ8op+Hq7tdZ434rqnMx4CCZ7H0ff83uEloDvVbqAwaMTZcafKGJT0VHkYzuXUiCY4hlXQg6WfoQ==", + "license": "MIT", "dependencies": { "binaryextensions": "^2.2.0", "textextensions": "^3.2.0" @@ -8998,31 +9277,54 @@ "url": "https://bevry.me/fund" } }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/java-properties": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", "integrity": "sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6.0" } }, - "node_modules/js-base64": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", - "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", - "dev": true + "node_modules/jiti": { + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "dev": true, + "license": "MIT", + "optional": true, + "bin": { + "jiti": "bin/jiti.js" + } }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -9034,7 +9336,7 @@ "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "peer": true, + "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, @@ -9042,39 +9344,45 @@ "node": ">=4" } }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, "node_modules/json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "license": "MIT" }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, - "optional": true + "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", "peer": true, "bin": { "json5": "lib/cli.js" @@ -9088,6 +9396,7 @@ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, + "license": "MIT", "dependencies": { "universalify": "^2.0.0" }, @@ -9095,87 +9404,32 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", - "dev": true, - "engines": [ - "node >= 0.2.0" - ] - }, - "node_modules/JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, + "license": "MIT", "dependencies": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - }, - "bin": { - "JSONStream": "bin.js" - }, - "engines": { - "node": "*" - } - }, - "node_modules/just-debounce": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.1.0.tgz", - "integrity": "sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==" - }, - "node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "engines": { - "node": ">=0.10.0" + "json-buffer": "3.0.1" } }, "node_modules/last-run": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", - "integrity": "sha512-U/VxvpX4N/rFvPzr3qG5EtLKEnNI0emvIQB3/ecEwv+8GHaUKbIB8vxv1Oai5FAF0d0r7LXHhLLe5K/yChm5GQ==", - "dependencies": { - "default-resolution": "^2.0.0", - "es6-weak-map": "^2.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/lazystream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", - "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", - "dependencies": { - "readable-stream": "^2.0.5" - }, - "engines": { - "node": ">= 0.6.3" - } - }, - "node_modules/lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", - "dependencies": { - "invert-kv": "^1.0.0" - }, + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/last-run/-/last-run-2.0.0.tgz", + "integrity": "sha512-j+y6WhTLN4Itnf9j5ZQos1BGPCS8DAwmgMroR3OzfxAsBxam0hMw7J8M3KqZl0pLQJ1jNnwIexg5DYpC/ctwEQ==", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 10.13.0" } }, "node_modules/lead": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", - "integrity": "sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==", - "dependencies": { - "flush-write-stream": "^1.0.2" - }, + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-4.0.0.tgz", + "integrity": "sha512-DpMa59o5uGUWWjruMp71e6knmwKU3jRBBn1kjuLWN9EeIOxNeSAwvHf03WIl8g/ZMR2oSQC9ej3yeLBwdDc/pg==", + "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">=10.13.0" } }, "node_modules/levn": { @@ -9183,6 +9437,7 @@ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -9192,147 +9447,49 @@ } }, "node_modules/liftoff": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", - "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", - "dependencies": { - "extend": "^3.0.0", - "findup-sync": "^3.0.0", - "fined": "^1.0.1", - "flagged-respawn": "^1.0.0", - "is-plain-object": "^2.0.4", - "object.map": "^1.0.0", - "rechoir": "^0.6.2", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/liftoff/node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/liftoff/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-5.0.0.tgz", + "integrity": "sha512-a5BQjbCHnB+cy+gsro8lXJ4kZluzOijzJ1UVVfyJYZC+IP2pLv1h4+aysQeKuTmyO8NAqfyQAk4HWaP/HjcKTg==", + "license": "MIT", "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "extend": "^3.0.2", + "findup-sync": "^5.0.0", + "fined": "^2.0.0", + "flagged-respawn": "^2.0.0", + "is-plain-object": "^5.0.0", + "rechoir": "^0.8.0", + "resolve": "^1.20.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10.13.0" } }, "node_modules/liftoff/node_modules/findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-5.0.0.tgz", + "integrity": "sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==", + "license": "MIT", "dependencies": { "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", + "is-glob": "^4.0.3", + "micromatch": "^4.0.4", "resolve-dir": "^1.0.1" }, "engines": { - "node": ">= 0.10" - } - }, - "node_modules/liftoff/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/liftoff/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/liftoff/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/liftoff/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/liftoff/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" + "node": ">= 10.13.0" } }, - "node_modules/liftoff/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "node_modules/lilconfig": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/liftoff/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "node": ">=14" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/antonk52" } }, "node_modules/limiter": { @@ -9345,12 +9502,14 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/load-json-file": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "license": "MIT", "dependencies": { "graceful-fs": "^4.1.2", "parse-json": "^4.0.0", @@ -9365,6 +9524,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "license": "MIT", "dependencies": { "error-ex": "^1.3.1", "json-parse-better-errors": "^1.0.1" @@ -9377,408 +9537,333 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "license": "MIT", "engines": { "node": ">=4" } }, - "node_modules/localtunnel": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-2.0.2.tgz", - "integrity": "sha512-n418Cn5ynvJd7m/N1d9WVJISLJF/ellZnfsLnx8WBWGzxv/ntNcFkJ1o6se5quUhCplfLGBNL5tYHiq5WF3Nug==", - "dev": true, - "dependencies": { - "axios": "0.21.4", - "debug": "4.3.2", - "openurl": "1.1.1", - "yargs": "17.1.1" - }, - "bin": { - "lt": "bin/lt.js" - }, - "engines": { - "node": ">=8.3.0" - } - }, - "node_modules/localtunnel/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "p-locate": "^5.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/localtunnel/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } + "license": "MIT" }, - "node_modules/localtunnel/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/lodash.capitalize": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz", + "integrity": "sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==", "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } + "license": "MIT" }, - "node_modules/localtunnel/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "license": "MIT" }, - "node_modules/localtunnel/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "license": "MIT" }, - "node_modules/localtunnel/node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "node_modules/lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==", "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } + "license": "MIT" }, - "node_modules/localtunnel/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/lodash.isfinite": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", + "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==", "dev": true, - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/localtunnel/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.map": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", + "integrity": "sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.mergewith": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", + "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.uniqby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", + "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, + "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/localtunnel/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/localtunnel/node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/localtunnel/node_modules/yargs": { - "version": "17.1.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.1.1.tgz", - "integrity": "sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==", + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "color-name": "~1.1.4" }, "engines": { - "node": ">=12" + "node": ">=7.0.0" } }, - "node_modules/localtunnel/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/locate-path": { + "node_modules/log-symbols/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { - "p-locate": "^6.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", - "dev": true - }, - "node_modules/lodash.capitalize": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz", - "integrity": "sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==", - "dev": true - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" - }, - "node_modules/lodash.escaperegexp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", - "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==", - "dev": true - }, - "node_modules/lodash.isfinite": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", - "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==", - "dev": true - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "dev": true - }, - "node_modules/lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", - "dev": true - }, - "node_modules/lodash.map": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", - "integrity": "sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==", - "dev": true - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", - "dev": true - }, - "node_modules/lodash.uniqby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", - "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==", - "dev": true - }, "node_modules/longest": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-2.0.1.tgz", "integrity": "sha512-Ajzxb8CM6WAnFjgiloPsI3bF+WCxcvhdIG3KNA2KN962+tdBsHcuQ4k4qX/EcS/2CRkcc0iAkR956Nib6aXU/Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" + "yallist": "^3.0.2" } }, "node_modules/magic-string": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", - "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", + "version": "0.30.11", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", + "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", + "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.13" - }, - "engines": { - "node": ">=12" + "@jridgewell/sourcemap-codec": "^1.5.0" } }, "node_modules/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/make-error-cause": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/make-error-cause/-/make-error-cause-1.2.2.tgz", "integrity": "sha512-4TO2Y3HkBnis4c0dxhAgD/jprySYLACf7nwN6V0HAHDx59g12WlRpUmFy1bRHamjGUEEBrEvCq6SUpsEE2lhUg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "make-error": "^1.2.0" } }, - "node_modules/make-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", - "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/make-iterator/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", - "dependencies": { - "object-visit": "^1.0.0" - }, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/marked": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.2.12.tgz", - "integrity": "sha512-yr8hSKa3Fv4D3jdZmtMMPghgVt6TWbk86WQaWhDloQjRSQhMMYCAro7jP7VDJrjjdV8pxVxMssXS8B8Y5DZ5aw==", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.2.tgz", + "integrity": "sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==", "dev": true, - "peer": true, + "license": "MIT", "bin": { "marked": "bin/marked.js" }, "engines": { - "node": ">= 12" + "node": ">= 18" } }, "node_modules/marked-terminal": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-5.1.1.tgz", - "integrity": "sha512-+cKTOx9P4l7HwINYhzbrBSyzgxO2HaHKGZGuB1orZsMIgXYaJyfidT81VXRdpelW/PcHEWxywscePVgI/oUF6g==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-7.1.0.tgz", + "integrity": "sha512-+pvwa14KZL74MVXjYdPR3nSInhGhNvPce/3mqLVZT2oUvt654sL1XImFuLZ1pkA866IYZ3ikDTOFUIC7XzpZZg==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-escapes": "^5.0.0", - "cardinal": "^2.1.1", - "chalk": "^5.0.0", - "cli-table3": "^0.6.1", - "node-emoji": "^1.11.0", - "supports-hyperlinks": "^2.2.0" + "ansi-escapes": "^7.0.0", + "chalk": "^5.3.0", + "cli-highlight": "^2.1.11", + "cli-table3": "^0.6.5", + "node-emoji": "^2.1.3", + "supports-hyperlinks": "^3.0.0" }, "engines": { - "node": ">=14.13.1 || >=16.0.0" + "node": ">=16.0.0" }, "peerDependencies": { - "marked": "^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0" + "marked": ">=1 <14" } }, "node_modules/marked-terminal/node_modules/ansi-escapes": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz", - "integrity": "sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", + "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", "dev": true, + "license": "MIT", "dependencies": { - "type-fest": "^1.0.2" + "environment": "^1.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/marked-terminal/node_modules/chalk": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.1.tgz", - "integrity": "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "dev": true, + "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -9786,174 +9871,12 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/marked-terminal/node_modules/type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/matchdep": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", - "integrity": "sha512-LFgVbaHIHMqCRuCZyfCtUOq9/Lnzhi7Z0KFUE2fhD54+JN2jLh3hC02RLkqauJ3U4soU6H1J3tfj/Byk7GoEjA==", - "dependencies": { - "findup-sync": "^2.0.0", - "micromatch": "^3.0.4", - "resolve": "^1.4.0", - "stack-trace": "0.0.10" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/matchdep/node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha512-vs+3unmJT45eczmcAZ6zMJtxN3l/QXeccaXQx5cu/MeJMhewVfoWZqibRkOxPnmoR59+Zy5hjabfQc6JLSah4g==", - "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^3.1.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/matchdep/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/math-expression-evaluator": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.4.0.tgz", - "integrity": "sha512-4vRUvPyxdO8cWULGTh9dZWL2tZK6LDBvj+OGHBER7poH9Qdt7kXEoj20wiz4lQUbUXQZFjPbe5mVDo9nutizCw==", - "dev": true + "license": "CC0-1.0" }, "node_modules/memorystream": { "version": "0.3.1", @@ -9964,12 +9887,13 @@ } }, "node_modules/meow": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", - "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", + "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=16.10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -9979,85 +9903,52 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz", "integrity": "sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { "node": ">=8.6" } }, - "node_modules/micromatch/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/micromatch/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/micromatch/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/micromatch/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, "node_modules/mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-4.0.4.tgz", + "integrity": "sha512-v8yqInVjhXyqP6+Kw4fV3ZzeMRqEW6FotRsKXjRS5VMTNIuXsdRoAvklpoRgSqXm6o9VNH4/C0mgedko9DdLsQ==", "dev": true, + "funding": [ + "https://github.com/sponsors/broofa" + ], + "license": "MIT", "bin": { - "mime": "cli.js" + "mime": "bin/cli.js" }, "engines": { - "node": ">=10.0.0" + "node": ">=16" } }, "node_modules/mime-db": { @@ -10065,6 +9956,7 @@ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -10074,6 +9966,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -10086,6 +9979,7 @@ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -10094,6 +9988,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -10102,55 +9997,36 @@ } }, "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "node_modules/mitt": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", - "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==", - "dev": true - }, - "node_modules/mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/mixin-deep/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/mixin-deep/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } + "node_modules/mitt": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", + "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==", + "dev": true, + "license": "MIT" }, "node_modules/mkdirp": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.6.tgz", "integrity": "sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==", + "license": "MIT", "bin": { "mkdirp": "dist/cjs/src/bin.js" }, @@ -10162,34 +10038,50 @@ } }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" }, "node_modules/mute-stdout": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", - "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-2.0.0.tgz", + "integrity": "sha512-32GSKM3Wyc8dg/p39lWPKYu8zci9mJFzV1Np9Of0ZEpe6Fhssn/FbI7ywAMd40uX+p3ZKh3T5EeCFv81qS3HmQ==", + "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, "node_modules/mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", - "dev": true + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true, + "license": "ISC" }, - "node_modules/nan": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.16.0.tgz", - "integrity": "sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==", - "optional": true + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } }, "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -10197,127 +10089,19 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -10326,46 +10110,52 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/nerf-dart": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/nerf-dart/-/nerf-dart-1.0.0.tgz", "integrity": "sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==", - "dev": true - }, - "node_modules/next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + "dev": true, + "license": "MIT" }, "node_modules/nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "license": "MIT" }, "node_modules/node-emoji": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", - "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.1.3.tgz", + "integrity": "sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==", "dev": true, + "license": "MIT", "dependencies": { - "lodash": "^4.17.21" + "@sindresorhus/is": "^4.6.0", + "char-regex": "^1.0.2", + "emojilib": "^2.4.0", + "skin-tone": "^2.0.0" + }, + "engines": { + "node": ">=18" } }, "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "license": "MIT" }, "node_modules/normalize-package-data": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz", - "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", + "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^7.0.0", - "is-core-module": "^2.8.1", "semver": "^7.3.5", "validate-npm-package-license": "^3.0.4" }, @@ -10373,10 +10163,24 @@ "node": "^16.14.0 || >=18.0.0" } }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -10385,15 +10189,17 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/normalize-url": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", - "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", + "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.16" }, @@ -10402,20 +10208,21 @@ } }, "node_modules/now-and-later": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", - "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-3.0.0.tgz", + "integrity": "sha512-pGO4pzSdaxhWTGkfSfHx3hVzJVslFPwBp2Myq9MYN/ChfJZF87ochMAXnvz6/58RJSf5ik2q9tXprBBrk2cpcg==", + "license": "MIT", "dependencies": { - "once": "^1.3.2" + "once": "^1.4.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, "node_modules/npm": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/npm/-/npm-10.1.0.tgz", - "integrity": "sha512-pZ2xybXzNGbJFZEKNbPoEXsE38Xou9VTnxxBk+B3pz0ndsGCs7iWHoUCPSsISU2hjmkWfDkJo3bYKE8RDOg4eg==", + "version": "10.8.3", + "resolved": "https://registry.npmjs.org/npm/-/npm-10.8.3.tgz", + "integrity": "sha512-0IQlyAYvVtQ7uOhDFYZCGK8kkut2nh8cpAdA9E6FvRSJaTgtZRZgNjlC5ZCct//L73ygrpY93CxXpRJDtNqPVg==", "bundleDependencies": [ "@isaacs/string-locale-compare", "@npmcli/arborist", @@ -10424,6 +10231,7 @@ "@npmcli/map-workspaces", "@npmcli/package-json", "@npmcli/promise-spawn", + "@npmcli/redact", "@npmcli/run-script", "@sigstore/tuf", "abbrev", @@ -10432,8 +10240,6 @@ "chalk", "ci-info", "cli-columns", - "cli-table3", - "columnify", "fastest-levenshtein", "fs-minipass", "glob", @@ -10461,6 +10267,7 @@ "ms", "node-gyp", "nopt", + "normalize-package-data", "npm-audit-report", "npm-install-checks", "npm-package-arg", @@ -10468,7 +10275,6 @@ "npm-profile", "npm-registry-fetch", "npm-user-validate", - "npmlog", "p-map", "pacote", "parse-conflict-json", @@ -10476,6 +10282,7 @@ "qrcode-terminal", "read", "semver", + "spdx-expression-parse", "ssri", "supports-color", "tar", @@ -10487,73 +10294,81 @@ "write-file-atomic" ], "dev": true, + "license": "Artistic-2.0", + "workspaces": [ + "docs", + "smoke-tests", + "mock-globals", + "mock-registry", + "workspaces/*" + ], "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^7.1.0", - "@npmcli/config": "^7.2.0", - "@npmcli/fs": "^3.1.0", - "@npmcli/map-workspaces": "^3.0.4", - "@npmcli/package-json": "^5.0.0", - "@npmcli/promise-spawn": "^7.0.0", - "@npmcli/run-script": "^7.0.1", - "@sigstore/tuf": "^2.1.0", + "@npmcli/arborist": "^7.5.4", + "@npmcli/config": "^8.3.4", + "@npmcli/fs": "^3.1.1", + "@npmcli/map-workspaces": "^3.0.6", + "@npmcli/package-json": "^5.2.0", + "@npmcli/promise-spawn": "^7.0.2", + "@npmcli/redact": "^2.0.1", + "@npmcli/run-script": "^8.1.0", + "@sigstore/tuf": "^2.3.4", "abbrev": "^2.0.0", "archy": "~1.0.0", - "cacache": "^18.0.0", + "cacache": "^18.0.4", "chalk": "^5.3.0", - "ci-info": "^3.8.0", + "ci-info": "^4.0.0", "cli-columns": "^4.0.0", - "cli-table3": "^0.6.3", - "columnify": "^1.6.0", "fastest-levenshtein": "^1.0.16", "fs-minipass": "^3.0.3", - "glob": "^10.3.3", + "glob": "^10.4.5", "graceful-fs": "^4.2.11", - "hosted-git-info": "^7.0.0", - "ini": "^4.1.1", - "init-package-json": "^6.0.0", - "is-cidr": "^4.0.2", - "json-parse-even-better-errors": "^3.0.0", - "libnpmaccess": "^8.0.0", - "libnpmdiff": "^6.0.1", - "libnpmexec": "^7.0.1", - "libnpmfund": "^4.1.1", - "libnpmhook": "^10.0.0", - "libnpmorg": "^6.0.0", - "libnpmpack": "^6.0.1", - "libnpmpublish": "^9.0.0", - "libnpmsearch": "^7.0.0", - "libnpmteam": "^6.0.0", - "libnpmversion": "^5.0.0", - "make-fetch-happen": "^13.0.0", - "minimatch": "^9.0.3", - "minipass": "^7.0.3", + "hosted-git-info": "^7.0.2", + "ini": "^4.1.3", + "init-package-json": "^6.0.3", + "is-cidr": "^5.1.0", + "json-parse-even-better-errors": "^3.0.2", + "libnpmaccess": "^8.0.6", + "libnpmdiff": "^6.1.4", + "libnpmexec": "^8.1.4", + "libnpmfund": "^5.0.12", + "libnpmhook": "^10.0.5", + "libnpmorg": "^6.0.6", + "libnpmpack": "^7.0.4", + "libnpmpublish": "^9.0.9", + "libnpmsearch": "^7.0.6", + "libnpmteam": "^6.0.5", + "libnpmversion": "^6.0.3", + "make-fetch-happen": "^13.0.1", + "minimatch": "^9.0.5", + "minipass": "^7.1.1", "minipass-pipeline": "^1.2.4", "ms": "^2.1.2", - "node-gyp": "^9.4.0", - "nopt": "^7.2.0", + "node-gyp": "^10.2.0", + "nopt": "^7.2.1", + "normalize-package-data": "^6.0.2", "npm-audit-report": "^5.0.0", - "npm-install-checks": "^6.2.0", - "npm-package-arg": "^11.0.0", - "npm-pick-manifest": "^9.0.0", - "npm-profile": "^9.0.0", - "npm-registry-fetch": "^16.0.0", - "npm-user-validate": "^2.0.0", - "npmlog": "^7.0.1", + "npm-install-checks": "^6.3.0", + "npm-package-arg": "^11.0.3", + "npm-pick-manifest": "^9.1.0", + "npm-profile": "^10.0.0", + "npm-registry-fetch": "^17.1.0", + "npm-user-validate": "^2.0.1", "p-map": "^4.0.0", - "pacote": "^17.0.4", + "pacote": "^18.0.6", "parse-conflict-json": "^3.0.1", - "proc-log": "^3.0.0", + "proc-log": "^4.2.0", "qrcode-terminal": "^0.12.0", - "read": "^2.1.0", - "semver": "^7.5.4", - "ssri": "^10.0.5", + "read": "^3.0.1", + "semver": "^7.6.3", + "spdx-expression-parse": "^4.0.0", + "ssri": "^10.0.6", "supports-color": "^9.4.0", - "tar": "^6.1.15", + "tar": "^6.2.1", "text-table": "~0.2.0", "tiny-relative-date": "^1.3.0", "treeverse": "^3.0.0", - "validate-npm-package-name": "^5.0.0", + "validate-npm-package-name": "^5.0.1", "which": "^4.0.0", "write-file-atomic": "^5.0.1" }, @@ -10569,6 +10384,7 @@ "version": "4.1.5", "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "chalk": "^2.4.1", @@ -10593,6 +10409,7 @@ "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "license": "MIT", "dependencies": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -10607,12 +10424,14 @@ "node_modules/npm-run-all/node_modules/hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "license": "ISC" }, "node_modules/npm-run-all/node_modules/normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -10624,6 +10443,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "license": "MIT", "engines": { "node": ">=4" } @@ -10632,6 +10452,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "license": "MIT", "dependencies": { "pify": "^3.0.0" }, @@ -10643,6 +10464,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "license": "MIT", "dependencies": { "load-json-file": "^4.0.0", "normalize-package-data": "^2.3.2", @@ -10653,9 +10475,10 @@ } }, "node_modules/npm-run-all/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "license": "ISC", "bin": { "semver": "bin/semver" } @@ -10664,6 +10487,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "license": "MIT", "dependencies": { "shebang-regex": "^1.0.0" }, @@ -10675,6 +10499,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -10683,6 +10508,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -10695,6 +10521,7 @@ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.0.0" }, @@ -10702,16 +10529,6 @@ "node": ">=8" } }, - "node_modules/npm/node_modules/@colors/colors": { - "version": "1.5.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.1.90" - } - }, "node_modules/npm/node_modules/@isaacs/cliui": { "version": "8.0.2", "dev": true, @@ -10786,109 +10603,60 @@ "license": "ISC" }, "node_modules/npm/node_modules/@npmcli/agent": { - "version": "2.1.1", + "version": "2.2.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { + "agent-base": "^7.1.0", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.1", "lru-cache": "^10.0.1", - "socks-proxy-agent": "^8.0.1" + "socks-proxy-agent": "^8.0.3" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/@npmcli/agent/node_modules/agent-base": { - "version": "7.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/npm/node_modules/@npmcli/agent/node_modules/http-proxy-agent": { - "version": "7.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/npm/node_modules/@npmcli/agent/node_modules/https-proxy-agent": { - "version": "7.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/npm/node_modules/@npmcli/agent/node_modules/socks-proxy-agent": { - "version": "8.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.0.1", - "debug": "^4.3.4", - "socks": "^2.7.1" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/npm/node_modules/@npmcli/arborist": { - "version": "7.1.0", + "version": "7.5.4", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/fs": "^3.1.0", - "@npmcli/installed-package-contents": "^2.0.2", + "@npmcli/fs": "^3.1.1", + "@npmcli/installed-package-contents": "^2.1.0", "@npmcli/map-workspaces": "^3.0.2", - "@npmcli/metavuln-calculator": "^7.0.0", + "@npmcli/metavuln-calculator": "^7.1.1", "@npmcli/name-from-folder": "^2.0.0", "@npmcli/node-gyp": "^3.0.0", - "@npmcli/package-json": "^5.0.0", - "@npmcli/query": "^3.0.0", - "@npmcli/run-script": "^7.0.1", - "bin-links": "^4.0.1", - "cacache": "^18.0.0", + "@npmcli/package-json": "^5.1.0", + "@npmcli/query": "^3.1.0", + "@npmcli/redact": "^2.0.0", + "@npmcli/run-script": "^8.1.0", + "bin-links": "^4.0.4", + "cacache": "^18.0.3", "common-ancestor-path": "^1.0.1", - "hosted-git-info": "^7.0.0", - "json-parse-even-better-errors": "^3.0.0", + "hosted-git-info": "^7.0.2", + "json-parse-even-better-errors": "^3.0.2", "json-stringify-nice": "^1.1.4", - "minimatch": "^9.0.0", - "nopt": "^7.0.0", + "lru-cache": "^10.2.2", + "minimatch": "^9.0.4", + "nopt": "^7.2.1", "npm-install-checks": "^6.2.0", - "npm-package-arg": "^11.0.0", - "npm-pick-manifest": "^9.0.0", - "npm-registry-fetch": "^16.0.0", - "npmlog": "^7.0.1", - "pacote": "^17.0.4", + "npm-package-arg": "^11.0.2", + "npm-pick-manifest": "^9.0.1", + "npm-registry-fetch": "^17.0.1", + "pacote": "^18.0.6", "parse-conflict-json": "^3.0.0", - "proc-log": "^3.0.0", + "proc-log": "^4.2.0", + "proggy": "^2.0.0", "promise-all-reject-late": "^1.0.0", - "promise-call-limit": "^1.0.2", + "promise-call-limit": "^3.0.1", "read-package-json-fast": "^3.0.2", "semver": "^7.3.7", - "ssri": "^10.0.5", + "ssri": "^10.0.6", "treeverse": "^3.0.0", "walk-up-path": "^3.0.1" }, @@ -10900,38 +10668,26 @@ } }, "node_modules/npm/node_modules/@npmcli/config": { - "version": "7.2.0", + "version": "8.3.4", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "@npmcli/map-workspaces": "^3.0.2", - "ci-info": "^3.8.0", - "ini": "^4.1.0", - "nopt": "^7.0.0", - "proc-log": "^3.0.0", - "read-package-json-fast": "^3.0.2", + "@npmcli/package-json": "^5.1.1", + "ci-info": "^4.0.0", + "ini": "^4.1.2", + "nopt": "^7.2.1", + "proc-log": "^4.2.0", "semver": "^7.3.5", "walk-up-path": "^3.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/disparity-colors": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "ansi-styles": "^4.3.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@npmcli/fs": { - "version": "3.1.0", + "version": "3.1.1", "dev": true, "inBundle": true, "license": "ISC", @@ -10943,15 +10699,16 @@ } }, "node_modules/npm/node_modules/@npmcli/git": { - "version": "5.0.3", + "version": "5.0.8", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "@npmcli/promise-spawn": "^7.0.0", + "ini": "^4.1.3", "lru-cache": "^10.0.1", "npm-pick-manifest": "^9.0.0", - "proc-log": "^3.0.0", + "proc-log": "^4.0.0", "promise-inflight": "^1.0.1", "promise-retry": "^2.0.1", "semver": "^7.3.5", @@ -10962,7 +10719,7 @@ } }, "node_modules/npm/node_modules/@npmcli/installed-package-contents": { - "version": "2.0.2", + "version": "2.1.0", "dev": true, "inBundle": true, "license": "ISC", @@ -10971,14 +10728,14 @@ "npm-normalize-package-bin": "^3.0.0" }, "bin": { - "installed-package-contents": "lib/index.js" + "installed-package-contents": "bin/index.js" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@npmcli/map-workspaces": { - "version": "3.0.4", + "version": "3.0.6", "dev": true, "inBundle": true, "license": "ISC", @@ -10993,14 +10750,15 @@ } }, "node_modules/npm/node_modules/@npmcli/metavuln-calculator": { - "version": "7.0.0", + "version": "7.1.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "cacache": "^18.0.0", "json-parse-even-better-errors": "^3.0.0", - "pacote": "^17.0.0", + "pacote": "^18.0.0", + "proc-log": "^4.1.0", "semver": "^7.3.5" }, "engines": { @@ -11026,7 +10784,7 @@ } }, "node_modules/npm/node_modules/@npmcli/package-json": { - "version": "5.0.0", + "version": "5.2.0", "dev": true, "inBundle": true, "license": "ISC", @@ -11036,7 +10794,7 @@ "hosted-git-info": "^7.0.0", "json-parse-even-better-errors": "^3.0.0", "normalize-package-data": "^6.0.0", - "proc-log": "^3.0.0", + "proc-log": "^4.0.0", "semver": "^7.5.3" }, "engines": { @@ -11044,7 +10802,7 @@ } }, "node_modules/npm/node_modules/@npmcli/promise-spawn": { - "version": "7.0.0", + "version": "7.0.2", "dev": true, "inBundle": true, "license": "ISC", @@ -11056,7 +10814,7 @@ } }, "node_modules/npm/node_modules/@npmcli/query": { - "version": "3.0.0", + "version": "3.1.0", "dev": true, "inBundle": true, "license": "ISC", @@ -11067,16 +10825,26 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/npm/node_modules/@npmcli/redact": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, "node_modules/npm/node_modules/@npmcli/run-script": { - "version": "7.0.1", + "version": "8.1.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^5.0.0", "@npmcli/promise-spawn": "^7.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^3.0.0", + "node-gyp": "^10.0.0", + "proc-log": "^4.0.0", "which": "^4.0.0" }, "engines": { @@ -11094,60 +10862,77 @@ } }, "node_modules/npm/node_modules/@sigstore/bundle": { - "version": "2.1.0", + "version": "2.3.2", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/protobuf-specs": "^0.2.1" + "@sigstore/protobuf-specs": "^0.3.2" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/@sigstore/protobuf-specs": { - "version": "0.2.1", + "node_modules/npm/node_modules/@sigstore/core": { + "version": "1.1.0", "dev": true, "inBundle": true, "license": "Apache-2.0", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/@sigstore/sign": { - "version": "2.1.0", + "node_modules/npm/node_modules/@sigstore/protobuf-specs": { + "version": "0.3.2", "dev": true, "inBundle": true, "license": "Apache-2.0", - "dependencies": { - "@sigstore/bundle": "^2.1.0", - "@sigstore/protobuf-specs": "^0.2.1", - "make-fetch-happen": "^13.0.0" - }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@sigstore/sign": { + "version": "2.3.2", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^2.3.2", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.2", + "make-fetch-happen": "^13.0.1", + "proc-log": "^4.2.0", + "promise-retry": "^2.0.1" + }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@sigstore/tuf": { - "version": "2.1.0", + "version": "2.3.4", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/protobuf-specs": "^0.2.1", - "tuf-js": "^2.1.0" + "@sigstore/protobuf-specs": "^0.3.2", + "tuf-js": "^2.2.1" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/@tootallnate/once": { - "version": "2.0.0", + "node_modules/npm/node_modules/@sigstore/verify": { + "version": "1.2.1", "dev": true, "inBundle": true, - "license": "MIT", + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^2.3.2", + "@sigstore/core": "^1.1.0", + "@sigstore/protobuf-specs": "^0.3.2" + }, "engines": { - "node": ">= 10" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@tufjs/canonical-json": { @@ -11160,13 +10945,13 @@ } }, "node_modules/npm/node_modules/@tufjs/models": { - "version": "2.0.0", + "version": "2.0.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@tufjs/canonical-json": "2.0.0", - "minimatch": "^9.0.3" + "minimatch": "^9.0.4" }, "engines": { "node": "^16.14.0 || >=18.0.0" @@ -11181,40 +10966,16 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/abort-controller": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, "node_modules/npm/node_modules/agent-base": { - "version": "6.0.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/npm/node_modules/agentkeepalive": { - "version": "4.5.0", + "version": "7.1.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "humanize-ms": "^1.2.1" + "debug": "^4.3.4" }, "engines": { - "node": ">= 8.0.0" + "node": ">= 14" } }, "node_modules/npm/node_modules/aggregate-error": { @@ -11240,15 +11001,12 @@ } }, "node_modules/npm/node_modules/ansi-styles": { - "version": "4.3.0", + "version": "6.2.1", "dev": true, "inBundle": true, "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" @@ -11266,47 +11024,14 @@ "inBundle": true, "license": "MIT" }, - "node_modules/npm/node_modules/are-we-there-yet": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^4.1.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/npm/node_modules/balanced-match": { "version": "1.0.2", "dev": true, "inBundle": true, "license": "MIT" }, - "node_modules/npm/node_modules/base64-js": { - "version": "1.5.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT" - }, "node_modules/npm/node_modules/bin-links": { - "version": "4.0.2", + "version": "4.0.4", "dev": true, "inBundle": true, "license": "ISC", @@ -11321,12 +11046,15 @@ } }, "node_modules/npm/node_modules/binary-extensions": { - "version": "2.2.0", + "version": "2.3.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/npm/node_modules/brace-expansion": { @@ -11338,41 +11066,8 @@ "balanced-match": "^1.0.0" } }, - "node_modules/npm/node_modules/buffer": { - "version": "6.0.3", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/npm/node_modules/builtins": { - "version": "5.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "semver": "^7.0.0" - } - }, "node_modules/npm/node_modules/cacache": { - "version": "18.0.0", + "version": "18.0.4", "dev": true, "inBundle": true, "license": "ISC", @@ -11382,7 +11077,7 @@ "glob": "^10.2.2", "lru-cache": "^10.0.1", "minipass": "^7.0.3", - "minipass-collect": "^1.0.2", + "minipass-collect": "^2.0.1", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "p-map": "^4.0.0", @@ -11416,7 +11111,7 @@ } }, "node_modules/npm/node_modules/ci-info": { - "version": "3.8.0", + "version": "4.0.0", "dev": true, "funding": [ { @@ -11431,15 +11126,15 @@ } }, "node_modules/npm/node_modules/cidr-regex": { - "version": "3.1.1", + "version": "4.1.1", "dev": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { - "ip-regex": "^4.1.0" + "ip-regex": "^5.0.0" }, "engines": { - "node": ">=10" + "node": ">=14" } }, "node_modules/npm/node_modules/clean-stack": { @@ -11448,6090 +11143,3108 @@ "inBundle": true, "license": "MIT", "engines": { - "node": ">=6" - } - }, - "node_modules/npm/node_modules/cli-columns": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/npm/node_modules/cli-table3": { - "version": "0.6.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "string-width": "^4.2.0" - }, - "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "@colors/colors": "1.5.0" - } - }, - "node_modules/npm/node_modules/clone": { - "version": "1.0.4", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/npm/node_modules/cmd-shim": { - "version": "6.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/npm/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/color-support": { - "version": "1.1.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "bin": { - "color-support": "bin.js" - } - }, - "node_modules/npm/node_modules/columnify": { - "version": "1.6.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "strip-ansi": "^6.0.1", - "wcwidth": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/npm/node_modules/common-ancestor-path": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/concat-map": { - "version": "0.0.1", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/console-control-strings": { - "version": "1.1.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/cross-spawn": { - "version": "7.0.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/cross-spawn/node_modules/which": { - "version": "2.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/cssesc": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm/node_modules/debug": { - "version": "4.3.4", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/npm/node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/defaults": { - "version": "1.0.4", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm/node_modules/delegates": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/diff": { - "version": "5.1.0", - "dev": true, - "inBundle": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/npm/node_modules/eastasianwidth": { - "version": "0.2.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/emoji-regex": { - "version": "8.0.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/encoding": { - "version": "0.1.13", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, - "node_modules/npm/node_modules/env-paths": { - "version": "2.2.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/npm/node_modules/err-code": { - "version": "2.0.3", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/event-target-shim": { - "version": "5.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/npm/node_modules/events": { - "version": "3.3.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/npm/node_modules/exponential-backoff": { - "version": "3.1.1", - "dev": true, - "inBundle": true, - "license": "Apache-2.0" - }, - "node_modules/npm/node_modules/fastest-levenshtein": { - "version": "1.0.16", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 4.9.1" - } - }, - "node_modules/npm/node_modules/foreground-child": { - "version": "3.1.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/fs-minipass": { - "version": "3.0.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/fs.realpath": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/function-bind": { - "version": "1.1.1", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/gauge": { - "version": "5.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^4.0.1", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/glob": { - "version": "10.3.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/graceful-fs": { - "version": "4.2.11", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/has": { - "version": "1.0.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/npm/node_modules/has-unicode": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/hosted-git-info": { - "version": "7.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^10.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/http-cache-semantics": { - "version": "4.1.1", - "dev": true, - "inBundle": true, - "license": "BSD-2-Clause" - }, - "node_modules/npm/node_modules/http-proxy-agent": { - "version": "5.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/npm/node_modules/https-proxy-agent": { - "version": "5.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/npm/node_modules/humanize-ms": { - "version": "1.2.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ms": "^2.0.0" - } - }, - "node_modules/npm/node_modules/iconv-lite": { - "version": "0.6.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm/node_modules/ieee754": { - "version": "1.2.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "BSD-3-Clause" - }, - "node_modules/npm/node_modules/ignore-walk": { - "version": "6.0.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minimatch": "^9.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/imurmurhash": { - "version": "0.1.4", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/npm/node_modules/indent-string": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/inflight": { - "version": "1.0.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/npm/node_modules/inherits": { - "version": "2.0.4", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/ini": { - "version": "4.1.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/init-package-json": { - "version": "6.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-package-arg": "^11.0.0", - "promzard": "^1.0.0", - "read": "^2.0.0", - "read-package-json": "^7.0.0", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "^5.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/ip": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/ip-regex": { - "version": "4.3.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/is-cidr": { - "version": "4.0.2", - "dev": true, - "inBundle": true, - "license": "BSD-2-Clause", - "dependencies": { - "cidr-regex": "^3.1.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/is-core-module": { - "version": "2.12.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/npm/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/is-lambda": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/isexe": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/jackspeak": { - "version": "2.2.1", - "dev": true, - "inBundle": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/npm/node_modules/json-parse-even-better-errors": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/json-stringify-nice": { - "version": "1.1.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/jsonparse": { - "version": "1.3.1", - "dev": true, - "engines": [ - "node >= 0.2.0" - ], - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/just-diff": { - "version": "6.0.2", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/just-diff-apply": { - "version": "5.5.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/libnpmaccess": { - "version": "8.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-package-arg": "^11.0.0", - "npm-registry-fetch": "^16.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/libnpmdiff": { - "version": "6.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/arborist": "^7.1.0", - "@npmcli/disparity-colors": "^3.0.0", - "@npmcli/installed-package-contents": "^2.0.2", - "binary-extensions": "^2.2.0", - "diff": "^5.1.0", - "minimatch": "^9.0.0", - "npm-package-arg": "^11.0.0", - "pacote": "^17.0.4", - "tar": "^6.1.13" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/libnpmexec": { - "version": "7.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/arborist": "^7.1.0", - "@npmcli/run-script": "^7.0.1", - "ci-info": "^3.7.1", - "npm-package-arg": "^11.0.0", - "npmlog": "^7.0.1", - "pacote": "^17.0.4", - "proc-log": "^3.0.0", - "read": "^2.0.0", - "read-package-json-fast": "^3.0.2", - "semver": "^7.3.7", - "walk-up-path": "^3.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/libnpmfund": { - "version": "4.1.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/arborist": "^7.1.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/libnpmhook": { - "version": "10.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^16.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/libnpmorg": { - "version": "6.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^16.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/libnpmpack": { - "version": "6.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/arborist": "^7.1.0", - "@npmcli/run-script": "^7.0.1", - "npm-package-arg": "^11.0.0", - "pacote": "^17.0.4" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/libnpmpublish": { - "version": "9.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "ci-info": "^3.6.1", - "normalize-package-data": "^6.0.0", - "npm-package-arg": "^11.0.0", - "npm-registry-fetch": "^16.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.7", - "sigstore": "^2.1.0", - "ssri": "^10.0.5" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/libnpmsearch": { - "version": "7.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-registry-fetch": "^16.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/libnpmteam": { - "version": "6.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^16.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/libnpmversion": { - "version": "5.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/git": "^5.0.3", - "@npmcli/run-script": "^7.0.1", - "json-parse-even-better-errors": "^3.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.7" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/lru-cache": { - "version": "10.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "14 || >=16.14" - } - }, - "node_modules/npm/node_modules/make-fetch-happen": { - "version": "13.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/agent": "^2.0.0", - "cacache": "^18.0.0", - "http-cache-semantics": "^4.1.1", - "is-lambda": "^1.0.1", - "minipass": "^7.0.2", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "ssri": "^10.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/minimatch": { - "version": "9.0.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/minipass": { - "version": "7.0.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/npm/node_modules/minipass-collect": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/minipass-collect/node_modules/minipass": { - "version": "3.3.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/minipass-fetch": { - "version": "3.0.4", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "minipass": "^7.0.3", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" - } - }, - "node_modules/npm/node_modules/minipass-flush": { - "version": "1.0.5", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/minipass-flush/node_modules/minipass": { - "version": "3.3.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/minipass-json-stream": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" - } - }, - "node_modules/npm/node_modules/minipass-json-stream/node_modules/minipass": { - "version": "3.3.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/minipass-pipeline": { - "version": "1.2.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/minipass-pipeline/node_modules/minipass": { - "version": "3.3.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/minipass-sized": { - "version": "1.0.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/minipass-sized/node_modules/minipass": { - "version": "3.3.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/minizlib": { - "version": "2.1.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/minizlib/node_modules/minipass": { - "version": "3.3.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/mkdirp": { - "version": "1.0.4", - "dev": true, - "inBundle": true, - "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/ms": { - "version": "2.1.3", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/mute-stream": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/negotiator": { - "version": "0.6.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/npm/node_modules/node-gyp": { - "version": "9.4.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "env-paths": "^2.2.0", - "exponential-backoff": "^3.1.1", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^11.0.3", - "nopt": "^6.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" - }, - "engines": { - "node": "^12.13 || ^14.13 || >=16" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/abbrev": { - "version": "1.1.1", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/node-gyp/node_modules/are-we-there-yet": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/brace-expansion": { - "version": "1.1.11", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/cacache": { - "version": "17.1.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^7.7.1", - "minipass": "^7.0.3", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/brace-expansion": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/glob": { - "version": "10.3.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/minimatch": { - "version": "9.0.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/minipass": { - "version": "7.0.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/gauge": { - "version": "4.0.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/glob": { - "version": "7.2.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/lru-cache": { - "version": "7.18.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/make-fetch-happen": { - "version": "11.1.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/minimatch": { - "version": "3.1.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/minipass": { - "version": "5.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/nopt": { - "version": "6.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "abbrev": "^1.0.0" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/npmlog": { - "version": "6.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/readable-stream": { - "version": "3.6.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/signal-exit": { - "version": "3.0.7", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/node-gyp/node_modules/which": { - "version": "2.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/nopt": { - "version": "7.2.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "abbrev": "^2.0.0" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/normalize-package-data": { - "version": "6.0.0", - "dev": true, - "inBundle": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^7.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npm-audit-report": { - "version": "5.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npm-bundled": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-normalize-package-bin": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npm-install-checks": { - "version": "6.2.0", - "dev": true, - "inBundle": true, - "license": "BSD-2-Clause", - "dependencies": { - "semver": "^7.1.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npm-normalize-package-bin": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npm-package-arg": { - "version": "11.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "hosted-git-info": "^7.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npm-packlist": { - "version": "8.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "ignore-walk": "^6.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npm-pick-manifest": { - "version": "9.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-install-checks": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0", - "npm-package-arg": "^11.0.0", - "semver": "^7.3.5" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npm-profile": { - "version": "9.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-registry-fetch": "^16.0.0", - "proc-log": "^3.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npm-registry-fetch": { - "version": "16.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "make-fetch-happen": "^13.0.0", - "minipass": "^7.0.2", - "minipass-fetch": "^3.0.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^11.0.0", - "proc-log": "^3.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npm-user-validate": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "BSD-2-Clause", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npmlog": { - "version": "7.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "are-we-there-yet": "^4.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^5.0.0", - "set-blocking": "^2.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/once": { - "version": "1.4.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/npm/node_modules/p-map": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm/node_modules/pacote": { - "version": "17.0.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/git": "^5.0.0", - "@npmcli/installed-package-contents": "^2.0.1", - "@npmcli/promise-spawn": "^7.0.0", - "@npmcli/run-script": "^7.0.0", - "cacache": "^18.0.0", - "fs-minipass": "^3.0.0", - "minipass": "^7.0.2", - "npm-package-arg": "^11.0.0", - "npm-packlist": "^8.0.0", - "npm-pick-manifest": "^9.0.0", - "npm-registry-fetch": "^16.0.0", - "proc-log": "^3.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^7.0.0", - "read-package-json-fast": "^3.0.0", - "sigstore": "^2.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11" - }, - "bin": { - "pacote": "lib/bin.js" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/parse-conflict-json": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "json-parse-even-better-errors": "^3.0.0", - "just-diff": "^6.0.0", - "just-diff-apply": "^5.2.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/path-is-absolute": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm/node_modules/path-key": { - "version": "3.1.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/path-scurry": { - "version": "1.10.1", - "dev": true, - "inBundle": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/postcss-selector-parser": { - "version": "6.0.13", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm/node_modules/proc-log": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/process": { - "version": "0.11.10", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/npm/node_modules/promise-all-reject-late": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/promise-call-limit": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/promise-inflight": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/promise-retry": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/promzard": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "read": "^2.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/qrcode-terminal": { - "version": "0.12.0", - "dev": true, - "inBundle": true, - "bin": { - "qrcode-terminal": "bin/qrcode-terminal.js" - } - }, - "node_modules/npm/node_modules/read": { - "version": "2.1.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "mute-stream": "~1.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/read-cmd-shim": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/read-package-json": { - "version": "7.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "glob": "^10.2.2", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/read-package-json-fast": { - "version": "3.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "json-parse-even-better-errors": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/readable-stream": { - "version": "4.4.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/retry": { - "version": "0.12.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/npm/node_modules/rimraf": { - "version": "3.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/rimraf/node_modules/brace-expansion": { - "version": "1.1.11", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/npm/node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/rimraf/node_modules/minimatch": { - "version": "3.1.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/npm/node_modules/safe-buffer": { - "version": "5.2.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/safer-buffer": { - "version": "2.1.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true - }, - "node_modules/npm/node_modules/semver": { - "version": "7.5.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/set-blocking": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/shebang-command": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/shebang-regex": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/signal-exit": { - "version": "4.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/sigstore": { - "version": "2.1.0", - "dev": true, - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "@sigstore/bundle": "^2.1.0", - "@sigstore/protobuf-specs": "^0.2.1", - "@sigstore/sign": "^2.1.0", - "@sigstore/tuf": "^2.1.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/smart-buffer": { - "version": "4.2.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/npm/node_modules/socks": { - "version": "2.7.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/npm/node_modules/socks-proxy-agent": { - "version": "7.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/npm/node_modules/spdx-correct": { - "version": "3.2.0", - "dev": true, - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/npm/node_modules/spdx-exceptions": { - "version": "2.3.0", - "dev": true, - "inBundle": true, - "license": "CC-BY-3.0" - }, - "node_modules/npm/node_modules/spdx-expression-parse": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/npm/node_modules/spdx-license-ids": { - "version": "3.0.13", - "dev": true, - "inBundle": true, - "license": "CC0-1.0" - }, - "node_modules/npm/node_modules/ssri": { - "version": "10.0.5", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/string_decoder": { - "version": "1.3.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/npm/node_modules/string-width": { - "version": "4.2.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/strip-ansi": { - "version": "6.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/supports-color": { - "version": "9.4.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/npm/node_modules/tar": { - "version": "6.1.15", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/tar/node_modules/fs-minipass": { - "version": "2.1.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { - "version": "3.3.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/tar/node_modules/minipass": { - "version": "5.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/text-table": { - "version": "0.2.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/tiny-relative-date": { - "version": "1.3.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/treeverse": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/tuf-js": { - "version": "2.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "@tufjs/models": "2.0.0", - "debug": "^4.3.4", - "make-fetch-happen": "^13.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/unique-filename": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "unique-slug": "^4.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/unique-slug": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/util-deprecate": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/validate-npm-package-license": { - "version": "3.0.4", - "dev": true, - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/npm/node_modules/validate-npm-package-name": { - "version": "5.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "builtins": "^5.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/walk-up-path": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/wcwidth": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "defaults": "^1.0.3" - } - }, - "node_modules/npm/node_modules/which": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/which/node_modules/isexe": { - "version": "3.1.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=16" - } - }, - "node_modules/npm/node_modules/wide-align": { - "version": "1.1.5", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "node_modules/npm/node_modules/wrap-ansi": { - "version": "8.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/npm/node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "6.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": { - "version": "9.2.2", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/wrap-ansi/node_modules/string-width": { - "version": "5.1.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm/node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "7.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/npm/node_modules/wrappy": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/write-file-atomic": { - "version": "5.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==", - "dev": true - }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", - "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", - "dependencies": { - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==", - "dependencies": { - "array-each": "^1.0.1", - "array-slice": "^1.0.0", - "for-own": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", - "integrity": "sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==", - "dependencies": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.reduce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", - "integrity": "sha512-naLhxxpUESbNkRqc35oQ2scZSJueHGQNUfMW/0U37IgN6tE2dgDWg3whf+NEliy3F/QysrO48XKUz/nGPe+AQw==", - "dependencies": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/openurl": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz", - "integrity": "sha512-d/gTkTb1i1GKz5k3XE3XFV/PxQ1k45zDqGP2OA7YhgsaLoqm6qRvARAZOFer1fcXritWlGBRCu/UgeS4HAnXAA==", - "dev": true - }, - "node_modules/opn": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", - "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", - "dev": true, - "dependencies": { - "is-wsl": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dev": true, - "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/ordered-read-streams": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", - "integrity": "sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==", - "dependencies": { - "readable-stream": "^2.0.1" - } - }, - "node_modules/os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", - "dependencies": { - "lcid": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/p-each-series": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-3.0.0.tgz", - "integrity": "sha512-lastgtAdoH9YaLyDa5i5z64q+kzOcQHsQ5SsZJD3q0VEyI8mq872S3geuNbRUQLVAE9siMfgKrpj7MloKFHruw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-filter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-3.0.0.tgz", - "integrity": "sha512-QtoWLjXAW++uTX67HZQz1dbTpqBfiidsB6VtQUC9iR85S120+s0T5sO6s+B5MLzFcZkrEd/DGMmCjR+f2Qpxwg==", - "dev": true, - "dependencies": { - "p-map": "^5.1.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-is-promise": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", - "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-limit/node_modules/yocto-queue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", - "dev": true, - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", - "dev": true, - "dependencies": { - "p-limit": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-map": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-5.5.0.tgz", - "integrity": "sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==", - "dependencies": { - "aggregate-error": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-map/node_modules/aggregate-error": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-4.0.1.tgz", - "integrity": "sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==", - "dependencies": { - "clean-stack": "^4.0.0", - "indent-string": "^5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-map/node_modules/clean-stack": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-4.2.0.tgz", - "integrity": "sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==", - "dependencies": { - "escape-string-regexp": "5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-map/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-map/node_modules/indent-string": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", - "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-reduce": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", - "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-filepath": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", - "dependencies": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==" - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", - "dependencies": { - "path-root-regex": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pidtree": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", - "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", - "bin": { - "pidtree": "bin/pidtree.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "engines": { - "node": ">=4" - } - }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", - "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pkg-conf": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", - "integrity": "sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==", - "dev": true, - "dependencies": { - "find-up": "^2.0.0", - "load-json-file": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-conf/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", - "dev": true, - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-conf/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", - "dev": true, - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-conf/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-conf/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", - "dev": true, - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-conf/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-conf/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/plugin-error": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", - "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", - "dependencies": { - "ansi-colors": "^1.0.1", - "arr-diff": "^4.0.0", - "arr-union": "^3.1.0", - "extend-shallow": "^3.0.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/plugin-error/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/plugin-error/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/plugin-error/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/portscanner": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz", - "integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==", - "dev": true, - "dependencies": { - "async": "^2.6.0", - "is-number-like": "^1.0.3" - }, - "engines": { - "node": ">=0.4", - "npm": ">=1.0.0" - } - }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss": { - "version": "8.4.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", - "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - ], - "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" + "node": ">=6" } }, - "node_modules/postcss-calc": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", - "integrity": "sha512-iBcptYFq+QUh9gzP7ta2btw50o40s4uLI4UDVgd5yRAZtUDWc5APdl5yQDd2h/TyiZNbJrv0HiYhT102CMgN7Q==", + "node_modules/npm/node_modules/cli-columns": { + "version": "4.0.0", "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "postcss": "^5.0.2", - "postcss-message-helpers": "^2.0.0", - "reduce-css-calc": "^1.2.6" - } - }, - "node_modules/postcss-calc/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 10" } }, - "node_modules/postcss-calc/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/npm/node_modules/cmd-shim": { + "version": "6.0.3", "dev": true, + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/postcss-calc/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/npm/node_modules/color-convert": { + "version": "2.0.1", "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=0.10.0" + "node": ">=7.0.0" } }, - "node_modules/postcss-calc/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/npm/node_modules/color-name": { + "version": "1.1.4", "dev": true, - "engines": { - "node": ">=0.8.0" - } + "inBundle": true, + "license": "MIT" }, - "node_modules/postcss-calc/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/npm/node_modules/common-ancestor-path": { + "version": "1.0.1", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "inBundle": true, + "license": "ISC" }, - "node_modules/postcss-calc/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/npm/node_modules/cross-spawn": { + "version": "7.0.3", "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=0.12" + "node": ">= 8" } }, - "node_modules/postcss-calc/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/npm/node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/postcss-calc/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/npm/node_modules/cssesc": { + "version": "3.0.0", "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" + "inBundle": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/postcss-calc/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/npm/node_modules/debug": { + "version": "4.3.6", "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "has-flag": "^1.0.0" + "ms": "2.1.2" }, "engines": { - "node": ">=0.8.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/postcss-colormin": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", - "integrity": "sha512-XXitQe+jNNPf+vxvQXIQ1+pvdQKWKgkx8zlJNltcMEmLma1ypDRDQwlLt+6cP26fBreihNhZxohh1rcgCH2W5w==", + "node_modules/npm/node_modules/debug/node_modules/ms": { + "version": "2.1.2", "dev": true, - "dependencies": { - "colormin": "^1.0.5", - "postcss": "^5.0.13", - "postcss-value-parser": "^3.2.3" - } + "inBundle": true, + "license": "MIT" }, - "node_modules/postcss-colormin/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "node_modules/npm/node_modules/diff": { + "version": "5.2.0", "dev": true, + "inBundle": true, + "license": "BSD-3-Clause", "engines": { - "node": ">=0.10.0" + "node": ">=0.3.1" } }, - "node_modules/postcss-colormin/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/npm/node_modules/eastasianwidth": { + "version": "0.2.0", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "inBundle": true, + "license": "MIT" }, - "node_modules/postcss-colormin/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/npm/node_modules/emoji-regex": { + "version": "8.0.0", "dev": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } + "inBundle": true, + "license": "MIT" }, - "node_modules/postcss-colormin/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/npm/node_modules/encoding": { + "version": "0.1.13", "dev": true, - "engines": { - "node": ">=0.8.0" + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" } }, - "node_modules/postcss-colormin/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/npm/node_modules/env-paths": { + "version": "2.2.1", "dev": true, + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/postcss-colormin/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/npm/node_modules/err-code": { + "version": "2.0.3", "dev": true, - "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - }, - "engines": { - "node": ">=0.12" - } + "inBundle": true, + "license": "MIT" }, - "node_modules/postcss-colormin/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true + "node_modules/npm/node_modules/exponential-backoff": { + "version": "3.1.1", + "dev": true, + "inBundle": true, + "license": "Apache-2.0" }, - "node_modules/postcss-colormin/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/npm/node_modules/fastest-levenshtein": { + "version": "1.0.16", "dev": true, + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 4.9.1" } }, - "node_modules/postcss-colormin/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/npm/node_modules/foreground-child": { + "version": "3.3.0", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "ansi-regex": "^2.0.0" + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/postcss-colormin/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/npm/node_modules/fs-minipass": { + "version": "3.0.3", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "has-flag": "^1.0.0" + "minipass": "^7.0.3" }, "engines": { - "node": ">=0.8.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/postcss-convert-values": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", - "integrity": "sha512-SE7mf25D3ORUEXpu3WUqQqy0nCbMuM5BEny+ULE/FXdS/0UMA58OdzwvzuHJRpIFlk1uojt16JhaEogtP6W2oA==", + "node_modules/npm/node_modules/glob": { + "version": "10.4.5", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "postcss": "^5.0.11", - "postcss-value-parser": "^3.1.2" - } - }, - "node_modules/postcss-convert-values/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/postcss-convert-values/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/npm/node_modules/graceful-fs": { + "version": "4.2.11", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "inBundle": true, + "license": "ISC" }, - "node_modules/postcss-convert-values/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/npm/node_modules/hosted-git-info": { + "version": "7.0.2", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "lru-cache": "^10.0.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-convert-values/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "dev": true, - "engines": { - "node": ">=0.8.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/postcss-convert-values/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/npm/node_modules/http-cache-semantics": { + "version": "4.1.1", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "inBundle": true, + "license": "BSD-2-Clause" }, - "node_modules/postcss-convert-values/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/npm/node_modules/http-proxy-agent": { + "version": "7.0.2", "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": ">=0.12" + "node": ">= 14" } }, - "node_modules/postcss-convert-values/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-convert-values/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/npm/node_modules/https-proxy-agent": { + "version": "7.0.5", "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 14" } }, - "node_modules/postcss-convert-values/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/npm/node_modules/iconv-lite": { + "version": "0.6.3", "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, "dependencies": { - "ansi-regex": "^2.0.0" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/postcss-convert-values/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/npm/node_modules/ignore-walk": { + "version": "6.0.5", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "has-flag": "^1.0.0" + "minimatch": "^9.0.0" }, "engines": { - "node": ">=0.8.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/postcss-discard-comments": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", - "integrity": "sha512-yGbyBDo5FxsImE90LD8C87vgnNlweQkODMkUZlDVM/CBgLr9C5RasLGJxxh9GjVOBeG8NcCMatoqI1pXg8JNXg==", + "node_modules/npm/node_modules/imurmurhash": { + "version": "0.1.4", "dev": true, - "dependencies": { - "postcss": "^5.0.14" + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" } }, - "node_modules/postcss-discard-comments/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "node_modules/npm/node_modules/indent-string": { + "version": "4.0.0", "dev": true, + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/postcss-discard-comments/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/npm/node_modules/ini": { + "version": "4.1.3", "dev": true, + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/postcss-discard-comments/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/npm/node_modules/init-package-json": { + "version": "6.0.3", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "@npmcli/package-json": "^5.0.0", + "npm-package-arg": "^11.0.0", + "promzard": "^1.0.0", + "read": "^3.0.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^5.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/postcss-discard-comments/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/npm/node_modules/ip-address": { + "version": "9.0.5", "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, "engines": { - "node": ">=0.8.0" + "node": ">= 12" } }, - "node_modules/postcss-discard-comments/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/npm/node_modules/ip-regex": { + "version": "5.0.0", "dev": true, + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-discard-comments/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/npm/node_modules/is-cidr": { + "version": "5.1.0", "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "cidr-regex": "^4.1.1" }, "engines": { - "node": ">=0.12" + "node": ">=14" } }, - "node_modules/postcss-discard-comments/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/npm/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", "dev": true, + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/postcss-discard-comments/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/npm/node_modules/is-lambda": { + "version": "1.0.1", "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/isexe": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" }, - "node_modules/postcss-discard-comments/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/npm/node_modules/jackspeak": { + "version": "3.4.3", "dev": true, + "inBundle": true, + "license": "BlueOak-1.0.0", "dependencies": { - "has-flag": "^1.0.0" + "@isaacs/cliui": "^8.0.2" }, - "engines": { - "node": ">=0.8.0" + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/postcss-discard-duplicates": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", - "integrity": "sha512-+lk5W1uqO8qIUTET+UETgj9GWykLC3LOldr7EehmymV0Wu36kyoHimC4cILrAAYpHQ+fr4ypKcWcVNaGzm0reA==", + "node_modules/npm/node_modules/jsbn": { + "version": "1.1.0", "dev": true, - "dependencies": { - "postcss": "^5.0.4" - } + "inBundle": true, + "license": "MIT" }, - "node_modules/postcss-discard-duplicates/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "node_modules/npm/node_modules/json-parse-even-better-errors": { + "version": "3.0.2", "dev": true, + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/postcss-discard-duplicates/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/npm/node_modules/json-stringify-nice": { + "version": "1.1.4", "dev": true, - "engines": { - "node": ">=0.10.0" + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/postcss-discard-duplicates/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/npm/node_modules/jsonparse": { + "version": "1.3.1", "dev": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } + "engines": [ + "node >= 0.2.0" + ], + "inBundle": true, + "license": "MIT" }, - "node_modules/postcss-discard-duplicates/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/npm/node_modules/just-diff": { + "version": "6.0.2", "dev": true, - "engines": { - "node": ">=0.8.0" - } + "inBundle": true, + "license": "MIT" }, - "node_modules/postcss-discard-duplicates/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/npm/node_modules/just-diff-apply": { + "version": "5.5.0", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "inBundle": true, + "license": "MIT" }, - "node_modules/postcss-discard-duplicates/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/npm/node_modules/libnpmaccess": { + "version": "8.0.6", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "npm-package-arg": "^11.0.2", + "npm-registry-fetch": "^17.0.1" }, "engines": { - "node": ">=0.12" - } - }, - "node_modules/postcss-discard-duplicates/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/postcss-discard-duplicates/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/npm/node_modules/libnpmdiff": { + "version": "6.1.4", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "ansi-regex": "^2.0.0" + "@npmcli/arborist": "^7.5.4", + "@npmcli/installed-package-contents": "^2.1.0", + "binary-extensions": "^2.3.0", + "diff": "^5.1.0", + "minimatch": "^9.0.4", + "npm-package-arg": "^11.0.2", + "pacote": "^18.0.6", + "tar": "^6.2.1" }, "engines": { - "node": ">=0.10.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/postcss-discard-duplicates/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/npm/node_modules/libnpmexec": { + "version": "8.1.4", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "has-flag": "^1.0.0" + "@npmcli/arborist": "^7.5.4", + "@npmcli/run-script": "^8.1.0", + "ci-info": "^4.0.0", + "npm-package-arg": "^11.0.2", + "pacote": "^18.0.6", + "proc-log": "^4.2.0", + "read": "^3.0.1", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.7", + "walk-up-path": "^3.0.1" }, "engines": { - "node": ">=0.8.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/postcss-discard-empty": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", - "integrity": "sha512-IBFoyrwk52dhF+5z/ZAbzq5Jy7Wq0aLUsOn69JNS+7YeuyHaNzJwBIYE0QlUH/p5d3L+OON72Fsexyb7OK/3og==", + "node_modules/npm/node_modules/libnpmfund": { + "version": "5.0.12", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "postcss": "^5.0.14" - } - }, - "node_modules/postcss-discard-empty/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, + "@npmcli/arborist": "^7.5.4" + }, "engines": { - "node": ">=0.10.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/postcss-discard-empty/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/npm/node_modules/libnpmhook": { + "version": "10.0.5", "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^17.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/postcss-discard-empty/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/npm/node_modules/libnpmorg": { + "version": "6.0.6", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "aproba": "^2.0.0", + "npm-registry-fetch": "^17.0.1" }, "engines": { - "node": ">=0.10.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/postcss-discard-empty/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/npm/node_modules/libnpmpack": { + "version": "7.0.4", "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^7.5.4", + "@npmcli/run-script": "^8.1.0", + "npm-package-arg": "^11.0.2", + "pacote": "^18.0.6" + }, "engines": { - "node": ">=0.8.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/postcss-discard-empty/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/npm/node_modules/libnpmpublish": { + "version": "9.0.9", "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "ci-info": "^4.0.0", + "normalize-package-data": "^6.0.1", + "npm-package-arg": "^11.0.2", + "npm-registry-fetch": "^17.0.1", + "proc-log": "^4.2.0", + "semver": "^7.3.7", + "sigstore": "^2.2.0", + "ssri": "^10.0.6" + }, "engines": { - "node": ">=0.10.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/postcss-discard-empty/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/npm/node_modules/libnpmsearch": { + "version": "7.0.6", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "npm-registry-fetch": "^17.0.1" }, "engines": { - "node": ">=0.12" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/postcss-discard-empty/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/npm/node_modules/libnpmteam": { + "version": "6.0.5", "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^17.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/postcss-discard-empty/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/npm/node_modules/libnpmversion": { + "version": "6.0.3", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "ansi-regex": "^2.0.0" + "@npmcli/git": "^5.0.7", + "@npmcli/run-script": "^8.1.0", + "json-parse-even-better-errors": "^3.0.2", + "proc-log": "^4.2.0", + "semver": "^7.3.7" }, "engines": { - "node": ">=0.10.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/postcss-discard-empty/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/npm/node_modules/lru-cache": { + "version": "10.4.3", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/make-fetch-happen": { + "version": "13.0.1", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "has-flag": "^1.0.0" + "@npmcli/agent": "^2.0.0", + "cacache": "^18.0.0", + "http-cache-semantics": "^4.1.1", + "is-lambda": "^1.0.1", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "proc-log": "^4.2.0", + "promise-retry": "^2.0.1", + "ssri": "^10.0.0" }, "engines": { - "node": ">=0.8.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/postcss-discard-overridden": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", - "integrity": "sha512-IyKoDL8QNObOiUc6eBw8kMxBHCfxUaERYTUe2QF8k7j/xiirayDzzkmlR6lMQjrAM1p1DDRTvWrS7Aa8lp6/uA==", + "node_modules/npm/node_modules/minimatch": { + "version": "9.0.5", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "postcss": "^5.0.16" - } - }, - "node_modules/postcss-discard-overridden/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, + "brace-expansion": "^2.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/postcss-discard-overridden/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/npm/node_modules/minipass": { + "version": "7.1.2", "dev": true, + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/postcss-discard-overridden/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/npm/node_modules/minipass-collect": { + "version": "2.0.1", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "minipass": "^7.0.3" }, "engines": { - "node": ">=0.10.0" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/postcss-discard-overridden/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/npm/node_modules/minipass-fetch": { + "version": "3.0.5", "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, "engines": { - "node": ">=0.8.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" } }, - "node_modules/postcss-discard-overridden/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/npm/node_modules/minipass-flush": { + "version": "1.0.5", "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/postcss-discard-overridden/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/npm/node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "yallist": "^4.0.0" }, "engines": { - "node": ">=0.12" + "node": ">=8" } }, - "node_modules/postcss-discard-overridden/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/npm/node_modules/minipass-pipeline": { + "version": "1.2.4", "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/postcss-discard-overridden/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/npm/node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "ansi-regex": "^2.0.0" + "yallist": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/postcss-discard-overridden/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/npm/node_modules/minipass-sized": { + "version": "1.0.3", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "has-flag": "^1.0.0" + "minipass": "^3.0.0" }, "engines": { - "node": ">=0.8.0" + "node": ">=8" } }, - "node_modules/postcss-discard-unused": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", - "integrity": "sha512-nCbFNfqYAbKCw9J6PSJubpN9asnrwVLkRDFc4KCwyUEdOtM5XDE/eTW3OpqHrYY1L4fZxgan7LLRAAYYBzwzrg==", + "node_modules/npm/node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "postcss": "^5.0.14", - "uniqs": "^2.0.0" - } - }, - "node_modules/postcss-discard-unused/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, + "yallist": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/postcss-discard-unused/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/npm/node_modules/minizlib": { + "version": "2.1.2", "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/postcss-discard-unused/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/npm/node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "yallist": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/postcss-discard-unused/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/npm/node_modules/mkdirp": { + "version": "1.0.4", "dev": true, + "inBundle": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, "engines": { - "node": ">=0.8.0" + "node": ">=10" } }, - "node_modules/postcss-discard-unused/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/npm/node_modules/ms": { + "version": "2.1.3", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "inBundle": true, + "license": "MIT" }, - "node_modules/postcss-discard-unused/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/npm/node_modules/mute-stream": { + "version": "1.0.0", "dev": true, - "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - }, + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=0.12" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/postcss-discard-unused/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/npm/node_modules/negotiator": { + "version": "0.6.3", "dev": true, + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.6" } }, - "node_modules/postcss-discard-unused/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/npm/node_modules/node-gyp": { + "version": "10.2.0", "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^13.0.0", + "nopt": "^7.0.0", + "proc-log": "^4.1.0", + "semver": "^7.3.5", + "tar": "^6.2.1", + "which": "^4.0.0" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" }, "engines": { - "node": ">=0.10.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/postcss-discard-unused/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/npm/node_modules/nopt": { + "version": "7.2.1", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "has-flag": "^1.0.0" + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" }, "engines": { - "node": ">=0.8.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/postcss-filter-plugins": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz", - "integrity": "sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ==", + "node_modules/npm/node_modules/normalize-package-data": { + "version": "6.0.2", "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", "dependencies": { - "postcss": "^5.0.4" - } - }, - "node_modules/postcss-filter-plugins/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, + "hosted-git-info": "^7.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, "engines": { - "node": ">=0.10.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/postcss-filter-plugins/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/npm/node_modules/npm-audit-report": { + "version": "5.0.0", "dev": true, + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/postcss-filter-plugins/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/npm/node_modules/npm-bundled": { + "version": "3.0.1", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "npm-normalize-package-bin": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/postcss-filter-plugins/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/npm/node_modules/npm-install-checks": { + "version": "6.3.0", "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "semver": "^7.1.1" + }, "engines": { - "node": ">=0.8.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/postcss-filter-plugins/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/npm/node_modules/npm-normalize-package-bin": { + "version": "3.0.1", "dev": true, + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/postcss-filter-plugins/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/npm/node_modules/npm-package-arg": { + "version": "11.0.3", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "hosted-git-info": "^7.0.0", + "proc-log": "^4.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" }, "engines": { - "node": ">=0.12" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/postcss-filter-plugins/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/npm/node_modules/npm-packlist": { + "version": "8.0.2", "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "ignore-walk": "^6.0.4" + }, "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/postcss-filter-plugins/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/npm/node_modules/npm-pick-manifest": { + "version": "9.1.0", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "ansi-regex": "^2.0.0" + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^11.0.0", + "semver": "^7.3.5" }, "engines": { - "node": ">=0.10.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/postcss-filter-plugins/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/npm/node_modules/npm-profile": { + "version": "10.0.0", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "has-flag": "^1.0.0" + "npm-registry-fetch": "^17.0.1", + "proc-log": "^4.0.0" }, "engines": { - "node": ">=0.8.0" + "node": ">=18.0.0" } }, - "node_modules/postcss-merge-idents": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", - "integrity": "sha512-9DHmfCZ7/hNHhIKnNkz4CU0ejtGen5BbTRJc13Z2uHfCedeCUsK2WEQoAJRBL+phs68iWK6Qf8Jze71anuysWA==", + "node_modules/npm/node_modules/npm-registry-fetch": { + "version": "17.1.0", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "has": "^1.0.1", - "postcss": "^5.0.10", - "postcss-value-parser": "^3.1.1" - } - }, - "node_modules/postcss-merge-idents/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, + "@npmcli/redact": "^2.0.0", + "jsonparse": "^1.3.1", + "make-fetch-happen": "^13.0.0", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minizlib": "^2.1.2", + "npm-package-arg": "^11.0.0", + "proc-log": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/postcss-merge-idents/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/npm/node_modules/npm-user-validate": { + "version": "2.0.1", "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/postcss-merge-idents/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/npm/node_modules/p-map": { + "version": "4.0.0", "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "aggregate-error": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-merge-idents/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/npm/node_modules/package-json-from-dist": { + "version": "1.0.0", "dev": true, - "engines": { - "node": ">=0.8.0" - } + "inBundle": true, + "license": "BlueOak-1.0.0" }, - "node_modules/postcss-merge-idents/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/npm/node_modules/pacote": { + "version": "18.0.6", "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^5.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/package-json": "^5.1.0", + "@npmcli/promise-spawn": "^7.0.0", + "@npmcli/run-script": "^8.0.0", + "cacache": "^18.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^7.0.2", + "npm-package-arg": "^11.0.0", + "npm-packlist": "^8.0.0", + "npm-pick-manifest": "^9.0.0", + "npm-registry-fetch": "^17.0.0", + "proc-log": "^4.0.0", + "promise-retry": "^2.0.1", + "sigstore": "^2.2.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "bin/index.js" + }, "engines": { - "node": ">=0.10.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/postcss-merge-idents/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/npm/node_modules/parse-conflict-json": { + "version": "3.0.1", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "json-parse-even-better-errors": "^3.0.0", + "just-diff": "^6.0.0", + "just-diff-apply": "^5.2.0" }, "engines": { - "node": ">=0.12" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/postcss-merge-idents/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-merge-idents/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/npm/node_modules/path-key": { + "version": "3.1.1", "dev": true, + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/postcss-merge-idents/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/npm/node_modules/path-scurry": { + "version": "1.11.1", "dev": true, + "inBundle": true, + "license": "BlueOak-1.0.0", "dependencies": { - "ansi-regex": "^2.0.0" + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/postcss-merge-idents/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/npm/node_modules/postcss-selector-parser": { + "version": "6.1.2", "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "has-flag": "^1.0.0" + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" }, "engines": { - "node": ">=0.8.0" + "node": ">=4" } }, - "node_modules/postcss-merge-longhand": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", - "integrity": "sha512-ma7YvxjdLQdifnc1HFsW/AW6fVfubGyR+X4bE3FOSdBVMY9bZjKVdklHT+odknKBB7FSCfKIHC3yHK7RUAqRPg==", + "node_modules/npm/node_modules/proc-log": { + "version": "4.2.0", "dev": true, - "dependencies": { - "postcss": "^5.0.4" + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/postcss-merge-longhand/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "node_modules/npm/node_modules/proggy": { + "version": "2.0.0", "dev": true, + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/postcss-merge-longhand/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/npm/node_modules/promise-all-reject-late": { + "version": "1.0.1", "dev": true, - "engines": { - "node": ">=0.10.0" + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/postcss-merge-longhand/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/npm/node_modules/promise-call-limit": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/promise-inflight": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/promise-retry": { + "version": "2.0.1", "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "err-code": "^2.0.2", + "retry": "^0.12.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/postcss-merge-longhand/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/npm/node_modules/promzard": { + "version": "1.0.2", "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "read": "^3.0.1" + }, "engines": { - "node": ">=0.8.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/postcss-merge-longhand/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/npm/node_modules/qrcode-terminal": { + "version": "0.12.0", "dev": true, - "engines": { - "node": ">=0.10.0" + "inBundle": true, + "bin": { + "qrcode-terminal": "bin/qrcode-terminal.js" } }, - "node_modules/postcss-merge-longhand/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/npm/node_modules/read": { + "version": "3.0.1", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "mute-stream": "^1.0.0" }, "engines": { - "node": ">=0.12" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/postcss-merge-longhand/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/npm/node_modules/read-cmd-shim": { + "version": "4.0.0", "dev": true, + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/postcss-merge-longhand/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/npm/node_modules/read-package-json-fast": { + "version": "3.0.2", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "ansi-regex": "^2.0.0" + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/postcss-merge-longhand/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/npm/node_modules/retry": { + "version": "0.12.0", "dev": true, - "dependencies": { - "has-flag": "^1.0.0" - }, + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">= 4" } }, - "node_modules/postcss-merge-rules": { + "node_modules/npm/node_modules/safer-buffer": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", - "integrity": "sha512-Wgg2FS6W3AYBl+5L9poL6ZUISi5YzL+sDCJfM7zNw/Q1qsyVQXXZ2cbVui6mu2cYJpt1hOKCGj1xA4mq/obz/Q==", "dev": true, - "dependencies": { - "browserslist": "^1.5.2", - "caniuse-api": "^1.5.2", - "postcss": "^5.0.4", - "postcss-selector-parser": "^2.2.2", - "vendors": "^1.0.0" + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/npm/node_modules/semver": { + "version": "7.6.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/postcss-merge-rules/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "node_modules/npm/node_modules/shebang-command": { + "version": "2.0.0", "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/postcss-merge-rules/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/npm/node_modules/shebang-regex": { + "version": "3.0.0", "dev": true, + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/postcss-merge-rules/node_modules/browserslist": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", - "integrity": "sha512-qHJblDE2bXVRYzuDetv/wAeHOJyO97+9wxC1cdCtyzgNuSozOyRCiiLaCR1f71AN66lQdVVBipWm63V+a7bPOw==", - "deprecated": "Browserslist 2 could fail on reading Browserslist >3.0 config used in other tools.", + "node_modules/npm/node_modules/signal-exit": { + "version": "4.1.0", "dev": true, - "dependencies": { - "caniuse-db": "^1.0.30000639", - "electron-to-chromium": "^1.2.7" + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=14" }, - "bin": { - "browserslist": "cli.js" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/postcss-merge-rules/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/npm/node_modules/sigstore": { + "version": "2.3.1", "dev": true, + "inBundle": true, + "license": "Apache-2.0", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "@sigstore/bundle": "^2.3.2", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.2", + "@sigstore/sign": "^2.3.2", + "@sigstore/tuf": "^2.3.4", + "@sigstore/verify": "^1.2.1" }, "engines": { - "node": ">=0.10.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/postcss-merge-rules/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/npm/node_modules/smart-buffer": { + "version": "4.2.0", "dev": true, + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">= 6.0.0", + "npm": ">= 3.0.0" } }, - "node_modules/postcss-merge-rules/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/npm/node_modules/socks": { + "version": "2.8.3", "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 10.0.0", + "npm": ">= 3.0.0" } }, - "node_modules/postcss-merge-rules/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/npm/node_modules/socks-proxy-agent": { + "version": "8.0.4", "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "agent-base": "^7.1.1", + "debug": "^4.3.4", + "socks": "^2.8.3" }, "engines": { - "node": ">=0.12" + "node": ">= 14" } }, - "node_modules/postcss-merge-rules/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/npm/node_modules/spdx-correct": { + "version": "3.2.0", "dev": true, - "engines": { - "node": ">=0.10.0" + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" } }, - "node_modules/postcss-merge-rules/node_modules/strip-ansi": { + "node_modules/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, - "node_modules/postcss-merge-rules/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/npm/node_modules/spdx-exceptions": { + "version": "2.5.0", + "dev": true, + "inBundle": true, + "license": "CC-BY-3.0" + }, + "node_modules/npm/node_modules/spdx-expression-parse": { + "version": "4.0.0", "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "has-flag": "^1.0.0" - }, - "engines": { - "node": ">=0.8.0" + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, - "node_modules/postcss-message-helpers": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", - "integrity": "sha512-tPLZzVAiIJp46TBbpXtrUAKqedXSyW5xDEo1sikrfEfnTs+49SBZR/xDdqCiJvSSbtr615xDsaMF3RrxS2jZlA==", - "dev": true + "node_modules/npm/node_modules/spdx-license-ids": { + "version": "3.0.18", + "dev": true, + "inBundle": true, + "license": "CC0-1.0" }, - "node_modules/postcss-minify-font-values": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", - "integrity": "sha512-vFSPzrJhNe6/8McOLU13XIsERohBJiIFFuC1PolgajOZdRWqRgKITP/A4Z/n4GQhEmtbxmO9NDw3QLaFfE1dFQ==", + "node_modules/npm/node_modules/sprintf-js": { + "version": "1.1.3", + "dev": true, + "inBundle": true, + "license": "BSD-3-Clause" + }, + "node_modules/npm/node_modules/ssri": { + "version": "10.0.6", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "object-assign": "^4.0.1", - "postcss": "^5.0.4", - "postcss-value-parser": "^3.0.2" + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/postcss-minify-font-values/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "node_modules/npm/node_modules/string-width": { + "version": "4.2.3", "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/postcss-minify-font-values/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/npm/node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/postcss-minify-font-values/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/npm/node_modules/strip-ansi": { + "version": "6.0.1", "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/postcss-minify-font-values/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/npm/node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, "engines": { - "node": ">=0.8.0" + "node": ">=8" } }, - "node_modules/postcss-minify-font-values/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/npm/node_modules/supports-color": { + "version": "9.4.0", "dev": true, + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/postcss-minify-font-values/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/npm/node_modules/tar": { + "version": "6.2.1", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" }, "engines": { - "node": ">=0.12" + "node": ">=10" } }, - "node_modules/postcss-minify-font-values/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-minify-font-values/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/npm/node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/postcss-minify-font-values/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/npm/node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "ansi-regex": "^2.0.0" + "yallist": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/postcss-minify-font-values/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/npm/node_modules/tar/node_modules/minipass": { + "version": "5.0.0", "dev": true, - "dependencies": { - "has-flag": "^1.0.0" - }, + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=0.8.0" + "node": ">=8" } }, - "node_modules/postcss-minify-gradients": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", - "integrity": "sha512-DZhT0OE+RbVqVyGsTIKx84rU/5cury1jmwPa19bViqYPQu499ZU831yMzzsyC8EhiZVd73+h5Z9xb/DdaBpw7Q==", + "node_modules/npm/node_modules/text-table": { + "version": "0.2.0", "dev": true, - "dependencies": { - "postcss": "^5.0.12", - "postcss-value-parser": "^3.3.0" - } + "inBundle": true, + "license": "MIT" }, - "node_modules/postcss-minify-gradients/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "node_modules/npm/node_modules/tiny-relative-date": { + "version": "1.3.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/treeverse": { + "version": "3.0.0", "dev": true, + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/postcss-minify-gradients/node_modules/ansi-styles": { + "node_modules/npm/node_modules/tuf-js": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@tufjs/models": "2.0.1", + "debug": "^4.3.4", + "make-fetch-happen": "^13.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/postcss-minify-gradients/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/npm/node_modules/unique-filename": { + "version": "3.0.0", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "unique-slug": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/postcss-minify-gradients/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/npm/node_modules/unique-slug": { + "version": "4.0.0", "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + }, "engines": { - "node": ">=0.8.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/postcss-minify-gradients/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/npm/node_modules/util-deprecate": { + "version": "1.0.2", "dev": true, - "engines": { - "node": ">=0.10.0" + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/validate-npm-package-license": { + "version": "3.0.4", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } }, - "node_modules/postcss-minify-gradients/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": { + "version": "3.0.1", "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - }, - "engines": { - "node": ">=0.12" + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, - "node_modules/postcss-minify-gradients/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-minify-gradients/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/npm/node_modules/validate-npm-package-name": { + "version": "5.0.1", "dev": true, + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/postcss-minify-gradients/node_modules/strip-ansi": { + "node_modules/npm/node_modules/walk-up-path": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } + "inBundle": true, + "license": "ISC" }, - "node_modules/postcss-minify-gradients/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/npm/node_modules/which": { + "version": "4.0.0", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "has-flag": "^1.0.0" + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" }, "engines": { - "node": ">=0.8.0" + "node": "^16.13.0 || >=18.0.0" } }, - "node_modules/postcss-minify-params": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", - "integrity": "sha512-hhJdMVgP8vasrHbkKAk+ab28vEmPYgyuDzRl31V3BEB3QOR3L5TTIVEWLDNnZZ3+fiTi9d6Ker8GM8S1h8p2Ow==", + "node_modules/npm/node_modules/which/node_modules/isexe": { + "version": "3.1.1", "dev": true, - "dependencies": { - "alphanum-sort": "^1.0.1", - "postcss": "^5.0.2", - "postcss-value-parser": "^3.0.2", - "uniqs": "^2.0.0" + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=16" } }, - "node_modules/postcss-minify-params/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "node_modules/npm/node_modules/wrap-ansi": { + "version": "8.1.0", "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/postcss-minify-params/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/npm/node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/postcss-minify-params/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/npm/node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/postcss-minify-params/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", "dev": true, + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/postcss-minify-params/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "9.2.2", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "inBundle": true, + "license": "MIT" }, - "node_modules/postcss-minify-params/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/npm/node_modules/wrap-ansi/node_modules/string-width": { + "version": "5.1.2", "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=0.12" - } - }, - "node_modules/postcss-minify-params/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-minify-params/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-minify-params/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/npm/node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/postcss-minify-params/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/npm/node_modules/write-file-atomic": { + "version": "5.0.1", "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "has-flag": "^1.0.0" + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=0.8.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/postcss-minify-selectors": { + "node_modules/npm/node_modules/yallist": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/nth-check": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", - "integrity": "sha512-e13vxPBSo3ZaPne43KVgM+UETkx3Bs4/Qvm6yXI9HQpQp4nyb7HZ0gKpkF+Wn2x+/dbQ+swNpCdZSbMOT7+TIA==", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "alphanum-sort": "^1.0.2", - "has": "^1.0.1", - "postcss": "^5.0.14", - "postcss-selector-parser": "^2.0.0" + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" } }, - "node_modules/postcss-minify-selectors/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/postcss-minify-selectors/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "dev": true, + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss-minify-selectors/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", - "dev": true, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "license": "MIT", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss-minify-selectors/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "dev": true, + "node_modules/object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==", + "license": "MIT", + "dependencies": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + }, "engines": { - "node": ">=0.8.0" + "node": ">=0.10.0" } }, - "node_modules/postcss-minify-selectors/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", - "dev": true, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/postcss-minify-selectors/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "ee-first": "1.1.1" }, "engines": { - "node": ">=0.12" + "node": ">= 0.8" } }, - "node_modules/postcss-minify-selectors/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" } }, - "node_modules/postcss-minify-selectors/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "mimic-fn": "^2.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-minify-selectors/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/opn": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", + "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^1.0.0" + "is-wsl": "^1.1.0" }, "engines": { - "node": ">=0.8.0" + "node": ">=4" } }, - "node_modules/postcss-normalize-charset": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", - "integrity": "sha512-RKgjEks83l8w4yEhztOwNZ+nLSrJ+NvPNhpS+mVDzoaiRHZQVoG7NF2TP5qjwnaN9YswUhj6m1E0S0Z+WDCgEQ==", + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, + "license": "MIT", "dependencies": { - "postcss": "^5.0.5" - } - }, - "node_modules/postcss-normalize-charset/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-normalize-charset/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "dev": true, + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.8.0" } }, - "node_modules/postcss-normalize-charset/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-normalize-charset/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=0.8.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/postcss-normalize-charset/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/postcss-normalize-charset/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/ora/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "color-name": "~1.1.4" }, "engines": { - "node": ">=0.12" + "node": ">=7.0.0" } }, - "node_modules/postcss-normalize-charset/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/ora/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "node_modules/postcss-normalize-charset/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/ora/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/postcss-normalize-charset/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^1.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/postcss-normalize-url": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", - "integrity": "sha512-WqtWG6GV2nELsQEFES0RzfL2ebVwmGl/M8VmMbshKto/UClBo+mznX8Zi4/hkThdqx7ijwv+O8HWPdpK7nH/Ig==", - "dev": true, - "dependencies": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^1.4.0", - "postcss": "^5.0.14", - "postcss-value-parser": "^3.2.3" + "node": ">=8" } }, - "node_modules/postcss-normalize-url/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/postcss-normalize-url/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/p-each-series": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-3.0.0.tgz", + "integrity": "sha512-lastgtAdoH9YaLyDa5i5z64q+kzOcQHsQ5SsZJD3q0VEyI8mq872S3geuNbRUQLVAE9siMfgKrpj7MloKFHruw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-normalize-url/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/p-filter": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-4.1.0.tgz", + "integrity": "sha512-37/tPdZ3oJwHaS3gNJdenCDB3Tz26i9sjhnguBtvN0vYlRIiDNnvTWkuh+0hETV9rLPdJ3rlL3yVOYPIAnM8rw==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "p-map": "^7.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-normalize-url/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/p-filter/node_modules/p-map": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.2.tgz", + "integrity": "sha512-z4cYYMMdKHzw4O5UkWJImbZynVIo0lSGTXc7bzB1e/rrDqkgGUNysK/o4bTr+0+xKvvLoTyGqYC4Fgljy9qe1Q==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-normalize-url/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/p-is-promise": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", + "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/postcss-normalize-url/node_modules/normalize-url": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", - "integrity": "sha512-A48My/mtCklowHBlI8Fq2jFWK4tX4lJ5E6ytFsSOq1fzpvT0SQSgKhSg7lN5c2uYFOrUAOQp6zhhJnpp1eMloQ==", - "dev": true, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "license": "MIT", "dependencies": { - "object-assign": "^4.0.1", - "prepend-http": "^1.0.0", - "query-string": "^4.1.0", - "sort-keys": "^1.0.0" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-normalize-url/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "p-limit": "^3.0.2" }, "engines": { - "node": ">=0.12" - } - }, - "node_modules/postcss-normalize-url/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-normalize-url/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-normalize-url/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, + "node_modules/p-map": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-5.5.0.tgz", + "integrity": "sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==", + "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "aggregate-error": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-normalize-url/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", - "dev": true, + "node_modules/p-map/node_modules/aggregate-error": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-4.0.1.tgz", + "integrity": "sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==", + "license": "MIT", "dependencies": { - "has-flag": "^1.0.0" + "clean-stack": "^4.0.0", + "indent-string": "^5.0.0" }, "engines": { - "node": ">=0.8.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-ordered-values": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", - "integrity": "sha512-5RB1IUZhkxDCfa5fx/ogp/A82mtq+r7USqS+7zt0e428HJ7+BHCxyeY39ClmkkUtxdOd3mk8gD6d9bjH2BECMg==", - "dev": true, + "node_modules/p-map/node_modules/clean-stack": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-4.2.0.tgz", + "integrity": "sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==", + "license": "MIT", "dependencies": { - "postcss": "^5.0.4", - "postcss-value-parser": "^3.0.1" - } - }, - "node_modules/postcss-ordered-values/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, + "escape-string-regexp": "5.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-ordered-values/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "dev": true, + "node_modules/p-map/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "license": "MIT", "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-ordered-values/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "node": ">=12" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-ordered-values/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "dev": true, + "node_modules/p-map/node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-ordered-values/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/p-reduce": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", + "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/postcss-ordered-values/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", "dev": true, - "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - }, + "license": "MIT", "engines": { - "node": ">=0.12" + "node": ">=4" } }, - "node_modules/postcss-ordered-values/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "license": "BlueOak-1.0.0" }, - "node_modules/postcss-ordered-values/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "license": "(MIT AND Zlib)" }, - "node_modules/postcss-ordered-values/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "callsites": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/postcss-ordered-values/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", - "dev": true, + "node_modules/parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", + "license": "MIT", "dependencies": { - "has-flag": "^1.0.0" + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" }, "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/postcss-reduce-idents": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", - "integrity": "sha512-0+Ow9e8JLtffjumJJFPqvN4qAvokVbdQPnijUDSOX8tfTwrILLP4ETvrZcXZxAtpFLh/U0c+q8oRMJLr1Kiu4w==", - "dev": true, - "dependencies": { - "postcss": "^5.0.4", - "postcss-value-parser": "^3.0.2" - } - }, - "node_modules/postcss-reduce-idents/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-reduce-idents/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">=0.8" } }, - "node_modules/postcss-reduce-idents/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-reduce-idents/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/parse-ms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", + "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-reduce-idents/node_modules/has-flag": { + "node_modules/parse-passwd": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", - "dev": true, + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/postcss-reduce-idents/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "dev": true, + "license": "MIT" + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - }, - "engines": { - "node": ">=0.12" + "parse5": "^6.0.1" } }, - "node_modules/postcss-reduce-idents/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-reduce-idents/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "node_modules/postcss-reduce-idents/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.8" } }, - "node_modules/postcss-reduce-idents/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, - "dependencies": { - "has-flag": "^1.0.0" - }, + "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=8" } }, - "node_modules/postcss-reduce-initial": { + "node_modules/path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", - "integrity": "sha512-jJFrV1vWOPCQsIVitawGesRgMgunbclERQ/IRGW7r93uHrVzNQQmHQ7znsOIjJPZ4yWMzs5A8NFhp3AkPHPbDA==", - "dev": true, - "dependencies": { - "postcss": "^5.0.4" - } - }, - "node_modules/postcss-reduce-initial/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/postcss-reduce-initial/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "dev": true, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/postcss-reduce-initial/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", - "dev": true, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", + "license": "MIT", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "path-root-regex": "^0.1.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/postcss-reduce-initial/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/postcss-reduce-initial/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", - "dev": true, + "node_modules/path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/postcss-reduce-initial/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=0.12" + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/postcss-reduce-initial/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/postcss-reduce-initial/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, + "node_modules/picocolors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/postcss-reduce-initial/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", - "dev": true, - "dependencies": { - "has-flag": "^1.0.0" + "node_modules/pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "license": "MIT", + "bin": { + "pidtree": "bin/pidtree.js" }, "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/postcss-reduce-transforms": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", - "integrity": "sha512-lGgRqnSuAR5i5uUg1TA33r9UngfTadWxOyL2qx1KuPoCQzfmtaHjp9PuwX7yVyRxG3BWBzeFUaS5uV9eVgnEgQ==", - "dev": true, - "dependencies": { - "has": "^1.0.1", - "postcss": "^5.0.8", - "postcss-value-parser": "^3.0.1" + "node": ">=0.10" } }, - "node_modules/postcss-reduce-transforms/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/postcss-reduce-transforms/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/pkg-conf": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", + "integrity": "sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==", "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^2.0.0", + "load-json-file": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/postcss-reduce-transforms/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/pkg-conf/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "locate-path": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/postcss-reduce-transforms/node_modules/chalk/node_modules/supports-color": { + "node_modules/pkg-conf/node_modules/locate-path": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, "engines": { - "node": ">=0.8.0" + "node": ">=4" } }, - "node_modules/postcss-reduce-transforms/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/pkg-conf/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^1.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/postcss-reduce-transforms/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/pkg-conf/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "p-limit": "^1.1.0" }, "engines": { - "node": ">=0.12" + "node": ">=4" } }, - "node_modules/postcss-reduce-transforms/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-reduce-transforms/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/pkg-conf/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/postcss-reduce-transforms/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/plugin-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-2.0.1.tgz", + "integrity": "sha512-zMakqvIDyY40xHOvzXka0kUvf40nYIuwRE8dWhti2WtjQZ31xAgBZBhxsK7vK3QbRXS1Xms/LO7B5cuAsfB2Gg==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "ansi-colors": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=10.13.0" } }, - "node_modules/postcss-reduce-transforms/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/portscanner": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz", + "integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^1.0.0" + "async": "^2.6.0", + "is-number-like": "^1.0.3" }, "engines": { - "node": ">=0.8.0" + "node": ">=0.4", + "npm": ">=1.0.0" } }, - "node_modules/postcss-selector-parser": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", - "integrity": "sha512-3pqyakeGhrO0BQ5+/tGTfvi5IAUAhHRayGK8WFSu06aEv2BmHoXw/Mhb+w7VY5HERIuC+QoUI7wgrCcq2hqCVA==", - "dev": true, - "dependencies": { - "flatten": "^1.0.2", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.4" } }, - "node_modules/postcss-svgo": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", - "integrity": "sha512-y5AdQdgBoF4rbpdbeWAJuxE953g/ylRfVNp6mvAi61VCN/Y25Tu9p5mh3CyI42WbTRIiwR9a1GdFtmDnNPeskQ==", - "dev": true, + "node_modules/postcss": { + "version": "8.4.47", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", "dependencies": { - "is-svg": "^2.0.0", - "postcss": "^5.0.14", - "postcss-value-parser": "^3.2.3", - "svgo": "^0.7.0" + "nanoid": "^3.3.7", + "picocolors": "^1.1.0", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" } }, - "node_modules/postcss-svgo/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "node_modules/postcss-calc": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-10.0.2.tgz", + "integrity": "sha512-DT/Wwm6fCKgpYVI7ZEWuPJ4az8hiEHtCUeYjZXqU7Ou4QqYh1Df2yCQ7Ca6N7xqKPFkxN3fhf+u9KSoOCJNAjg==", "dev": true, + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.1.2", + "postcss-value-parser": "^4.2.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.12 || ^20.9 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.38" } }, - "node_modules/postcss-svgo/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/postcss-colormin": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-7.0.2.tgz", + "integrity": "sha512-YntRXNngcvEvDbEjTdRWGU606eZvB5prmHG4BF0yLmVpamXbpsRJzevyy6MZVyuecgzI2AWAlvFi8DAeCqwpvA==", "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.3", + "caniuse-api": "^3.0.0", + "colord": "^2.9.3", + "postcss-value-parser": "^4.2.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/postcss-svgo/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/postcss-convert-values": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-7.0.4.tgz", + "integrity": "sha512-e2LSXPqEHVW6aoGbjV9RsSSNDO3A0rZLCBxN24zvxF25WknMPpX8Dm9UxxThyEbaytzggRuZxaGXqaOhxQ514Q==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "browserslist": "^4.23.3", + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/postcss-svgo/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/postcss-discard-comments": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-7.0.3.tgz", + "integrity": "sha512-q6fjd4WU4afNhWOA2WltHgCbkRhZPgQe7cXF74fuVB/ge4QbM9HEaOIzGSiMvM+g/cOsNAUGdf2JDzqA2F8iLA==", "dev": true, + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.1.2" + }, "engines": { - "node": ">=0.8.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/postcss-svgo/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/postcss-discard-duplicates": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-7.0.1.tgz", + "integrity": "sha512-oZA+v8Jkpu1ct/xbbrntHRsfLGuzoP+cpt0nJe5ED2FQF8n8bJtn7Bo28jSmBYwqgqnqkuSXJfSUEE7if4nClQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/postcss-svgo/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/postcss-discard-empty": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-7.0.0.tgz", + "integrity": "sha512-e+QzoReTZ8IAwhnSdp/++7gBZ/F+nBq9y6PomfwORfP7q9nBpK5AMP64kOt0bA+lShBFbBDcgpJ3X4etHg4lzA==", "dev": true, - "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - }, + "license": "MIT", "engines": { - "node": ">=0.12" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/postcss-svgo/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/postcss-svgo/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/postcss-discard-overridden": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-7.0.0.tgz", + "integrity": "sha512-GmNAzx88u3k2+sBTZrJSDauR0ccpE24omTQCVmaTTZFz1du6AasspjaUPMJ2ud4RslZpoFKyf+6MSPETLojc6w==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/postcss-svgo/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/postcss-load-config": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-5.1.0.tgz", + "integrity": "sha512-G5AJ+IX0aD0dygOE0yFZQ/huFFMSNneyfp0e3/bT05a8OfPC5FUoZRPfGijUdGOJNMewJiwzcHJXFafFzeKFVA==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "lilconfig": "^3.1.1", + "yaml": "^2.4.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 18" + }, + "peerDependencies": { + "jiti": ">=1.21.0", + "postcss": ">=8.0.9", + "tsx": "^4.8.1" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + }, + "postcss": { + "optional": true + }, + "tsx": { + "optional": true + } } }, - "node_modules/postcss-svgo/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/postcss-merge-longhand": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-7.0.4.tgz", + "integrity": "sha512-zer1KoZA54Q8RVHKOY5vMke0cCdNxMP3KBfDerjH/BYHh4nCIh+1Yy0t1pAEQF18ac/4z3OFclO+ZVH8azjR4A==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^1.0.0" + "postcss-value-parser": "^4.2.0", + "stylehacks": "^7.0.4" }, "engines": { - "node": ">=0.8.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/postcss-unique-selectors": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", - "integrity": "sha512-WZX8r1M0+IyljoJOJleg3kYm10hxNYF9scqAT7v/xeSX1IdehutOM85SNO0gP9K+bgs86XERr7Ud5u3ch4+D8g==", + "node_modules/postcss-merge-rules": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-7.0.4.tgz", + "integrity": "sha512-ZsaamiMVu7uBYsIdGtKJ64PkcQt6Pcpep/uO90EpLS3dxJi6OXamIobTYcImyXGoW0Wpugh7DSD3XzxZS9JCPg==", "dev": true, + "license": "MIT", "dependencies": { - "alphanum-sort": "^1.0.1", - "postcss": "^5.0.4", - "uniqs": "^2.0.0" + "browserslist": "^4.23.3", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^5.0.0", + "postcss-selector-parser": "^6.1.2" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/postcss-unique-selectors/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "node_modules/postcss-minify-font-values": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-7.0.0.tgz", + "integrity": "sha512-2ckkZtgT0zG8SMc5aoNwtm5234eUx1GGFJKf2b1bSp8UflqaeFzR50lid4PfqVI9NtGqJ2J4Y7fwvnP/u1cQog==", "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/postcss-unique-selectors/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/postcss-minify-gradients": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-7.0.0.tgz", + "integrity": "sha512-pdUIIdj/C93ryCHew0UgBnL2DtUS3hfFa5XtERrs4x+hmpMYGhbzo6l/Ir5de41O0GaKVpK1ZbDNXSY6GkXvtg==", "dev": true, + "license": "MIT", + "dependencies": { + "colord": "^2.9.3", + "cssnano-utils": "^5.0.0", + "postcss-value-parser": "^4.2.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/postcss-unique-selectors/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/postcss-minify-params": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-7.0.2.tgz", + "integrity": "sha512-nyqVLu4MFl9df32zTsdcLqCFfE/z2+f8GE1KHPxWOAmegSo6lpV2GNy5XQvrzwbLmiU7d+fYay4cwto1oNdAaQ==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "browserslist": "^4.23.3", + "cssnano-utils": "^5.0.0", + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/postcss-unique-selectors/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/postcss-minify-selectors": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-7.0.4.tgz", + "integrity": "sha512-JG55VADcNb4xFCf75hXkzc1rNeURhlo7ugf6JjiiKRfMsKlDzN9CXHZDyiG6x/zGchpjQS+UAgb1d4nqXqOpmA==", "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "postcss-selector-parser": "^6.1.2" + }, "engines": { - "node": ">=0.8.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/postcss-unique-selectors/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/postcss-normalize-charset": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-7.0.0.tgz", + "integrity": "sha512-ABisNUXMeZeDNzCQxPxBCkXexvBrUHV+p7/BXOY+ulxkcjUZO0cp8ekGBwvIh2LbCwnWbyMPNJVtBSdyhM2zYQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/postcss-unique-selectors/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/postcss-normalize-display-values": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-7.0.0.tgz", + "integrity": "sha512-lnFZzNPeDf5uGMPYgGOw7v0BfB45+irSRz9gHQStdkkhiM0gTfvWkWB5BMxpn0OqgOQuZG/mRlZyJxp0EImr2Q==", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=0.12" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/postcss-unique-selectors/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/postcss-normalize-positions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-7.0.0.tgz", + "integrity": "sha512-I0yt8wX529UKIGs2y/9Ybs2CelSvItfmvg/DBIjTnoUSrPxSV7Z0yZ8ShSVtKNaV/wAY+m7bgtyVQLhB00A1NQ==", "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/postcss-unique-selectors/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/postcss-normalize-repeat-style": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-7.0.0.tgz", + "integrity": "sha512-o3uSGYH+2q30ieM3ppu9GTjSXIzOrRdCUn8UOMGNw7Af61bmurHTWI87hRybrP6xDHvOe5WlAj3XzN6vEO8jLw==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/postcss-unique-selectors/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/postcss-normalize-string": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-7.0.0.tgz", + "integrity": "sha512-w/qzL212DFVOpMy3UGyxrND+Kb0fvCiBBujiaONIihq7VvtC7bswjWgKQU/w4VcRyDD8gpfqUiBQ4DUOwEJ6Qg==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^1.0.0" + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=0.8.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" - }, - "node_modules/postcss-zindex": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", - "integrity": "sha512-uhRZ2hRgj0lorxm9cr62B01YzpUe63h0RXMXQ4gWW3oa2rpJh+FJAiEAytaFCPU/VgaBS+uW2SJ1XKyDNz1h4w==", + "node_modules/postcss-normalize-timing-functions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-7.0.0.tgz", + "integrity": "sha512-tNgw3YV0LYoRwg43N3lTe3AEWZ66W7Dh7lVEpJbHoKOuHc1sLrzMLMFjP8SNULHaykzsonUEDbKedv8C+7ej6g==", "dev": true, + "license": "MIT", "dependencies": { - "has": "^1.0.1", - "postcss": "^5.0.4", - "uniqs": "^2.0.0" + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/postcss-zindex/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "node_modules/postcss-normalize-unicode": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-7.0.2.tgz", + "integrity": "sha512-ztisabK5C/+ZWBdYC+Y9JCkp3M9qBv/XFvDtSw0d/XwfT3UaKeW/YTm/MD/QrPNxuecia46vkfEhewjwcYFjkg==", "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.3", + "postcss-value-parser": "^4.2.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/postcss-zindex/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/postcss-normalize-url": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-7.0.0.tgz", + "integrity": "sha512-+d7+PpE+jyPX1hDQZYG+NaFD+Nd2ris6r8fPTBAjE8z/U41n/bib3vze8x7rKs5H1uEw5ppe9IojewouHk0klQ==", "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/postcss-zindex/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/postcss-normalize-whitespace": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-7.0.0.tgz", + "integrity": "sha512-37/toN4wwZErqohedXYqWgvcHUGlT8O/m2jVkAfAe9Bd4MzRqlBmXrJRePH0e9Wgnz2X7KymTgTOaaFizQe3AQ==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/postcss-zindex/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/postcss-ordered-values": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-7.0.1.tgz", + "integrity": "sha512-irWScWRL6nRzYmBOXReIKch75RRhNS86UPUAxXdmW/l0FcAsg0lvAXQCby/1lymxn/o0gVa6Rv/0f03eJOwHxw==", "dev": true, + "license": "MIT", + "dependencies": { + "cssnano-utils": "^5.0.0", + "postcss-value-parser": "^4.2.0" + }, "engines": { - "node": ">=0.8.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/postcss-zindex/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "node_modules/postcss-reduce-initial": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-7.0.2.tgz", + "integrity": "sha512-pOnu9zqQww7dEKf62Nuju6JgsW2V0KRNBHxeKohU+JkHd/GAH5uvoObqFLqkeB2n20mr6yrlWDvo5UBU5GnkfA==", "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.3", + "caniuse-api": "^3.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/postcss-zindex/node_modules/postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "node_modules/postcss-reduce-transforms": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-7.0.0.tgz", + "integrity": "sha512-pnt1HKKZ07/idH8cpATX/ujMbtOGhUfE+m8gbqwJE05aTaNw8gbo34a2e3if0xc0dlu75sUOiqvwCGY3fzOHew==", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=0.12" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/postcss-zindex/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/postcss-zindex/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/postcss-svgo": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-7.0.1.tgz", + "integrity": "sha512-0WBUlSL4lhD9rA5k1e5D8EN5wCEyZD6HJk0jIvRxl+FDVOMlJ7DePHYWGGVc5QRqrJ3/06FTXM0bxjmJpmTPSA==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "postcss-value-parser": "^4.2.0", + "svgo": "^3.3.2" }, "engines": { - "node": ">=0.10.0" + "node": "^18.12.0 || ^20.9.0 || >= 18" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/postcss-zindex/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "node_modules/postcss-unique-selectors": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-7.0.3.tgz", + "integrity": "sha512-J+58u5Ic5T1QjP/LDV9g3Cx4CNOgB5vz+kM6+OxHHhFACdcDeKhBXjQmB7fnIZM12YSTvsL0Opwco83DmacW2g==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^1.0.0" + "postcss-selector-parser": "^6.1.2" }, "engines": { - "node": ">=0.8.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "license": "MIT" + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8.0" } }, - "node_modules/prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/prettier": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", - "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", "dev": true, + "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, @@ -17542,61 +14255,54 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", + "node_modules/pretty-ms": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.1.0.tgz", + "integrity": "sha512-o1piW0n3tgKIKCwk2vpM/vOV13zjJzvP37Ioze54YlTHE06m4tjEbzg9WsKkvTuyYln2DHjo5pY4qrZGI0otpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "parse-ms": "^4.0.0" + }, "engines": { - "node": ">= 0.8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" }, "node_modules/proto-list": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", - "dev": true - }, - "node_modules/pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dependencies": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } + "dev": true, + "license": "ISC" }, "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/purgecss": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-5.0.0.tgz", - "integrity": "sha512-RAnuxrGuVyLLTr8uMbKaxDRGWMgK5CCYDfRyUNNcaz5P3kGgD2b7ymQGYEyo2ST7Tl/ScwFgf5l3slKMxHSbrw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-6.0.0.tgz", + "integrity": "sha512-s3EBxg5RSWmpqd0KGzNqPiaBbWDz1/As+2MzoYVGMqgDqRTLBhJW6sywfTBek7OwNfoS/6pS0xdtvChNhFj2cw==", "dev": true, + "license": "MIT", "dependencies": { - "commander": "^9.0.0", - "glob": "^8.0.3", + "commander": "^12.0.0", + "glob": "^10.3.10", "postcss": "^8.4.4", "postcss-selector-parser": "^6.0.7" }, @@ -17604,82 +14310,6 @@ "purgecss": "bin/purgecss.js" } }, - "node_modules/purgecss/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/purgecss/node_modules/glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/purgecss/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/purgecss/node_modules/postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", - "dev": true, - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, - "node_modules/query-string": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", - "integrity": "sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==", - "dev": true, - "dependencies": { - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -17697,13 +14327,21 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" + }, + "node_modules/queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", + "license": "MIT" }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -17713,6 +14351,7 @@ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dev": true, + "license": "MIT", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -17728,6 +14367,7 @@ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dev": true, + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -17738,43 +14378,47 @@ "rc": "cli.js" } }, + "node_modules/rc/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "license": "ISC" + }, "node_modules/rc/node_modules/strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/read-pkg": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz", - "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==", + "node_modules/read-package-up": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/read-package-up/-/read-package-up-11.0.0.tgz", + "integrity": "sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==", "dev": true, + "license": "MIT", "dependencies": { - "@types/normalize-package-data": "^2.4.1", - "normalize-package-data": "^6.0.0", - "parse-json": "^7.0.0", - "type-fest": "^4.2.0" + "find-up-simple": "^1.0.0", + "read-pkg": "^9.0.0", + "type-fest": "^4.6.0" }, "engines": { - "node": ">=16" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg-up": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-10.1.0.tgz", - "integrity": "sha512-aNtBq4jR8NawpKJQldrQcSW9y/d+KWH4v24HWkHljOZ7H0av+YTGANBzRh9A5pw7v/bLVsLVPpOhJ7gHNVy8lA==", + "node_modules/read-package-up/node_modules/type-fest": { + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.26.1.tgz", + "integrity": "sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==", "dev": true, - "dependencies": { - "find-up": "^6.3.0", - "read-pkg": "^8.1.0", - "type-fest": "^4.2.0" - }, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=16" }, @@ -17782,48 +14426,51 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.3.1.tgz", - "integrity": "sha512-pphNW/msgOUSkJbH58x8sqpq8uQj6b0ZKGxEsLKMUnGorRcDjrUaLS+39+/ub41JNTwrrMyJcUB8+YZs3mbwqw==", + "node_modules/read-pkg": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz", + "integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==", "dev": true, + "license": "MIT", + "dependencies": { + "@types/normalize-package-data": "^2.4.3", + "normalize-package-data": "^6.0.0", + "parse-json": "^8.0.0", + "type-fest": "^4.6.0", + "unicorn-magic": "^0.1.0" + }, "engines": { - "node": ">=16" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg/node_modules/json-parse-even-better-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", - "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/read-pkg/node_modules/lines-and-columns": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz", - "integrity": "sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==", + "node_modules/read-pkg-up": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-11.0.0.tgz", + "integrity": "sha512-LOVbvF1Q0SZdjClSefZ0Nz5z8u+tIE7mV5NibzmE9VYmDe9CaBbAVtz1veOSZbofrdsilxuDAYnFenukZVp8/Q==", + "deprecated": "Renamed to read-package-up", "dev": true, + "license": "MIT", + "dependencies": { + "find-up-simple": "^1.0.0", + "read-pkg": "^9.0.0", + "type-fest": "^4.6.0" + }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg/node_modules/parse-json": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.0.tgz", - "integrity": "sha512-ihtdrgbqdONYD156Ap6qTcaGcGdkdAxodO1wLqQ/j7HP1u2sFYppINiq4jyC8F+Nm+4fVufylCV00QmkTHkSUg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.21.4", - "error-ex": "^1.3.2", - "json-parse-even-better-errors": "^3.0.0", - "lines-and-columns": "^2.0.3", - "type-fest": "^3.8.0" - }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.26.1.tgz", + "integrity": "sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==", + "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=16" }, @@ -17831,23 +14478,30 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg/node_modules/parse-json/node_modules/type-fest": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", - "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "node_modules/read-pkg/node_modules/parse-json": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.1.0.tgz", + "integrity": "sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==", "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.22.13", + "index-to-position": "^0.1.2", + "type-fest": "^4.7.1" + }, "engines": { - "node": ">=14.16" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/read-pkg/node_modules/type-fest": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.3.1.tgz", - "integrity": "sha512-pphNW/msgOUSkJbH58x8sqpq8uQj6b0ZKGxEsLKMUnGorRcDjrUaLS+39+/ub41JNTwrrMyJcUB8+YZs3mbwqw==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.26.1.tgz", + "integrity": "sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=16" }, @@ -17856,9 +14510,10 @@ } }, "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -17872,188 +14527,44 @@ "node_modules/readable-stream/node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" }, "node_modules/readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dependencies": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/readdirp/node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "picomatch": "^2.2.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8.10.0" } }, "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "license": "MIT", "dependencies": { - "resolve": "^1.1.6" + "resolve": "^1.20.0" }, "engines": { - "node": ">= 0.10" - } - }, - "node_modules/redeyed": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", - "integrity": "sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==", - "dev": true, - "dependencies": { - "esprima": "~4.0.0" - } - }, - "node_modules/reduce-css-calc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", - "integrity": "sha512-0dVfwYVOlf/LBA2ec4OwQ6p3X9mYxn/wOl2xTcLwjnPYrkgEfPx3VI4eGCH3rQLlPISG5v9I9bkZosKsNRTRKA==", - "dev": true, - "dependencies": { - "balanced-match": "^0.4.2", - "math-expression-evaluator": "^1.2.14", - "reduce-function-call": "^1.0.1" - } - }, - "node_modules/reduce-css-calc/node_modules/balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha512-STw03mQKnGUYtoNjmowo4F2cRmIIxYEGiMsjjwla/u5P1lxadj/05WkNaFjNiKTgJkj8KiXbgAiRTmcQRwQNtg==", - "dev": true - }, - "node_modules/reduce-function-call": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.3.tgz", - "integrity": "sha512-Hl/tuV2VDgWgCSEeWMLwxLZqX7OK59eU1guxXsRKTAyeYimivsKdtcV4fu3r710tpG5GmDKDhQ0HSZLExnNmyQ==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" + "node": ">= 10.13.0" } }, "node_modules/regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "license": "MIT" }, "node_modules/regenerate-unicode-properties": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", + "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", + "license": "MIT", "dependencies": { "regenerate": "^1.4.2" }, @@ -18062,72 +14573,30 @@ } }, "node_modules/regenerator-runtime": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", - "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "license": "MIT" }, "node_modules/regenerator-transform": { "version": "0.15.2", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.8.4" } }, - "node_modules/regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regex-not/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regex-not/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regex-not/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -18140,6 +14609,7 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "license": "MIT", "dependencies": { "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", @@ -18153,12 +14623,13 @@ } }, "node_modules/registry-auth-token": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.1.tgz", - "integrity": "sha512-UfxVOj8seK1yaIOiieV4FIP01vfBDLsY0H9sQzi9EbbUdJiuuBjJgLa1DpImXMNPnVkBD4eVxTEXcrZA6kfpJA==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz", + "integrity": "sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==", "dev": true, + "license": "MIT", "dependencies": { - "@pnpm/npm-conf": "^1.0.4" + "@pnpm/npm-conf": "^2.1.0" }, "engines": { "node": ">=14" @@ -18168,6 +14639,7 @@ "version": "0.9.1", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "license": "BSD-2-Clause", "dependencies": { "jsesc": "~0.5.0" }, @@ -18183,86 +14655,35 @@ "jsesc": "bin/jsesc" } }, - "node_modules/remove-bom-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", - "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", - "dependencies": { - "is-buffer": "^1.1.5", - "is-utf8": "^0.2.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/remove-bom-stream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", - "integrity": "sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA==", - "dependencies": { - "remove-bom-buffer": "^3.0.0", - "safe-buffer": "^5.1.0", - "through2": "^2.0.3" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/remove-bom-stream/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, "node_modules/remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==" - }, - "node_modules/repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", - "engines": { - "node": ">=0.10" - } + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "license": "ISC" }, "node_modules/replace-ext": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-2.0.0.tgz", "integrity": "sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==", + "license": "MIT", "engines": { "node": ">= 10" } }, "node_modules/replace-homedir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", - "integrity": "sha512-CHPV/GAglbIB1tnQgaiysb8H2yCy8WQ7lcEwQ/eT+kLj0QHV8LnJW0zpqpE7RSkrMSRoa+EBoag86clf7WAgSg==", - "dependencies": { - "homedir-polyfill": "^1.0.1", - "is-absolute": "^1.0.0", - "remove-trailing-separator": "^1.1.0" - }, + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-2.0.0.tgz", + "integrity": "sha512-bgEuQQ/BHW0XkkJtawzrfzHFSN70f/3cNOiHa2QsYxqrjaC30X1k74FJ6xswVBP0sr0SpGIdVFuPwfrYziVeyw==", + "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, "node_modules/replacestream": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/replacestream/-/replacestream-4.0.3.tgz", "integrity": "sha512-AC0FiLS352pBBiZhd4VXB1Ab/lh0lEgpP+GGvZqbQh8a5cmXVoTe5EX/YeTFArnp4SRGTHh1qCHu9lGs1qG8sA==", + "license": "BSD-3-Clause", "dependencies": { "escape-string-regexp": "^1.0.3", "object-assign": "^4.0.1", @@ -18273,6 +14694,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -18282,28 +14704,26 @@ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==" - }, "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "license": "MIT", "dependencies": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -18318,6 +14738,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", + "license": "MIT", "dependencies": { "expand-tilde": "^2.0.0", "global-modules": "^1.0.0" @@ -18331,40 +14752,23 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-global": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-global/-/resolve-global-1.0.0.tgz", - "integrity": "sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==", - "dev": true, - "optional": true, - "dependencies": { - "global-dirs": "^0.1.1" - }, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/resolve-options": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", - "integrity": "sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-2.0.0.tgz", + "integrity": "sha512-/FopbmmFOQCfsCx77BRFdKOniglTiHumLgwvd6IDPihy1GKkadZbgQJBcTb2lMzSR1pndzd96b1nZrreZ7+9/A==", + "license": "MIT", "dependencies": { - "value-or-function": "^3.0.0" + "value-or-function": "^4.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, - "node_modules/resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", - "deprecated": "https://github.com/lydell/resolve-url#deprecated" - }, "node_modules/resp-modifier": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", @@ -18383,6 +14787,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -18391,54 +14796,28 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", - "dev": true, - "dependencies": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/restore-cursor/node_modules/mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", "dev": true, - "engines": { - "node": ">=4" - } + "license": "MIT" }, - "node_modules/restore-cursor/node_modules/onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, + "license": "MIT", "dependencies": { - "mimic-fn": "^1.0.0" + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" }, "engines": { - "node": ">=4" - } - }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "engines": { - "node": ">=0.12" + "node": ">=8" } }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -18448,6 +14827,8 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -18458,39 +14839,68 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/rollup": { - "version": "3.29.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.2.tgz", - "integrity": "sha512-CJouHoZ27v6siztc21eEQGo0kIcE5D1gVPA571ez0mMYb25LGYGKnVNXpEj5MGlepmDWGXNjDB5q7uNiPHC11A==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.3.tgz", + "integrity": "sha512-7sqRtBNnEbcBtMeRVc6VRsJMmpI+JU1z9VTvW8D4gXIYQFz0aLcsE6rRkyghZkLfEgUZgVvOG7A5CVz/VW5GIA==", + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.5" + }, "bin": { "rollup": "dist/bin/rollup" }, "engines": { - "node": ">=14.18.0", + "node": ">=18.0.0", "npm": ">=8.0.0" }, "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.21.3", + "@rollup/rollup-android-arm64": "4.21.3", + "@rollup/rollup-darwin-arm64": "4.21.3", + "@rollup/rollup-darwin-x64": "4.21.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.21.3", + "@rollup/rollup-linux-arm-musleabihf": "4.21.3", + "@rollup/rollup-linux-arm64-gnu": "4.21.3", + "@rollup/rollup-linux-arm64-musl": "4.21.3", + "@rollup/rollup-linux-powerpc64le-gnu": "4.21.3", + "@rollup/rollup-linux-riscv64-gnu": "4.21.3", + "@rollup/rollup-linux-s390x-gnu": "4.21.3", + "@rollup/rollup-linux-x64-gnu": "4.21.3", + "@rollup/rollup-linux-x64-musl": "4.21.3", + "@rollup/rollup-win32-arm64-msvc": "4.21.3", + "@rollup/rollup-win32-ia32-msvc": "4.21.3", + "@rollup/rollup-win32-x64-msvc": "4.21.3", "fsevents": "~2.3.2" } }, - "node_modules/rollup/node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/run-async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -18513,6 +14923,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } @@ -18521,24 +14932,48 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", "integrity": "sha512-CiaiuN6gapkdl+cZUr67W6I8jquN4lkak3vtIsIWCl4XIPP8ffsoyN6/+PuGXnQy8Cu8W2y9Xxh31Rq4M6wUug==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "tslib": "^1.9.0" + "tslib": "^2.1.0" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" }, "engines": { - "npm": ">=2.0.0" + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, "funding": [ { "type": "github", @@ -18552,25 +14987,22 @@ "type": "consulting", "url": "https://feross.org/support" } - ] - }, - "node_modules/safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", - "dependencies": { - "ret": "~0.1.10" - } + ], + "license": "MIT" }, "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", "is-regex": "^1.1.4" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -18579,12 +15011,13 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "license": "MIT" }, "node_modules/sass": { - "version": "1.67.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.67.0.tgz", - "integrity": "sha512-SVrO9ZeX/QQyEGtuZYCVxoeAL5vGlYjJ9p4i4HFuekWl8y/LtJ7tJc10Z+ck1c8xOuoBm2MYzcLfTAffD0pl/A==", + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.78.0.tgz", + "integrity": "sha512-AaIqGSrjo5lA2Yg7RvFZrlXDBCp3nV4XP73GrLGvdRWWwk+8H3l0SDvq/5bA4eF+0RFPLuWUk3E+P1U/YqnpsQ==", + "license": "MIT", "dependencies": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -18597,174 +15030,43 @@ "node": ">=14.0.0" } }, - "node_modules/sass/node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/sass/node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/sass/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/sass/node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/sass/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/sass/node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/sass/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/sass/node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/sass/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/sass/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/sass/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true + "node_modules/sass/node_modules/immutable": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", + "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", + "license": "MIT" }, "node_modules/semantic-release": { - "version": "22.0.0", - "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-22.0.0.tgz", - "integrity": "sha512-WTD8zPxh+pyc/DrTALRHJ47p1XbKqi2AJljn5WkXgLFFIMSax4uu15u4ZEZaa7ftBo8cSajh16VeafgUu9DX8g==", + "version": "24.1.1", + "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-24.1.1.tgz", + "integrity": "sha512-4Ax2GxD411jUe9IdhOjMLuN+6wAj+aKjvOGngByrpD/iKL+UKN/2puQglhyI4gxNyy9XzEBMzBwbqpnEwbXGEg==", "dev": true, + "license": "MIT", "dependencies": { - "@semantic-release/commit-analyzer": "^11.0.0-beta.3", + "@semantic-release/commit-analyzer": "^13.0.0-beta.1", "@semantic-release/error": "^4.0.0", - "@semantic-release/github": "^9.0.0", - "@semantic-release/npm": "^11.0.0", - "@semantic-release/release-notes-generator": "^12.0.0-beta.2", + "@semantic-release/github": "^10.0.0", + "@semantic-release/npm": "^12.0.0", + "@semantic-release/release-notes-generator": "^14.0.0-beta.1", "aggregate-error": "^5.0.0", - "cosmiconfig": "^8.0.0", + "cosmiconfig": "^9.0.0", "debug": "^4.0.0", - "env-ci": "^9.0.0", - "execa": "^8.0.0", - "figures": "^5.0.0", - "find-versions": "^5.1.0", + "env-ci": "^11.0.0", + "execa": "^9.0.0", + "figures": "^6.0.0", + "find-versions": "^6.0.0", "get-stream": "^6.0.0", "git-log-parser": "^1.2.0", "hook-std": "^3.0.0", - "hosted-git-info": "^7.0.0", + "hosted-git-info": "^8.0.0", + "import-from-esm": "^1.3.1", "lodash-es": "^4.17.21", - "marked": "^5.0.0", - "marked-terminal": "^5.1.1", + "marked": "^12.0.0", + "marked-terminal": "^7.0.0", "micromatch": "^4.0.2", "p-each-series": "^3.0.0", "p-reduce": "^3.0.0", - "read-pkg-up": "^10.0.0", + "read-package-up": "^11.0.0", "resolve-from": "^5.0.0", "semver": "^7.3.2", "semver-diff": "^4.0.0", @@ -18775,7 +15077,7 @@ "semantic-release": "bin/semantic-release.js" }, "engines": { - "node": "^18.17 || >=20.6.1" + "node": ">=20.8.1" } }, "node_modules/semantic-release/node_modules/@semantic-release/error": { @@ -18783,19 +15085,17 @@ "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" } }, - "node_modules/semantic-release/node_modules/aggregate-error": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", - "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", + "node_modules/semantic-release/node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", "dev": true, - "dependencies": { - "clean-stack": "^5.2.0", - "indent-string": "^5.0.0" - }, + "license": "MIT", "engines": { "node": ">=18" }, @@ -18803,84 +15103,37 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/semantic-release/node_modules/clean-stack": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", - "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", - "dev": true, - "dependencies": { - "escape-string-regexp": "5.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/semantic-release/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/semantic-release/node_modules/aggregate-error": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", + "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "clean-stack": "^5.2.0", + "indent-string": "^5.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/semantic-release/node_modules/cosmiconfig": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz", - "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==", + "node_modules/semantic-release/node_modules/clean-stack": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", + "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", "dev": true, + "license": "MIT", "dependencies": { - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0" + "escape-string-regexp": "5.0.0" }, "engines": { - "node": ">=14" + "node": ">=14.16" }, "funding": { - "url": "https://github.com/sponsors/d-fischer" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/semantic-release/node_modules/escape-string-regexp": { @@ -18888,6 +15141,7 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -18896,72 +15150,99 @@ } }, "node_modules/semantic-release/node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.3.1.tgz", + "integrity": "sha512-gdhefCCNy/8tpH/2+ajP9IQc14vXchNdd0weyzSJEFURhRMGncQ+zKFxwjAufIewPEJm9BPOaJnvg2UtlH2gPQ==", "dev": true, + "license": "MIT", "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.0", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^5.2.0", + "pretty-ms": "^9.0.0", "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.0.0" }, "engines": { - "node": ">=16.17" + "node": "^18.19.0 || >=20.5.0" }, "funding": { "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, "node_modules/semantic-release/node_modules/execa/node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", "dev": true, + "license": "MIT", + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, "engines": { - "node": ">=16" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/semantic-release/node_modules/figures": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz", - "integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", "dev": true, + "license": "MIT", "dependencies": { - "escape-string-regexp": "^5.0.0", - "is-unicode-supported": "^1.2.0" + "is-unicode-supported": "^2.0.0" }, "engines": { - "node": ">=14" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release/node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "node_modules/semantic-release/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, + "license": "MIT", "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/hosted-git-info": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-8.0.0.tgz", + "integrity": "sha512-4nw3vOVR+vHUOT8+U4giwe2tcGv+R3pwwRidUe67DoMBTjhrfr6rZYJVVwdkBE+Um050SG+X9tf0Jo4fOpn01w==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/semantic-release/node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.0.tgz", + "integrity": "sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==", "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=16.17.0" + "node": ">=18.18.0" } }, "node_modules/semantic-release/node_modules/indent-string": { @@ -18969,6 +15250,7 @@ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -18976,56 +15258,45 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/semantic-release/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", "dev": true, + "license": "MIT", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release/node_modules/marked": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-5.1.0.tgz", - "integrity": "sha512-z3/nBe7aTI8JDszlYLk7dDVNpngjw0o1ZJtrA9kIfkkHcIF+xH7mO23aISl4WxP83elU+MFROgahqdpd05lMEQ==", - "dev": true, - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/semantic-release/node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "node_modules/semantic-release/node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/semantic-release/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, "node_modules/semantic-release/node_modules/npm-run-path": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", - "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^4.0.0" }, @@ -19036,26 +15307,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release/node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/semantic-release/node_modules/p-reduce": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-3.0.0.tgz", "integrity": "sha512-xsrIUgI0Kn6iyDYm9StOpOeK29XM1aboGji26+QEortiFST1hGZaUQOLhtEbqHErPpGW/aSz6allwK2qcptp0Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -19068,6 +15325,7 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -19075,11 +15333,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/semantic-release/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/semantic-release/node_modules/signal-exit": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, + "license": "ISC", "engines": { "node": ">=14" }, @@ -19087,89 +15359,26 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/semantic-release/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/semantic-release/node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/semantic-release/node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/semantic-release/node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" } }, "node_modules/semver-diff": { @@ -19177,6 +15386,7 @@ "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^7.3.5" }, @@ -19187,15 +15397,29 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/semver-diff/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/semver-greatest-satisfied-range": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", - "integrity": "sha512-Ny/iyOzSSa8M5ML46IAx3iXc6tfOsYU2R4AXi2UpHk60Zrgyq6eqPj/xiOfS0rRl/iiQ/rdJkVjw/5cdUyCntQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-2.0.0.tgz", + "integrity": "sha512-lH3f6kMbwyANB7HuOWRMlLCa2itaCrZJ+SAqqkSZrZKO/cAsk2EOyaKHUtNkVLFyFW9pct22SFesFp3Z7zpA0g==", + "license": "MIT", "dependencies": { - "sver-compat": "^1.5.0" + "sver": "^1.8.3" }, "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, "node_modules/semver-regex": { @@ -19203,6 +15427,7 @@ "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-4.0.5.tgz", "integrity": "sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -19215,6 +15440,7 @@ "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", "dev": true, + "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "~1.1.2", @@ -19239,6 +15465,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -19248,6 +15475,7 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -19257,6 +15485,7 @@ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", "dev": true, + "license": "MIT", "dependencies": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -19271,13 +15500,15 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/send/node_modules/mime": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", "dev": true, + "license": "MIT", "bin": { "mime": "cli.js" } @@ -19286,19 +15517,22 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/send/node_modules/setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/send/node_modules/statuses": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -19308,6 +15542,7 @@ "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "~1.3.4", "batch": "0.6.1", @@ -19326,6 +15561,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -19335,6 +15571,7 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -19344,6 +15581,7 @@ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", "dev": true, + "license": "MIT", "dependencies": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -19358,25 +15596,29 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/serve-index/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/serve-index/node_modules/setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/serve-index/node_modules/statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -19386,6 +15628,7 @@ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", "dev": true, + "license": "MIT", "dependencies": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", @@ -19400,49 +15643,53 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==", - "dev": true - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + "dev": true, + "license": "ISC" }, - "node_modules/set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/set-value/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "license": "MIT", "dependencies": { - "isobject": "^3.0.1" + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -19454,27 +15701,33 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/shell-quote": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.0.tgz", - "integrity": "sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -19484,13 +15737,15 @@ "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/signale": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/signale/-/signale-1.4.0.tgz", "integrity": "sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^2.3.2", "figures": "^2.0.0", @@ -19500,191 +15755,96 @@ "node": ">=6" } }, - "node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "node_modules/signale/node_modules/figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "dev": true, + "license": "MIT", "dependencies": { - "kind-of": "^6.0.0" + "escape-string-regexp": "^1.0.5" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/snapdragon-node/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "node_modules/skin-tone": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz", + "integrity": "sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==", + "dev": true, + "license": "MIT", "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "unicode-emoji-modifier-base": "^1.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dependencies": { - "kind-of": "^3.2.0" - }, + "node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "license": "MIT", "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dependencies": { - "is-buffer": "^1.1.5" + "node": ">=12" }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/snapdragon/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/snapdragon/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/socket.io": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.6.1.tgz", - "integrity": "sha512-KMcaAi4l/8+xEjkRICl6ak8ySoxsYG+gG6/XfRCPJPQ/haCRIJBTL4wIl8YCsmtaBovcAXGLOShyVWQ/FG8GZA==", + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.5.tgz", + "integrity": "sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", + "cors": "~2.8.5", "debug": "~4.3.2", - "engine.io": "~6.4.1", + "engine.io": "~6.5.2", "socket.io-adapter": "~2.5.2", - "socket.io-parser": "~4.2.1" + "socket.io-parser": "~4.2.4" }, "engines": { - "node": ">=10.0.0" + "node": ">=10.2.0" } }, "node_modules/socket.io-adapter": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", - "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz", + "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==", "dev": true, + "license": "MIT", "dependencies": { - "ws": "~8.11.0" + "debug": "~4.3.4", + "ws": "~8.17.1" } }, "node_modules/socket.io-client": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.6.1.tgz", - "integrity": "sha512-5UswCV6hpaRsNg5kkEHVcbBIXEYoVbMQaHJBXJCyEQ+CiFPV1NIOY0XOFWG4XR4GZcB8Kn6AsRs/9cy9TbqVMQ==", + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.5.tgz", + "integrity": "sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==", "dev": true, + "license": "MIT", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.2", - "engine.io-client": "~6.4.0", - "socket.io-parser": "~4.2.1" + "engine.io-client": "~6.5.2", + "socket.io-parser": "~4.2.4" }, "engines": { "node": ">=10.0.0" } }, "node_modules/socket.io-parser": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.2.tgz", - "integrity": "sha512-DJtziuKypFkMMHCm2uIshOYC7QaylbtzQwiMYDuCKy3OPkjLzu4B2vAhTlqipRHHzrI0NJeBAizTK7X+6m1jVw==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", "dev": true, + "license": "MIT", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1" @@ -19693,174 +15853,81 @@ "node": ">=10.0.0" } }, - "node_modules/sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==", - "dev": true, - "dependencies": { - "is-plain-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "node_modules/source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "deprecated": "See https://github.com/lydell/source-map-url#deprecated" - }, "node_modules/sparkles": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", - "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-2.1.0.tgz", + "integrity": "sha512-r7iW1bDw8R/cFifrD3JnQJX0K1jqT0kprL48BiBpLZLJPmAm34zsVBsK5lc7HirZYZqMW65dOXZgbAGt/I6frg==", + "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, "node_modules/spawn-error-forwarder": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz", "integrity": "sha512-gRjMgK5uFjbCvdibeGJuy3I5OYz6VLoVdsOJdA6wV0WlfQVLFueoqMxwwYD9RODdgb6oUIvlRlsyFSiQkMKu0g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "license": "Apache-2.0", "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" } }, "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "license": "CC-BY-3.0" }, "node_modules/spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "license": "MIT", "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" } }, "node_modules/spdx-license-ids": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", - "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==" - }, - "node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dependencies": { - "extend-shallow": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/split-string/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/split-string/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/split-string/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } + "version": "3.0.20", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz", + "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==", + "license": "CC0-1.0" }, "node_modules/split2": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", - "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-1.0.0.tgz", + "integrity": "sha512-NKywug4u4pX/AZBB1FCPzZ6/7O+Xhz1qMVbzTvvKvikjO99oPN87SkK08mEY9P63/5lWjK+wgOOgApnTg5r6qg==", "dev": true, - "engines": { - "node": ">= 10.x" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "node_modules/stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", - "engines": { - "node": "*" - } - }, - "node_modules/static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "license": "ISC", "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" + "through2": "~2.0.0" } }, "node_modules/statuses": { @@ -19868,6 +15935,7 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", "integrity": "sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -19877,26 +15945,33 @@ "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", "integrity": "sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==", "dev": true, + "license": "MIT", "dependencies": { "duplexer2": "~0.1.0", "readable-stream": "^2.0.2" } }, + "node_modules/stream-composer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-composer/-/stream-composer-1.0.2.tgz", + "integrity": "sha512-bnBselmwfX5K10AH6L4c8+S5lgZMWI7ZYrz2rvYjCPB2DIMC4Ig8OpxGpNJSxRZ58oti7y1IcNvjBAz9vW5m4w==", + "license": "MIT", + "dependencies": { + "streamx": "^2.13.2" + } + }, "node_modules/stream-exhaust": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", - "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==" - }, - "node_modules/stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", + "license": "MIT" }, "node_modules/stream-throttle": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz", "integrity": "sha512-889+B9vN9dq7/vLbGyuHeZ6/ctf5sNuGWsDy89uNxkFTAgzy0eK7+w5fL3KLNRTkLle7EgZGvHUphZW0Q26MnQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "commander": "^2.2.0", "limiter": "^1.0.5" @@ -19912,21 +15987,28 @@ "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", "dev": true, - "engines": { - "node": ">=0.10.0" + "license": "MIT" + }, + "node_modules/streamx": { + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.20.1.tgz", + "integrity": "sha512-uTa0mU6WUC65iUvzKH4X9hEdvSW7rbPxPtwfWiLMSj3qTdQbAiUboZTxauKfpFuGIGa1C2BYijZ7wgdUXICJhA==", + "license": "MIT", + "dependencies": { + "fast-fifo": "^1.3.2", + "queue-tick": "^1.0.1", + "text-decoder": "^1.1.0" + }, + "optionalDependencies": { + "bare-events": "^2.2.0" } }, "node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } @@ -19934,50 +16016,48 @@ "node_modules/string_decoder/node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" }, "node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=4" - } - }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "dev": true, - "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", - "dev": true, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", "dependencies": { - "ansi-regex": "^3.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/string.prototype.padend": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz", - "integrity": "sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.6.tgz", + "integrity": "sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -19987,13 +16067,15 @@ } }, "node_modules/string.prototype.trim": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", - "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -20003,26 +16085,31 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -20032,6 +16119,20 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -20044,6 +16145,7 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -20053,39 +16155,71 @@ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/strip-json-comments": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", - "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-mod": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.2.tgz", + "integrity": "sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==", + "license": "MIT" + }, + "node_modules/stylehacks": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-7.0.4.tgz", + "integrity": "sha512-i4zfNrGMt9SB4xRK9L83rlsFCgdGANfeDAYacO1pkqcE7cRHPdWHwnKZVz7WY17Veq/FvyYsRAU++Ga+qDFIww==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.3", + "postcss-selector-parser": "^6.1.2" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, "node_modules/subset-font": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/subset-font/-/subset-font-2.1.0.tgz", - "integrity": "sha512-4xV42NsGGBftUj2bR6cYrUkwtTWZRRg5ISUquTBztWfntyZhod24KI0IH4YBFD3U8luLXFv87uo+1U18kAlVzg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/subset-font/-/subset-font-2.3.0.tgz", + "integrity": "sha512-RcB2cu/14zYxGceTnnptlc8uTuxMkVYdyu3Kj+CA1nye6bI1s1cSSp+ApzpkMzl8iAmEUt+zAE0VHvhVpTO/Ig==", + "license": "BSD-3-Clause", "dependencies": { "fontverter": "^2.0.0", - "harfbuzzjs": "^0.3.2", + "harfbuzzjs": "^0.3.5", "lodash": "^4.17.21", "p-limit": "^3.1.0" } }, - "node_modules/subset-font/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "node_modules/super-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/super-regex/-/super-regex-1.0.0.tgz", + "integrity": "sha512-CY8u7DtbvucKuquCmOFEKhr9Besln7n9uN8eFbwcoGYWXOMW07u2o8njWaiXt11ylS3qoGF55pILjRmPlbodyg==", + "dev": true, + "license": "MIT", "dependencies": { - "yocto-queue": "^0.1.0" + "function-timeout": "^1.0.1", + "time-span": "^5.1.0" }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -20095,6 +16229,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -20103,16 +16238,20 @@ } }, "node_modules/supports-hyperlinks": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", - "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.1.0.tgz", + "integrity": "sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0", "supports-color": "^7.0.0" }, "engines": { - "node": ">=8" + "node": ">=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/supports-hyperlinks/node_modules/has-flag": { @@ -20120,6 +16259,7 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -20129,6 +16269,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -20140,6 +16281,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -20147,107 +16289,79 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/sver-compat": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", - "integrity": "sha512-aFTHfmjwizMNlNE6dsGmoAM4lHjL0CyiobWaFiXWSlD7cIxshW422Nb8KbXCmR6z+0ZEPY+daXJrDyh/vuwTyg==", - "dependencies": { - "es6-iterator": "^2.0.1", - "es6-symbol": "^3.1.1" + "node_modules/sver": { + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/sver/-/sver-1.8.4.tgz", + "integrity": "sha512-71o1zfzyawLfIWBOmw8brleKyvnbn73oVHNCsu51uPMz/HWiKkkXsI31JjHW5zqXEqnPYkIiHd8ZmL7FCimLEA==", + "license": "MIT", + "optionalDependencies": { + "semver": "^6.3.0" } }, "node_modules/svgo": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", - "integrity": "sha512-jT/g9FFMoe9lu2IT6HtAxTA7RR2XOrmcrmCtGnyB/+GQnV6ZjNn+KOHZbZ35yL81+1F/aB6OeEsJztzBQ2EEwA==", - "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz", + "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==", "dev": true, + "license": "MIT", "dependencies": { - "coa": "~1.0.1", - "colors": "~1.1.2", - "csso": "~2.3.1", - "js-yaml": "~3.7.0", - "mkdirp": "~0.5.1", - "sax": "~1.2.1", - "whet.extend": "~0.9.9" + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^5.1.0", + "css-tree": "^2.3.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.0.0" }, "bin": { "svgo": "bin/svgo" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/svgo/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/svgo/node_modules/esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + "node": ">=14.0.0" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" } }, - "node_modules/svgo/node_modules/js-yaml": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", - "integrity": "sha512-eIlkGty7HGmntbV6P/ZlAsoncFLGsNoM27lkTzS+oneY/EiNhj+geqD9ezg/ip+SW6Var0BJU2JtV0vEUZpWVQ==", + "node_modules/svgo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^2.6.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "license": "MIT", + "engines": { + "node": ">= 10" } }, - "node_modules/svgo/node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "node_modules/svgo/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, + "node_modules/teex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz", + "integrity": "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==", + "license": "MIT", "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" + "streamx": "^2.12.5" } }, "node_modules/temp-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", - "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", + "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=14.16" } }, "node_modules/tempy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.0.0.tgz", - "integrity": "sha512-B2I9X7+o2wOaW4r/CWMkpOO9mdiTRCxXNgob6iGvPmfPWgH/KyUD6Uy5crtWBxIBe3YrNZKR2lSzv1JJKWD4vA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.1.0.tgz", + "integrity": "sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==", "dev": true, + "license": "MIT", "dependencies": { "is-stream": "^3.0.0", - "temp-dir": "^2.0.0", + "temp-dir": "^3.0.0", "type-fest": "^2.12.2", "unique-string": "^3.0.0" }, @@ -20263,6 +16377,7 @@ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -20275,6 +16390,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=12.20" }, @@ -20282,275 +16398,135 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/text-extensions": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz", - "integrity": "sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node_modules/text-decoder": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.0.tgz", + "integrity": "sha512-n1yg1mOj9DNpk3NeZOx7T6jchTbyJS3i3cucbNN6FcdPriMZx7NsgrGpWWdWZZGxD7ES1XB+3uoqHMgOKaN+fg==", + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.6.4" } }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/textextensions": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-3.3.0.tgz", "integrity": "sha512-mk82dS8eRABNbeVJrEiN5/UMSCliINAuz8mkUwH4SwslkNP//gbEzlWNS5au0z5Dpx40SQxzqZevZkn+WYJ9Dw==", + "license": "MIT", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, - "node_modules/through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "dependencies": { - "readable-stream": "3" - } - }, - "node_modules/through2-filter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", - "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", - "dependencies": { - "through2": "~2.0.0", - "xtend": "~4.0.0" - } - }, - "node_modules/through2-filter/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/through2/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/time-stamp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/to-absolute-glob": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", - "integrity": "sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==", - "dependencies": { - "is-absolute": "^1.0.0", - "is-negated-glob": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "engines": { - "node": ">=4" - } - }, - "node_modules/to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-object-path/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" + "node": ">=8" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://bevry.me/fund" } }, - "node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "license": "MIT", "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" + "any-promise": "^1.0.0" } }, - "node_modules/to-regex/node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "license": "MIT", "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "thenify": ">= 3.1.0 < 4" }, "engines": { - "node": ">=0.10.0" + "node": ">=0.8" } }, - "node_modules/to-regex/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true, + "license": "MIT" }, - "node_modules/to-regex/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "license": "MIT", "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" } }, - "node_modules/to-regex/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "node_modules/time-span": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/time-span/-/time-span-5.1.0.tgz", + "integrity": "sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==", + "dev": true, + "license": "MIT", "dependencies": { - "kind-of": "^6.0.0" + "convert-hrtime": "^5.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/to-regex/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "license": "MIT", "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "os-tmpdir": "~1.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=0.6.0" } }, - "node_modules/to-regex/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/to-regex/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", "dependencies": { - "isobject": "^3.0.1" + "is-number": "^7.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" + "node": ">=8.0" } }, "node_modules/to-through": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", - "integrity": "sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-3.0.0.tgz", + "integrity": "sha512-y8MN937s/HVhEoBU1SxfHC+wxCHkV1a9gW8eAdTadYh/bGyesZIVcbjI+mSpFbSVwQici/XjBjuUyri1dnXwBw==", + "license": "MIT", "dependencies": { - "through2": "^2.0.3" + "streamx": "^2.12.5" }, "engines": { - "node": ">= 0.10" - } - }, - "node_modules/to-through/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "node": ">=10.13.0" } }, "node_modules/toidentifier": { @@ -20558,76 +16534,37 @@ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.6" } }, "node_modules/traverse": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", - "integrity": "sha512-kdf4JKs8lbARxWdp7RKdNzoJBhGUcIalSYibuGyHJbmk40pOysQ0+QPvlkCOICOivDWU2IJo2rkrxyTK2AH4fw==", - "dev": true - }, - "node_modules/ts-node": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.8.2.tgz", - "integrity": "sha512-LYdGnoGddf1D6v8REPtIH+5iq/gTDuZqv2/UJUU7tKjuEU8xVZorBM+buCGNjj+pGEud+sOoM4CX3/YzINpENA==", + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.8.tgz", + "integrity": "sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==", "dev": true, - "optional": true, - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" + "license": "MIT", + "engines": { + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "dev": true, + "license": "0BSD" }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -20636,10 +16573,11 @@ } }, "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -20647,42 +16585,99 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", + "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", "dev": true, + "license": "Apache-2.0", "optional": true, + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=14.17" } }, "node_modules/ua-parser-js": { - "version": "1.0.35", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.35.tgz", - "integrity": "sha512-fKnGuqmTBnIE+/KXSzCn4db8RTigUzw1AN0DmdU6hJovUTbYJKyqj+8Mt1c4VfRDnOVJnENmfYkIPZ946UrSAA==", + "version": "1.0.39", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.39.tgz", + "integrity": "sha512-k24RCVWlEcjkdOxYmVJgeD/0a1TiSpqLg+ZalVGV9lsnr4yqu0w7tX/x2xX6G4zpkgQnRf89lxuZ1wsbjXM8lw==", "dev": true, "funding": [ { @@ -20692,16 +16687,25 @@ { "type": "paypal", "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" } ], + "license": "MIT", + "bin": { + "ua-parser-js": "script/cli.js" + }, "engines": { "node": "*" } }, "node_modules/uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "license": "BSD-2-Clause", "bin": { "uglifyjs": "bin/uglifyjs" }, @@ -20713,6 +16717,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", @@ -20727,47 +16732,65 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/undertaker": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", - "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-2.0.0.tgz", + "integrity": "sha512-tO/bf30wBbTsJ7go80j0RzA2rcwX6o7XPBpeFcb+jzoeb4pfMM2zUeSDIkY1AWqeZabWxaQZ/h8N9t35QKDLPQ==", + "license": "MIT", "dependencies": { - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "bach": "^1.0.0", - "collection-map": "^1.0.0", - "es6-weak-map": "^2.0.1", - "fast-levenshtein": "^1.0.0", - "last-run": "^1.1.0", - "object.defaults": "^1.0.0", - "object.reduce": "^1.0.0", - "undertaker-registry": "^1.0.0" + "bach": "^2.0.1", + "fast-levenshtein": "^3.0.0", + "last-run": "^2.0.0", + "undertaker-registry": "^2.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">=10.13.0" } }, "node_modules/undertaker-registry": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", - "integrity": "sha512-UR1khWeAjugW3548EfQmL9Z7pGMlBgXteQpr1IZeZBtnkCJQJIJ1Scj0mb9wQaPvUZ9Q17XqW6TIaPchJkyfqw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-2.0.0.tgz", + "integrity": "sha512-+hhVICbnp+rlzZMgxXenpvTxpuvA67Bfgtt+O9WOE5jo7w/dyiF1VmoZVIHvP2EkUjsyKyTwYKlLhA+j47m1Ew==", + "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, "node_modules/undertaker/node_modules/fast-levenshtein": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", - "integrity": "sha512-Ia0sQNrMPXXkqVFt6w6M1n1oKo3NfKs+mvaV811Jwir7vAk9a6PVV9VPYf6X3BU97QiLEmuW3uXH9u87zDFfdw==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-3.0.0.tgz", + "integrity": "sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==", + "license": "MIT", + "dependencies": { + "fastest-levenshtein": "^1.0.7" + } + }, + "node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "license": "MIT" }, "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-emoji-modifier-base": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz", + "integrity": "sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==", + "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -20776,6 +16799,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "license": "MIT", "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" @@ -20785,9 +16809,10 @@ } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", + "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", + "license": "MIT", "engines": { "node": ">=4" } @@ -20796,43 +16821,22 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "license": "MIT", "engines": { "node": ">=4" } }, - "node_modules/union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, + "node_modules/unicorn-magic": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==", - "dev": true - }, - "node_modules/uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ==", - "dev": true - }, - "node_modules/unique-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", - "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", - "dependencies": { - "json-stable-stringify-without-jsonify": "^1.0.1", - "through2-filter": "^3.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/unique-string": { @@ -20840,6 +16844,7 @@ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", "dev": true, + "license": "MIT", "dependencies": { "crypto-random-string": "^4.0.0" }, @@ -20851,16 +16856,18 @@ } }, "node_modules/universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", - "dev": true + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz", + "integrity": "sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==", + "dev": true, + "license": "ISC" }, "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10.0.0" } @@ -20870,67 +16877,15 @@ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, - "node_modules/unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", - "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", - "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "engines": { - "node": ">=4", - "yarn": "*" - } - }, "node_modules/update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", "funding": [ { "type": "opencollective", @@ -20945,9 +16900,10 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.1.2", + "picocolors": "^1.0.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -20961,80 +16917,63 @@ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } }, - "node_modules/urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", - "deprecated": "Please see https://github.com/lydell/urix#deprecated" - }, "node_modules/url-join": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz", "integrity": "sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "node_modules/use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4.0" } }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true, - "optional": true - }, "node_modules/v8flags": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", - "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", - "dependencies": { - "homedir-polyfill": "^1.0.1" - }, + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-4.0.1.tgz", + "integrity": "sha512-fcRLaS4H/hrZk9hYwbdRM35D0U8IYMfEClhXxCivOojl+yTRAZH3Zy2sSy6qVCiGbV9YAtPssP6jaChqC9vPCg==", + "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "license": "Apache-2.0", "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" } }, "node_modules/value-or-function": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", - "integrity": "sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-4.0.0.tgz", + "integrity": "sha512-aeVK81SIuT6aMJfNo9Vte8Dw0/FZINGBV8BfCraGtqVxIeLAEhJyoWs8SmvRVmXfGss2PmmOwZCuBPbZR+IYWg==", + "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, "node_modules/vary": { @@ -21042,24 +16981,17 @@ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, - "node_modules/vendors": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", - "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/vinyl": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", + "dev": true, + "license": "MIT", "dependencies": { "clone": "^2.1.1", "clone-buffer": "^1.0.0", @@ -21072,74 +17004,175 @@ "node": ">= 0.10" } }, + "node_modules/vinyl-contents": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/vinyl-contents/-/vinyl-contents-2.0.0.tgz", + "integrity": "sha512-cHq6NnGyi2pZ7xwdHSW1v4Jfnho4TEGtxZHw01cmnc8+i7jgR6bRnED/LbrKan/Q7CvVLbnvA5OepnhbpjBZ5Q==", + "license": "MIT", + "dependencies": { + "bl": "^5.0.0", + "vinyl": "^3.0.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/vinyl-contents/node_modules/bl": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", + "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", + "license": "MIT", + "dependencies": { + "buffer": "^6.0.3", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/vinyl-contents/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/vinyl-contents/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/vinyl-contents/node_modules/vinyl": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-3.0.0.tgz", + "integrity": "sha512-rC2VRfAVVCGEgjnxHUnpIVh3AGuk62rP3tqVrn+yab0YH7UULisC085+NYH+mnqf3Wx4SpSi1RQMwudL89N03g==", + "license": "MIT", + "dependencies": { + "clone": "^2.1.2", + "clone-stats": "^1.0.0", + "remove-trailing-separator": "^1.1.0", + "replace-ext": "^2.0.0", + "teex": "^1.0.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/vinyl-fs": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", - "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-4.0.0.tgz", + "integrity": "sha512-7GbgBnYfaquMk3Qu9g22x000vbYkOex32930rBnc3qByw6HfMEAoELjCjoJv4HuEQxHAurT+nvMHm6MnJllFLw==", + "license": "MIT", "dependencies": { - "fs-mkdirp-stream": "^1.0.0", - "glob-stream": "^6.1.0", - "graceful-fs": "^4.0.0", + "fs-mkdirp-stream": "^2.0.1", + "glob-stream": "^8.0.0", + "graceful-fs": "^4.2.11", + "iconv-lite": "^0.6.3", "is-valid-glob": "^1.0.0", - "lazystream": "^1.0.0", - "lead": "^1.0.0", - "object.assign": "^4.0.4", - "pumpify": "^1.3.5", - "readable-stream": "^2.3.3", - "remove-bom-buffer": "^3.0.0", - "remove-bom-stream": "^1.2.0", - "resolve-options": "^1.1.0", - "through2": "^2.0.0", - "to-through": "^2.0.0", - "value-or-function": "^3.0.0", - "vinyl": "^2.0.0", - "vinyl-sourcemap": "^1.1.0" + "lead": "^4.0.0", + "normalize-path": "3.0.0", + "resolve-options": "^2.0.0", + "stream-composer": "^1.0.2", + "streamx": "^2.14.0", + "to-through": "^3.0.0", + "value-or-function": "^4.0.0", + "vinyl": "^3.0.0", + "vinyl-sourcemap": "^2.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">=10.13.0" } }, - "node_modules/vinyl-fs/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "node_modules/vinyl-fs/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/vinyl-fs/node_modules/vinyl": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-3.0.0.tgz", + "integrity": "sha512-rC2VRfAVVCGEgjnxHUnpIVh3AGuk62rP3tqVrn+yab0YH7UULisC085+NYH+mnqf3Wx4SpSi1RQMwudL89N03g==", + "license": "MIT", + "dependencies": { + "clone": "^2.1.2", + "clone-stats": "^1.0.0", + "remove-trailing-separator": "^1.1.0", + "replace-ext": "^2.0.0", + "teex": "^1.0.1" + }, + "engines": { + "node": ">=10.13.0" } }, "node_modules/vinyl-sourcemap": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", - "integrity": "sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA==", - "dependencies": { - "append-buffer": "^1.0.2", - "convert-source-map": "^1.5.0", - "graceful-fs": "^4.1.6", - "normalize-path": "^2.1.1", - "now-and-later": "^2.0.0", - "remove-bom-buffer": "^3.0.0", - "vinyl": "^2.0.0" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-2.0.0.tgz", + "integrity": "sha512-BAEvWxbBUXvlNoFQVFVHpybBbjW1r03WhohJzJDSfgrrK5xVYIDTan6xN14DlyImShgDRv2gl9qhM6irVMsV0Q==", + "license": "MIT", + "dependencies": { + "convert-source-map": "^2.0.0", + "graceful-fs": "^4.2.10", + "now-and-later": "^3.0.0", + "streamx": "^2.12.5", + "vinyl": "^3.0.0", + "vinyl-contents": "^2.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">=10.13.0" } }, - "node_modules/vinyl-sourcemap/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "node_modules/vinyl-sourcemap/node_modules/vinyl": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-3.0.0.tgz", + "integrity": "sha512-rC2VRfAVVCGEgjnxHUnpIVh3AGuk62rP3tqVrn+yab0YH7UULisC085+NYH+mnqf3Wx4SpSi1RQMwudL89N03g==", + "license": "MIT", "dependencies": { - "remove-trailing-separator": "^1.0.1" + "clone": "^2.1.2", + "clone-stats": "^1.0.0", + "remove-trailing-separator": "^1.1.0", + "replace-ext": "^2.0.0", + "teex": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=10.13.0" } }, "node_modules/vinyl-sourcemaps-apply": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", "integrity": "sha512-+oDh3KYZBoZC8hfocrbrxbLUeaYtQK7J5WU5Br9VqWqmCll3tFJqKp97GC9GmMsVIL0qnx2DgEDVxdo5EZ5sSw==", + "license": "ISC", "dependencies": { "source-map": "^0.5.1" } @@ -21148,30 +17181,32 @@ "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/vinyl/node_modules/clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", - "engines": { - "node": ">=0.8" - } - }, "node_modules/vinyl/node_modules/replace-ext": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", + "dev": true, + "license": "MIT", "engines": { "node": ">= 0.10" } }, + "node_modules/w3c-keyname": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", + "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==", + "license": "MIT" + }, "node_modules/wawoff2": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/wawoff2/-/wawoff2-2.0.1.tgz", "integrity": "sha512-r0CEmvpH63r4T15ebFqeOjGqU4+EgTx4I510NtK35EMciSdcTxCw3Byy3JnBonz7iyIFZ0AbVo0bbFpEVuhCYA==", + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -21180,20 +17215,21 @@ "woff2_decompress.js": "bin/woff2_decompress.js" } }, - "node_modules/whet.extend": { - "version": "0.9.9", - "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", - "integrity": "sha512-mmIPAft2vTgEILgPeZFqE/wWh24SEsR/k+N9fJ3Jxrz44iDFy9aemCxdksfURSHYFCLmvs/d/7Iso5XjPpNfrA==", + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "dev": true, - "engines": { - "node": ">=0.6.0" + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" } }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -21208,6 +17244,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "license": "MIT", "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -21219,124 +17256,170 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==" - }, "node_modules/which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "license": "MIT", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/woff2sfnt-sfnt2woff": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/woff2sfnt-sfnt2woff/-/woff2sfnt-sfnt2woff-1.0.0.tgz", + "integrity": "sha512-edK4COc1c1EpRfMqCZO1xJOvdUtM5dbVb9iz97rScvnTevqEB3GllnLWCmMVp1MfQBdF1DFg/11I0rSyAdS4qQ==", + "license": "MIT", + "dependencies": { + "pako": "^1.0.7" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/woff2sfnt-sfnt2woff": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/woff2sfnt-sfnt2woff/-/woff2sfnt-sfnt2woff-1.0.0.tgz", - "integrity": "sha512-edK4COc1c1EpRfMqCZO1xJOvdUtM5dbVb9iz97rScvnTevqEB3GllnLWCmMVp1MfQBdF1DFg/11I0rSyAdS4qQ==", + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", "dependencies": { - "pako": "^1.0.7" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", - "dev": true - }, - "node_modules/wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", + "node_modules/wrap-ansi-cjs/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "color-name": "~1.1.4" }, "engines": { - "node": ">=0.10.0" + "node": ">=7.0.0" } }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "engines": { - "node": ">=0.10.0" - } + "node_modules/wrap-ansi-cjs/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" }, - "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", "dependencies": { - "number-is-nan": "^1.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "node": ">=8" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=0.10.0" + "node": ">=7.0.0" } }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" }, "node_modules/ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -21360,269 +17443,91 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "license": "MIT", "engines": { "node": ">=0.4" } }, "node_modules/y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==" + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "engines": { + "node": ">=10" + } }, "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" }, "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "optional": true, + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz", + "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, "node_modules/yargs": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz", - "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==", - "dependencies": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^5.0.1" + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" } }, "node_modules/yargs-parser": { "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", "engines": { "node": ">=12" } }, - "node_modules/yargs/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yargs/node_modules/camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yargs/node_modules/find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", - "dependencies": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yargs/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" - }, - "node_modules/yargs/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yargs/node_modules/load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yargs/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/yargs/node_modules/parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", - "dependencies": { - "error-ex": "^1.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yargs/node_modules/path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", - "dependencies": { - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yargs/node_modules/path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", - "dependencies": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yargs/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yargs/node_modules/read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", - "dependencies": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yargs/node_modules/read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", - "dependencies": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yargs/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/yargs/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yargs/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yargs/node_modules/strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", - "dependencies": { - "is-utf8": "^0.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yargs/node_modules/yargs-parser": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz", - "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==", - "dependencies": { - "camelcase": "^3.0.0", - "object.assign": "^4.1.0" - } - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "optional": true, - "engines": { - "node": ">=6" - } - }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "license": "MIT", "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/yoctocolors": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.1.tgz", + "integrity": "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } } } diff --git a/package.json b/package.json index 9e13c149..6b598358 100644 --- a/package.json +++ b/package.json @@ -5,49 +5,55 @@ } }, "dependencies": { - "@babel/preset-env": "^7.22.20", - "@fontsource/inter": "5.0.3", - "@fontsource/rasa": "5.0.3", - "@hotwired/turbo": "^7.3.0", - "@rollup/plugin-babel": "^6.0.3", - "@rollup/plugin-commonjs": "^25.0.4", - "@rollup/plugin-json": "^6.0.0", - "@rollup/plugin-node-resolve": "^15.2.1", - "bulma": "0.9.4", - "bulma-checkradio": "2.1.3", - "bulma-switch": "2.0.4", + "@babel/preset-env": "^7.25.4", + "@fontsource/inter": "5.1.0", + "@fontsource/rasa": "5.1.0", + "@hotwired/turbo": "^8.0.5", + "@rollup/plugin-babel": "^6.0.4", + "@rollup/plugin-commonjs": "^26.0.1", + "@rollup/plugin-json": "^6.1.0", + "@rollup/plugin-node-resolve": "^15.2.3", + "bulma": "^1.0.2", + "bulma-checkradio": "^2.1.3", + "bulma-switch": "^2.0.4", "bulma-tooltip": "3.0.2", - "del": "7.0.0", + "codemirror": "^6.0.1", + "del": "7.1.0", "fontawesome-subset": "4.4.0", - "gulp": "4.0.2", - "gulp-autoprefixer": "8.0.0", + "git-cz": "^4.9.0", + "gulp": "5.0.0", + "gulp-autoprefixer": "9.0.0", "gulp-replace": "1.1.4", "gulp-sass": "5.1.0", "npm-run-all": "^4.1.5", - "rollup": "^3.29.2", - "sass": "^1.67.0", - "uglify-js": "^3.17.4" + "rollup": "^4.21.3", + "sass": "^1.78.0", + "uglify-js": "^3.19.3" }, "description": "A task scheduling tool.", "devDependencies": { - "@fortawesome/fontawesome-free": "6.4.0", - "@semantic-release/changelog": "6.0.3", - "@semantic-release/commit-analyzer": "^11.0.0", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "^9.10.0", + "@fortawesome/fontawesome-free": "6.6.0", + "@semantic-release/changelog": "^6.0.3", + "@semantic-release/commit-analyzer": "13.0.0", "@semantic-release/exec": "6.0.3", "@semantic-release/git": "10.0.1", - "@semantic-release/github": "^9.0.6", - "@semantic-release/npm": "^11.0.0", - "@semantic-release/release-notes-generator": "^12.0.0", - "browser-sync": "^2.29.1", + "@semantic-release/github": "^10.3.4", + "@semantic-release/npm": "^12.0.1", + "@semantic-release/release-notes-generator": "14.0.0", + "browser-sync": "^3.0.2", + "cssnano": "^7.0.6", "cz-conventional-changelog": "3.3.0", - "eslint": "^8.49.0", + "eslint": "^9.10.0", + "globals": "^15.9.0", "gulp-concat": "2.6.1", - "gulp-cssnano": "2.1.3", - "gulp-purgecss": "5.0.0", + "gulp-postcss": "10.0.0", + "gulp-purgecss": "6.0.0", "gulp-rename": "2.0.0", "gulp-uglify": "3.0.2", - "prettier": "^3.0.3", - "semantic-release": "^22.0.0" + "prettier": "^3.3.3", + "semantic-release": "^24.0.0" }, "homepage": "https://atlas-hub.atlas.bi", "license": "AGPL-3.0-or-later", @@ -80,5 +86,6 @@ "test:lint": "poetry run tox -e lint", "test:prettier": "prettier --check --config .prettierrc \"web/**/*.{ts,css,less,scss,js,json,md,yaml,html}\"" }, - "version": "2.12.3" + "type": "module", + "version": "3.0.0" } diff --git a/poetry.lock b/poetry.lock index dd2c5a28..11003d8e 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,32 +1,28 @@ -# This file is automatically @generated by Poetry and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. [[package]] name = "alembic" -version = "1.12.0" +version = "1.13.2" description = "A database migration tool for SQLAlchemy." -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "alembic-1.12.0-py3-none-any.whl", hash = "sha256:03226222f1cf943deee6c85d9464261a6c710cd19b4fe867a3ad1f25afda610f"}, - {file = "alembic-1.12.0.tar.gz", hash = "sha256:8e7645c32e4f200675e69f0745415335eb59a3663f5feb487abfa0b30c45888b"}, + {file = "alembic-1.13.2-py3-none-any.whl", hash = "sha256:6b8733129a6224a9a711e17c99b08462dbf7cc9670ba8f2e2ae9af860ceb1953"}, + {file = "alembic-1.13.2.tar.gz", hash = "sha256:1ff0ae32975f4fd96028c39ed9bb3c867fe3af956bd7bb37343b54c9fe7445ef"}, ] [package.dependencies] -importlib-metadata = {version = "*", markers = "python_version < \"3.9\""} -importlib-resources = {version = "*", markers = "python_version < \"3.9\""} Mako = "*" SQLAlchemy = ">=1.3.0" typing-extensions = ">=4" [package.extras] -tz = ["python-dateutil"] +tz = ["backports.zoneinfo"] [[package]] name = "apscheduler" version = "3.10.4" description = "In-process task scheduler with Cron-like capabilities" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -37,7 +33,7 @@ files = [ [package.dependencies] pytz = "*" six = ">=1.4.0" -tzlocal = ">=2.0,<3.0.0 || >=4.0.0" +tzlocal = ">=2.0,<3.dev0 || >=4.dev0" [package.extras] doc = ["sphinx", "sphinx-rtd-theme"] @@ -55,7 +51,6 @@ zookeeper = ["kazoo"] name = "async-timeout" version = "4.0.3" description = "Timeout context manager for asyncio programs" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -65,18 +60,17 @@ files = [ [[package]] name = "azure-core" -version = "1.29.4" +version = "1.31.0" description = "Microsoft Azure Core Library for Python" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "azure-core-1.29.4.tar.gz", hash = "sha256:500b3aa9bf2e90c5ccc88bb105d056114ca0ce7d0ce73afb8bc4d714b2fc7568"}, - {file = "azure_core-1.29.4-py3-none-any.whl", hash = "sha256:b03261bcba22c0b9290faf9999cedd23e849ed2577feee90515694cea6bc74bf"}, + {file = "azure_core-1.31.0-py3-none-any.whl", hash = "sha256:22954de3777e0250029360ef31d80448ef1be13b80a459bff80ba7073379e2cd"}, + {file = "azure_core-1.31.0.tar.gz", hash = "sha256:656a0dd61e1869b1506b7c6a3b31d62f15984b1a573d6326f6aa2f3e4123284b"}, ] [package.dependencies] -requests = ">=2.18.4" +requests = ">=2.21.0" six = ">=1.11.0" typing-extensions = ">=4.6.0" @@ -85,77 +79,52 @@ aio = ["aiohttp (>=3.0)"] [[package]] name = "azure-devops" -version = "7.1.0b3" +version = "7.1.0b4" description = "Python wrapper around the Azure DevOps 7.x APIs" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "azure-devops-7.1.0b3.tar.gz", hash = "sha256:644e34d110f016e65c7b36647274c90c20223bf2ecca9be8806aa5a4c754b4e7"}, - {file = "azure_devops-7.1.0b3-py3-none-any.whl", hash = "sha256:ef082a59e79e7f5d979481c7737093cb54618f362b216292fcce7f26d9c452c3"}, + {file = "azure-devops-7.1.0b4.tar.gz", hash = "sha256:f04ba939112579f3d530cfecc044a74ef9e9339ba23c9ee1ece248241f07ff85"}, + {file = "azure_devops-7.1.0b4-py3-none-any.whl", hash = "sha256:f827e9fbc7c77bc6f2aaee46e5717514e9fe7d676c87624eccd0ca640b54f122"}, ] [package.dependencies] msrest = ">=0.7.1,<0.8.0" -[[package]] -name = "backports-zoneinfo" -version = "0.2.1" -description = "Backport of the standard library zoneinfo module" -category = "main" -optional = false -python-versions = ">=3.6" -files = [ - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:da6013fd84a690242c310d77ddb8441a559e9cb3d3d59ebac9aca1a57b2e18bc"}, - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:89a48c0d158a3cc3f654da4c2de1ceba85263fafb861b98b59040a5086259722"}, - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:1c5742112073a563c81f786e77514969acb58649bcdf6cdf0b4ed31a348d4546"}, - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-win32.whl", hash = "sha256:e8236383a20872c0cdf5a62b554b27538db7fa1bbec52429d8d106effbaeca08"}, - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-win_amd64.whl", hash = "sha256:8439c030a11780786a2002261569bdf362264f605dfa4d65090b64b05c9f79a7"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:f04e857b59d9d1ccc39ce2da1021d196e47234873820cbeaad210724b1ee28ac"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:17746bd546106fa389c51dbea67c8b7c8f0d14b5526a579ca6ccf5ed72c526cf"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:5c144945a7752ca544b4b78c8c41544cdfaf9786f25fe5ffb10e838e19a27570"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-win32.whl", hash = "sha256:e55b384612d93be96506932a786bbcde5a2db7a9e6a4bb4bffe8b733f5b9036b"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a76b38c52400b762e48131494ba26be363491ac4f9a04c1b7e92483d169f6582"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:8961c0f32cd0336fb8e8ead11a1f8cd99ec07145ec2931122faaac1c8f7fd987"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:e81b76cace8eda1fca50e345242ba977f9be6ae3945af8d46326d776b4cf78d1"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7b0a64cda4145548fed9efc10322770f929b944ce5cee6c0dfe0c87bf4c0c8c9"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-win32.whl", hash = "sha256:1b13e654a55cd45672cb54ed12148cd33628f672548f373963b0bff67b217328"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:4a0f800587060bf8880f954dbef70de6c11bbe59c673c3d818921f042f9954a6"}, - {file = "backports.zoneinfo-0.2.1.tar.gz", hash = "sha256:fadbfe37f74051d024037f223b8e001611eac868b5c5b06144ef4d8b799862f2"}, -] - -[package.extras] -tzdata = ["tzdata"] - [[package]] name = "bcrypt" -version = "4.0.1" +version = "4.2.0" description = "Modern password hashing for your software and your servers" -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "bcrypt-4.0.1-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:b1023030aec778185a6c16cf70f359cbb6e0c289fd564a7cfa29e727a1c38f8f"}, - {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:08d2947c490093a11416df18043c27abe3921558d2c03e2076ccb28a116cb6d0"}, - {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0eaa47d4661c326bfc9d08d16debbc4edf78778e6aaba29c1bc7ce67214d4410"}, - {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae88eca3024bb34bb3430f964beab71226e761f51b912de5133470b649d82344"}, - {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:a522427293d77e1c29e303fc282e2d71864579527a04ddcfda6d4f8396c6c36a"}, - {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:fbdaec13c5105f0c4e5c52614d04f0bca5f5af007910daa8b6b12095edaa67b3"}, - {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:ca3204d00d3cb2dfed07f2d74a25f12fc12f73e606fcaa6975d1f7ae69cacbb2"}, - {file = "bcrypt-4.0.1-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:089098effa1bc35dc055366740a067a2fc76987e8ec75349eb9484061c54f535"}, - {file = "bcrypt-4.0.1-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:e9a51bbfe7e9802b5f3508687758b564069ba937748ad7b9e890086290d2f79e"}, - {file = "bcrypt-4.0.1-cp36-abi3-win32.whl", hash = "sha256:2caffdae059e06ac23fce178d31b4a702f2a3264c20bfb5ff541b338194d8fab"}, - {file = "bcrypt-4.0.1-cp36-abi3-win_amd64.whl", hash = "sha256:8a68f4341daf7522fe8d73874de8906f3a339048ba406be6ddc1b3ccb16fc0d9"}, - {file = "bcrypt-4.0.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf4fa8b2ca74381bb5442c089350f09a3f17797829d958fad058d6e44d9eb83c"}, - {file = "bcrypt-4.0.1-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:67a97e1c405b24f19d08890e7ae0c4f7ce1e56a712a016746c8b2d7732d65d4b"}, - {file = "bcrypt-4.0.1-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b3b85202d95dd568efcb35b53936c5e3b3600c7cdcc6115ba461df3a8e89f38d"}, - {file = "bcrypt-4.0.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cbb03eec97496166b704ed663a53680ab57c5084b2fc98ef23291987b525cb7d"}, - {file = "bcrypt-4.0.1-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:5ad4d32a28b80c5fa6671ccfb43676e8c1cc232887759d1cd7b6f56ea4355215"}, - {file = "bcrypt-4.0.1-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b57adba8a1444faf784394de3436233728a1ecaeb6e07e8c22c8848f179b893c"}, - {file = "bcrypt-4.0.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:705b2cea8a9ed3d55b4491887ceadb0106acf7c6387699fca771af56b1cdeeda"}, - {file = "bcrypt-4.0.1-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:2b3ac11cf45161628f1f3733263e63194f22664bf4d0c0f3ab34099c02134665"}, - {file = "bcrypt-4.0.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3100851841186c25f127731b9fa11909ab7b1df6fc4b9f8353f4f1fd952fbf71"}, - {file = "bcrypt-4.0.1.tar.gz", hash = "sha256:27d375903ac8261cfe4047f6709d16f7d18d39b1ec92aaf72af989552a650ebd"}, + {file = "bcrypt-4.2.0-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:096a15d26ed6ce37a14c1ac1e48119660f21b24cba457f160a4b830f3fe6b5cb"}, + {file = "bcrypt-4.2.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c02d944ca89d9b1922ceb8a46460dd17df1ba37ab66feac4870f6862a1533c00"}, + {file = "bcrypt-4.2.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d84cf6d877918620b687b8fd1bf7781d11e8a0998f576c7aa939776b512b98d"}, + {file = "bcrypt-4.2.0-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:1bb429fedbe0249465cdd85a58e8376f31bb315e484f16e68ca4c786dcc04291"}, + {file = "bcrypt-4.2.0-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:655ea221910bcac76ea08aaa76df427ef8625f92e55a8ee44fbf7753dbabb328"}, + {file = "bcrypt-4.2.0-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:1ee38e858bf5d0287c39b7a1fc59eec64bbf880c7d504d3a06a96c16e14058e7"}, + {file = "bcrypt-4.2.0-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:0da52759f7f30e83f1e30a888d9163a81353ef224d82dc58eb5bb52efcabc399"}, + {file = "bcrypt-4.2.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:3698393a1b1f1fd5714524193849d0c6d524d33523acca37cd28f02899285060"}, + {file = "bcrypt-4.2.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:762a2c5fb35f89606a9fde5e51392dad0cd1ab7ae64149a8b935fe8d79dd5ed7"}, + {file = "bcrypt-4.2.0-cp37-abi3-win32.whl", hash = "sha256:5a1e8aa9b28ae28020a3ac4b053117fb51c57a010b9f969603ed885f23841458"}, + {file = "bcrypt-4.2.0-cp37-abi3-win_amd64.whl", hash = "sha256:8f6ede91359e5df88d1f5c1ef47428a4420136f3ce97763e31b86dd8280fbdf5"}, + {file = "bcrypt-4.2.0-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:c52aac18ea1f4a4f65963ea4f9530c306b56ccd0c6f8c8da0c06976e34a6e841"}, + {file = "bcrypt-4.2.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3bbbfb2734f0e4f37c5136130405332640a1e46e6b23e000eeff2ba8d005da68"}, + {file = "bcrypt-4.2.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3413bd60460f76097ee2e0a493ccebe4a7601918219c02f503984f0a7ee0aebe"}, + {file = "bcrypt-4.2.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:8d7bb9c42801035e61c109c345a28ed7e84426ae4865511eb82e913df18f58c2"}, + {file = "bcrypt-4.2.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3d3a6d28cb2305b43feac298774b997e372e56c7c7afd90a12b3dc49b189151c"}, + {file = "bcrypt-4.2.0-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:9c1c4ad86351339c5f320ca372dfba6cb6beb25e8efc659bedd918d921956bae"}, + {file = "bcrypt-4.2.0-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:27fe0f57bb5573104b5a6de5e4153c60814c711b29364c10a75a54bb6d7ff48d"}, + {file = "bcrypt-4.2.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:8ac68872c82f1add6a20bd489870c71b00ebacd2e9134a8aa3f98a0052ab4b0e"}, + {file = "bcrypt-4.2.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:cb2a8ec2bc07d3553ccebf0746bbf3d19426d1c6d1adbd4fa48925f66af7b9e8"}, + {file = "bcrypt-4.2.0-cp39-abi3-win32.whl", hash = "sha256:77800b7147c9dc905db1cba26abe31e504d8247ac73580b4aa179f98e6608f34"}, + {file = "bcrypt-4.2.0-cp39-abi3-win_amd64.whl", hash = "sha256:61ed14326ee023917ecd093ee6ef422a72f3aec6f07e21ea5f10622b735538a9"}, + {file = "bcrypt-4.2.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:39e1d30c7233cfc54f5c3f2c825156fe044efdd3e0b9d309512cc514a263ec2a"}, + {file = "bcrypt-4.2.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f4f4acf526fcd1c34e7ce851147deedd4e26e6402369304220250598b26448db"}, + {file = "bcrypt-4.2.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:1ff39b78a52cf03fdf902635e4c81e544714861ba3f0efc56558979dd4f09170"}, + {file = "bcrypt-4.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:373db9abe198e8e2c70d12b479464e0d5092cc122b20ec504097b5f2297ed184"}, + {file = "bcrypt-4.2.0.tar.gz", hash = "sha256:cf69eaf5185fd58f268f805b505ce31f9b9fc2d64b376642164e9244540c1221"}, ] [package.extras] @@ -164,53 +133,54 @@ typecheck = ["mypy"] [[package]] name = "beautifulsoup4" -version = "4.12.2" +version = "4.12.3" description = "Screen-scraping library" -category = "main" optional = false python-versions = ">=3.6.0" files = [ - {file = "beautifulsoup4-4.12.2-py3-none-any.whl", hash = "sha256:bd2520ca0d9d7d12694a53d44ac482d181b4ec1888909b035a3dbf40d0f57d4a"}, - {file = "beautifulsoup4-4.12.2.tar.gz", hash = "sha256:492bbc69dca35d12daac71c4db1bfff0c876c00ef4a2ffacce226d4638eb72da"}, + {file = "beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed"}, + {file = "beautifulsoup4-4.12.3.tar.gz", hash = "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051"}, ] [package.dependencies] soupsieve = ">1.2" [package.extras] +cchardet = ["cchardet"] +chardet = ["chardet"] +charset-normalizer = ["charset-normalizer"] html5lib = ["html5lib"] lxml = ["lxml"] [[package]] name = "black" -version = "23.9.1" +version = "24.8.0" description = "The uncompromising code formatter." -category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "black-23.9.1-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:d6bc09188020c9ac2555a498949401ab35bb6bf76d4e0f8ee251694664df6301"}, - {file = "black-23.9.1-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:13ef033794029b85dfea8032c9d3b92b42b526f1ff4bf13b2182ce4e917f5100"}, - {file = "black-23.9.1-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:75a2dc41b183d4872d3a500d2b9c9016e67ed95738a3624f4751a0cb4818fe71"}, - {file = "black-23.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13a2e4a93bb8ca74a749b6974925c27219bb3df4d42fc45e948a5d9feb5122b7"}, - {file = "black-23.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:adc3e4442eef57f99b5590b245a328aad19c99552e0bdc7f0b04db6656debd80"}, - {file = "black-23.9.1-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:8431445bf62d2a914b541da7ab3e2b4f3bc052d2ccbf157ebad18ea126efb91f"}, - {file = "black-23.9.1-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:8fc1ddcf83f996247505db6b715294eba56ea9372e107fd54963c7553f2b6dfe"}, - {file = "black-23.9.1-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:7d30ec46de88091e4316b17ae58bbbfc12b2de05e069030f6b747dfc649ad186"}, - {file = "black-23.9.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:031e8c69f3d3b09e1aa471a926a1eeb0b9071f80b17689a655f7885ac9325a6f"}, - {file = "black-23.9.1-cp311-cp311-win_amd64.whl", hash = "sha256:538efb451cd50f43aba394e9ec7ad55a37598faae3348d723b59ea8e91616300"}, - {file = "black-23.9.1-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:638619a559280de0c2aa4d76f504891c9860bb8fa214267358f0a20f27c12948"}, - {file = "black-23.9.1-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:a732b82747235e0542c03bf352c126052c0fbc458d8a239a94701175b17d4855"}, - {file = "black-23.9.1-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:cf3a4d00e4cdb6734b64bf23cd4341421e8953615cba6b3670453737a72ec204"}, - {file = "black-23.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf99f3de8b3273a8317681d8194ea222f10e0133a24a7548c73ce44ea1679377"}, - {file = "black-23.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:14f04c990259576acd093871e7e9b14918eb28f1866f91968ff5524293f9c573"}, - {file = "black-23.9.1-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:c619f063c2d68f19b2d7270f4cf3192cb81c9ec5bc5ba02df91471d0b88c4c5c"}, - {file = "black-23.9.1-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:6a3b50e4b93f43b34a9d3ef00d9b6728b4a722c997c99ab09102fd5efdb88325"}, - {file = "black-23.9.1-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:c46767e8df1b7beefb0899c4a95fb43058fa8500b6db144f4ff3ca38eb2f6393"}, - {file = "black-23.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50254ebfa56aa46a9fdd5d651f9637485068a1adf42270148cd101cdf56e0ad9"}, - {file = "black-23.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:403397c033adbc45c2bd41747da1f7fc7eaa44efbee256b53842470d4ac5a70f"}, - {file = "black-23.9.1-py3-none-any.whl", hash = "sha256:6ccd59584cc834b6d127628713e4b6b968e5f79572da66284532525a042549f9"}, - {file = "black-23.9.1.tar.gz", hash = "sha256:24b6b3ff5c6d9ea08a8888f6977eae858e1f340d7260cf56d70a49823236b62d"}, + {file = "black-24.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:09cdeb74d494ec023ded657f7092ba518e8cf78fa8386155e4a03fdcc44679e6"}, + {file = "black-24.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:81c6742da39f33b08e791da38410f32e27d632260e599df7245cccee2064afeb"}, + {file = "black-24.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:707a1ca89221bc8a1a64fb5e15ef39cd755633daa672a9db7498d1c19de66a42"}, + {file = "black-24.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:d6417535d99c37cee4091a2f24eb2b6d5ec42b144d50f1f2e436d9fe1916fe1a"}, + {file = "black-24.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fb6e2c0b86bbd43dee042e48059c9ad7830abd5c94b0bc518c0eeec57c3eddc1"}, + {file = "black-24.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:837fd281f1908d0076844bc2b801ad2d369c78c45cf800cad7b61686051041af"}, + {file = "black-24.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:62e8730977f0b77998029da7971fa896ceefa2c4c4933fcd593fa599ecbf97a4"}, + {file = "black-24.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:72901b4913cbac8972ad911dc4098d5753704d1f3c56e44ae8dce99eecb0e3af"}, + {file = "black-24.8.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7c046c1d1eeb7aea9335da62472481d3bbf3fd986e093cffd35f4385c94ae368"}, + {file = "black-24.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:649f6d84ccbae73ab767e206772cc2d7a393a001070a4c814a546afd0d423aed"}, + {file = "black-24.8.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2b59b250fdba5f9a9cd9d0ece6e6d993d91ce877d121d161e4698af3eb9c1018"}, + {file = "black-24.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:6e55d30d44bed36593c3163b9bc63bf58b3b30e4611e4d88a0c3c239930ed5b2"}, + {file = "black-24.8.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:505289f17ceda596658ae81b61ebbe2d9b25aa78067035184ed0a9d855d18afd"}, + {file = "black-24.8.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b19c9ad992c7883ad84c9b22aaa73562a16b819c1d8db7a1a1a49fb7ec13c7d2"}, + {file = "black-24.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1f13f7f386f86f8121d76599114bb8c17b69d962137fc70efe56137727c7047e"}, + {file = "black-24.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:f490dbd59680d809ca31efdae20e634f3fae27fba3ce0ba3208333b713bc3920"}, + {file = "black-24.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:eab4dd44ce80dea27dc69db40dab62d4ca96112f87996bca68cd75639aeb2e4c"}, + {file = "black-24.8.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3c4285573d4897a7610054af5a890bde7c65cb466040c5f0c8b732812d7f0e5e"}, + {file = "black-24.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e84e33b37be070ba135176c123ae52a51f82306def9f7d063ee302ecab2cf47"}, + {file = "black-24.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:73bbf84ed136e45d451a260c6b73ed674652f90a2b3211d6a35e78054563a9bb"}, + {file = "black-24.8.0-py3-none-any.whl", hash = "sha256:972085c618ee94f402da1af548a4f218c754ea7e5dc70acb168bfaca4c2542ed"}, + {file = "black-24.8.0.tar.gz", hash = "sha256:2500945420b6784c38b9ee885af039f5e7471ef284ab03fa35ecdde4688cd83f"}, ] [package.dependencies] @@ -224,27 +194,25 @@ typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""} [package.extras] colorama = ["colorama (>=0.4.3)"] -d = ["aiohttp (>=3.7.4)"] +d = ["aiohttp (>=3.7.4)", "aiohttp (>=3.7.4,!=3.9.0)"] jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] uvloop = ["uvloop (>=0.15.2)"] [[package]] name = "blinker" -version = "1.6.2" +version = "1.8.2" description = "Fast, simple object-to-object and broadcast signaling" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "blinker-1.6.2-py3-none-any.whl", hash = "sha256:c3d739772abb7bc2860abf5f2ec284223d9ad5c76da018234f6f50d6f31ab1f0"}, - {file = "blinker-1.6.2.tar.gz", hash = "sha256:4afd3de66ef3a9f8067559fb7a1cbe555c17dcbe15971b05d1b625c3e7abe213"}, + {file = "blinker-1.8.2-py3-none-any.whl", hash = "sha256:1779309f71bf239144b9399d06ae925637cf6634cf6bd131104184531bf67c01"}, + {file = "blinker-1.8.2.tar.gz", hash = "sha256:8f77b09d3bf7c795e969e9486f39c2c5e9c39d4ee07424be2bc594ece9642d83"}, ] [[package]] name = "brotli" version = "1.1.0" description = "Python bindings for the Brotli compression library" -category = "main" optional = false python-versions = "*" files = [ @@ -337,7 +305,6 @@ files = [ name = "brotlicffi" version = "1.1.0.0" description = "Python CFFI bindings to the Brotli library" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -375,13 +342,13 @@ cffi = ">=1.0.0" [[package]] name = "bs4" -version = "0.0.1" -description = "Dummy package for Beautiful Soup" -category = "main" +version = "0.0.2" +description = "Dummy package for Beautiful Soup (beautifulsoup4)" optional = false python-versions = "*" files = [ - {file = "bs4-0.0.1.tar.gz", hash = "sha256:36ecea1fd7cc5c0c6e4a1ff075df26d50da647b75376626cc186e2212886dd3a"}, + {file = "bs4-0.0.2-py2.py3-none-any.whl", hash = "sha256:abf8742c0805ef7f662dce4b51cca104cffe52b835238afc169142ab9b3fbccc"}, + {file = "bs4-0.0.2.tar.gz", hash = "sha256:a48685c58f50fe127722417bae83fe6badf500d54b55f7e39ffe43b798653925"}, ] [package.dependencies] @@ -391,7 +358,6 @@ beautifulsoup4 = "*" name = "cachelib" version = "0.9.0" description = "A collection of cache libraries in the same API interface." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -401,100 +367,100 @@ files = [ [[package]] name = "cachetools" -version = "5.3.1" +version = "5.5.0" description = "Extensible memoizing collections and decorators" -category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "cachetools-5.3.1-py3-none-any.whl", hash = "sha256:95ef631eeaea14ba2e36f06437f36463aac3a096799e876ee55e5cdccb102590"}, - {file = "cachetools-5.3.1.tar.gz", hash = "sha256:dce83f2d9b4e1f732a8cd44af8e8fab2dbe46201467fc98b3ef8f269092bf62b"}, + {file = "cachetools-5.5.0-py3-none-any.whl", hash = "sha256:02134e8439cdc2ffb62023ce1debca2944c3f289d66bb17ead3ab3dede74b292"}, + {file = "cachetools-5.5.0.tar.gz", hash = "sha256:2cc24fb4cbe39633fb7badd9db9ca6295d766d9c2995f245725a46715d050f2a"}, ] [[package]] name = "certifi" -version = "2023.7.22" +version = "2024.8.30" description = "Python package for providing Mozilla's CA Bundle." -category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2023.7.22-py3-none-any.whl", hash = "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"}, - {file = "certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082"}, + {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, + {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, ] [[package]] name = "cffi" -version = "1.15.1" +version = "1.17.1" description = "Foreign Function Interface for Python calling C code." -category = "main" optional = false -python-versions = "*" +python-versions = ">=3.8" files = [ - {file = "cffi-1.15.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2"}, - {file = "cffi-1.15.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2"}, - {file = "cffi-1.15.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914"}, - {file = "cffi-1.15.1-cp27-cp27m-win32.whl", hash = "sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3"}, - {file = "cffi-1.15.1-cp27-cp27m-win_amd64.whl", hash = "sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e"}, - {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162"}, - {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b"}, - {file = "cffi-1.15.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21"}, - {file = "cffi-1.15.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4"}, - {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01"}, - {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e"}, - {file = "cffi-1.15.1-cp310-cp310-win32.whl", hash = "sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2"}, - {file = "cffi-1.15.1-cp310-cp310-win_amd64.whl", hash = "sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d"}, - {file = "cffi-1.15.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac"}, - {file = "cffi-1.15.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c"}, - {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef"}, - {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8"}, - {file = "cffi-1.15.1-cp311-cp311-win32.whl", hash = "sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d"}, - {file = "cffi-1.15.1-cp311-cp311-win_amd64.whl", hash = "sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104"}, - {file = "cffi-1.15.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e"}, - {file = "cffi-1.15.1-cp36-cp36m-win32.whl", hash = "sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf"}, - {file = "cffi-1.15.1-cp36-cp36m-win_amd64.whl", hash = "sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497"}, - {file = "cffi-1.15.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426"}, - {file = "cffi-1.15.1-cp37-cp37m-win32.whl", hash = "sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9"}, - {file = "cffi-1.15.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045"}, - {file = "cffi-1.15.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192"}, - {file = "cffi-1.15.1-cp38-cp38-win32.whl", hash = "sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314"}, - {file = "cffi-1.15.1-cp38-cp38-win_amd64.whl", hash = "sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5"}, - {file = "cffi-1.15.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585"}, - {file = "cffi-1.15.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27"}, - {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76"}, - {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3"}, - {file = "cffi-1.15.1-cp39-cp39-win32.whl", hash = "sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee"}, - {file = "cffi-1.15.1-cp39-cp39-win_amd64.whl", hash = "sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c"}, - {file = "cffi-1.15.1.tar.gz", hash = "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9"}, + {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, + {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, + {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, + {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, + {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, + {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, + {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, + {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, + {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, + {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, + {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, + {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, + {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, + {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, + {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, + {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, ] [package.dependencies] @@ -504,7 +470,6 @@ pycparser = "*" name = "cfgv" version = "3.4.0" description = "Validate configuration and produce human readable error messages." -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -516,7 +481,6 @@ files = [ name = "chardet" version = "5.2.0" description = "Universal encoding detector for Python 3" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -526,94 +490,107 @@ files = [ [[package]] name = "charset-normalizer" -version = "3.2.0" +version = "3.3.2" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -category = "main" optional = false python-versions = ">=3.7.0" files = [ - {file = "charset-normalizer-3.2.0.tar.gz", hash = "sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-win32.whl", hash = "sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-win32.whl", hash = "sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-win32.whl", hash = "sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-win32.whl", hash = "sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-win32.whl", hash = "sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80"}, - {file = "charset_normalizer-3.2.0-py3-none-any.whl", hash = "sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6"}, + {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, + {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, ] [[package]] name = "click" version = "8.1.7" description = "Composable command line interface toolkit" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -628,7 +605,6 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -638,64 +614,83 @@ files = [ [[package]] name = "coverage" -version = "7.3.1" +version = "7.6.1" description = "Code coverage measurement for Python" -category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "coverage-7.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cd0f7429ecfd1ff597389907045ff209c8fdb5b013d38cfa7c60728cb484b6e3"}, - {file = "coverage-7.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:966f10df9b2b2115da87f50f6a248e313c72a668248be1b9060ce935c871f276"}, - {file = "coverage-7.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0575c37e207bb9b98b6cf72fdaaa18ac909fb3d153083400c2d48e2e6d28bd8e"}, - {file = "coverage-7.3.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:245c5a99254e83875c7fed8b8b2536f040997a9b76ac4c1da5bff398c06e860f"}, - {file = "coverage-7.3.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c96dd7798d83b960afc6c1feb9e5af537fc4908852ef025600374ff1a017392"}, - {file = "coverage-7.3.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:de30c1aa80f30af0f6b2058a91505ea6e36d6535d437520067f525f7df123887"}, - {file = "coverage-7.3.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:50dd1e2dd13dbbd856ffef69196781edff26c800a74f070d3b3e3389cab2600d"}, - {file = "coverage-7.3.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b9c0c19f70d30219113b18fe07e372b244fb2a773d4afde29d5a2f7930765136"}, - {file = "coverage-7.3.1-cp310-cp310-win32.whl", hash = "sha256:770f143980cc16eb601ccfd571846e89a5fe4c03b4193f2e485268f224ab602f"}, - {file = "coverage-7.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:cdd088c00c39a27cfa5329349cc763a48761fdc785879220d54eb785c8a38520"}, - {file = "coverage-7.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:74bb470399dc1989b535cb41f5ca7ab2af561e40def22d7e188e0a445e7639e3"}, - {file = "coverage-7.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:025ded371f1ca280c035d91b43252adbb04d2aea4c7105252d3cbc227f03b375"}, - {file = "coverage-7.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a6191b3a6ad3e09b6cfd75b45c6aeeffe7e3b0ad46b268345d159b8df8d835f9"}, - {file = "coverage-7.3.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7eb0b188f30e41ddd659a529e385470aa6782f3b412f860ce22b2491c89b8593"}, - {file = "coverage-7.3.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75c8f0df9dfd8ff745bccff75867d63ef336e57cc22b2908ee725cc552689ec8"}, - {file = "coverage-7.3.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7eb3cd48d54b9bd0e73026dedce44773214064be93611deab0b6a43158c3d5a0"}, - {file = "coverage-7.3.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:ac3c5b7e75acac31e490b7851595212ed951889918d398b7afa12736c85e13ce"}, - {file = "coverage-7.3.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5b4ee7080878077af0afa7238df1b967f00dc10763f6e1b66f5cced4abebb0a3"}, - {file = "coverage-7.3.1-cp311-cp311-win32.whl", hash = "sha256:229c0dd2ccf956bf5aeede7e3131ca48b65beacde2029f0361b54bf93d36f45a"}, - {file = "coverage-7.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:c6f55d38818ca9596dc9019eae19a47410d5322408140d9a0076001a3dcb938c"}, - {file = "coverage-7.3.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5289490dd1c3bb86de4730a92261ae66ea8d44b79ed3cc26464f4c2cde581fbc"}, - {file = "coverage-7.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ca833941ec701fda15414be400c3259479bfde7ae6d806b69e63b3dc423b1832"}, - {file = "coverage-7.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd694e19c031733e446c8024dedd12a00cda87e1c10bd7b8539a87963685e969"}, - {file = "coverage-7.3.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aab8e9464c00da5cb9c536150b7fbcd8850d376d1151741dd0d16dfe1ba4fd26"}, - {file = "coverage-7.3.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87d38444efffd5b056fcc026c1e8d862191881143c3aa80bb11fcf9dca9ae204"}, - {file = "coverage-7.3.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:8a07b692129b8a14ad7a37941a3029c291254feb7a4237f245cfae2de78de037"}, - {file = "coverage-7.3.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:2829c65c8faaf55b868ed7af3c7477b76b1c6ebeee99a28f59a2cb5907a45760"}, - {file = "coverage-7.3.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1f111a7d85658ea52ffad7084088277135ec5f368457275fc57f11cebb15607f"}, - {file = "coverage-7.3.1-cp312-cp312-win32.whl", hash = "sha256:c397c70cd20f6df7d2a52283857af622d5f23300c4ca8e5bd8c7a543825baa5a"}, - {file = "coverage-7.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:5ae4c6da8b3d123500f9525b50bf0168023313963e0e2e814badf9000dd6ef92"}, - {file = "coverage-7.3.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ca70466ca3a17460e8fc9cea7123c8cbef5ada4be3140a1ef8f7b63f2f37108f"}, - {file = "coverage-7.3.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f2781fd3cabc28278dc982a352f50c81c09a1a500cc2086dc4249853ea96b981"}, - {file = "coverage-7.3.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6407424621f40205bbe6325686417e5e552f6b2dba3535dd1f90afc88a61d465"}, - {file = "coverage-7.3.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:04312b036580ec505f2b77cbbdfb15137d5efdfade09156961f5277149f5e344"}, - {file = "coverage-7.3.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac9ad38204887349853d7c313f53a7b1c210ce138c73859e925bc4e5d8fc18e7"}, - {file = "coverage-7.3.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:53669b79f3d599da95a0afbef039ac0fadbb236532feb042c534fbb81b1a4e40"}, - {file = "coverage-7.3.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:614f1f98b84eb256e4f35e726bfe5ca82349f8dfa576faabf8a49ca09e630086"}, - {file = "coverage-7.3.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f1a317fdf5c122ad642db8a97964733ab7c3cf6009e1a8ae8821089993f175ff"}, - {file = "coverage-7.3.1-cp38-cp38-win32.whl", hash = "sha256:defbbb51121189722420a208957e26e49809feafca6afeef325df66c39c4fdb3"}, - {file = "coverage-7.3.1-cp38-cp38-win_amd64.whl", hash = "sha256:f4f456590eefb6e1b3c9ea6328c1e9fa0f1006e7481179d749b3376fc793478e"}, - {file = "coverage-7.3.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f12d8b11a54f32688b165fd1a788c408f927b0960984b899be7e4c190ae758f1"}, - {file = "coverage-7.3.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f09195dda68d94a53123883de75bb97b0e35f5f6f9f3aa5bf6e496da718f0cb6"}, - {file = "coverage-7.3.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6601a60318f9c3945be6ea0f2a80571f4299b6801716f8a6e4846892737ebe4"}, - {file = "coverage-7.3.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07d156269718670d00a3b06db2288b48527fc5f36859425ff7cec07c6b367745"}, - {file = "coverage-7.3.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:636a8ac0b044cfeccae76a36f3b18264edcc810a76a49884b96dd744613ec0b7"}, - {file = "coverage-7.3.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5d991e13ad2ed3aced177f524e4d670f304c8233edad3210e02c465351f785a0"}, - {file = "coverage-7.3.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:586649ada7cf139445da386ab6f8ef00e6172f11a939fc3b2b7e7c9082052fa0"}, - {file = "coverage-7.3.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4aba512a15a3e1e4fdbfed2f5392ec221434a614cc68100ca99dcad7af29f3f8"}, - {file = "coverage-7.3.1-cp39-cp39-win32.whl", hash = "sha256:6bc6f3f4692d806831c136c5acad5ccedd0262aa44c087c46b7101c77e139140"}, - {file = "coverage-7.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:553d7094cb27db58ea91332e8b5681bac107e7242c23f7629ab1316ee73c4981"}, - {file = "coverage-7.3.1-pp38.pp39.pp310-none-any.whl", hash = "sha256:220eb51f5fb38dfdb7e5d54284ca4d0cd70ddac047d750111a68ab1798945194"}, - {file = "coverage-7.3.1.tar.gz", hash = "sha256:6cb7fe1581deb67b782c153136541e20901aa312ceedaf1467dcb35255787952"}, + {file = "coverage-7.6.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b06079abebbc0e89e6163b8e8f0e16270124c154dc6e4a47b413dd538859af16"}, + {file = "coverage-7.6.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cf4b19715bccd7ee27b6b120e7e9dd56037b9c0681dcc1adc9ba9db3d417fa36"}, + {file = "coverage-7.6.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61c0abb4c85b095a784ef23fdd4aede7a2628478e7baba7c5e3deba61070a02"}, + {file = "coverage-7.6.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fd21f6ae3f08b41004dfb433fa895d858f3f5979e7762d052b12aef444e29afc"}, + {file = "coverage-7.6.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f59d57baca39b32db42b83b2a7ba6f47ad9c394ec2076b084c3f029b7afca23"}, + {file = "coverage-7.6.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a1ac0ae2b8bd743b88ed0502544847c3053d7171a3cff9228af618a068ed9c34"}, + {file = "coverage-7.6.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e6a08c0be454c3b3beb105c0596ebdc2371fab6bb90c0c0297f4e58fd7e1012c"}, + {file = "coverage-7.6.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f5796e664fe802da4f57a168c85359a8fbf3eab5e55cd4e4569fbacecc903959"}, + {file = "coverage-7.6.1-cp310-cp310-win32.whl", hash = "sha256:7bb65125fcbef8d989fa1dd0e8a060999497629ca5b0efbca209588a73356232"}, + {file = "coverage-7.6.1-cp310-cp310-win_amd64.whl", hash = "sha256:3115a95daa9bdba70aea750db7b96b37259a81a709223c8448fa97727d546fe0"}, + {file = "coverage-7.6.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7dea0889685db8550f839fa202744652e87c60015029ce3f60e006f8c4462c93"}, + {file = "coverage-7.6.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ed37bd3c3b063412f7620464a9ac1314d33100329f39799255fb8d3027da50d3"}, + {file = "coverage-7.6.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d85f5e9a5f8b73e2350097c3756ef7e785f55bd71205defa0bfdaf96c31616ff"}, + {file = "coverage-7.6.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bc572be474cafb617672c43fe989d6e48d3c83af02ce8de73fff1c6bb3c198d"}, + {file = "coverage-7.6.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c0420b573964c760df9e9e86d1a9a622d0d27f417e1a949a8a66dd7bcee7bc6"}, + {file = "coverage-7.6.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1f4aa8219db826ce6be7099d559f8ec311549bfc4046f7f9fe9b5cea5c581c56"}, + {file = "coverage-7.6.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:fc5a77d0c516700ebad189b587de289a20a78324bc54baee03dd486f0855d234"}, + {file = "coverage-7.6.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b48f312cca9621272ae49008c7f613337c53fadca647d6384cc129d2996d1133"}, + {file = "coverage-7.6.1-cp311-cp311-win32.whl", hash = "sha256:1125ca0e5fd475cbbba3bb67ae20bd2c23a98fac4e32412883f9bcbaa81c314c"}, + {file = "coverage-7.6.1-cp311-cp311-win_amd64.whl", hash = "sha256:8ae539519c4c040c5ffd0632784e21b2f03fc1340752af711f33e5be83a9d6c6"}, + {file = "coverage-7.6.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:95cae0efeb032af8458fc27d191f85d1717b1d4e49f7cb226cf526ff28179778"}, + {file = "coverage-7.6.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5621a9175cf9d0b0c84c2ef2b12e9f5f5071357c4d2ea6ca1cf01814f45d2391"}, + {file = "coverage-7.6.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:260933720fdcd75340e7dbe9060655aff3af1f0c5d20f46b57f262ab6c86a5e8"}, + {file = "coverage-7.6.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07e2ca0ad381b91350c0ed49d52699b625aab2b44b65e1b4e02fa9df0e92ad2d"}, + {file = "coverage-7.6.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c44fee9975f04b33331cb8eb272827111efc8930cfd582e0320613263ca849ca"}, + {file = "coverage-7.6.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:877abb17e6339d96bf08e7a622d05095e72b71f8afd8a9fefc82cf30ed944163"}, + {file = "coverage-7.6.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3e0cadcf6733c09154b461f1ca72d5416635e5e4ec4e536192180d34ec160f8a"}, + {file = "coverage-7.6.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c3c02d12f837d9683e5ab2f3d9844dc57655b92c74e286c262e0fc54213c216d"}, + {file = "coverage-7.6.1-cp312-cp312-win32.whl", hash = "sha256:e05882b70b87a18d937ca6768ff33cc3f72847cbc4de4491c8e73880766718e5"}, + {file = "coverage-7.6.1-cp312-cp312-win_amd64.whl", hash = "sha256:b5d7b556859dd85f3a541db6a4e0167b86e7273e1cdc973e5b175166bb634fdb"}, + {file = "coverage-7.6.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a4acd025ecc06185ba2b801f2de85546e0b8ac787cf9d3b06e7e2a69f925b106"}, + {file = "coverage-7.6.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a6d3adcf24b624a7b778533480e32434a39ad8fa30c315208f6d3e5542aeb6e9"}, + {file = "coverage-7.6.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0c212c49b6c10e6951362f7c6df3329f04c2b1c28499563d4035d964ab8e08c"}, + {file = "coverage-7.6.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6e81d7a3e58882450ec4186ca59a3f20a5d4440f25b1cff6f0902ad890e6748a"}, + {file = "coverage-7.6.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78b260de9790fd81e69401c2dc8b17da47c8038176a79092a89cb2b7d945d060"}, + {file = "coverage-7.6.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a78d169acd38300060b28d600344a803628c3fd585c912cacc9ea8790fe96862"}, + {file = "coverage-7.6.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2c09f4ce52cb99dd7505cd0fc8e0e37c77b87f46bc9c1eb03fe3bc9991085388"}, + {file = "coverage-7.6.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6878ef48d4227aace338d88c48738a4258213cd7b74fd9a3d4d7582bb1d8a155"}, + {file = "coverage-7.6.1-cp313-cp313-win32.whl", hash = "sha256:44df346d5215a8c0e360307d46ffaabe0f5d3502c8a1cefd700b34baf31d411a"}, + {file = "coverage-7.6.1-cp313-cp313-win_amd64.whl", hash = "sha256:8284cf8c0dd272a247bc154eb6c95548722dce90d098c17a883ed36e67cdb129"}, + {file = "coverage-7.6.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:d3296782ca4eab572a1a4eca686d8bfb00226300dcefdf43faa25b5242ab8a3e"}, + {file = "coverage-7.6.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:502753043567491d3ff6d08629270127e0c31d4184c4c8d98f92c26f65019962"}, + {file = "coverage-7.6.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a89ecca80709d4076b95f89f308544ec8f7b4727e8a547913a35f16717856cb"}, + {file = "coverage-7.6.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a318d68e92e80af8b00fa99609796fdbcdfef3629c77c6283566c6f02c6d6704"}, + {file = "coverage-7.6.1-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13b0a73a0896988f053e4fbb7de6d93388e6dd292b0d87ee51d106f2c11b465b"}, + {file = "coverage-7.6.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4421712dbfc5562150f7554f13dde997a2e932a6b5f352edcce948a815efee6f"}, + {file = "coverage-7.6.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:166811d20dfea725e2e4baa71fffd6c968a958577848d2131f39b60043400223"}, + {file = "coverage-7.6.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:225667980479a17db1048cb2bf8bfb39b8e5be8f164b8f6628b64f78a72cf9d3"}, + {file = "coverage-7.6.1-cp313-cp313t-win32.whl", hash = "sha256:170d444ab405852903b7d04ea9ae9b98f98ab6d7e63e1115e82620807519797f"}, + {file = "coverage-7.6.1-cp313-cp313t-win_amd64.whl", hash = "sha256:b9f222de8cded79c49bf184bdbc06630d4c58eec9459b939b4a690c82ed05657"}, + {file = "coverage-7.6.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6db04803b6c7291985a761004e9060b2bca08da6d04f26a7f2294b8623a0c1a0"}, + {file = "coverage-7.6.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f1adfc8ac319e1a348af294106bc6a8458a0f1633cc62a1446aebc30c5fa186a"}, + {file = "coverage-7.6.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a95324a9de9650a729239daea117df21f4b9868ce32e63f8b650ebe6cef5595b"}, + {file = "coverage-7.6.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b43c03669dc4618ec25270b06ecd3ee4fa94c7f9b3c14bae6571ca00ef98b0d3"}, + {file = "coverage-7.6.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8929543a7192c13d177b770008bc4e8119f2e1f881d563fc6b6305d2d0ebe9de"}, + {file = "coverage-7.6.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:a09ece4a69cf399510c8ab25e0950d9cf2b42f7b3cb0374f95d2e2ff594478a6"}, + {file = "coverage-7.6.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:9054a0754de38d9dbd01a46621636689124d666bad1936d76c0341f7d71bf569"}, + {file = "coverage-7.6.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0dbde0f4aa9a16fa4d754356a8f2e36296ff4d83994b2c9d8398aa32f222f989"}, + {file = "coverage-7.6.1-cp38-cp38-win32.whl", hash = "sha256:da511e6ad4f7323ee5702e6633085fb76c2f893aaf8ce4c51a0ba4fc07580ea7"}, + {file = "coverage-7.6.1-cp38-cp38-win_amd64.whl", hash = "sha256:3f1156e3e8f2872197af3840d8ad307a9dd18e615dc64d9ee41696f287c57ad8"}, + {file = "coverage-7.6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:abd5fd0db5f4dc9289408aaf34908072f805ff7792632250dcb36dc591d24255"}, + {file = "coverage-7.6.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:547f45fa1a93154bd82050a7f3cddbc1a7a4dd2a9bf5cb7d06f4ae29fe94eaf8"}, + {file = "coverage-7.6.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:645786266c8f18a931b65bfcefdbf6952dd0dea98feee39bd188607a9d307ed2"}, + {file = "coverage-7.6.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e0b2df163b8ed01d515807af24f63de04bebcecbd6c3bfeff88385789fdf75a"}, + {file = "coverage-7.6.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:609b06f178fe8e9f89ef676532760ec0b4deea15e9969bf754b37f7c40326dbc"}, + {file = "coverage-7.6.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:702855feff378050ae4f741045e19a32d57d19f3e0676d589df0575008ea5004"}, + {file = "coverage-7.6.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:2bdb062ea438f22d99cba0d7829c2ef0af1d768d1e4a4f528087224c90b132cb"}, + {file = "coverage-7.6.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:9c56863d44bd1c4fe2abb8a4d6f5371d197f1ac0ebdee542f07f35895fc07f36"}, + {file = "coverage-7.6.1-cp39-cp39-win32.whl", hash = "sha256:6e2cd258d7d927d09493c8df1ce9174ad01b381d4729a9d8d4e38670ca24774c"}, + {file = "coverage-7.6.1-cp39-cp39-win_amd64.whl", hash = "sha256:06a737c882bd26d0d6ee7269b20b12f14a8704807a01056c80bb881a4b2ce6ca"}, + {file = "coverage-7.6.1-pp38.pp39.pp310-none-any.whl", hash = "sha256:e9a6e0eb86070e8ccaedfbd9d38fec54864f3125ab95419970575b42af7541df"}, + {file = "coverage-7.6.1.tar.gz", hash = "sha256:953510dfb7b12ab69d20135a0662397f077c59b1e6379a768e97c59d852ee51d"}, ] [package.dependencies] @@ -706,71 +701,57 @@ toml = ["tomli"] [[package]] name = "cryptography" -version = "41.0.3" +version = "43.0.1" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "cryptography-41.0.3-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:652627a055cb52a84f8c448185922241dd5217443ca194d5739b44612c5e6507"}, - {file = "cryptography-41.0.3-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:8f09daa483aedea50d249ef98ed500569841d6498aa9c9f4b0531b9964658922"}, - {file = "cryptography-41.0.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4fd871184321100fb400d759ad0cddddf284c4b696568204d281c902fc7b0d81"}, - {file = "cryptography-41.0.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84537453d57f55a50a5b6835622ee405816999a7113267739a1b4581f83535bd"}, - {file = "cryptography-41.0.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:3fb248989b6363906827284cd20cca63bb1a757e0a2864d4c1682a985e3dca47"}, - {file = "cryptography-41.0.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:42cb413e01a5d36da9929baa9d70ca90d90b969269e5a12d39c1e0d475010116"}, - {file = "cryptography-41.0.3-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:aeb57c421b34af8f9fe830e1955bf493a86a7996cc1338fe41b30047d16e962c"}, - {file = "cryptography-41.0.3-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:6af1c6387c531cd364b72c28daa29232162010d952ceb7e5ca8e2827526aceae"}, - {file = "cryptography-41.0.3-cp37-abi3-win32.whl", hash = "sha256:0d09fb5356f975974dbcb595ad2d178305e5050656affb7890a1583f5e02a306"}, - {file = "cryptography-41.0.3-cp37-abi3-win_amd64.whl", hash = "sha256:a983e441a00a9d57a4d7c91b3116a37ae602907a7618b882c8013b5762e80574"}, - {file = "cryptography-41.0.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5259cb659aa43005eb55a0e4ff2c825ca111a0da1814202c64d28a985d33b087"}, - {file = "cryptography-41.0.3-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:67e120e9a577c64fe1f611e53b30b3e69744e5910ff3b6e97e935aeb96005858"}, - {file = "cryptography-41.0.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:7efe8041897fe7a50863e51b77789b657a133c75c3b094e51b5e4b5cec7bf906"}, - {file = "cryptography-41.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ce785cf81a7bdade534297ef9e490ddff800d956625020ab2ec2780a556c313e"}, - {file = "cryptography-41.0.3-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:57a51b89f954f216a81c9d057bf1a24e2f36e764a1ca9a501a6964eb4a6800dd"}, - {file = "cryptography-41.0.3-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:4c2f0d35703d61002a2bbdcf15548ebb701cfdd83cdc12471d2bae80878a4207"}, - {file = "cryptography-41.0.3-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:23c2d778cf829f7d0ae180600b17e9fceea3c2ef8b31a99e3c694cbbf3a24b84"}, - {file = "cryptography-41.0.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:95dd7f261bb76948b52a5330ba5202b91a26fbac13ad0e9fc8a3ac04752058c7"}, - {file = "cryptography-41.0.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:41d7aa7cdfded09b3d73a47f429c298e80796c8e825ddfadc84c8a7f12df212d"}, - {file = "cryptography-41.0.3-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:d0d651aa754ef58d75cec6edfbd21259d93810b73f6ec246436a21b7841908de"}, - {file = "cryptography-41.0.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:ab8de0d091acbf778f74286f4989cf3d1528336af1b59f3e5d2ebca8b5fe49e1"}, - {file = "cryptography-41.0.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a74fbcdb2a0d46fe00504f571a2a540532f4c188e6ccf26f1f178480117b33c4"}, - {file = "cryptography-41.0.3.tar.gz", hash = "sha256:6d192741113ef5e30d89dcb5b956ef4e1578f304708701b8b73d38e3e1461f34"}, -] - -[package.dependencies] -cffi = ">=1.12" + {file = "cryptography-43.0.1-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:8385d98f6a3bf8bb2d65a73e17ed87a3ba84f6991c155691c51112075f9ffc5d"}, + {file = "cryptography-43.0.1-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:27e613d7077ac613e399270253259d9d53872aaf657471473ebfc9a52935c062"}, + {file = "cryptography-43.0.1-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68aaecc4178e90719e95298515979814bda0cbada1256a4485414860bd7ab962"}, + {file = "cryptography-43.0.1-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:de41fd81a41e53267cb020bb3a7212861da53a7d39f863585d13ea11049cf277"}, + {file = "cryptography-43.0.1-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f98bf604c82c416bc829e490c700ca1553eafdf2912a91e23a79d97d9801372a"}, + {file = "cryptography-43.0.1-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:61ec41068b7b74268fa86e3e9e12b9f0c21fcf65434571dbb13d954bceb08042"}, + {file = "cryptography-43.0.1-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:014f58110f53237ace6a408b5beb6c427b64e084eb451ef25a28308270086494"}, + {file = "cryptography-43.0.1-cp37-abi3-win32.whl", hash = "sha256:2bd51274dcd59f09dd952afb696bf9c61a7a49dfc764c04dd33ef7a6b502a1e2"}, + {file = "cryptography-43.0.1-cp37-abi3-win_amd64.whl", hash = "sha256:666ae11966643886c2987b3b721899d250855718d6d9ce41b521252a17985f4d"}, + {file = "cryptography-43.0.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:ac119bb76b9faa00f48128b7f5679e1d8d437365c5d26f1c2c3f0da4ce1b553d"}, + {file = "cryptography-43.0.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1bbcce1a551e262dfbafb6e6252f1ae36a248e615ca44ba302df077a846a8806"}, + {file = "cryptography-43.0.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58d4e9129985185a06d849aa6df265bdd5a74ca6e1b736a77959b498e0505b85"}, + {file = "cryptography-43.0.1-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:d03a475165f3134f773d1388aeb19c2d25ba88b6a9733c5c590b9ff7bbfa2e0c"}, + {file = "cryptography-43.0.1-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:511f4273808ab590912a93ddb4e3914dfd8a388fed883361b02dea3791f292e1"}, + {file = "cryptography-43.0.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:80eda8b3e173f0f247f711eef62be51b599b5d425c429b5d4ca6a05e9e856baa"}, + {file = "cryptography-43.0.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:38926c50cff6f533f8a2dae3d7f19541432610d114a70808f0926d5aaa7121e4"}, + {file = "cryptography-43.0.1-cp39-abi3-win32.whl", hash = "sha256:a575913fb06e05e6b4b814d7f7468c2c660e8bb16d8d5a1faf9b33ccc569dd47"}, + {file = "cryptography-43.0.1-cp39-abi3-win_amd64.whl", hash = "sha256:d75601ad10b059ec832e78823b348bfa1a59f6b8d545db3a24fd44362a1564cb"}, + {file = "cryptography-43.0.1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ea25acb556320250756e53f9e20a4177515f012c9eaea17eb7587a8c4d8ae034"}, + {file = "cryptography-43.0.1-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c1332724be35d23a854994ff0b66530119500b6053d0bd3363265f7e5e77288d"}, + {file = "cryptography-43.0.1-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:fba1007b3ef89946dbbb515aeeb41e30203b004f0b4b00e5e16078b518563289"}, + {file = "cryptography-43.0.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:5b43d1ea6b378b54a1dc99dd8a2b5be47658fe9a7ce0a58ff0b55f4b43ef2b84"}, + {file = "cryptography-43.0.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:88cce104c36870d70c49c7c8fd22885875d950d9ee6ab54df2745f83ba0dc365"}, + {file = "cryptography-43.0.1-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:9d3cdb25fa98afdd3d0892d132b8d7139e2c087da1712041f6b762e4f807cc96"}, + {file = "cryptography-43.0.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e710bf40870f4db63c3d7d929aa9e09e4e7ee219e703f949ec4073b4294f6172"}, + {file = "cryptography-43.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7c05650fe8023c5ed0d46793d4b7d7e6cd9c04e68eabe5b0aeea836e37bdcec2"}, + {file = "cryptography-43.0.1.tar.gz", hash = "sha256:203e92a75716d8cfb491dc47c79e17d0d9207ccffcbcb35f598fbe463ae3444d"}, +] + +[package.dependencies] +cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""} [package.extras] docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"] -docstest = ["pyenchant (>=1.6.11)", "sphinxcontrib-spelling (>=4.0.1)", "twine (>=1.12.0)"] +docstest = ["pyenchant (>=1.6.11)", "readme-renderer", "sphinxcontrib-spelling (>=4.0.1)"] nox = ["nox"] -pep8test = ["black", "check-sdist", "mypy", "ruff"] +pep8test = ["check-sdist", "click", "mypy", "ruff"] sdist = ["build"] ssh = ["bcrypt (>=3.1.5)"] -test = ["pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] +test = ["certifi", "cryptography-vectors (==43.0.1)", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] test-randomorder = ["pytest-randomly"] -[[package]] -name = "cssbeautifier" -version = "1.14.9" -description = "CSS unobfuscator and beautifier." -category = "dev" -optional = false -python-versions = "*" -files = [ - {file = "cssbeautifier-1.14.9.tar.gz", hash = "sha256:2da432472f68170eb854aff97b16a24721f5090ee36af2e31199590a89e7f71f"}, -] - -[package.dependencies] -editorconfig = ">=0.12.2" -jsbeautifier = "*" -six = ">=1.13.0" - [[package]] name = "cssmin" version = "0.2.0" description = "A Python port of the YUI CSS compression algorithm." -category = "main" optional = false python-versions = "*" files = [ @@ -781,7 +762,6 @@ files = [ name = "defusedxml" version = "0.7.1" description = "XML bomb protection for Python stdlib modules" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -791,79 +771,38 @@ files = [ [[package]] name = "distlib" -version = "0.3.7" +version = "0.3.8" description = "Distribution utilities" -category = "main" -optional = false -python-versions = "*" -files = [ - {file = "distlib-0.3.7-py2.py3-none-any.whl", hash = "sha256:2e24928bc811348f0feb63014e97aaae3037f2cf48712d51ae61df7fd6075057"}, - {file = "distlib-0.3.7.tar.gz", hash = "sha256:9dafe54b34a028eafd95039d5e5d4851a13734540f1331060d31c9916e7147a8"}, -] - -[[package]] -name = "djlint" -version = "1.33.0" -description = "HTML Template Linter and Formatter" -category = "dev" -optional = false -python-versions = ">=3.8.0,<4.0.0" -files = [ - {file = "djlint-1.33.0-py3-none-any.whl", hash = "sha256:aaf7bcbcfe937de5ff52747b573a8c78146b739d058dc817350640206aa477cc"}, - {file = "djlint-1.33.0.tar.gz", hash = "sha256:427e1d0b1cf2dc1922808d27d5a1078369d0c05b0fd2267f0bef06e9049bf3cf"}, -] - -[package.dependencies] -click = ">=8.0.1,<9.0.0" -colorama = ">=0.4.4,<0.5.0" -cssbeautifier = ">=1.14.4,<2.0.0" -html-tag-names = ">=0.1.2,<0.2.0" -html-void-elements = ">=0.1.0,<0.2.0" -jsbeautifier = ">=1.14.4,<2.0.0" -json5 = ">=0.9.11,<0.10.0" -pathspec = ">=0.11.0,<0.12.0" -PyYAML = ">=6.0,<7.0" -regex = ">=2023.0.0,<2024.0.0" -tomli = {version = ">=2.0.1,<3.0.0", markers = "python_version < \"3.11\""} -tqdm = ">=4.62.2,<5.0.0" - -[[package]] -name = "editorconfig" -version = "0.12.3" -description = "EditorConfig File Locator and Interpreter for Python" -category = "dev" optional = false python-versions = "*" files = [ - {file = "EditorConfig-0.12.3-py3-none-any.whl", hash = "sha256:6b0851425aa875b08b16789ee0eeadbd4ab59666e9ebe728e526314c4a2e52c1"}, - {file = "EditorConfig-0.12.3.tar.gz", hash = "sha256:57f8ce78afcba15c8b18d46b5170848c88d56fd38f05c2ec60dbbfcb8996e89e"}, + {file = "distlib-0.3.8-py2.py3-none-any.whl", hash = "sha256:034db59a0b96f8ca18035f36290806a9a6e6bd9d1ff91e45a7f172eb17e51784"}, + {file = "distlib-0.3.8.tar.gz", hash = "sha256:1530ea13e350031b6312d8580ddb6b27a104275a31106523b8f123787f494f64"}, ] [[package]] name = "elementpath" -version = "4.1.5" +version = "4.5.0" description = "XPath 1.0/2.0/3.0/3.1 parsers and selectors for ElementTree and lxml" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "elementpath-4.1.5-py3-none-any.whl", hash = "sha256:2ac1a2fb31eb22bbbf817f8cf6752f844513216263f0e3892c8e79782fe4bb55"}, - {file = "elementpath-4.1.5.tar.gz", hash = "sha256:c2d6dc524b29ef751ecfc416b0627668119d8812441c555d7471da41d4bacb8d"}, + {file = "elementpath-4.5.0-py3-none-any.whl", hash = "sha256:a16438bcc6b2b3069dde204c1e105322378a108b28faea3055d1b294443babea"}, + {file = "elementpath-4.5.0.tar.gz", hash = "sha256:affdc8de95af1a4c10d1d2ed79c6fa56b59c26c7fce64b73497569e9dea46998"}, ] [package.extras] -dev = ["Sphinx", "coverage", "flake8", "lxml", "lxml-stubs", "memory-profiler", "memray", "mypy", "tox", "xmlschema (>=2.0.0)"] +dev = ["Sphinx", "coverage", "flake8", "lxml", "lxml-stubs", "memory-profiler", "memray", "mypy", "tox", "xmlschema (>=3.3.2)"] [[package]] name = "exceptiongroup" -version = "1.1.3" +version = "1.2.2" description = "Backport of PEP 654 (exception groups)" -category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.1.3-py3-none-any.whl", hash = "sha256:343280667a4585d195ca1cf9cef84a4e178c4b6cf2274caef9859782b567d5e3"}, - {file = "exceptiongroup-1.1.3.tar.gz", hash = "sha256:097acd85d473d75af5bb98e41b61ff7fe35efe6675e4f9370ec6ec5126d160e9"}, + {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, + {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, ] [package.extras] @@ -871,40 +810,37 @@ test = ["pytest (>=6)"] [[package]] name = "filelock" -version = "3.12.4" +version = "3.16.0" description = "A platform independent file lock." -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "filelock-3.12.4-py3-none-any.whl", hash = "sha256:08c21d87ded6e2b9da6728c3dff51baf1dcecf973b768ef35bcbc3447edb9ad4"}, - {file = "filelock-3.12.4.tar.gz", hash = "sha256:2e6f249f1f3654291606e046b09f1fd5eac39b360664c27f5aad072012f8bcbd"}, + {file = "filelock-3.16.0-py3-none-any.whl", hash = "sha256:f6ed4c963184f4c84dd5557ce8fece759a3724b37b80c6c4f20a2f63a4dc6609"}, + {file = "filelock-3.16.0.tar.gz", hash = "sha256:81de9eb8453c769b63369f87f11131a7ab04e367f8d97ad39dc230daa07e3bec"}, ] [package.extras] -docs = ["furo (>=2023.7.26)", "sphinx (>=7.1.2)", "sphinx-autodoc-typehints (>=1.24)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.3)", "diff-cover (>=7.7)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)", "pytest-timeout (>=2.1)"] -typing = ["typing-extensions (>=4.7.1)"] +docs = ["furo (>=2024.8.6)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.6.1)", "diff-cover (>=9.1.1)", "pytest (>=8.3.2)", "pytest-asyncio (>=0.24)", "pytest-cov (>=5)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.26.3)"] +typing = ["typing-extensions (>=4.12.2)"] [[package]] name = "flask" -version = "2.3.3" +version = "3.0.3" description = "A simple framework for building complex web applications." -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "flask-2.3.3-py3-none-any.whl", hash = "sha256:f69fcd559dc907ed196ab9df0e48471709175e696d6e698dd4dbe940f96ce66b"}, - {file = "flask-2.3.3.tar.gz", hash = "sha256:09c347a92aa7ff4a8e7f3206795f30d826654baf38b873d0744cd571ca609efc"}, + {file = "flask-3.0.3-py3-none-any.whl", hash = "sha256:34e815dfaa43340d1d15a5c3a02b8476004037eb4840b34910c6e21679d288f3"}, + {file = "flask-3.0.3.tar.gz", hash = "sha256:ceb27b0af3823ea2737928a4d99d125a06175b8512c445cbd9a9ce200ef76842"}, ] [package.dependencies] blinker = ">=1.6.2" click = ">=8.1.3" -importlib-metadata = {version = ">=3.6.0", markers = "python_version < \"3.10\""} itsdangerous = ">=2.1.2" Jinja2 = ">=3.1.2" -Werkzeug = ">=2.3.7" +Werkzeug = ">=3.0.0" [package.extras] async = ["asgiref (>=3.2)"] @@ -912,96 +848,95 @@ dotenv = ["python-dotenv"] [[package]] name = "flask-apscheduler" -version = "1.13.0" +version = "1.13.1" description = "Adds APScheduler support to Flask" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "Flask-APScheduler-1.13.0.tar.gz", hash = "sha256:19555d6761990f110678aa584ab3ad0e7e698238e6ff60d8f38ab1322bda14c2"}, + {file = "Flask-APScheduler-1.13.1.tar.gz", hash = "sha256:b929846f026fb339b76360b0e4fc75da78b75c6d08625715bd0d37949bd607da"}, ] [package.dependencies] apscheduler = ">=3.2.0,<4.0.0" -flask = ">=2.2.5,<3.0.0" +flask = ">=2.2.5,<4.0.0" python-dateutil = ">=2.4.2" [[package]] -name = "Flask-Assets" -version = "2.0" +name = "flask-assets" +version = "2.1.0" description = "Asset management for Flask, to compress and merge CSS and Javascript files." -category = "main" optional = false python-versions = "*" -files = [] -develop = false +files = [ + {file = "Flask-Assets-2.1.0.tar.gz", hash = "sha256:f84d6532ffe59c9ff352885e8740ff4da25c0bcfacd805f0a806815e44354813"}, + {file = "Flask_Assets-2.1.0-py3-none-any.whl", hash = "sha256:a56c476b15f84701712cc3b4b4a001ebbe62b1dcbe81c23f96fbe6f261b75324"}, +] [package.dependencies] Flask = ">=0.8" webassets = ">=2.0" -[package.source] -type = "git" -url = "https://github.com/christopherpickering/flask-assets.git" -reference = "HEAD" -resolved_reference = "8433cc30fd4dff046a95dd02e26a3e901595be21" - [[package]] name = "flask-caching" -version = "2.0.2" +version = "2.3.0" description = "Adds caching support to Flask applications." -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "Flask-Caching-2.0.2.tar.gz", hash = "sha256:24b60c552d59a9605cc1b6a42c56cdb39a82a28dab4532bbedb9222ae54ecb4e"}, - {file = "Flask_Caching-2.0.2-py3-none-any.whl", hash = "sha256:19571f2570e9b8dd9dd9d2f49d7cbee69c14ebe8cc001100b1eb98c379dd80ad"}, + {file = "Flask_Caching-2.3.0-py3-none-any.whl", hash = "sha256:51771c75682e5abc1483b78b96d9131d7941dc669b073852edfa319dd4e29b6e"}, + {file = "flask_caching-2.3.0.tar.gz", hash = "sha256:d7e4ca64a33b49feb339fcdd17e6ba25f5e01168cf885e53790e885f83a4d2cf"}, ] [package.dependencies] cachelib = ">=0.9.0,<0.10.0" -Flask = "<3" +Flask = "*" [[package]] name = "flask-compress" -version = "1.14" -description = "Compress responses in your Flask app with gzip, deflate or brotli." -category = "main" +version = "1.15" +description = "Compress responses in your Flask app with gzip, deflate, brotli or zstandard." optional = false python-versions = "*" files = [ - {file = "Flask-Compress-1.14.tar.gz", hash = "sha256:e46528f37b91857012be38e24e65db1a248662c3dc32ee7808b5986bf1d123ee"}, - {file = "Flask_Compress-1.14-py3-none-any.whl", hash = "sha256:b86c9808f0f38ea2246c9730972cf978f2cdf6a9a1a69102ba81e07891e6b26c"}, + {file = "Flask_Compress-1.15-py3-none-any.whl", hash = "sha256:5d6efe3584c89516c3ab9d94adabe08c218517b957a9bd5cd0c3955dd3834c51"}, + {file = "flask_compress-1.15.tar.gz", hash = "sha256:b7b66cd5d08fc46bbcc71561e13ca64321590b0ca4c172f8001bf5374f8f5c58"}, ] [package.dependencies] brotli = {version = "*", markers = "platform_python_implementation != \"PyPy\""} brotlicffi = {version = "*", markers = "platform_python_implementation == \"PyPy\""} flask = "*" +zstandard = [ + {version = "*", markers = "platform_python_implementation != \"PyPy\""}, + {version = "*", extras = ["cffi"], markers = "platform_python_implementation == \"PyPy\""}, +] [[package]] name = "flask-debugtoolbar" -version = "0.13.1" +version = "0.15.1" description = "A toolbar overlay for debugging Flask applications." -category = "dev" optional = false -python-versions = ">=2.7" +python-versions = ">=3.7" files = [ - {file = "Flask-DebugToolbar-0.13.1.tar.gz", hash = "sha256:0c26aa013a9813b8886857bf0ec24d28ab494114a264baf06c951cadc4dd0dae"}, - {file = "Flask_DebugToolbar-0.13.1-py3-none-any.whl", hash = "sha256:491c737f321830c06a2835784acf1fc8488fd257a0ef318810b3b6bed5f600d5"}, + {file = "Flask_DebugToolbar-0.15.1-py3-none-any.whl", hash = "sha256:f3043d96e9fb9bc3b13ee8a02a5ecc531974f2fdceefa19ce3ba4a700ad40f36"}, + {file = "flask_debugtoolbar-0.15.1.tar.gz", hash = "sha256:8c76666f1553641567da8d91c74fe92caa072cfc01429564aa5e109de10b1806"}, ] [package.dependencies] Blinker = "*" -Flask = ">=0.8" +Flask = ">=2.2.0" itsdangerous = "*" +MarkupSafe = "*" +packaging = "*" werkzeug = "*" +[package.extras] +docs = ["Pallets-Sphinx-Themes", "Sphinx (>=1.2.2)"] + [[package]] name = "flask-executor" version = "1.0.0" description = "An easy to use Flask wrapper for concurrent.futures" -category = "main" optional = false python-versions = "*" files = [ @@ -1019,7 +954,6 @@ test = ["flask-sqlalchemy", "pytest"] name = "flask-htmlmin" version = "2.2.1" description = "Minify flask text/html mime type responses" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1034,14 +968,13 @@ htmlmin = "*" [[package]] name = "flask-login" -version = "0.6.2" +version = "0.6.3" description = "User authentication and session management for Flask." -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "Flask-Login-0.6.2.tar.gz", hash = "sha256:c0a7baa9fdc448cdd3dd6f0939df72eec5177b2f7abe6cb82fc934d29caac9c3"}, - {file = "Flask_Login-0.6.2-py3-none-any.whl", hash = "sha256:1ef79843f5eddd0f143c2cd994c1b05ac83c0401dc6234c143495af9a939613f"}, + {file = "Flask-Login-0.6.3.tar.gz", hash = "sha256:5e23d14a607ef12806c699590b89d0f0e0d67baeec599d75947bf9c147330333"}, + {file = "Flask_Login-0.6.3-py3-none-any.whl", hash = "sha256:849b25b82a436bf830a054e74214074af59097171562ab10bfa999e6b78aae5d"}, ] [package.dependencies] @@ -1050,14 +983,13 @@ Werkzeug = ">=1.0.1" [[package]] name = "flask-migrate" -version = "4.0.5" +version = "4.0.7" description = "SQLAlchemy database migrations for Flask applications using Alembic." -category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "Flask-Migrate-4.0.5.tar.gz", hash = "sha256:d3f437a8b5f3849d1bb1b60e1b818efc564c66e3fefe90b62e5db08db295e1b1"}, - {file = "Flask_Migrate-4.0.5-py3-none-any.whl", hash = "sha256:613a2df703998e78716cace68cd83972960834424457f5b67f56e74fff950aef"}, + {file = "Flask-Migrate-4.0.7.tar.gz", hash = "sha256:dff7dd25113c210b069af280ea713b883f3840c1e3455274745d7355778c8622"}, + {file = "Flask_Migrate-4.0.7-py3-none-any.whl", hash = "sha256:5c532be17e7b43a223b7500d620edae33795df27c75811ddf32560f7d48ec617"}, ] [package.dependencies] @@ -1069,7 +1001,6 @@ Flask-SQLAlchemy = ">=1.0" name = "flask-redis" version = "0.4.0" description = "A nice way to use Redis in your Flask app" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -1089,7 +1020,6 @@ tests = ["coverage", "pytest", "pytest-mock"] name = "flask-script" version = "2.0.6" description = "Scripting support for Flask" -category = "main" optional = false python-versions = "*" files = [ @@ -1100,27 +1030,33 @@ files = [ Flask = "*" [[package]] -name = "flask-session2" -version = "1.3.1" -description = "Adds server-side session support to your Flask application" -category = "main" +name = "flask-session" +version = "0.8.0" +description = "Server-side session support for Flask" optional = false -python-versions = ">=3.7.2,<4.0.0" +python-versions = ">=3.8" files = [ - {file = "Flask-Session2-1.3.1.tar.gz", hash = "sha256:171e986d4e314795f448a527095e42df6abfba76c3e4ce5c8e4c61c857c59cb2"}, - {file = "Flask_Session2-1.3.1-py3-none-any.whl", hash = "sha256:6d1615dfc4b247759f31f89bf16aba96fa1294077e700771875abe952f291959"}, + {file = "flask_session-0.8.0-py3-none-any.whl", hash = "sha256:5dae6e9ddab334f8dc4dea4305af37851f4e7dc0f484caf3351184001195e3b7"}, + {file = "flask_session-0.8.0.tar.gz", hash = "sha256:20e045eb01103694e70be4a49f3a80dbb1b57296a22dc6f44bbf3f83ef0742ff"}, ] [package.dependencies] -cachelib = ">=0.9.0,<0.10.0" -Flask = ">=2.2.2,<3.0.0" -pytz = ">=2022.2.1,<2023.0.0" +cachelib = "*" +flask = ">=2.2" +msgspec = ">=0.18.6" + +[package.extras] +all = ["Flask-Session[cachelib,memcached,mongodb,redis,sqlalchemy]"] +cachelib = ["cachelib (>=0.10.2)"] +memcached = ["pymemcache"] +mongodb = ["pymongo (>=4.6.2)"] +redis = ["redis (>=5.0.3)"] +sqlalchemy = ["flask-sqlalchemy (>=3.0.5)"] [[package]] name = "flask-sqlalchemy" version = "3.1.1" description = "Add SQLAlchemy support to your Flask application." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1134,52 +1070,52 @@ sqlalchemy = ">=2.0.16" [[package]] name = "gevent" -version = "23.9.1" +version = "24.2.1" description = "Coroutine-based network library" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "gevent-23.9.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:a3c5e9b1f766a7a64833334a18539a362fb563f6c4682f9634dea72cbe24f771"}, - {file = "gevent-23.9.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b101086f109168b23fa3586fccd1133494bdb97f86920a24dc0b23984dc30b69"}, - {file = "gevent-23.9.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:36a549d632c14684bcbbd3014a6ce2666c5f2a500f34d58d32df6c9ea38b6535"}, - {file = "gevent-23.9.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:272cffdf535978d59c38ed837916dfd2b5d193be1e9e5dcc60a5f4d5025dd98a"}, - {file = "gevent-23.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dcb8612787a7f4626aa881ff15ff25439561a429f5b303048f0fca8a1c781c39"}, - {file = "gevent-23.9.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:d57737860bfc332b9b5aa438963986afe90f49645f6e053140cfa0fa1bdae1ae"}, - {file = "gevent-23.9.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:5f3c781c84794926d853d6fb58554dc0dcc800ba25c41d42f6959c344b4db5a6"}, - {file = "gevent-23.9.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:dbb22a9bbd6a13e925815ce70b940d1578dbe5d4013f20d23e8a11eddf8d14a7"}, - {file = "gevent-23.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:707904027d7130ff3e59ea387dddceedb133cc742b00b3ffe696d567147a9c9e"}, - {file = "gevent-23.9.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:45792c45d60f6ce3d19651d7fde0bc13e01b56bb4db60d3f32ab7d9ec467374c"}, - {file = "gevent-23.9.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e24c2af9638d6c989caffc691a039d7c7022a31c0363da367c0d32ceb4a0648"}, - {file = "gevent-23.9.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e1ead6863e596a8cc2a03e26a7a0981f84b6b3e956101135ff6d02df4d9a6b07"}, - {file = "gevent-23.9.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65883ac026731ac112184680d1f0f1e39fa6f4389fd1fc0bf46cc1388e2599f9"}, - {file = "gevent-23.9.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf7af500da05363e66f122896012acb6e101a552682f2352b618e541c941a011"}, - {file = "gevent-23.9.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:c3e5d2fa532e4d3450595244de8ccf51f5721a05088813c1abd93ad274fe15e7"}, - {file = "gevent-23.9.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c84d34256c243b0a53d4335ef0bc76c735873986d478c53073861a92566a8d71"}, - {file = "gevent-23.9.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ada07076b380918829250201df1d016bdafb3acf352f35e5693b59dceee8dd2e"}, - {file = "gevent-23.9.1-cp311-cp311-win_amd64.whl", hash = "sha256:921dda1c0b84e3d3b1778efa362d61ed29e2b215b90f81d498eb4d8eafcd0b7a"}, - {file = "gevent-23.9.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:ed7a048d3e526a5c1d55c44cb3bc06cfdc1947d06d45006cc4cf60dedc628904"}, - {file = "gevent-23.9.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c1abc6f25f475adc33e5fc2dbcc26a732608ac5375d0d306228738a9ae14d3b"}, - {file = "gevent-23.9.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4368f341a5f51611411ec3fc62426f52ac3d6d42eaee9ed0f9eebe715c80184e"}, - {file = "gevent-23.9.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:52b4abf28e837f1865a9bdeef58ff6afd07d1d888b70b6804557e7908032e599"}, - {file = "gevent-23.9.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:52e9f12cd1cda96603ce6b113d934f1aafb873e2c13182cf8e86d2c5c41982ea"}, - {file = "gevent-23.9.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:de350fde10efa87ea60d742901e1053eb2127ebd8b59a7d3b90597eb4e586599"}, - {file = "gevent-23.9.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fde6402c5432b835fbb7698f1c7f2809c8d6b2bd9d047ac1f5a7c1d5aa569303"}, - {file = "gevent-23.9.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:dd6c32ab977ecf7c7b8c2611ed95fa4aaebd69b74bf08f4b4960ad516861517d"}, - {file = "gevent-23.9.1-cp312-cp312-win_amd64.whl", hash = "sha256:455e5ee8103f722b503fa45dedb04f3ffdec978c1524647f8ba72b4f08490af1"}, - {file = "gevent-23.9.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:7ccf0fd378257cb77d91c116e15c99e533374a8153632c48a3ecae7f7f4f09fe"}, - {file = "gevent-23.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d163d59f1be5a4c4efcdd13c2177baaf24aadf721fdf2e1af9ee54a998d160f5"}, - {file = "gevent-23.9.1-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:7532c17bc6c1cbac265e751b95000961715adef35a25d2b0b1813aa7263fb397"}, - {file = "gevent-23.9.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:78eebaf5e73ff91d34df48f4e35581ab4c84e22dd5338ef32714264063c57507"}, - {file = "gevent-23.9.1-cp38-cp38-win32.whl", hash = "sha256:f632487c87866094546a74eefbca2c74c1d03638b715b6feb12e80120960185a"}, - {file = "gevent-23.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:62d121344f7465e3739989ad6b91f53a6ca9110518231553fe5846dbe1b4518f"}, - {file = "gevent-23.9.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:bf456bd6b992eb0e1e869e2fd0caf817f0253e55ca7977fd0e72d0336a8c1c6a"}, - {file = "gevent-23.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:43daf68496c03a35287b8b617f9f91e0e7c0d042aebcc060cadc3f049aadd653"}, - {file = "gevent-23.9.1-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:7c28e38dcde327c217fdafb9d5d17d3e772f636f35df15ffae2d933a5587addd"}, - {file = "gevent-23.9.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:fae8d5b5b8fa2a8f63b39f5447168b02db10c888a3e387ed7af2bd1b8612e543"}, - {file = "gevent-23.9.1-cp39-cp39-win32.whl", hash = "sha256:2c7b5c9912378e5f5ccf180d1fdb1e83f42b71823483066eddbe10ef1a2fcaa2"}, - {file = "gevent-23.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:a2898b7048771917d85a1d548fd378e8a7b2ca963db8e17c6d90c76b495e0e2b"}, - {file = "gevent-23.9.1.tar.gz", hash = "sha256:72c002235390d46f94938a96920d8856d4ffd9ddf62a303a0d7c118894097e34"}, + {file = "gevent-24.2.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:6f947a9abc1a129858391b3d9334c45041c08a0f23d14333d5b844b6e5c17a07"}, + {file = "gevent-24.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bde283313daf0b34a8d1bab30325f5cb0f4e11b5869dbe5bc61f8fe09a8f66f3"}, + {file = "gevent-24.2.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5a1df555431f5cd5cc189a6ee3544d24f8c52f2529134685f1e878c4972ab026"}, + {file = "gevent-24.2.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:14532a67f7cb29fb055a0e9b39f16b88ed22c66b96641df8c04bdc38c26b9ea5"}, + {file = "gevent-24.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd23df885318391856415e20acfd51a985cba6919f0be78ed89f5db9ff3a31cb"}, + {file = "gevent-24.2.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:ca80b121bbec76d7794fcb45e65a7eca660a76cc1a104ed439cdbd7df5f0b060"}, + {file = "gevent-24.2.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b9913c45d1be52d7a5db0c63977eebb51f68a2d5e6fd922d1d9b5e5fd758cc98"}, + {file = "gevent-24.2.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:918cdf8751b24986f915d743225ad6b702f83e1106e08a63b736e3a4c6ead789"}, + {file = "gevent-24.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:3d5325ccfadfd3dcf72ff88a92fb8fc0b56cacc7225f0f4b6dcf186c1a6eeabc"}, + {file = "gevent-24.2.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:03aa5879acd6b7076f6a2a307410fb1e0d288b84b03cdfd8c74db8b4bc882fc5"}, + {file = "gevent-24.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8bb35ce57a63c9a6896c71a285818a3922d8ca05d150fd1fe49a7f57287b836"}, + {file = "gevent-24.2.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d7f87c2c02e03d99b95cfa6f7a776409083a9e4d468912e18c7680437b29222c"}, + {file = "gevent-24.2.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:968581d1717bbcf170758580f5f97a2925854943c45a19be4d47299507db2eb7"}, + {file = "gevent-24.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7899a38d0ae7e817e99adb217f586d0a4620e315e4de577444ebeeed2c5729be"}, + {file = "gevent-24.2.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:f5e8e8d60e18d5f7fd49983f0c4696deeddaf6e608fbab33397671e2fcc6cc91"}, + {file = "gevent-24.2.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fbfdce91239fe306772faab57597186710d5699213f4df099d1612da7320d682"}, + {file = "gevent-24.2.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cdf66977a976d6a3cfb006afdf825d1482f84f7b81179db33941f2fc9673bb1d"}, + {file = "gevent-24.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:1dffb395e500613e0452b9503153f8f7ba587c67dd4a85fc7cd7aa7430cb02cc"}, + {file = "gevent-24.2.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:6c47ae7d1174617b3509f5d884935e788f325eb8f1a7efc95d295c68d83cce40"}, + {file = "gevent-24.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7cac622e11b4253ac4536a654fe221249065d9a69feb6cdcd4d9af3503602e0"}, + {file = "gevent-24.2.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bf5b9c72b884c6f0c4ed26ef204ee1f768b9437330422492c319470954bc4cc7"}, + {file = "gevent-24.2.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f5de3c676e57177b38857f6e3cdfbe8f38d1cd754b63200c0615eaa31f514b4f"}, + {file = "gevent-24.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4faf846ed132fd7ebfbbf4fde588a62d21faa0faa06e6f468b7faa6f436b661"}, + {file = "gevent-24.2.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:368a277bd9278ddb0fde308e6a43f544222d76ed0c4166e0d9f6b036586819d9"}, + {file = "gevent-24.2.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:f8a04cf0c5b7139bc6368b461257d4a757ea2fe89b3773e494d235b7dd51119f"}, + {file = "gevent-24.2.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9d8d0642c63d453179058abc4143e30718b19a85cbf58c2744c9a63f06a1d388"}, + {file = "gevent-24.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:94138682e68ec197db42ad7442d3cf9b328069c3ad8e4e5022e6b5cd3e7ffae5"}, + {file = "gevent-24.2.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:8f4b8e777d39013595a7740b4463e61b1cfe5f462f1b609b28fbc1e4c4ff01e5"}, + {file = "gevent-24.2.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:141a2b24ad14f7b9576965c0c84927fc85f824a9bb19f6ec1e61e845d87c9cd8"}, + {file = "gevent-24.2.1-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:9202f22ef811053077d01f43cc02b4aaf4472792f9fd0f5081b0b05c926cca19"}, + {file = "gevent-24.2.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2955eea9c44c842c626feebf4459c42ce168685aa99594e049d03bedf53c2800"}, + {file = "gevent-24.2.1-cp38-cp38-win32.whl", hash = "sha256:44098038d5e2749b0784aabb27f1fcbb3f43edebedf64d0af0d26955611be8d6"}, + {file = "gevent-24.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:117e5837bc74a1673605fb53f8bfe22feb6e5afa411f524c835b2ddf768db0de"}, + {file = "gevent-24.2.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:2ae3a25ecce0a5b0cd0808ab716bfca180230112bb4bc89b46ae0061d62d4afe"}, + {file = "gevent-24.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a7ceb59986456ce851160867ce4929edaffbd2f069ae25717150199f8e1548b8"}, + {file = "gevent-24.2.1-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:2e9ac06f225b696cdedbb22f9e805e2dd87bf82e8fa5e17756f94e88a9d37cf7"}, + {file = "gevent-24.2.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:90cbac1ec05b305a1b90ede61ef73126afdeb5a804ae04480d6da12c56378df1"}, + {file = "gevent-24.2.1-cp39-cp39-win32.whl", hash = "sha256:782a771424fe74bc7e75c228a1da671578c2ba4ddb2ca09b8f959abdf787331e"}, + {file = "gevent-24.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:3adfb96637f44010be8abd1b5e73b5070f851b817a0b182e601202f20fa06533"}, + {file = "gevent-24.2.1-pp310-pypy310_pp73-macosx_11_0_universal2.whl", hash = "sha256:7b00f8c9065de3ad226f7979154a7b27f3b9151c8055c162332369262fc025d8"}, + {file = "gevent-24.2.1.tar.gz", hash = "sha256:432fc76f680acf7cf188c2ee0f5d3ab73b63c1f03114c7cd8a34cebbe5aa2056"}, ] [package.dependencies] @@ -1196,130 +1132,112 @@ dnspython = ["dnspython (>=1.16.0,<2.0)", "idna"] docs = ["furo", "repoze.sphinx.autointerface", "sphinx", "sphinxcontrib-programoutput", "zope.schema"] monitor = ["psutil (>=5.7.0)"] recommended = ["cffi (>=1.12.2)", "dnspython (>=1.16.0,<2.0)", "idna", "psutil (>=5.7.0)"] -test = ["cffi (>=1.12.2)", "coverage (>=5.0)", "dnspython (>=1.16.0,<2.0)", "idna", "objgraph", "psutil (>=5.7.0)", "requests", "setuptools"] +test = ["cffi (>=1.12.2)", "coverage (>=5.0)", "dnspython (>=1.16.0,<2.0)", "idna", "objgraph", "psutil (>=5.7.0)", "requests"] [[package]] name = "greenlet" -version = "3.0.0rc3" +version = "3.1.0" description = "Lightweight in-process concurrent programming" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "greenlet-3.0.0rc3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2a2affddff9b2f846f40799673e41b29f0500582415c860fca8f146858e9de1a"}, - {file = "greenlet-3.0.0rc3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dd00046dfd00767fce18f9933658d126652a500caf7af9dbfbd43818e4b484c2"}, - {file = "greenlet-3.0.0rc3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e787b00002cef3b98c7cf700fb85c2c01b0d202b1c6731706e5baa4b3325aa1e"}, - {file = "greenlet-3.0.0rc3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38ffc7538bc66766a8b551888903d415773481c4bd13560a4fb24887222e3cc9"}, - {file = "greenlet-3.0.0rc3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dde5deb355b34bbf44b15789e27c56862f51f417207be49eedc58fce34681fe6"}, - {file = "greenlet-3.0.0rc3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:1fb703a102a02361a0cc6a3d9a7958e1584fdeb536bd37ca9aca529d3356bedd"}, - {file = "greenlet-3.0.0rc3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f8661d14d3e07f2ceeb850e4cbcc7114bdf90a8dc82d63d37b08a50bb6955a77"}, - {file = "greenlet-3.0.0rc3-cp310-cp310-win_amd64.whl", hash = "sha256:997456b74efee91ceeb39d63818909da5dbb712a07f7742f4378986ac3473463"}, - {file = "greenlet-3.0.0rc3-cp310-universal2-macosx_11_0_x86_64.whl", hash = "sha256:d3cd3957af8cec1fcfd87d92ca71b7d434d798036e14ae878f9ab1e07d99da0d"}, - {file = "greenlet-3.0.0rc3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:895b689fc52a5bc402f8d624705110df5c265b1410ffe8e0769a66db9d2e7851"}, - {file = "greenlet-3.0.0rc3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a84a88422b5a0360fae57ad6b3b20fc17c9462880929810b0a26ee43aa05982e"}, - {file = "greenlet-3.0.0rc3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d79cf299ba1996d8a4f133b317e709a0a3ce87181308280e40664e12cb512c54"}, - {file = "greenlet-3.0.0rc3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef9789aea735004eba559c7919a73a3b475d0c28e2c1e9de464c6bc761bf69f4"}, - {file = "greenlet-3.0.0rc3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:66790e1537382e53bce64de3a695d1b12a04b00104df45f7ef472a10561936c2"}, - {file = "greenlet-3.0.0rc3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:68349987bf2ce274953f9f9b28458869bd8770a0c5461e1ef91d8107b1bae361"}, - {file = "greenlet-3.0.0rc3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:30ffaa6c020a615c8f4be3abfc6029982fda026a3bf9a6dc7205afb033251506"}, - {file = "greenlet-3.0.0rc3-cp311-cp311-win_amd64.whl", hash = "sha256:864619b058f573058cd77f6944cf63d7f42157fe30be494798721bd8ac256d7b"}, - {file = "greenlet-3.0.0rc3-cp311-universal2-macosx_10_9_universal2.whl", hash = "sha256:7c887ecb55374d585d71ff8f9d07c137637694e88fa2b5d5b1450a05ece62ae9"}, - {file = "greenlet-3.0.0rc3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:686821157368c1c4ef53aa68e6801280010da92ab0e4265dad37003341fca6a1"}, - {file = "greenlet-3.0.0rc3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:242d56d2d5f6859f0f086ce62555a2c692c8053c89721d41fead5e1e8dffdb36"}, - {file = "greenlet-3.0.0rc3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81d653ae6c64b85ce4c7bccbea7b630de8799da751b73e55b4c68875b6eb19d6"}, - {file = "greenlet-3.0.0rc3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:beeb5cfbd8f3792c37db4e3c5665aa750d78bbdabe758161a34e7dfe27075e69"}, - {file = "greenlet-3.0.0rc3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:30daee988fc83078b016fa95a7a1f78a7c86534a44238748b9748675814eb1dc"}, - {file = "greenlet-3.0.0rc3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:977898b8c24159467c66ed1a8f62aacd33f3d85f852cf413d0d2e2a87a6b3091"}, - {file = "greenlet-3.0.0rc3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:097a2f75c79c3fa76fea2e5d48a637233722fe72a5ebb1213c55f0a0898f481c"}, - {file = "greenlet-3.0.0rc3-cp312-cp312-win_amd64.whl", hash = "sha256:5770d43b08dfa10f4460c1bd51f8c80e6f2c47611054e9fb80d4d7976d07e560"}, - {file = "greenlet-3.0.0rc3-cp312-universal2-macosx_10_9_universal2.whl", hash = "sha256:f33e7ff85775cb0ec6abb0950ffc631960bae5a203da38166fc3dfde826e0d0a"}, - {file = "greenlet-3.0.0rc3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:07f6d1ce31a1db5102a42b4afa609af330edfd8a81d10faba3e47ae33a07cbdf"}, - {file = "greenlet-3.0.0rc3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86e651fa59263f7ff1d4657b086c48cfe7e26db2a36e2d74069f3b5aeab478e6"}, - {file = "greenlet-3.0.0rc3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ef7c6e49a9a020d56349c6a769352709bfbe35d3ee7f98bd5efcac6cedbdc162"}, - {file = "greenlet-3.0.0rc3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5585bf8d1d2d3712010ee74988c2ed85c54b127b97f2778fbdcc5b3ea8e801a2"}, - {file = "greenlet-3.0.0rc3-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c706041cd92e1b9d2b602eaa31e94aad14453bdbf186ce77530f25167c173a0e"}, - {file = "greenlet-3.0.0rc3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:37213e72058d2e6231d18417adc63c698c040fbb47dc59a3fd633973214ab1ab"}, - {file = "greenlet-3.0.0rc3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:95bc6ec8dd73f8f36e9dfc61a7fa5a2819d1cd52d0bfdb70a43434d6b2aeb239"}, - {file = "greenlet-3.0.0rc3-cp37-cp37m-win32.whl", hash = "sha256:e83c4c7a0814dcfd7e2fe4b74a371f3ce489b62ff02e81d0c5cacc8ba4750395"}, - {file = "greenlet-3.0.0rc3-cp37-cp37m-win_amd64.whl", hash = "sha256:4c35608918f331256be199d3712552fa8a1d12f87ac171a86a31488c60d298f5"}, - {file = "greenlet-3.0.0rc3-cp37-universal2-macosx_11_0_x86_64.whl", hash = "sha256:215bdb33e85fd89fe55f9984dc6f0a96b5774bace663e1a6d051e65d66170ef8"}, - {file = "greenlet-3.0.0rc3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69db00f775ed9d233f53ef67c66ea40a7add0c0929eb528f633982e27595dd37"}, - {file = "greenlet-3.0.0rc3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5fcc7162944c2fedfb2253ca2171267e016a3b065c73369d0d4a27f601e7f162"}, - {file = "greenlet-3.0.0rc3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3c0082d7b83312c59127811367089f812f8f1386fad7e8cf321fd732b4a6ace6"}, - {file = "greenlet-3.0.0rc3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66f1131c17dba115ea7cb3b257b6751b3c4cfd324f2121447e2483f57abbbf3c"}, - {file = "greenlet-3.0.0rc3-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f0c5508582339090b99e2863a157fc2708ab9c8b5cd21619bdcb04edcdc6c28d"}, - {file = "greenlet-3.0.0rc3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f1c9ad8d6500f7b142a94054281d9628bc8652a14b0923d02e0dfd87392fbc74"}, - {file = "greenlet-3.0.0rc3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bd586284bbf18ca3068e1fcc67ef54538e1bb74cb605ebdac9e62048237839f5"}, - {file = "greenlet-3.0.0rc3-cp38-cp38-win32.whl", hash = "sha256:1c16f1bbaf9c75dfac3e52bb778d2fd6099fd5aa59fafa678eca5853eedd99ec"}, - {file = "greenlet-3.0.0rc3-cp38-cp38-win_amd64.whl", hash = "sha256:e388ceb55b8f3f388afea4d4a17a64b619040f0e8e9fa3e17e7c34f4d0fbe103"}, - {file = "greenlet-3.0.0rc3-cp38-universal2-macosx_11_0_x86_64.whl", hash = "sha256:68bd35ad9f99df0ef18836fd0fb34278dca6b3350bdcf1e8809822fc4f57a82e"}, - {file = "greenlet-3.0.0rc3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:256b748fc1e6c97012f217e0a403116cb0dd369bf1cff51c07a9c52899d4a8a8"}, - {file = "greenlet-3.0.0rc3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4936e6e051932848c4b237a874da8dbb47bfbb5ae5104497fb78c4f4cf184989"}, - {file = "greenlet-3.0.0rc3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a31b3a4bd10c540a7eb7d4b43d16779813ca4c79b615ed6d4ebf0e5a782d9fa0"}, - {file = "greenlet-3.0.0rc3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6f8253fdb00e74b928ab5d04f88ddbc8beb0cc26aa978bb4a12c1513166d481"}, - {file = "greenlet-3.0.0rc3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2a7831d04a0f8a14645c010e3fb3fa36b8d2df304dd837948427ccfec2524ddf"}, - {file = "greenlet-3.0.0rc3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ae84d2f2658990f29df4ea753061b25c337bd70f805128af328098e5b8afc454"}, - {file = "greenlet-3.0.0rc3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:cd51cc2528a2985f3bc0564c1b1ce5b2e6fa4ee9924503010428256fa95b0e3c"}, - {file = "greenlet-3.0.0rc3-cp39-cp39-win32.whl", hash = "sha256:e8698f341e78dd0f149511929e92d1507cc26647f047db13987169d244db10fb"}, - {file = "greenlet-3.0.0rc3-cp39-cp39-win_amd64.whl", hash = "sha256:f059457db4e2ae4a4fdae455453c5e5765aa08efcb804e2a106c69c31bd438ba"}, - {file = "greenlet-3.0.0rc3-cp39-universal2-macosx_11_0_x86_64.whl", hash = "sha256:c80cac2776df3dd08f27b7338f467a62ee6cb29668a8f4f408b8da1f981aae9e"}, - {file = "greenlet-3.0.0rc3.tar.gz", hash = "sha256:0df5c2ad154f457fd372e39723493b3df519330a4c1bff3ca901be66130f379b"}, + {file = "greenlet-3.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a814dc3100e8a046ff48faeaa909e80cdb358411a3d6dd5293158425c684eda8"}, + {file = "greenlet-3.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a771dc64fa44ebe58d65768d869fcfb9060169d203446c1d446e844b62bdfdca"}, + {file = "greenlet-3.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0e49a65d25d7350cca2da15aac31b6f67a43d867448babf997fe83c7505f57bc"}, + {file = "greenlet-3.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2cd8518eade968bc52262d8c46727cfc0826ff4d552cf0430b8d65aaf50bb91d"}, + {file = "greenlet-3.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76dc19e660baea5c38e949455c1181bc018893f25372d10ffe24b3ed7341fb25"}, + {file = "greenlet-3.1.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c0a5b1c22c82831f56f2f7ad9bbe4948879762fe0d59833a4a71f16e5fa0f682"}, + {file = "greenlet-3.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:2651dfb006f391bcb240635079a68a261b227a10a08af6349cba834a2141efa1"}, + {file = "greenlet-3.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3e7e6ef1737a819819b1163116ad4b48d06cfdd40352d813bb14436024fcda99"}, + {file = "greenlet-3.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:ffb08f2a1e59d38c7b8b9ac8083c9c8b9875f0955b1e9b9b9a965607a51f8e54"}, + {file = "greenlet-3.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9730929375021ec90f6447bff4f7f5508faef1c02f399a1953870cdb78e0c345"}, + {file = "greenlet-3.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:713d450cf8e61854de9420fb7eea8ad228df4e27e7d4ed465de98c955d2b3fa6"}, + {file = "greenlet-3.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c3446937be153718250fe421da548f973124189f18fe4575a0510b5c928f0cc"}, + {file = "greenlet-3.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1ddc7bcedeb47187be74208bc652d63d6b20cb24f4e596bd356092d8000da6d6"}, + {file = "greenlet-3.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44151d7b81b9391ed759a2f2865bbe623ef00d648fed59363be2bbbd5154656f"}, + {file = "greenlet-3.1.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6cea1cca3be76c9483282dc7760ea1cc08a6ecec1f0b6ca0a94ea0d17432da19"}, + {file = "greenlet-3.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:619935a44f414274a2c08c9e74611965650b730eb4efe4b2270f91df5e4adf9a"}, + {file = "greenlet-3.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:221169d31cada333a0c7fd087b957c8f431c1dba202c3a58cf5a3583ed973e9b"}, + {file = "greenlet-3.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:01059afb9b178606b4b6e92c3e710ea1635597c3537e44da69f4531e111dd5e9"}, + {file = "greenlet-3.1.0-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:24fc216ec7c8be9becba8b64a98a78f9cd057fd2dc75ae952ca94ed8a893bf27"}, + {file = "greenlet-3.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d07c28b85b350564bdff9f51c1c5007dfb2f389385d1bc23288de51134ca303"}, + {file = "greenlet-3.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:243a223c96a4246f8a30ea470c440fe9db1f5e444941ee3c3cd79df119b8eebf"}, + {file = "greenlet-3.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:26811df4dc81271033a7836bc20d12cd30938e6bd2e9437f56fa03da81b0f8fc"}, + {file = "greenlet-3.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9d86401550b09a55410f32ceb5fe7efcd998bd2dad9e82521713cb148a4a15f"}, + {file = "greenlet-3.1.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:26d9c1c4f1748ccac0bae1dbb465fb1a795a75aba8af8ca871503019f4285e2a"}, + {file = "greenlet-3.1.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:cd468ec62257bb4544989402b19d795d2305eccb06cde5da0eb739b63dc04665"}, + {file = "greenlet-3.1.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a53dfe8f82b715319e9953330fa5c8708b610d48b5c59f1316337302af5c0811"}, + {file = "greenlet-3.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:28fe80a3eb673b2d5cc3b12eea468a5e5f4603c26aa34d88bf61bba82ceb2f9b"}, + {file = "greenlet-3.1.0-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:76b3e3976d2a452cba7aa9e453498ac72240d43030fdc6d538a72b87eaff52fd"}, + {file = "greenlet-3.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:655b21ffd37a96b1e78cc48bf254f5ea4b5b85efaf9e9e2a526b3c9309d660ca"}, + {file = "greenlet-3.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c6f4c2027689093775fd58ca2388d58789009116844432d920e9147f91acbe64"}, + {file = "greenlet-3.1.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:76e5064fd8e94c3f74d9fd69b02d99e3cdb8fc286ed49a1f10b256e59d0d3a0b"}, + {file = "greenlet-3.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a4bf607f690f7987ab3291406e012cd8591a4f77aa54f29b890f9c331e84989"}, + {file = "greenlet-3.1.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:037d9ac99540ace9424cb9ea89f0accfaff4316f149520b4ae293eebc5bded17"}, + {file = "greenlet-3.1.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:90b5bbf05fe3d3ef697103850c2ce3374558f6fe40fd57c9fac1bf14903f50a5"}, + {file = "greenlet-3.1.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:726377bd60081172685c0ff46afbc600d064f01053190e4450857483c4d44484"}, + {file = "greenlet-3.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:d46d5069e2eeda111d6f71970e341f4bd9aeeee92074e649ae263b834286ecc0"}, + {file = "greenlet-3.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81eeec4403a7d7684b5812a8aaa626fa23b7d0848edb3a28d2eb3220daddcbd0"}, + {file = "greenlet-3.1.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4a3dae7492d16e85ea6045fd11cb8e782b63eac8c8d520c3a92c02ac4573b0a6"}, + {file = "greenlet-3.1.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4b5ea3664eed571779403858d7cd0a9b0ebf50d57d2cdeafc7748e09ef8cd81a"}, + {file = "greenlet-3.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a22f4e26400f7f48faef2d69c20dc055a1f3043d330923f9abe08ea0aecc44df"}, + {file = "greenlet-3.1.0-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:13ff8c8e54a10472ce3b2a2da007f915175192f18e6495bad50486e87c7f6637"}, + {file = "greenlet-3.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:f9671e7282d8c6fcabc32c0fb8d7c0ea8894ae85cee89c9aadc2d7129e1a9954"}, + {file = "greenlet-3.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:184258372ae9e1e9bddce6f187967f2e08ecd16906557c4320e3ba88a93438c3"}, + {file = "greenlet-3.1.0-cp37-cp37m-win32.whl", hash = "sha256:a0409bc18a9f85321399c29baf93545152d74a49d92f2f55302f122007cfda00"}, + {file = "greenlet-3.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:9eb4a1d7399b9f3c7ac68ae6baa6be5f9195d1d08c9ddc45ad559aa6b556bce6"}, + {file = "greenlet-3.1.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:a8870983af660798dc1b529e1fd6f1cefd94e45135a32e58bd70edd694540f33"}, + {file = "greenlet-3.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cfcfb73aed40f550a57ea904629bdaf2e562c68fa1164fa4588e752af6efdc3f"}, + {file = "greenlet-3.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f9482c2ed414781c0af0b35d9d575226da6b728bd1a720668fa05837184965b7"}, + {file = "greenlet-3.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d58ec349e0c2c0bc6669bf2cd4982d2f93bf067860d23a0ea1fe677b0f0b1e09"}, + {file = "greenlet-3.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd65695a8df1233309b701dec2539cc4b11e97d4fcc0f4185b4a12ce54db0491"}, + {file = "greenlet-3.1.0-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:665b21e95bc0fce5cab03b2e1d90ba9c66c510f1bb5fdc864f3a377d0f553f6b"}, + {file = "greenlet-3.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:d3c59a06c2c28a81a026ff11fbf012081ea34fb9b7052f2ed0366e14896f0a1d"}, + {file = "greenlet-3.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5415b9494ff6240b09af06b91a375731febe0090218e2898d2b85f9b92abcda0"}, + {file = "greenlet-3.1.0-cp38-cp38-win32.whl", hash = "sha256:1544b8dd090b494c55e60c4ff46e238be44fdc472d2589e943c241e0169bcea2"}, + {file = "greenlet-3.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:7f346d24d74c00b6730440f5eb8ec3fe5774ca8d1c9574e8e57c8671bb51b910"}, + {file = "greenlet-3.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:db1b3ccb93488328c74e97ff888604a8b95ae4f35f4f56677ca57a4fc3a4220b"}, + {file = "greenlet-3.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:44cd313629ded43bb3b98737bba2f3e2c2c8679b55ea29ed73daea6b755fe8e7"}, + {file = "greenlet-3.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fad7a051e07f64e297e6e8399b4d6a3bdcad3d7297409e9a06ef8cbccff4f501"}, + {file = "greenlet-3.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c3967dcc1cd2ea61b08b0b276659242cbce5caca39e7cbc02408222fb9e6ff39"}, + {file = "greenlet-3.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d45b75b0f3fd8d99f62eb7908cfa6d727b7ed190737dec7fe46d993da550b81a"}, + {file = "greenlet-3.1.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2d004db911ed7b6218ec5c5bfe4cf70ae8aa2223dffbb5b3c69e342bb253cb28"}, + {file = "greenlet-3.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b9505a0c8579899057cbefd4ec34d865ab99852baf1ff33a9481eb3924e2da0b"}, + {file = "greenlet-3.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5fd6e94593f6f9714dbad1aaba734b5ec04593374fa6638df61592055868f8b8"}, + {file = "greenlet-3.1.0-cp39-cp39-win32.whl", hash = "sha256:d0dd943282231480aad5f50f89bdf26690c995e8ff555f26d8a5b9887b559bcc"}, + {file = "greenlet-3.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:ac0adfdb3a21dc2a24ed728b61e72440d297d0fd3a577389df566651fcd08f97"}, + {file = "greenlet-3.1.0.tar.gz", hash = "sha256:b395121e9bbe8d02a750886f108d540abe66075e61e22f7353d9acb0b81be0f0"}, ] [package.extras] -docs = ["Sphinx"] +docs = ["Sphinx", "furo"] test = ["objgraph", "psutil"] [[package]] name = "gunicorn" -version = "21.2.0" +version = "23.0.0" description = "WSGI HTTP Server for UNIX" -category = "main" optional = false -python-versions = ">=3.5" +python-versions = ">=3.7" files = [ - {file = "gunicorn-21.2.0-py3-none-any.whl", hash = "sha256:3213aa5e8c24949e792bcacfc176fef362e7aac80b76c56f6b5122bf350722f0"}, - {file = "gunicorn-21.2.0.tar.gz", hash = "sha256:88ec8bff1d634f98e61b9f65bc4bf3cd918a90806c6f5c48bc5603849ec81033"}, + {file = "gunicorn-23.0.0-py3-none-any.whl", hash = "sha256:ec400d38950de4dfd418cff8328b2c8faed0edb0d517d3394e457c317908ca4d"}, + {file = "gunicorn-23.0.0.tar.gz", hash = "sha256:f014447a0101dc57e294f6c18ca6b40227a4c90e9bdb586042628030cba004ec"}, ] [package.dependencies] packaging = "*" [package.extras] -eventlet = ["eventlet (>=0.24.1)"] +eventlet = ["eventlet (>=0.24.1,!=0.36.0)"] gevent = ["gevent (>=1.4.0)"] setproctitle = ["setproctitle"] +testing = ["coverage", "eventlet", "gevent", "pytest", "pytest-cov"] tornado = ["tornado (>=0.2)"] -[[package]] -name = "html-tag-names" -version = "0.1.2" -description = "List of known HTML tag names" -category = "dev" -optional = false -python-versions = ">=3.7,<4.0" -files = [ - {file = "html-tag-names-0.1.2.tar.gz", hash = "sha256:04924aca48770f36b5a41c27e4d917062507be05118acb0ba869c97389084297"}, - {file = "html_tag_names-0.1.2-py3-none-any.whl", hash = "sha256:eeb69ef21078486b615241f0393a72b41352c5219ee648e7c61f5632d26f0420"}, -] - -[[package]] -name = "html-void-elements" -version = "0.1.0" -description = "List of HTML void tag names." -category = "dev" -optional = false -python-versions = ">=3.7,<4.0" -files = [ - {file = "html-void-elements-0.1.0.tar.gz", hash = "sha256:931b88f84cd606fee0b582c28fcd00e41d7149421fb673e1e1abd2f0c4f231f0"}, - {file = "html_void_elements-0.1.0-py3-none-any.whl", hash = "sha256:784cf39db03cdeb017320d9301009f8f3480f9d7b254d0974272e80e0cb5e0d2"}, -] - [[package]] name = "htmlmin" version = "0.1.12" description = "An HTML Minifier" -category = "main" optional = false python-versions = "*" files = [ @@ -1328,14 +1246,13 @@ files = [ [[package]] name = "identify" -version = "2.5.29" +version = "2.6.1" description = "File identification library for Python" -category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "identify-2.5.29-py2.py3-none-any.whl", hash = "sha256:24437fbf6f4d3fe6efd0eb9d67e24dd9106db99af5ceb27996a5f7895f24bf1b"}, - {file = "identify-2.5.29.tar.gz", hash = "sha256:d43d52b86b15918c137e3a74fff5224f60385cd0e9c38e99d07c257f02f151a5"}, + {file = "identify-2.6.1-py2.py3-none-any.whl", hash = "sha256:53863bcac7caf8d2ed85bd20312ea5dcfc22226800f6d6881f232d861db5a8f0"}, + {file = "identify-2.6.1.tar.gz", hash = "sha256:91478c5fb7c3aac5ff7bf9b4344f803843dc586832d5f110d672b19aa1984c98"}, ] [package.extras] @@ -1343,60 +1260,22 @@ license = ["ukkonen"] [[package]] name = "idna" -version = "3.4" +version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" -category = "main" -optional = false -python-versions = ">=3.5" -files = [ - {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, - {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, -] - -[[package]] -name = "importlib-metadata" -version = "6.8.0" -description = "Read metadata from Python packages" -category = "main" optional = false -python-versions = ">=3.8" -files = [ - {file = "importlib_metadata-6.8.0-py3-none-any.whl", hash = "sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb"}, - {file = "importlib_metadata-6.8.0.tar.gz", hash = "sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743"}, -] - -[package.dependencies] -zipp = ">=0.5" - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -perf = ["ipython"] -testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] - -[[package]] -name = "importlib-resources" -version = "6.0.1" -description = "Read resources from Python packages" -category = "main" -optional = false -python-versions = ">=3.8" +python-versions = ">=3.6" files = [ - {file = "importlib_resources-6.0.1-py3-none-any.whl", hash = "sha256:134832a506243891221b88b4ae1213327eea96ceb4e407a00d790bb0626f45cf"}, - {file = "importlib_resources-6.0.1.tar.gz", hash = "sha256:4359457e42708462b9626a04657c6208ad799ceb41e5c58c57ffa0e6a098a5d4"}, + {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, + {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, ] -[package.dependencies] -zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} - [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff"] +all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] [[package]] name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1408,7 +1287,6 @@ files = [ name = "is-safe-url" version = "1.0" description = "Django's is_safe_url() bundled as a standalone package." -category = "main" optional = false python-versions = "*" files = [ @@ -1420,7 +1298,6 @@ files = [ name = "isodate" version = "0.6.1" description = "An ISO 8601 date/time/duration parser and formatter" -category = "main" optional = false python-versions = "*" files = [ @@ -1433,39 +1310,33 @@ six = "*" [[package]] name = "isort" -version = "5.12.0" +version = "5.13.2" description = "A Python utility / library to sort Python imports." -category = "dev" optional = false python-versions = ">=3.8.0" files = [ - {file = "isort-5.12.0-py3-none-any.whl", hash = "sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6"}, - {file = "isort-5.12.0.tar.gz", hash = "sha256:8bef7dde241278824a6d83f44a544709b065191b95b6e50894bdc722fcba0504"}, + {file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"}, + {file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"}, ] [package.extras] -colors = ["colorama (>=0.4.3)"] -pipfile-deprecated-finder = ["pip-shims (>=0.5.2)", "pipreqs", "requirementslib"] -plugins = ["setuptools"] -requirements-deprecated-finder = ["pip-api", "pipreqs"] +colors = ["colorama (>=0.4.6)"] [[package]] name = "itsdangerous" -version = "2.1.2" +version = "2.2.0" description = "Safely pass data to untrusted environments and back." -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "itsdangerous-2.1.2-py3-none-any.whl", hash = "sha256:2c2349112351b88699d8d4b6b075022c0808887cb7ad10069318a8b0bc88db44"}, - {file = "itsdangerous-2.1.2.tar.gz", hash = "sha256:5dbbc68b317e5e42f327f9021763545dc3fc3bfe22e6deb96aaf1fc38874156a"}, + {file = "itsdangerous-2.2.0-py3-none-any.whl", hash = "sha256:c6242fc49e35958c8b15141343aa660db5fc54d4f13a1db01a3f5891b98700ef"}, + {file = "itsdangerous-2.2.0.tar.gz", hash = "sha256:e0050c0b7da1eea53ffaf149c0cfbb5c6e2e2b69c4bef22c81fa6eb73e5f6173"}, ] [[package]] name = "jaydebeapi" version = "1.2.3" description = "Use JDBC database drivers from Python 2/3 or Jython with a DB-API." -category = "main" optional = false python-versions = "*" files = [ @@ -1479,14 +1350,13 @@ JPype1 = {version = "*", markers = "python_version > \"2.7\" and platform_python [[package]] name = "jinja2" -version = "3.1.2" +version = "3.1.4" description = "A very fast and expressive template engine." -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, - {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, + {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, + {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, ] [package.dependencies] @@ -1497,33 +1367,34 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "jpype1" -version = "1.4.1" +version = "1.5.0" description = "A Python to Java bridge." -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "JPype1-1.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:233a6a1a9c7f3633e7d74c14039f7ea35df81e138241f1acc8f94f65a8bd086e"}, - {file = "JPype1-1.4.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0099e77c6e99af13089b1c89cd99681b485fbf74daa492ee38e35d90d6349ffc"}, - {file = "JPype1-1.4.1-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:213f7154a7cc859dead7143cfee255bd3ce57938e0a5f2250b6768af0cef62c8"}, - {file = "JPype1-1.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:8d94013dfed3d1c7ee193e86393b2aea756a9910d222b7167ed493f9a0b1b3d5"}, - {file = "JPype1-1.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:34373696c3457f1d686639d928ef53b6a121203d9c0e651ed44dd3adf78bedb3"}, - {file = "JPype1-1.4.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7622d07408e6d9a89e9eb70d4a9a675e51d5411657ac434ccec23cc94b828d9c"}, - {file = "JPype1-1.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d960ce12c3913242f9e4a11e55afa9c38e1a5410d0a38cc5a21086415c38a02"}, - {file = "JPype1-1.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:5473a89d2cab327e38382fd69d1209517bad44158fb3ee9e699ebfeb5bc1cd51"}, - {file = "JPype1-1.4.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d85489a27c58b1b21feb8601406319b6a51d233ae9fa27de9b24c4dfea560b22"}, - {file = "JPype1-1.4.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9ce364d26ccbf7a21e35737f62663ce8d3aeb4e4b0f05d7e71f6126a6eb81059"}, - {file = "JPype1-1.4.1-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b9e29a0ea763c16d0fb05528785d4ed0fa56a421d600eca87e43398b569d2dea"}, - {file = "JPype1-1.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:8c2fef2d0c298c8e69b2880ff866fa5db5f477ddd78ef310a357d697362c9f89"}, - {file = "JPype1-1.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6089cd28067d77e5b4a09e272525ecd70f838b92a7c08d91d4fa7d192ec3f3bb"}, - {file = "JPype1-1.4.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:24e601a31fb3b44decd5389ea87cbc39aaa0c61980c39b060561f9dc604f4cc5"}, - {file = "JPype1-1.4.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:000556d5839ffbe61c12f1fa41cbfd4e9a0abe103e0100febacc069d75defa8f"}, - {file = "JPype1-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:7039db1a522af55cf89f6a4a72120f8b074abcde2535543da34616640ecbb3c1"}, - {file = "JPype1-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bd8bd76bf8741fa20d44ded776e6a3ea7fe103bcab7156f53ba7a72c50b7dd2f"}, - {file = "JPype1-1.4.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:d483a6c3e6cb19065e71d322c4742efcfafc44bf1a67ef8ef75f78626158c3d9"}, - {file = "JPype1-1.4.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:04ea4be3e9471bf62ccdeccc2417ad6b9a300effcc0e5f6af9534eafa14e3978"}, - {file = "JPype1-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:8692a7b14e807b224673010a648ab12415d3bc32323e351f03e6c64814ee319b"}, - {file = "JPype1-1.4.1.tar.gz", hash = "sha256:dc8ee854073474ad79ae168d90c2f6893854f58936cfa18f3587cadae0d3696d"}, + {file = "JPype1-1.5.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7b6b1af3f9e0033080e3532c2686a224cd14706f36c14ef36160a2a1db751a17"}, + {file = "JPype1-1.5.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0ed36803734b812c78ca9228dd3291128ac80b2a1d06c293d60b5c2f049040b4"}, + {file = "JPype1-1.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a02b2f05621c119d35f4acc501b4261eeb48a4af7cc13d9afc2e9eb316c4bd29"}, + {file = "JPype1-1.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:0b40c76e075d4fed2c83340bb30b7b95bbc396fd370c564c6b608faab00ea4ef"}, + {file = "JPype1-1.5.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:85a31b30b482eaf788b21af421e0750aa0be7758307314178143a76632b0ad04"}, + {file = "JPype1-1.5.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:20f0229d7aaa04c480a7fa271cbd161ded58cecd838ba52a4e01bea21b60a058"}, + {file = "JPype1-1.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ef976e0f3b2e9604469f449f30bb2031941a159a0637f4c16adb2c5076f3e81"}, + {file = "JPype1-1.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:2bc987205ff8d2d8e36dfbef05430e0638e85d4fee1166ba58ebfa6f7a67cdf8"}, + {file = "JPype1-1.5.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8714bfaf09d6877160bc7ac97812016ccb09f6d7ba5ea2a9f519178aefcca93f"}, + {file = "JPype1-1.5.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1696196a8b6ea2f8ad3280249014406de919088494b94a84581da01752d98dca"}, + {file = "JPype1-1.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8649b526eccb4047881ad60bdb1974eb71a09cdb7f8bda17c96fdc0f9a3f2d1e"}, + {file = "JPype1-1.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:9aafc00b00bf8c1b624081e5d4ab87f7752e6c7ee6a141cfc332250b05c6d42f"}, + {file = "JPype1-1.5.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ccb9c786e9b709c6390c89e200036b2080bf668cce118561a0cfd74eae43903f"}, + {file = "JPype1-1.5.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa5a27cba59865f034259657fd322ca0a5cde82e691a1180c6a8040d2e0c0788"}, + {file = "JPype1-1.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cff64ac1980d899841cbc561b097eeec8106b34d70c42342b211b83005562f88"}, + {file = "JPype1-1.5.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:439e006a3a74bd26e15ab6bca873e3572087667b5525cb82244a1945dd607d80"}, + {file = "JPype1-1.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b437ce6fadaf5562576b2b5919fa0a5174a92f70a7d903f0faf8dff6f34199fa"}, + {file = "JPype1-1.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:a01eba1fdf5869e46dc7336a8ff2a97a66d209c8d5f23a64f7f23b70e55ffc0f"}, + {file = "JPype1-1.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e8d9bdd137e7cecabebd46ce7d3539fd53745018974d0bc3ec0a3634c2e53af5"}, + {file = "JPype1-1.5.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9f8f01474186bf69bf05dd9a5ef4d5b2159980cfc9d8da91e021d682cc32552"}, + {file = "JPype1-1.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7aa1469d75f9b310f709b61bb2faa4cef4cbd4d670531ad1d1bb53e29cfda05"}, + {file = "JPype1-1.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:6bfdc101c56cab0b6b16e974fd8cbb0b3f7f14178286b8b55413c5d82d5f2bea"}, + {file = "JPype1-1.5.0.tar.gz", hash = "sha256:425a6e1966afdd5848b60c2688bcaeb7e40ba504a686f1114589668e0631e878"}, ] [package.dependencies] @@ -1533,154 +1404,169 @@ packaging = "*" docs = ["readthedocs-sphinx-ext", "sphinx", "sphinx-rtd-theme"] tests = ["pytest"] -[[package]] -name = "jsbeautifier" -version = "1.14.9" -description = "JavaScript unobfuscator and beautifier." -category = "dev" -optional = false -python-versions = "*" -files = [ - {file = "jsbeautifier-1.14.9.tar.gz", hash = "sha256:c738ebc36b47bd94e4ca6dd17a9004c3cc74edad582ca1d60e0e5d5945a63cb9"}, -] - -[package.dependencies] -editorconfig = ">=0.12.2" -six = ">=1.13.0" - -[[package]] -name = "json5" -version = "0.9.14" -description = "A Python implementation of the JSON5 data format." -category = "dev" -optional = false -python-versions = "*" -files = [ - {file = "json5-0.9.14-py2.py3-none-any.whl", hash = "sha256:740c7f1b9e584a468dbb2939d8d458db3427f2c93ae2139d05f47e453eae964f"}, - {file = "json5-0.9.14.tar.gz", hash = "sha256:9ed66c3a6ca3510a976a9ef9b8c0787de24802724ab1860bc0153c7fdd589b02"}, -] - -[package.extras] -dev = ["hypothesis"] - [[package]] name = "lxml" -version = "4.9.3" +version = "5.3.0" description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API." -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4.*" -files = [ - {file = "lxml-4.9.3-cp27-cp27m-macosx_11_0_x86_64.whl", hash = "sha256:b0a545b46b526d418eb91754565ba5b63b1c0b12f9bd2f808c852d9b4b2f9b5c"}, - {file = "lxml-4.9.3-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:075b731ddd9e7f68ad24c635374211376aa05a281673ede86cbe1d1b3455279d"}, - {file = "lxml-4.9.3-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1e224d5755dba2f4a9498e150c43792392ac9b5380aa1b845f98a1618c94eeef"}, - {file = "lxml-4.9.3-cp27-cp27m-win32.whl", hash = "sha256:2c74524e179f2ad6d2a4f7caf70e2d96639c0954c943ad601a9e146c76408ed7"}, - {file = "lxml-4.9.3-cp27-cp27m-win_amd64.whl", hash = "sha256:4f1026bc732b6a7f96369f7bfe1a4f2290fb34dce00d8644bc3036fb351a4ca1"}, - {file = "lxml-4.9.3-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c0781a98ff5e6586926293e59480b64ddd46282953203c76ae15dbbbf302e8bb"}, - {file = "lxml-4.9.3-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:cef2502e7e8a96fe5ad686d60b49e1ab03e438bd9123987994528febd569868e"}, - {file = "lxml-4.9.3-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:b86164d2cff4d3aaa1f04a14685cbc072efd0b4f99ca5708b2ad1b9b5988a991"}, - {file = "lxml-4.9.3-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:42871176e7896d5d45138f6d28751053c711ed4d48d8e30b498da155af39aebd"}, - {file = "lxml-4.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:ae8b9c6deb1e634ba4f1930eb67ef6e6bf6a44b6eb5ad605642b2d6d5ed9ce3c"}, - {file = "lxml-4.9.3-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:411007c0d88188d9f621b11d252cce90c4a2d1a49db6c068e3c16422f306eab8"}, - {file = "lxml-4.9.3-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:cd47b4a0d41d2afa3e58e5bf1f62069255aa2fd6ff5ee41604418ca925911d76"}, - {file = "lxml-4.9.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0e2cb47860da1f7e9a5256254b74ae331687b9672dfa780eed355c4c9c3dbd23"}, - {file = "lxml-4.9.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1247694b26342a7bf47c02e513d32225ededd18045264d40758abeb3c838a51f"}, - {file = "lxml-4.9.3-cp310-cp310-win32.whl", hash = "sha256:cdb650fc86227eba20de1a29d4b2c1bfe139dc75a0669270033cb2ea3d391b85"}, - {file = "lxml-4.9.3-cp310-cp310-win_amd64.whl", hash = "sha256:97047f0d25cd4bcae81f9ec9dc290ca3e15927c192df17331b53bebe0e3ff96d"}, - {file = "lxml-4.9.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:1f447ea5429b54f9582d4b955f5f1985f278ce5cf169f72eea8afd9502973dd5"}, - {file = "lxml-4.9.3-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:57d6ba0ca2b0c462f339640d22882acc711de224d769edf29962b09f77129cbf"}, - {file = "lxml-4.9.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:9767e79108424fb6c3edf8f81e6730666a50feb01a328f4a016464a5893f835a"}, - {file = "lxml-4.9.3-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:71c52db65e4b56b8ddc5bb89fb2e66c558ed9d1a74a45ceb7dcb20c191c3df2f"}, - {file = "lxml-4.9.3-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d73d8ecf8ecf10a3bd007f2192725a34bd62898e8da27eb9d32a58084f93962b"}, - {file = "lxml-4.9.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0a3d3487f07c1d7f150894c238299934a2a074ef590b583103a45002035be120"}, - {file = "lxml-4.9.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e28c51fa0ce5674be9f560c6761c1b441631901993f76700b1b30ca6c8378d6"}, - {file = "lxml-4.9.3-cp311-cp311-win32.whl", hash = "sha256:0bfd0767c5c1de2551a120673b72e5d4b628737cb05414f03c3277bf9bed3305"}, - {file = "lxml-4.9.3-cp311-cp311-win_amd64.whl", hash = "sha256:25f32acefac14ef7bd53e4218fe93b804ef6f6b92ffdb4322bb6d49d94cad2bc"}, - {file = "lxml-4.9.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:d3ff32724f98fbbbfa9f49d82852b159e9784d6094983d9a8b7f2ddaebb063d4"}, - {file = "lxml-4.9.3-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:48d6ed886b343d11493129e019da91d4039826794a3e3027321c56d9e71505be"}, - {file = "lxml-4.9.3-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:9a92d3faef50658dd2c5470af249985782bf754c4e18e15afb67d3ab06233f13"}, - {file = "lxml-4.9.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b4e4bc18382088514ebde9328da057775055940a1f2e18f6ad2d78aa0f3ec5b9"}, - {file = "lxml-4.9.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fc9b106a1bf918db68619fdcd6d5ad4f972fdd19c01d19bdb6bf63f3589a9ec5"}, - {file = "lxml-4.9.3-cp312-cp312-win_amd64.whl", hash = "sha256:d37017287a7adb6ab77e1c5bee9bcf9660f90ff445042b790402a654d2ad81d8"}, - {file = "lxml-4.9.3-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:56dc1f1ebccc656d1b3ed288f11e27172a01503fc016bcabdcbc0978b19352b7"}, - {file = "lxml-4.9.3-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:578695735c5a3f51569810dfebd05dd6f888147a34f0f98d4bb27e92b76e05c2"}, - {file = "lxml-4.9.3-cp35-cp35m-win32.whl", hash = "sha256:704f61ba8c1283c71b16135caf697557f5ecf3e74d9e453233e4771d68a1f42d"}, - {file = "lxml-4.9.3-cp35-cp35m-win_amd64.whl", hash = "sha256:c41bfca0bd3532d53d16fd34d20806d5c2b1ace22a2f2e4c0008570bf2c58833"}, - {file = "lxml-4.9.3-cp36-cp36m-macosx_11_0_x86_64.whl", hash = "sha256:64f479d719dc9f4c813ad9bb6b28f8390360660b73b2e4beb4cb0ae7104f1c12"}, - {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:dd708cf4ee4408cf46a48b108fb9427bfa00b9b85812a9262b5c668af2533ea5"}, - {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c31c7462abdf8f2ac0577d9f05279727e698f97ecbb02f17939ea99ae8daa98"}, - {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:e3cd95e10c2610c360154afdc2f1480aea394f4a4f1ea0a5eacce49640c9b190"}, - {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_28_x86_64.whl", hash = "sha256:4930be26af26ac545c3dffb662521d4e6268352866956672231887d18f0eaab2"}, - {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4aec80cde9197340bc353d2768e2a75f5f60bacda2bab72ab1dc499589b3878c"}, - {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:14e019fd83b831b2e61baed40cab76222139926b1fb5ed0e79225bc0cae14584"}, - {file = "lxml-4.9.3-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0c0850c8b02c298d3c7006b23e98249515ac57430e16a166873fc47a5d549287"}, - {file = "lxml-4.9.3-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:aca086dc5f9ef98c512bac8efea4483eb84abbf926eaeedf7b91479feb092458"}, - {file = "lxml-4.9.3-cp36-cp36m-win32.whl", hash = "sha256:50baa9c1c47efcaef189f31e3d00d697c6d4afda5c3cde0302d063492ff9b477"}, - {file = "lxml-4.9.3-cp36-cp36m-win_amd64.whl", hash = "sha256:bef4e656f7d98aaa3486d2627e7d2df1157d7e88e7efd43a65aa5dd4714916cf"}, - {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:46f409a2d60f634fe550f7133ed30ad5321ae2e6630f13657fb9479506b00601"}, - {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:4c28a9144688aef80d6ea666c809b4b0e50010a2aca784c97f5e6bf143d9f129"}, - {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:141f1d1a9b663c679dc524af3ea1773e618907e96075262726c7612c02b149a4"}, - {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:53ace1c1fd5a74ef662f844a0413446c0629d151055340e9893da958a374f70d"}, - {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:17a753023436a18e27dd7769e798ce302963c236bc4114ceee5b25c18c52c693"}, - {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7d298a1bd60c067ea75d9f684f5f3992c9d6766fadbc0bcedd39750bf344c2f4"}, - {file = "lxml-4.9.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:081d32421db5df44c41b7f08a334a090a545c54ba977e47fd7cc2deece78809a"}, - {file = "lxml-4.9.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:23eed6d7b1a3336ad92d8e39d4bfe09073c31bfe502f20ca5116b2a334f8ec02"}, - {file = "lxml-4.9.3-cp37-cp37m-win32.whl", hash = "sha256:1509dd12b773c02acd154582088820893109f6ca27ef7291b003d0e81666109f"}, - {file = "lxml-4.9.3-cp37-cp37m-win_amd64.whl", hash = "sha256:120fa9349a24c7043854c53cae8cec227e1f79195a7493e09e0c12e29f918e52"}, - {file = "lxml-4.9.3-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:4d2d1edbca80b510443f51afd8496be95529db04a509bc8faee49c7b0fb6d2cc"}, - {file = "lxml-4.9.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:8d7e43bd40f65f7d97ad8ef5c9b1778943d02f04febef12def25f7583d19baac"}, - {file = "lxml-4.9.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:71d66ee82e7417828af6ecd7db817913cb0cf9d4e61aa0ac1fde0583d84358db"}, - {file = "lxml-4.9.3-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:6fc3c450eaa0b56f815c7b62f2b7fba7266c4779adcf1cece9e6deb1de7305ce"}, - {file = "lxml-4.9.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:65299ea57d82fb91c7f019300d24050c4ddeb7c5a190e076b5f48a2b43d19c42"}, - {file = "lxml-4.9.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:eadfbbbfb41b44034a4c757fd5d70baccd43296fb894dba0295606a7cf3124aa"}, - {file = "lxml-4.9.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3e9bdd30efde2b9ccfa9cb5768ba04fe71b018a25ea093379c857c9dad262c40"}, - {file = "lxml-4.9.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fcdd00edfd0a3001e0181eab3e63bd5c74ad3e67152c84f93f13769a40e073a7"}, - {file = "lxml-4.9.3-cp38-cp38-win32.whl", hash = "sha256:57aba1bbdf450b726d58b2aea5fe47c7875f5afb2c4a23784ed78f19a0462574"}, - {file = "lxml-4.9.3-cp38-cp38-win_amd64.whl", hash = "sha256:92af161ecbdb2883c4593d5ed4815ea71b31fafd7fd05789b23100d081ecac96"}, - {file = "lxml-4.9.3-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:9bb6ad405121241e99a86efff22d3ef469024ce22875a7ae045896ad23ba2340"}, - {file = "lxml-4.9.3-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:8ed74706b26ad100433da4b9d807eae371efaa266ffc3e9191ea436087a9d6a7"}, - {file = "lxml-4.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:fbf521479bcac1e25a663df882c46a641a9bff6b56dc8b0fafaebd2f66fb231b"}, - {file = "lxml-4.9.3-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:303bf1edce6ced16bf67a18a1cf8339d0db79577eec5d9a6d4a80f0fb10aa2da"}, - {file = "lxml-4.9.3-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:5515edd2a6d1a5a70bfcdee23b42ec33425e405c5b351478ab7dc9347228f96e"}, - {file = "lxml-4.9.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:690dafd0b187ed38583a648076865d8c229661ed20e48f2335d68e2cf7dc829d"}, - {file = "lxml-4.9.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:b6420a005548ad52154c8ceab4a1290ff78d757f9e5cbc68f8c77089acd3c432"}, - {file = "lxml-4.9.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bb3bb49c7a6ad9d981d734ef7c7193bc349ac338776a0360cc671eaee89bcf69"}, - {file = "lxml-4.9.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d27be7405547d1f958b60837dc4c1007da90b8b23f54ba1f8b728c78fdb19d50"}, - {file = "lxml-4.9.3-cp39-cp39-win32.whl", hash = "sha256:8df133a2ea5e74eef5e8fc6f19b9e085f758768a16e9877a60aec455ed2609b2"}, - {file = "lxml-4.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:4dd9a263e845a72eacb60d12401e37c616438ea2e5442885f65082c276dfb2b2"}, - {file = "lxml-4.9.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:6689a3d7fd13dc687e9102a27e98ef33730ac4fe37795d5036d18b4d527abd35"}, - {file = "lxml-4.9.3-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:f6bdac493b949141b733c5345b6ba8f87a226029cbabc7e9e121a413e49441e0"}, - {file = "lxml-4.9.3-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:05186a0f1346ae12553d66df1cfce6f251589fea3ad3da4f3ef4e34b2d58c6a3"}, - {file = "lxml-4.9.3-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c2006f5c8d28dee289f7020f721354362fa304acbaaf9745751ac4006650254b"}, - {file = "lxml-4.9.3-pp38-pypy38_pp73-macosx_11_0_x86_64.whl", hash = "sha256:5c245b783db29c4e4fbbbfc9c5a78be496c9fea25517f90606aa1f6b2b3d5f7b"}, - {file = "lxml-4.9.3-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:4fb960a632a49f2f089d522f70496640fdf1218f1243889da3822e0a9f5f3ba7"}, - {file = "lxml-4.9.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:50670615eaf97227d5dc60de2dc99fb134a7130d310d783314e7724bf163f75d"}, - {file = "lxml-4.9.3-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:9719fe17307a9e814580af1f5c6e05ca593b12fb7e44fe62450a5384dbf61b4b"}, - {file = "lxml-4.9.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:3331bece23c9ee066e0fb3f96c61322b9e0f54d775fccefff4c38ca488de283a"}, - {file = "lxml-4.9.3-pp39-pypy39_pp73-macosx_11_0_x86_64.whl", hash = "sha256:ed667f49b11360951e201453fc3967344d0d0263aa415e1619e85ae7fd17b4e0"}, - {file = "lxml-4.9.3-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:8b77946fd508cbf0fccd8e400a7f71d4ac0e1595812e66025bac475a8e811694"}, - {file = "lxml-4.9.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:e4da8ca0c0c0aea88fd46be8e44bd49716772358d648cce45fe387f7b92374a7"}, - {file = "lxml-4.9.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:fe4bda6bd4340caa6e5cf95e73f8fea5c4bfc55763dd42f1b50a94c1b4a2fbd4"}, - {file = "lxml-4.9.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:f3df3db1d336b9356dd3112eae5f5c2b8b377f3bc826848567f10bfddfee77e9"}, - {file = "lxml-4.9.3.tar.gz", hash = "sha256:48628bd53a426c9eb9bc066a923acaa0878d1e86129fd5359aee99285f4eed9c"}, +optional = false +python-versions = ">=3.6" +files = [ + {file = "lxml-5.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:dd36439be765e2dde7660212b5275641edbc813e7b24668831a5c8ac91180656"}, + {file = "lxml-5.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ae5fe5c4b525aa82b8076c1a59d642c17b6e8739ecf852522c6321852178119d"}, + {file = "lxml-5.3.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:501d0d7e26b4d261fca8132854d845e4988097611ba2531408ec91cf3fd9d20a"}, + {file = "lxml-5.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb66442c2546446944437df74379e9cf9e9db353e61301d1a0e26482f43f0dd8"}, + {file = "lxml-5.3.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9e41506fec7a7f9405b14aa2d5c8abbb4dbbd09d88f9496958b6d00cb4d45330"}, + {file = "lxml-5.3.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f7d4a670107d75dfe5ad080bed6c341d18c4442f9378c9f58e5851e86eb79965"}, + {file = "lxml-5.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41ce1f1e2c7755abfc7e759dc34d7d05fd221723ff822947132dc934d122fe22"}, + {file = "lxml-5.3.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:44264ecae91b30e5633013fb66f6ddd05c006d3e0e884f75ce0b4755b3e3847b"}, + {file = "lxml-5.3.0-cp310-cp310-manylinux_2_28_ppc64le.whl", hash = "sha256:3c174dc350d3ec52deb77f2faf05c439331d6ed5e702fc247ccb4e6b62d884b7"}, + {file = "lxml-5.3.0-cp310-cp310-manylinux_2_28_s390x.whl", hash = "sha256:2dfab5fa6a28a0b60a20638dc48e6343c02ea9933e3279ccb132f555a62323d8"}, + {file = "lxml-5.3.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:b1c8c20847b9f34e98080da785bb2336ea982e7f913eed5809e5a3c872900f32"}, + {file = "lxml-5.3.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:2c86bf781b12ba417f64f3422cfc302523ac9cd1d8ae8c0f92a1c66e56ef2e86"}, + {file = "lxml-5.3.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:c162b216070f280fa7da844531169be0baf9ccb17263cf5a8bf876fcd3117fa5"}, + {file = "lxml-5.3.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:36aef61a1678cb778097b4a6eeae96a69875d51d1e8f4d4b491ab3cfb54b5a03"}, + {file = "lxml-5.3.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f65e5120863c2b266dbcc927b306c5b78e502c71edf3295dfcb9501ec96e5fc7"}, + {file = "lxml-5.3.0-cp310-cp310-win32.whl", hash = "sha256:ef0c1fe22171dd7c7c27147f2e9c3e86f8bdf473fed75f16b0c2e84a5030ce80"}, + {file = "lxml-5.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:052d99051e77a4f3e8482c65014cf6372e61b0a6f4fe9edb98503bb5364cfee3"}, + {file = "lxml-5.3.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:74bcb423462233bc5d6066e4e98b0264e7c1bed7541fff2f4e34fe6b21563c8b"}, + {file = "lxml-5.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a3d819eb6f9b8677f57f9664265d0a10dd6551d227afb4af2b9cd7bdc2ccbf18"}, + {file = "lxml-5.3.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b8f5db71b28b8c404956ddf79575ea77aa8b1538e8b2ef9ec877945b3f46442"}, + {file = "lxml-5.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c3406b63232fc7e9b8783ab0b765d7c59e7c59ff96759d8ef9632fca27c7ee4"}, + {file = "lxml-5.3.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2ecdd78ab768f844c7a1d4a03595038c166b609f6395e25af9b0f3f26ae1230f"}, + {file = "lxml-5.3.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:168f2dfcfdedf611eb285efac1516c8454c8c99caf271dccda8943576b67552e"}, + {file = "lxml-5.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa617107a410245b8660028a7483b68e7914304a6d4882b5ff3d2d3eb5948d8c"}, + {file = "lxml-5.3.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:69959bd3167b993e6e710b99051265654133a98f20cec1d9b493b931942e9c16"}, + {file = "lxml-5.3.0-cp311-cp311-manylinux_2_28_ppc64le.whl", hash = "sha256:bd96517ef76c8654446fc3db9242d019a1bb5fe8b751ba414765d59f99210b79"}, + {file = "lxml-5.3.0-cp311-cp311-manylinux_2_28_s390x.whl", hash = "sha256:ab6dd83b970dc97c2d10bc71aa925b84788c7c05de30241b9e96f9b6d9ea3080"}, + {file = "lxml-5.3.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:eec1bb8cdbba2925bedc887bc0609a80e599c75b12d87ae42ac23fd199445654"}, + {file = "lxml-5.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6a7095eeec6f89111d03dabfe5883a1fd54da319c94e0fb104ee8f23616b572d"}, + {file = "lxml-5.3.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:6f651ebd0b21ec65dfca93aa629610a0dbc13dbc13554f19b0113da2e61a4763"}, + {file = "lxml-5.3.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:f422a209d2455c56849442ae42f25dbaaba1c6c3f501d58761c619c7836642ec"}, + {file = "lxml-5.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:62f7fdb0d1ed2065451f086519865b4c90aa19aed51081979ecd05a21eb4d1be"}, + {file = "lxml-5.3.0-cp311-cp311-win32.whl", hash = "sha256:c6379f35350b655fd817cd0d6cbeef7f265f3ae5fedb1caae2eb442bbeae9ab9"}, + {file = "lxml-5.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:9c52100e2c2dbb0649b90467935c4b0de5528833c76a35ea1a2691ec9f1ee7a1"}, + {file = "lxml-5.3.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:e99f5507401436fdcc85036a2e7dc2e28d962550afe1cbfc07c40e454256a859"}, + {file = "lxml-5.3.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:384aacddf2e5813a36495233b64cb96b1949da72bef933918ba5c84e06af8f0e"}, + {file = "lxml-5.3.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:874a216bf6afaf97c263b56371434e47e2c652d215788396f60477540298218f"}, + {file = "lxml-5.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65ab5685d56914b9a2a34d67dd5488b83213d680b0c5d10b47f81da5a16b0b0e"}, + {file = "lxml-5.3.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aac0bbd3e8dd2d9c45ceb82249e8bdd3ac99131a32b4d35c8af3cc9db1657179"}, + {file = "lxml-5.3.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b369d3db3c22ed14c75ccd5af429086f166a19627e84a8fdade3f8f31426e52a"}, + {file = "lxml-5.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c24037349665434f375645fa9d1f5304800cec574d0310f618490c871fd902b3"}, + {file = "lxml-5.3.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:62d172f358f33a26d6b41b28c170c63886742f5b6772a42b59b4f0fa10526cb1"}, + {file = "lxml-5.3.0-cp312-cp312-manylinux_2_28_ppc64le.whl", hash = "sha256:c1f794c02903c2824fccce5b20c339a1a14b114e83b306ff11b597c5f71a1c8d"}, + {file = "lxml-5.3.0-cp312-cp312-manylinux_2_28_s390x.whl", hash = "sha256:5d6a6972b93c426ace71e0be9a6f4b2cfae9b1baed2eed2006076a746692288c"}, + {file = "lxml-5.3.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:3879cc6ce938ff4eb4900d901ed63555c778731a96365e53fadb36437a131a99"}, + {file = "lxml-5.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:74068c601baff6ff021c70f0935b0c7bc528baa8ea210c202e03757c68c5a4ff"}, + {file = "lxml-5.3.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:ecd4ad8453ac17bc7ba3868371bffb46f628161ad0eefbd0a855d2c8c32dd81a"}, + {file = "lxml-5.3.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:7e2f58095acc211eb9d8b5771bf04df9ff37d6b87618d1cbf85f92399c98dae8"}, + {file = "lxml-5.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e63601ad5cd8f860aa99d109889b5ac34de571c7ee902d6812d5d9ddcc77fa7d"}, + {file = "lxml-5.3.0-cp312-cp312-win32.whl", hash = "sha256:17e8d968d04a37c50ad9c456a286b525d78c4a1c15dd53aa46c1d8e06bf6fa30"}, + {file = "lxml-5.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:c1a69e58a6bb2de65902051d57fde951febad631a20a64572677a1052690482f"}, + {file = "lxml-5.3.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8c72e9563347c7395910de6a3100a4840a75a6f60e05af5e58566868d5eb2d6a"}, + {file = "lxml-5.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e92ce66cd919d18d14b3856906a61d3f6b6a8500e0794142338da644260595cd"}, + {file = "lxml-5.3.0-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d04f064bebdfef9240478f7a779e8c5dc32b8b7b0b2fc6a62e39b928d428e51"}, + {file = "lxml-5.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c2fb570d7823c2bbaf8b419ba6e5662137f8166e364a8b2b91051a1fb40ab8b"}, + {file = "lxml-5.3.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0c120f43553ec759f8de1fee2f4794452b0946773299d44c36bfe18e83caf002"}, + {file = "lxml-5.3.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:562e7494778a69086f0312ec9689f6b6ac1c6b65670ed7d0267e49f57ffa08c4"}, + {file = "lxml-5.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:423b121f7e6fa514ba0c7918e56955a1d4470ed35faa03e3d9f0e3baa4c7e492"}, + {file = "lxml-5.3.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:c00f323cc00576df6165cc9d21a4c21285fa6b9989c5c39830c3903dc4303ef3"}, + {file = "lxml-5.3.0-cp313-cp313-manylinux_2_28_ppc64le.whl", hash = "sha256:1fdc9fae8dd4c763e8a31e7630afef517eab9f5d5d31a278df087f307bf601f4"}, + {file = "lxml-5.3.0-cp313-cp313-manylinux_2_28_s390x.whl", hash = "sha256:658f2aa69d31e09699705949b5fc4719cbecbd4a97f9656a232e7d6c7be1a367"}, + {file = "lxml-5.3.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:1473427aff3d66a3fa2199004c3e601e6c4500ab86696edffdbc84954c72d832"}, + {file = "lxml-5.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a87de7dd873bf9a792bf1e58b1c3887b9264036629a5bf2d2e6579fe8e73edff"}, + {file = "lxml-5.3.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:0d7b36afa46c97875303a94e8f3ad932bf78bace9e18e603f2085b652422edcd"}, + {file = "lxml-5.3.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:cf120cce539453ae086eacc0130a324e7026113510efa83ab42ef3fcfccac7fb"}, + {file = "lxml-5.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:df5c7333167b9674aa8ae1d4008fa4bc17a313cc490b2cca27838bbdcc6bb15b"}, + {file = "lxml-5.3.0-cp313-cp313-win32.whl", hash = "sha256:c802e1c2ed9f0c06a65bc4ed0189d000ada8049312cfeab6ca635e39c9608957"}, + {file = "lxml-5.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:406246b96d552e0503e17a1006fd27edac678b3fcc9f1be71a2f94b4ff61528d"}, + {file = "lxml-5.3.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:8f0de2d390af441fe8b2c12626d103540b5d850d585b18fcada58d972b74a74e"}, + {file = "lxml-5.3.0-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1afe0a8c353746e610bd9031a630a95bcfb1a720684c3f2b36c4710a0a96528f"}, + {file = "lxml-5.3.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56b9861a71575f5795bde89256e7467ece3d339c9b43141dbdd54544566b3b94"}, + {file = "lxml-5.3.0-cp36-cp36m-manylinux_2_28_x86_64.whl", hash = "sha256:9fb81d2824dff4f2e297a276297e9031f46d2682cafc484f49de182aa5e5df99"}, + {file = "lxml-5.3.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:2c226a06ecb8cdef28845ae976da407917542c5e6e75dcac7cc33eb04aaeb237"}, + {file = "lxml-5.3.0-cp36-cp36m-musllinux_1_2_x86_64.whl", hash = "sha256:7d3d1ca42870cdb6d0d29939630dbe48fa511c203724820fc0fd507b2fb46577"}, + {file = "lxml-5.3.0-cp36-cp36m-win32.whl", hash = "sha256:094cb601ba9f55296774c2d57ad68730daa0b13dc260e1f941b4d13678239e70"}, + {file = "lxml-5.3.0-cp36-cp36m-win_amd64.whl", hash = "sha256:eafa2c8658f4e560b098fe9fc54539f86528651f61849b22111a9b107d18910c"}, + {file = "lxml-5.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:cb83f8a875b3d9b458cada4f880fa498646874ba4011dc974e071a0a84a1b033"}, + {file = "lxml-5.3.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:25f1b69d41656b05885aa185f5fdf822cb01a586d1b32739633679699f220391"}, + {file = "lxml-5.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23e0553b8055600b3bf4a00b255ec5c92e1e4aebf8c2c09334f8368e8bd174d6"}, + {file = "lxml-5.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ada35dd21dc6c039259596b358caab6b13f4db4d4a7f8665764d616daf9cc1d"}, + {file = "lxml-5.3.0-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:81b4e48da4c69313192d8c8d4311e5d818b8be1afe68ee20f6385d0e96fc9512"}, + {file = "lxml-5.3.0-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:2bc9fd5ca4729af796f9f59cd8ff160fe06a474da40aca03fcc79655ddee1a8b"}, + {file = "lxml-5.3.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:07da23d7ee08577760f0a71d67a861019103e4812c87e2fab26b039054594cc5"}, + {file = "lxml-5.3.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:ea2e2f6f801696ad7de8aec061044d6c8c0dd4037608c7cab38a9a4d316bfb11"}, + {file = "lxml-5.3.0-cp37-cp37m-win32.whl", hash = "sha256:5c54afdcbb0182d06836cc3d1be921e540be3ebdf8b8a51ee3ef987537455f84"}, + {file = "lxml-5.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:f2901429da1e645ce548bf9171784c0f74f0718c3f6150ce166be39e4dd66c3e"}, + {file = "lxml-5.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c56a1d43b2f9ee4786e4658c7903f05da35b923fb53c11025712562d5cc02753"}, + {file = "lxml-5.3.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ee8c39582d2652dcd516d1b879451500f8db3fe3607ce45d7c5957ab2596040"}, + {file = "lxml-5.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fdf3a3059611f7585a78ee10399a15566356116a4288380921a4b598d807a22"}, + {file = "lxml-5.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:146173654d79eb1fc97498b4280c1d3e1e5d58c398fa530905c9ea50ea849b22"}, + {file = "lxml-5.3.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:0a7056921edbdd7560746f4221dca89bb7a3fe457d3d74267995253f46343f15"}, + {file = "lxml-5.3.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:9e4b47ac0f5e749cfc618efdf4726269441014ae1d5583e047b452a32e221920"}, + {file = "lxml-5.3.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:f914c03e6a31deb632e2daa881fe198461f4d06e57ac3d0e05bbcab8eae01945"}, + {file = "lxml-5.3.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:213261f168c5e1d9b7535a67e68b1f59f92398dd17a56d934550837143f79c42"}, + {file = "lxml-5.3.0-cp38-cp38-win32.whl", hash = "sha256:218c1b2e17a710e363855594230f44060e2025b05c80d1f0661258142b2add2e"}, + {file = "lxml-5.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:315f9542011b2c4e1d280e4a20ddcca1761993dda3afc7a73b01235f8641e903"}, + {file = "lxml-5.3.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:1ffc23010330c2ab67fac02781df60998ca8fe759e8efde6f8b756a20599c5de"}, + {file = "lxml-5.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2b3778cb38212f52fac9fe913017deea2fdf4eb1a4f8e4cfc6b009a13a6d3fcc"}, + {file = "lxml-5.3.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b0c7a688944891086ba192e21c5229dea54382f4836a209ff8d0a660fac06be"}, + {file = "lxml-5.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:747a3d3e98e24597981ca0be0fd922aebd471fa99d0043a3842d00cdcad7ad6a"}, + {file = "lxml-5.3.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86a6b24b19eaebc448dc56b87c4865527855145d851f9fc3891673ff97950540"}, + {file = "lxml-5.3.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b11a5d918a6216e521c715b02749240fb07ae5a1fefd4b7bf12f833bc8b4fe70"}, + {file = "lxml-5.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68b87753c784d6acb8a25b05cb526c3406913c9d988d51f80adecc2b0775d6aa"}, + {file = "lxml-5.3.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:109fa6fede314cc50eed29e6e56c540075e63d922455346f11e4d7a036d2b8cf"}, + {file = "lxml-5.3.0-cp39-cp39-manylinux_2_28_ppc64le.whl", hash = "sha256:02ced472497b8362c8e902ade23e3300479f4f43e45f4105c85ef43b8db85229"}, + {file = "lxml-5.3.0-cp39-cp39-manylinux_2_28_s390x.whl", hash = "sha256:6b038cc86b285e4f9fea2ba5ee76e89f21ed1ea898e287dc277a25884f3a7dfe"}, + {file = "lxml-5.3.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:7437237c6a66b7ca341e868cda48be24b8701862757426852c9b3186de1da8a2"}, + {file = "lxml-5.3.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7f41026c1d64043a36fda21d64c5026762d53a77043e73e94b71f0521939cc71"}, + {file = "lxml-5.3.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:482c2f67761868f0108b1743098640fbb2a28a8e15bf3f47ada9fa59d9fe08c3"}, + {file = "lxml-5.3.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:1483fd3358963cc5c1c9b122c80606a3a79ee0875bcac0204149fa09d6ff2727"}, + {file = "lxml-5.3.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2dec2d1130a9cda5b904696cec33b2cfb451304ba9081eeda7f90f724097300a"}, + {file = "lxml-5.3.0-cp39-cp39-win32.whl", hash = "sha256:a0eabd0a81625049c5df745209dc7fcef6e2aea7793e5f003ba363610aa0a3ff"}, + {file = "lxml-5.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:89e043f1d9d341c52bf2af6d02e6adde62e0a46e6755d5eb60dc6e4f0b8aeca2"}, + {file = "lxml-5.3.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7b1cd427cb0d5f7393c31b7496419da594fe600e6fdc4b105a54f82405e6626c"}, + {file = "lxml-5.3.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:51806cfe0279e06ed8500ce19479d757db42a30fd509940b1701be9c86a5ff9a"}, + {file = "lxml-5.3.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee70d08fd60c9565ba8190f41a46a54096afa0eeb8f76bd66f2c25d3b1b83005"}, + {file = "lxml-5.3.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:8dc2c0395bea8254d8daebc76dcf8eb3a95ec2a46fa6fae5eaccee366bfe02ce"}, + {file = "lxml-5.3.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:6ba0d3dcac281aad8a0e5b14c7ed6f9fa89c8612b47939fc94f80b16e2e9bc83"}, + {file = "lxml-5.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:6e91cf736959057f7aac7adfc83481e03615a8e8dd5758aa1d95ea69e8931dba"}, + {file = "lxml-5.3.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:94d6c3782907b5e40e21cadf94b13b0842ac421192f26b84c45f13f3c9d5dc27"}, + {file = "lxml-5.3.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c300306673aa0f3ed5ed9372b21867690a17dba38c68c44b287437c362ce486b"}, + {file = "lxml-5.3.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78d9b952e07aed35fe2e1a7ad26e929595412db48535921c5013edc8aa4a35ce"}, + {file = "lxml-5.3.0-pp37-pypy37_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:01220dca0d066d1349bd6a1726856a78f7929f3878f7e2ee83c296c69495309e"}, + {file = "lxml-5.3.0-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:2d9b8d9177afaef80c53c0a9e30fa252ff3036fb1c6494d427c066a4ce6a282f"}, + {file = "lxml-5.3.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:20094fc3f21ea0a8669dc4c61ed7fa8263bd37d97d93b90f28fc613371e7a875"}, + {file = "lxml-5.3.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ace2c2326a319a0bb8a8b0e5b570c764962e95818de9f259ce814ee666603f19"}, + {file = "lxml-5.3.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92e67a0be1639c251d21e35fe74df6bcc40cba445c2cda7c4a967656733249e2"}, + {file = "lxml-5.3.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd5350b55f9fecddc51385463a4f67a5da829bc741e38cf689f38ec9023f54ab"}, + {file = "lxml-5.3.0-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:4c1fefd7e3d00921c44dc9ca80a775af49698bbfd92ea84498e56acffd4c5469"}, + {file = "lxml-5.3.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:71a8dd38fbd2f2319136d4ae855a7078c69c9a38ae06e0c17c73fd70fc6caad8"}, + {file = "lxml-5.3.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:97acf1e1fd66ab53dacd2c35b319d7e548380c2e9e8c54525c6e76d21b1ae3b1"}, + {file = "lxml-5.3.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:68934b242c51eb02907c5b81d138cb977b2129a0a75a8f8b60b01cb8586c7b21"}, + {file = "lxml-5.3.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b710bc2b8292966b23a6a0121f7a6c51d45d2347edcc75f016ac123b8054d3f2"}, + {file = "lxml-5.3.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18feb4b93302091b1541221196a2155aa296c363fd233814fa11e181adebc52f"}, + {file = "lxml-5.3.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:3eb44520c4724c2e1a57c0af33a379eee41792595023f367ba3952a2d96c2aab"}, + {file = "lxml-5.3.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:609251a0ca4770e5a8768ff902aa02bf636339c5a93f9349b48eb1f606f7f3e9"}, + {file = "lxml-5.3.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:516f491c834eb320d6c843156440fe7fc0d50b33e44387fcec5b02f0bc118a4c"}, + {file = "lxml-5.3.0.tar.gz", hash = "sha256:4e109ca30d1edec1ac60cdbe341905dc3b8f55b16855e03a54aaf59e51ec8c6f"}, ] [package.extras] cssselect = ["cssselect (>=0.7)"] +html-clean = ["lxml-html-clean"] html5 = ["html5lib"] htmlsoup = ["BeautifulSoup4"] -source = ["Cython (>=0.29.35)"] +source = ["Cython (>=3.0.11)"] [[package]] name = "mako" -version = "1.2.4" +version = "1.3.5" description = "A super-fast templating language that borrows the best ideas from the existing templating languages." -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "Mako-1.2.4-py3-none-any.whl", hash = "sha256:c97c79c018b9165ac9922ae4f32da095ffd3c4e6872b45eded42926deea46818"}, - {file = "Mako-1.2.4.tar.gz", hash = "sha256:d60a3903dc3bb01a18ad6a89cdbe2e4eadc69c0bc8ef1e3773ba53d44c3f7a34"}, + {file = "Mako-1.3.5-py3-none-any.whl", hash = "sha256:260f1dbc3a519453a9c856dedfe4beb4e50bd5a26d96386cb6c80856556bb91a"}, + {file = "Mako-1.3.5.tar.gz", hash = "sha256:48dbc20568c1d276a2698b36d968fa76161bf127194907ea6fc594fa81f943bc"}, ] [package.dependencies] @@ -1695,7 +1581,6 @@ testing = ["pytest"] name = "mando" version = "0.7.1" description = "Create Python CLI apps with little to no effort at all!" -category = "dev" optional = false python-versions = "*" files = [ @@ -1711,69 +1596,129 @@ restructuredtext = ["rst2ansi"] [[package]] name = "markupsafe" -version = "2.1.3" +version = "2.1.5" description = "Safely add untrusted strings to HTML/XML markup." -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-win32.whl", hash = "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-win32.whl", hash = "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-win_amd64.whl", hash = "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-win32.whl", hash = "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-win_amd64.whl", hash = "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-win32.whl", hash = "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba"}, - {file = "MarkupSafe-2.1.3.tar.gz", hash = "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, + {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, +] + +[[package]] +name = "msgspec" +version = "0.18.6" +description = "A fast serialization and validation library, with builtin support for JSON, MessagePack, YAML, and TOML." +optional = false +python-versions = ">=3.8" +files = [ + {file = "msgspec-0.18.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:77f30b0234eceeff0f651119b9821ce80949b4d667ad38f3bfed0d0ebf9d6d8f"}, + {file = "msgspec-0.18.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1a76b60e501b3932782a9da039bd1cd552b7d8dec54ce38332b87136c64852dd"}, + {file = "msgspec-0.18.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06acbd6edf175bee0e36295d6b0302c6de3aaf61246b46f9549ca0041a9d7177"}, + {file = "msgspec-0.18.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40a4df891676d9c28a67c2cc39947c33de516335680d1316a89e8f7218660410"}, + {file = "msgspec-0.18.6-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:a6896f4cd5b4b7d688018805520769a8446df911eb93b421c6c68155cdf9dd5a"}, + {file = "msgspec-0.18.6-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3ac4dd63fd5309dd42a8c8c36c1563531069152be7819518be0a9d03be9788e4"}, + {file = "msgspec-0.18.6-cp310-cp310-win_amd64.whl", hash = "sha256:fda4c357145cf0b760000c4ad597e19b53adf01382b711f281720a10a0fe72b7"}, + {file = "msgspec-0.18.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e77e56ffe2701e83a96e35770c6adb655ffc074d530018d1b584a8e635b4f36f"}, + {file = "msgspec-0.18.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d5351afb216b743df4b6b147691523697ff3a2fc5f3d54f771e91219f5c23aaa"}, + {file = "msgspec-0.18.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3232fabacef86fe8323cecbe99abbc5c02f7698e3f5f2e248e3480b66a3596b"}, + {file = "msgspec-0.18.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3b524df6ea9998bbc99ea6ee4d0276a101bcc1aa8d14887bb823914d9f60d07"}, + {file = "msgspec-0.18.6-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:37f67c1d81272131895bb20d388dd8d341390acd0e192a55ab02d4d6468b434c"}, + {file = "msgspec-0.18.6-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d0feb7a03d971c1c0353de1a8fe30bb6579c2dc5ccf29b5f7c7ab01172010492"}, + {file = "msgspec-0.18.6-cp311-cp311-win_amd64.whl", hash = "sha256:41cf758d3f40428c235c0f27bc6f322d43063bc32da7b9643e3f805c21ed57b4"}, + {file = "msgspec-0.18.6-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d86f5071fe33e19500920333c11e2267a31942d18fed4d9de5bc2fbab267d28c"}, + {file = "msgspec-0.18.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce13981bfa06f5eb126a3a5a38b1976bddb49a36e4f46d8e6edecf33ccf11df1"}, + {file = "msgspec-0.18.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e97dec6932ad5e3ee1e3c14718638ba333befc45e0661caa57033cd4cc489466"}, + {file = "msgspec-0.18.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad237100393f637b297926cae1868b0d500f764ccd2f0623a380e2bcfb2809ca"}, + {file = "msgspec-0.18.6-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db1d8626748fa5d29bbd15da58b2d73af25b10aa98abf85aab8028119188ed57"}, + {file = "msgspec-0.18.6-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:d70cb3d00d9f4de14d0b31d38dfe60c88ae16f3182988246a9861259c6722af6"}, + {file = "msgspec-0.18.6-cp312-cp312-win_amd64.whl", hash = "sha256:1003c20bfe9c6114cc16ea5db9c5466e49fae3d7f5e2e59cb70693190ad34da0"}, + {file = "msgspec-0.18.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f7d9faed6dfff654a9ca7d9b0068456517f63dbc3aa704a527f493b9200b210a"}, + {file = "msgspec-0.18.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9da21f804c1a1471f26d32b5d9bc0480450ea77fbb8d9db431463ab64aaac2cf"}, + {file = "msgspec-0.18.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:46eb2f6b22b0e61c137e65795b97dc515860bf6ec761d8fb65fdb62aa094ba61"}, + {file = "msgspec-0.18.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8355b55c80ac3e04885d72db515817d9fbb0def3bab936bba104e99ad22cf46"}, + {file = "msgspec-0.18.6-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9080eb12b8f59e177bd1eb5c21e24dd2ba2fa88a1dbc9a98e05ad7779b54c681"}, + {file = "msgspec-0.18.6-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:cc001cf39becf8d2dcd3f413a4797c55009b3a3cdbf78a8bf5a7ca8fdb76032c"}, + {file = "msgspec-0.18.6-cp38-cp38-win_amd64.whl", hash = "sha256:fac5834e14ac4da1fca373753e0c4ec9c8069d1fe5f534fa5208453b6065d5be"}, + {file = "msgspec-0.18.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:974d3520fcc6b824a6dedbdf2b411df31a73e6e7414301abac62e6b8d03791b4"}, + {file = "msgspec-0.18.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fd62e5818731a66aaa8e9b0a1e5543dc979a46278da01e85c3c9a1a4f047ef7e"}, + {file = "msgspec-0.18.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7481355a1adcf1f08dedd9311193c674ffb8bf7b79314b4314752b89a2cf7f1c"}, + {file = "msgspec-0.18.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6aa85198f8f154cf35d6f979998f6dadd3dc46a8a8c714632f53f5d65b315c07"}, + {file = "msgspec-0.18.6-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0e24539b25c85c8f0597274f11061c102ad6b0c56af053373ba4629772b407be"}, + {file = "msgspec-0.18.6-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c61ee4d3be03ea9cd089f7c8e36158786cd06e51fbb62529276452bbf2d52ece"}, + {file = "msgspec-0.18.6-cp39-cp39-win_amd64.whl", hash = "sha256:b5c390b0b0b7da879520d4ae26044d74aeee5144f83087eb7842ba59c02bc090"}, + {file = "msgspec-0.18.6.tar.gz", hash = "sha256:a59fc3b4fcdb972d09138cb516dbde600c99d07c38fd9372a6ef500d2d031b4e"}, ] +[package.extras] +dev = ["attrs", "coverage", "furo", "gcovr", "ipython", "msgpack", "mypy", "pre-commit", "pyright", "pytest", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "tomli", "tomli-w"] +doc = ["furo", "ipython", "sphinx", "sphinx-copybutton", "sphinx-design"] +test = ["attrs", "msgpack", "mypy", "pyright", "pytest", "pyyaml", "tomli", "tomli-w"] +toml = ["tomli", "tomli-w"] +yaml = ["pyyaml"] + [[package]] name = "msrest" version = "0.7.1" description = "AutoRest swagger generator Python client runtime." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1793,60 +1738,55 @@ async = ["aiodns", "aiohttp (>=3.0)"] [[package]] name = "mypy" -version = "0.991" +version = "1.11.1" description = "Optional static typing for Python" -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "mypy-0.991-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7d17e0a9707d0772f4a7b878f04b4fd11f6f5bcb9b3813975a9b13c9332153ab"}, - {file = "mypy-0.991-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0714258640194d75677e86c786e80ccf294972cc76885d3ebbb560f11db0003d"}, - {file = "mypy-0.991-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0c8f3be99e8a8bd403caa8c03be619544bc2c77a7093685dcf308c6b109426c6"}, - {file = "mypy-0.991-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc9ec663ed6c8f15f4ae9d3c04c989b744436c16d26580eaa760ae9dd5d662eb"}, - {file = "mypy-0.991-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4307270436fd7694b41f913eb09210faff27ea4979ecbcd849e57d2da2f65305"}, - {file = "mypy-0.991-cp310-cp310-win_amd64.whl", hash = "sha256:901c2c269c616e6cb0998b33d4adbb4a6af0ac4ce5cd078afd7bc95830e62c1c"}, - {file = "mypy-0.991-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d13674f3fb73805ba0c45eb6c0c3053d218aa1f7abead6e446d474529aafc372"}, - {file = "mypy-0.991-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1c8cd4fb70e8584ca1ed5805cbc7c017a3d1a29fb450621089ffed3e99d1857f"}, - {file = "mypy-0.991-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:209ee89fbb0deed518605edddd234af80506aec932ad28d73c08f1400ef80a33"}, - {file = "mypy-0.991-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37bd02ebf9d10e05b00d71302d2c2e6ca333e6c2a8584a98c00e038db8121f05"}, - {file = "mypy-0.991-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:26efb2fcc6b67e4d5a55561f39176821d2adf88f2745ddc72751b7890f3194ad"}, - {file = "mypy-0.991-cp311-cp311-win_amd64.whl", hash = "sha256:3a700330b567114b673cf8ee7388e949f843b356a73b5ab22dd7cff4742a5297"}, - {file = "mypy-0.991-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:1f7d1a520373e2272b10796c3ff721ea1a0712288cafaa95931e66aa15798813"}, - {file = "mypy-0.991-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:641411733b127c3e0dab94c45af15fea99e4468f99ac88b39efb1ad677da5711"}, - {file = "mypy-0.991-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3d80e36b7d7a9259b740be6d8d906221789b0d836201af4234093cae89ced0cd"}, - {file = "mypy-0.991-cp37-cp37m-win_amd64.whl", hash = "sha256:e62ebaad93be3ad1a828a11e90f0e76f15449371ffeecca4a0a0b9adc99abcef"}, - {file = "mypy-0.991-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b86ce2c1866a748c0f6faca5232059f881cda6dda2a893b9a8373353cfe3715a"}, - {file = "mypy-0.991-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ac6e503823143464538efda0e8e356d871557ef60ccd38f8824a4257acc18d93"}, - {file = "mypy-0.991-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0cca5adf694af539aeaa6ac633a7afe9bbd760df9d31be55ab780b77ab5ae8bf"}, - {file = "mypy-0.991-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a12c56bf73cdab116df96e4ff39610b92a348cc99a1307e1da3c3768bbb5b135"}, - {file = "mypy-0.991-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:652b651d42f155033a1967739788c436491b577b6a44e4c39fb340d0ee7f0d70"}, - {file = "mypy-0.991-cp38-cp38-win_amd64.whl", hash = "sha256:4175593dc25d9da12f7de8de873a33f9b2b8bdb4e827a7cae952e5b1a342e243"}, - {file = "mypy-0.991-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:98e781cd35c0acf33eb0295e8b9c55cdbef64fcb35f6d3aa2186f289bed6e80d"}, - {file = "mypy-0.991-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6d7464bac72a85cb3491c7e92b5b62f3dcccb8af26826257760a552a5e244aa5"}, - {file = "mypy-0.991-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c9166b3f81a10cdf9b49f2d594b21b31adadb3d5e9db9b834866c3258b695be3"}, - {file = "mypy-0.991-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8472f736a5bfb159a5e36740847808f6f5b659960115ff29c7cecec1741c648"}, - {file = "mypy-0.991-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e80e758243b97b618cdf22004beb09e8a2de1af481382e4d84bc52152d1c476"}, - {file = "mypy-0.991-cp39-cp39-win_amd64.whl", hash = "sha256:74e259b5c19f70d35fcc1ad3d56499065c601dfe94ff67ae48b85596b9ec1461"}, - {file = "mypy-0.991-py3-none-any.whl", hash = "sha256:de32edc9b0a7e67c2775e574cb061a537660e51210fbf6006b0b36ea695ae9bb"}, - {file = "mypy-0.991.tar.gz", hash = "sha256:3c0165ba8f354a6d9881809ef29f1a9318a236a6d81c690094c5df32107bde06"}, -] - -[package.dependencies] -mypy-extensions = ">=0.4.3" + {file = "mypy-1.11.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a32fc80b63de4b5b3e65f4be82b4cfa362a46702672aa6a0f443b4689af7008c"}, + {file = "mypy-1.11.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c1952f5ea8a5a959b05ed5f16452fddadbaae48b5d39235ab4c3fc444d5fd411"}, + {file = "mypy-1.11.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1e30dc3bfa4e157e53c1d17a0dad20f89dc433393e7702b813c10e200843b03"}, + {file = "mypy-1.11.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2c63350af88f43a66d3dfeeeb8d77af34a4f07d760b9eb3a8697f0386c7590b4"}, + {file = "mypy-1.11.1-cp310-cp310-win_amd64.whl", hash = "sha256:a831671bad47186603872a3abc19634f3011d7f83b083762c942442d51c58d58"}, + {file = "mypy-1.11.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7b6343d338390bb946d449677726edf60102a1c96079b4f002dedff375953fc5"}, + {file = "mypy-1.11.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e4fe9f4e5e521b458d8feb52547f4bade7ef8c93238dfb5bbc790d9ff2d770ca"}, + {file = "mypy-1.11.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:886c9dbecc87b9516eff294541bf7f3655722bf22bb898ee06985cd7269898de"}, + {file = "mypy-1.11.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fca4a60e1dd9fd0193ae0067eaeeb962f2d79e0d9f0f66223a0682f26ffcc809"}, + {file = "mypy-1.11.1-cp311-cp311-win_amd64.whl", hash = "sha256:0bd53faf56de9643336aeea1c925012837432b5faf1701ccca7fde70166ccf72"}, + {file = "mypy-1.11.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f39918a50f74dc5969807dcfaecafa804fa7f90c9d60506835036cc1bc891dc8"}, + {file = "mypy-1.11.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0bc71d1fb27a428139dd78621953effe0d208aed9857cb08d002280b0422003a"}, + {file = "mypy-1.11.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b868d3bcff720dd7217c383474008ddabaf048fad8d78ed948bb4b624870a417"}, + {file = "mypy-1.11.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a707ec1527ffcdd1c784d0924bf5cb15cd7f22683b919668a04d2b9c34549d2e"}, + {file = "mypy-1.11.1-cp312-cp312-win_amd64.whl", hash = "sha256:64f4a90e3ea07f590c5bcf9029035cf0efeae5ba8be511a8caada1a4893f5525"}, + {file = "mypy-1.11.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:749fd3213916f1751fff995fccf20c6195cae941dc968f3aaadf9bb4e430e5a2"}, + {file = "mypy-1.11.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b639dce63a0b19085213ec5fdd8cffd1d81988f47a2dec7100e93564f3e8fb3b"}, + {file = "mypy-1.11.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4c956b49c5d865394d62941b109728c5c596a415e9c5b2be663dd26a1ff07bc0"}, + {file = "mypy-1.11.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:45df906e8b6804ef4b666af29a87ad9f5921aad091c79cc38e12198e220beabd"}, + {file = "mypy-1.11.1-cp38-cp38-win_amd64.whl", hash = "sha256:d44be7551689d9d47b7abc27c71257adfdb53f03880841a5db15ddb22dc63edb"}, + {file = "mypy-1.11.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2684d3f693073ab89d76da8e3921883019ea8a3ec20fa5d8ecca6a2db4c54bbe"}, + {file = "mypy-1.11.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:79c07eb282cb457473add5052b63925e5cc97dfab9812ee65a7c7ab5e3cb551c"}, + {file = "mypy-1.11.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:11965c2f571ded6239977b14deebd3f4c3abd9a92398712d6da3a772974fad69"}, + {file = "mypy-1.11.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a2b43895a0f8154df6519706d9bca8280cda52d3d9d1514b2d9c3e26792a0b74"}, + {file = "mypy-1.11.1-cp39-cp39-win_amd64.whl", hash = "sha256:1a81cf05975fd61aec5ae16501a091cfb9f605dc3e3c878c0da32f250b74760b"}, + {file = "mypy-1.11.1-py3-none-any.whl", hash = "sha256:0624bdb940255d2dd24e829d99a13cfeb72e4e9031f9492148f410ed30bcab54"}, + {file = "mypy-1.11.1.tar.gz", hash = "sha256:f404a0b069709f18bbdb702eb3dcfe51910602995de00bd39cea3050b5772d08"}, +] + +[package.dependencies] +mypy-extensions = ">=1.0.0" tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} -typing-extensions = ">=3.10" +typing-extensions = ">=4.6.0" [package.extras] dmypy = ["psutil (>=4.0)"] install-types = ["pip"] -python2 = ["typed-ast (>=1.4.0,<2)"] +mypyc = ["setuptools (>=50)"] reports = ["lxml"] [[package]] name = "mypy-extensions" version = "1.0.0" description = "Type system extensions for programs checked with the mypy type checker." -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -1856,24 +1796,19 @@ files = [ [[package]] name = "nodeenv" -version = "1.8.0" +version = "1.9.1" description = "Node.js virtual environment builder" -category = "dev" optional = false -python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ - {file = "nodeenv-1.8.0-py2.py3-none-any.whl", hash = "sha256:df865724bb3c3adc86b3876fa209771517b0cfe596beff01a92700e0e8be4cec"}, - {file = "nodeenv-1.8.0.tar.gz", hash = "sha256:d51e0c37e64fbf47d017feac3145cdbb58836d7eee8c6f6d3b6880c5456227d2"}, + {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, + {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, ] -[package.dependencies] -setuptools = "*" - [[package]] name = "oauthlib" version = "3.2.2" description = "A generic, spec-compliant, thorough implementation of the OAuth request-signing logic" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1888,26 +1823,24 @@ signedtoken = ["cryptography (>=3.0.0)", "pyjwt (>=2.0.0,<3)"] [[package]] name = "packaging" -version = "23.1" +version = "24.1" description = "Core utilities for Python packages" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"}, - {file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"}, + {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, + {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, ] [[package]] name = "paramiko" -version = "3.3.1" +version = "3.5.0" description = "SSH2 protocol library" -category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "paramiko-3.3.1-py3-none-any.whl", hash = "sha256:b7bc5340a43de4287bbe22fe6de728aa2c22468b2a849615498dd944c2f275eb"}, - {file = "paramiko-3.3.1.tar.gz", hash = "sha256:6a3777a961ac86dbef375c5f5b8d50014a1a96d0fd7f054a43bc880134b0ff77"}, + {file = "paramiko-3.5.0-py3-none-any.whl", hash = "sha256:1fedf06b085359051cd7d0d270cebe19e755a8a921cc2ddbfa647fb0cd7d68f9"}, + {file = "paramiko-3.5.0.tar.gz", hash = "sha256:ad11e540da4f55cedda52931f1a3f812a8238a7af7f62a60de538cd80bb28124"}, ] [package.dependencies] @@ -1922,58 +1855,56 @@ invoke = ["invoke (>=2.0)"] [[package]] name = "pathspec" -version = "0.11.2" +version = "0.12.1" description = "Utility library for gitignore style pattern matching of file paths." -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pathspec-0.11.2-py3-none-any.whl", hash = "sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20"}, - {file = "pathspec-0.11.2.tar.gz", hash = "sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3"}, + {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, + {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, ] [[package]] name = "pathvalidate" -version = "3.2.0" +version = "3.2.1" description = "pathvalidate is a Python library to sanitize/validate a string such as filenames/file-paths/etc." -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "pathvalidate-3.2.0-py3-none-any.whl", hash = "sha256:cc593caa6299b22b37f228148257997e2fa850eea2daf7e4cc9205cef6908dee"}, - {file = "pathvalidate-3.2.0.tar.gz", hash = "sha256:5e8378cf6712bff67fbe7a8307d99fa8c1a0cb28aa477056f8fc374f0dff24ad"}, + {file = "pathvalidate-3.2.1-py3-none-any.whl", hash = "sha256:9a6255eb8f63c9e2135b9be97a5ce08f10230128c4ae7b3e935378b82b22c4c9"}, + {file = "pathvalidate-3.2.1.tar.gz", hash = "sha256:f5d07b1e2374187040612a1fcd2bcb2919f8db180df254c9581bb90bf903377d"}, ] [package.extras] docs = ["Sphinx (>=2.4)", "sphinx-rtd-theme (>=1.2.2)", "urllib3 (<2)"] -test = ["Faker (>=1.0.8)", "allpairspy (>=2)", "click (>=6.2)", "pytest (>=6.0.1)", "pytest-discord (>=0.1.4)", "pytest-md-report (>=0.4.1)"] +readme = ["path (>=13,<17)", "readmemaker (>=1.1.0)"] +test = ["Faker (>=1.0.8)", "allpairspy (>=2)", "click (>=6.2)", "pytest (>=6.0.1)", "pytest-md-report (>=0.6.2)"] [[package]] name = "platformdirs" -version = "3.10.0" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -category = "main" +version = "4.3.3" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "platformdirs-3.10.0-py3-none-any.whl", hash = "sha256:d7c24979f292f916dc9cbf8648319032f551ea8c49a4c9bf2fb556a02070ec1d"}, - {file = "platformdirs-3.10.0.tar.gz", hash = "sha256:b45696dab2d7cc691a3226759c0d3b00c47c8b6e293d96f6436f733303f77f6d"}, + {file = "platformdirs-4.3.3-py3-none-any.whl", hash = "sha256:50a5450e2e84f44539718293cbb1da0a0885c9d14adf21b77bae4e66fc99d9b5"}, + {file = "platformdirs-4.3.3.tar.gz", hash = "sha256:d4e0b7d8ec176b341fb03cb11ca12d0276faa8c485f9cd218f613840463fc2c0"}, ] [package.extras] -docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.1)", "sphinx-autodoc-typehints (>=1.24)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)"] +docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] +type = ["mypy (>=1.11.2)"] [[package]] name = "pluggy" -version = "1.3.0" +version = "1.5.0" description = "plugin and hook calling mechanisms for python" -category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "pluggy-1.3.0-py3-none-any.whl", hash = "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7"}, - {file = "pluggy-1.3.0.tar.gz", hash = "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12"}, + {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, + {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, ] [package.extras] @@ -1982,14 +1913,13 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "pre-commit" -version = "3.4.0" +version = "3.8.0" description = "A framework for managing and maintaining multi-language pre-commit hooks." -category = "dev" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "pre_commit-3.4.0-py2.py3-none-any.whl", hash = "sha256:96d529a951f8b677f730a7212442027e8ba53f9b04d217c4c67dc56c393ad945"}, - {file = "pre_commit-3.4.0.tar.gz", hash = "sha256:6bbd5129a64cad4c0dfaeeb12cd8f7ea7e15b77028d985341478c8af3c759522"}, + {file = "pre_commit-3.8.0-py2.py3-none-any.whl", hash = "sha256:9a90a53bf82fdd8778d58085faf8d83df56e40dfe18f45b19446e26bf1b3a63f"}, + {file = "pre_commit-3.8.0.tar.gz", hash = "sha256:8bb6494d4a20423842e198980c9ecf9f96607a07ea29549e180eef9ae80fe7af"}, ] [package.dependencies] @@ -2001,26 +1931,28 @@ virtualenv = ">=20.10.0" [[package]] name = "psutil" -version = "5.9.5" +version = "6.0.0" description = "Cross-platform lib for process and system monitoring in Python." -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "psutil-5.9.5-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:be8929ce4313f9f8146caad4272f6abb8bf99fc6cf59344a3167ecd74f4f203f"}, - {file = "psutil-5.9.5-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ab8ed1a1d77c95453db1ae00a3f9c50227ebd955437bcf2a574ba8adbf6a74d5"}, - {file = "psutil-5.9.5-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:4aef137f3345082a3d3232187aeb4ac4ef959ba3d7c10c33dd73763fbc063da4"}, - {file = "psutil-5.9.5-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:ea8518d152174e1249c4f2a1c89e3e6065941df2fa13a1ab45327716a23c2b48"}, - {file = "psutil-5.9.5-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:acf2aef9391710afded549ff602b5887d7a2349831ae4c26be7c807c0a39fac4"}, - {file = "psutil-5.9.5-cp27-none-win32.whl", hash = "sha256:5b9b8cb93f507e8dbaf22af6a2fd0ccbe8244bf30b1baad6b3954e935157ae3f"}, - {file = "psutil-5.9.5-cp27-none-win_amd64.whl", hash = "sha256:8c5f7c5a052d1d567db4ddd231a9d27a74e8e4a9c3f44b1032762bd7b9fdcd42"}, - {file = "psutil-5.9.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:3c6f686f4225553615612f6d9bc21f1c0e305f75d7d8454f9b46e901778e7217"}, - {file = "psutil-5.9.5-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7a7dd9997128a0d928ed4fb2c2d57e5102bb6089027939f3b722f3a210f9a8da"}, - {file = "psutil-5.9.5-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89518112647f1276b03ca97b65cc7f64ca587b1eb0278383017c2a0dcc26cbe4"}, - {file = "psutil-5.9.5-cp36-abi3-win32.whl", hash = "sha256:104a5cc0e31baa2bcf67900be36acde157756b9c44017b86b2c049f11957887d"}, - {file = "psutil-5.9.5-cp36-abi3-win_amd64.whl", hash = "sha256:b258c0c1c9d145a1d5ceffab1134441c4c5113b2417fafff7315a917a026c3c9"}, - {file = "psutil-5.9.5-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:c607bb3b57dc779d55e1554846352b4e358c10fff3abf3514a7a6601beebdb30"}, - {file = "psutil-5.9.5.tar.gz", hash = "sha256:5410638e4df39c54d957fc51ce03048acd8e6d60abc0f5107af51e5fb566eb3c"}, +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +files = [ + {file = "psutil-6.0.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a021da3e881cd935e64a3d0a20983bda0bb4cf80e4f74fa9bfcb1bc5785360c6"}, + {file = "psutil-6.0.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:1287c2b95f1c0a364d23bc6f2ea2365a8d4d9b726a3be7294296ff7ba97c17f0"}, + {file = "psutil-6.0.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:a9a3dbfb4de4f18174528d87cc352d1f788b7496991cca33c6996f40c9e3c92c"}, + {file = "psutil-6.0.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:6ec7588fb3ddaec7344a825afe298db83fe01bfaaab39155fa84cf1c0d6b13c3"}, + {file = "psutil-6.0.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:1e7c870afcb7d91fdea2b37c24aeb08f98b6d67257a5cb0a8bc3ac68d0f1a68c"}, + {file = "psutil-6.0.0-cp27-none-win32.whl", hash = "sha256:02b69001f44cc73c1c5279d02b30a817e339ceb258ad75997325e0e6169d8b35"}, + {file = "psutil-6.0.0-cp27-none-win_amd64.whl", hash = "sha256:21f1fb635deccd510f69f485b87433460a603919b45e2a324ad65b0cc74f8fb1"}, + {file = "psutil-6.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c588a7e9b1173b6e866756dde596fd4cad94f9399daf99ad8c3258b3cb2b47a0"}, + {file = "psutil-6.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ed2440ada7ef7d0d608f20ad89a04ec47d2d3ab7190896cd62ca5fc4fe08bf0"}, + {file = "psutil-6.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fd9a97c8e94059b0ef54a7d4baf13b405011176c3b6ff257c247cae0d560ecd"}, + {file = "psutil-6.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2e8d0054fc88153ca0544f5c4d554d42e33df2e009c4ff42284ac9ebdef4132"}, + {file = "psutil-6.0.0-cp36-cp36m-win32.whl", hash = "sha256:fc8c9510cde0146432bbdb433322861ee8c3efbf8589865c8bf8d21cb30c4d14"}, + {file = "psutil-6.0.0-cp36-cp36m-win_amd64.whl", hash = "sha256:34859b8d8f423b86e4385ff3665d3f4d94be3cdf48221fbe476e883514fdb71c"}, + {file = "psutil-6.0.0-cp37-abi3-win32.whl", hash = "sha256:a495580d6bae27291324fe60cea0b5a7c23fa36a7cd35035a16d93bdcf076b9d"}, + {file = "psutil-6.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:33ea5e1c975250a720b3a6609c490db40dae5d83a4eb315170c4fe0d8b1f34b3"}, + {file = "psutil-6.0.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:ffe7fc9b6b36beadc8c322f84e1caff51e8703b88eee1da46d1e3a6ae11b4fd0"}, + {file = "psutil-6.0.0.tar.gz", hash = "sha256:8faae4f310b6d969fa26ca0545338b21f73c6b15db7c4a8d934a5482faa818f2"}, ] [package.extras] @@ -2028,118 +1960,125 @@ test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"] [[package]] name = "psycopg2-binary" -version = "2.9.7" +version = "2.9.9" description = "psycopg2 - Python-PostgreSQL Database Adapter" -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "psycopg2-binary-2.9.7.tar.gz", hash = "sha256:1b918f64a51ffe19cd2e230b3240ba481330ce1d4b7875ae67305bd1d37b041c"}, - {file = "psycopg2_binary-2.9.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ea5f8ee87f1eddc818fc04649d952c526db4426d26bab16efbe5a0c52b27d6ab"}, - {file = "psycopg2_binary-2.9.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2993ccb2b7e80844d534e55e0f12534c2871952f78e0da33c35e648bf002bbff"}, - {file = "psycopg2_binary-2.9.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dbbc3c5d15ed76b0d9db7753c0db40899136ecfe97d50cbde918f630c5eb857a"}, - {file = "psycopg2_binary-2.9.7-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:692df8763b71d42eb8343f54091368f6f6c9cfc56dc391858cdb3c3ef1e3e584"}, - {file = "psycopg2_binary-2.9.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9dcfd5d37e027ec393a303cc0a216be564b96c80ba532f3d1e0d2b5e5e4b1e6e"}, - {file = "psycopg2_binary-2.9.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17cc17a70dfb295a240db7f65b6d8153c3d81efb145d76da1e4a096e9c5c0e63"}, - {file = "psycopg2_binary-2.9.7-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e5666632ba2b0d9757b38fc17337d84bdf932d38563c5234f5f8c54fd01349c9"}, - {file = "psycopg2_binary-2.9.7-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7db7b9b701974c96a88997d458b38ccb110eba8f805d4b4f74944aac48639b42"}, - {file = "psycopg2_binary-2.9.7-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c82986635a16fb1fa15cd5436035c88bc65c3d5ced1cfaac7f357ee9e9deddd4"}, - {file = "psycopg2_binary-2.9.7-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4fe13712357d802080cfccbf8c6266a3121dc0e27e2144819029095ccf708372"}, - {file = "psycopg2_binary-2.9.7-cp310-cp310-win32.whl", hash = "sha256:122641b7fab18ef76b18860dd0c772290566b6fb30cc08e923ad73d17461dc63"}, - {file = "psycopg2_binary-2.9.7-cp310-cp310-win_amd64.whl", hash = "sha256:f8651cf1f144f9ee0fa7d1a1df61a9184ab72962531ca99f077bbdcba3947c58"}, - {file = "psycopg2_binary-2.9.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4ecc15666f16f97709106d87284c136cdc82647e1c3f8392a672616aed3c7151"}, - {file = "psycopg2_binary-2.9.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3fbb1184c7e9d28d67671992970718c05af5f77fc88e26fd7136613c4ece1f89"}, - {file = "psycopg2_binary-2.9.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a7968fd20bd550431837656872c19575b687f3f6f98120046228e451e4064df"}, - {file = "psycopg2_binary-2.9.7-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:094af2e77a1976efd4956a031028774b827029729725e136514aae3cdf49b87b"}, - {file = "psycopg2_binary-2.9.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:26484e913d472ecb6b45937ea55ce29c57c662066d222fb0fbdc1fab457f18c5"}, - {file = "psycopg2_binary-2.9.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f309b77a7c716e6ed9891b9b42953c3ff7d533dc548c1e33fddc73d2f5e21f9"}, - {file = "psycopg2_binary-2.9.7-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6d92e139ca388ccfe8c04aacc163756e55ba4c623c6ba13d5d1595ed97523e4b"}, - {file = "psycopg2_binary-2.9.7-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:2df562bb2e4e00ee064779902d721223cfa9f8f58e7e52318c97d139cf7f012d"}, - {file = "psycopg2_binary-2.9.7-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:4eec5d36dbcfc076caab61a2114c12094c0b7027d57e9e4387b634e8ab36fd44"}, - {file = "psycopg2_binary-2.9.7-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1011eeb0c51e5b9ea1016f0f45fa23aca63966a4c0afcf0340ccabe85a9f65bd"}, - {file = "psycopg2_binary-2.9.7-cp311-cp311-win32.whl", hash = "sha256:ded8e15f7550db9e75c60b3d9fcbc7737fea258a0f10032cdb7edc26c2a671fd"}, - {file = "psycopg2_binary-2.9.7-cp311-cp311-win_amd64.whl", hash = "sha256:8a136c8aaf6615653450817a7abe0fc01e4ea720ae41dfb2823eccae4b9062a3"}, - {file = "psycopg2_binary-2.9.7-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:2dec5a75a3a5d42b120e88e6ed3e3b37b46459202bb8e36cd67591b6e5feebc1"}, - {file = "psycopg2_binary-2.9.7-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc10da7e7df3380426521e8c1ed975d22df678639da2ed0ec3244c3dc2ab54c8"}, - {file = "psycopg2_binary-2.9.7-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee919b676da28f78f91b464fb3e12238bd7474483352a59c8a16c39dfc59f0c5"}, - {file = "psycopg2_binary-2.9.7-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb1c0e682138f9067a58fc3c9a9bf1c83d8e08cfbee380d858e63196466d5c86"}, - {file = "psycopg2_binary-2.9.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00d8db270afb76f48a499f7bb8fa70297e66da67288471ca873db88382850bf4"}, - {file = "psycopg2_binary-2.9.7-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9b0c2b466b2f4d89ccc33784c4ebb1627989bd84a39b79092e560e937a11d4ac"}, - {file = "psycopg2_binary-2.9.7-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:51d1b42d44f4ffb93188f9b39e6d1c82aa758fdb8d9de65e1ddfe7a7d250d7ad"}, - {file = "psycopg2_binary-2.9.7-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:11abdbfc6f7f7dea4a524b5f4117369b0d757725798f1593796be6ece20266cb"}, - {file = "psycopg2_binary-2.9.7-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:f02f4a72cc3ab2565c6d9720f0343cb840fb2dc01a2e9ecb8bc58ccf95dc5c06"}, - {file = "psycopg2_binary-2.9.7-cp37-cp37m-win32.whl", hash = "sha256:81d5dd2dd9ab78d31a451e357315f201d976c131ca7d43870a0e8063b6b7a1ec"}, - {file = "psycopg2_binary-2.9.7-cp37-cp37m-win_amd64.whl", hash = "sha256:62cb6de84d7767164a87ca97e22e5e0a134856ebcb08f21b621c6125baf61f16"}, - {file = "psycopg2_binary-2.9.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:59f7e9109a59dfa31efa022e94a244736ae401526682de504e87bd11ce870c22"}, - {file = "psycopg2_binary-2.9.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:95a7a747bdc3b010bb6a980f053233e7610276d55f3ca506afff4ad7749ab58a"}, - {file = "psycopg2_binary-2.9.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c721ee464e45ecf609ff8c0a555018764974114f671815a0a7152aedb9f3343"}, - {file = "psycopg2_binary-2.9.7-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f4f37bbc6588d402980ffbd1f3338c871368fb4b1cfa091debe13c68bb3852b3"}, - {file = "psycopg2_binary-2.9.7-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac83ab05e25354dad798401babaa6daa9577462136ba215694865394840e31f8"}, - {file = "psycopg2_binary-2.9.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:024eaeb2a08c9a65cd5f94b31ace1ee3bb3f978cd4d079406aef85169ba01f08"}, - {file = "psycopg2_binary-2.9.7-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:1c31c2606ac500dbd26381145684d87730a2fac9a62ebcfbaa2b119f8d6c19f4"}, - {file = "psycopg2_binary-2.9.7-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:42a62ef0e5abb55bf6ffb050eb2b0fcd767261fa3faf943a4267539168807522"}, - {file = "psycopg2_binary-2.9.7-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:7952807f95c8eba6a8ccb14e00bf170bb700cafcec3924d565235dffc7dc4ae8"}, - {file = "psycopg2_binary-2.9.7-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e02bc4f2966475a7393bd0f098e1165d470d3fa816264054359ed4f10f6914ea"}, - {file = "psycopg2_binary-2.9.7-cp38-cp38-win32.whl", hash = "sha256:fdca0511458d26cf39b827a663d7d87db6f32b93efc22442a742035728603d5f"}, - {file = "psycopg2_binary-2.9.7-cp38-cp38-win_amd64.whl", hash = "sha256:d0b16e5bb0ab78583f0ed7ab16378a0f8a89a27256bb5560402749dbe8a164d7"}, - {file = "psycopg2_binary-2.9.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6822c9c63308d650db201ba22fe6648bd6786ca6d14fdaf273b17e15608d0852"}, - {file = "psycopg2_binary-2.9.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8f94cb12150d57ea433e3e02aabd072205648e86f1d5a0a692d60242f7809b15"}, - {file = "psycopg2_binary-2.9.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5ee89587696d808c9a00876065d725d4ae606f5f7853b961cdbc348b0f7c9a1"}, - {file = "psycopg2_binary-2.9.7-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ad5ec10b53cbb57e9a2e77b67e4e4368df56b54d6b00cc86398578f1c635f329"}, - {file = "psycopg2_binary-2.9.7-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:642df77484b2dcaf87d4237792246d8068653f9e0f5c025e2c692fc56b0dda70"}, - {file = "psycopg2_binary-2.9.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6a8b575ac45af1eaccbbcdcf710ab984fd50af048fe130672377f78aaff6fc1"}, - {file = "psycopg2_binary-2.9.7-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f955aa50d7d5220fcb6e38f69ea126eafecd812d96aeed5d5f3597f33fad43bb"}, - {file = "psycopg2_binary-2.9.7-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:ad26d4eeaa0d722b25814cce97335ecf1b707630258f14ac4d2ed3d1d8415265"}, - {file = "psycopg2_binary-2.9.7-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:ced63c054bdaf0298f62681d5dcae3afe60cbae332390bfb1acf0e23dcd25fc8"}, - {file = "psycopg2_binary-2.9.7-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2b04da24cbde33292ad34a40db9832a80ad12de26486ffeda883413c9e1b1d5e"}, - {file = "psycopg2_binary-2.9.7-cp39-cp39-win32.whl", hash = "sha256:18f12632ab516c47c1ac4841a78fddea6508a8284c7cf0f292cb1a523f2e2379"}, - {file = "psycopg2_binary-2.9.7-cp39-cp39-win_amd64.whl", hash = "sha256:eb3b8d55924a6058a26db69fb1d3e7e32695ff8b491835ba9f479537e14dcf9f"}, + {file = "psycopg2-binary-2.9.9.tar.gz", hash = "sha256:7f01846810177d829c7692f1f5ada8096762d9172af1b1a28d4ab5b77c923c1c"}, + {file = "psycopg2_binary-2.9.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c2470da5418b76232f02a2fcd2229537bb2d5a7096674ce61859c3229f2eb202"}, + {file = "psycopg2_binary-2.9.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c6af2a6d4b7ee9615cbb162b0738f6e1fd1f5c3eda7e5da17861eacf4c717ea7"}, + {file = "psycopg2_binary-2.9.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:75723c3c0fbbf34350b46a3199eb50638ab22a0228f93fb472ef4d9becc2382b"}, + {file = "psycopg2_binary-2.9.9-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:83791a65b51ad6ee6cf0845634859d69a038ea9b03d7b26e703f94c7e93dbcf9"}, + {file = "psycopg2_binary-2.9.9-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0ef4854e82c09e84cc63084a9e4ccd6d9b154f1dbdd283efb92ecd0b5e2b8c84"}, + {file = "psycopg2_binary-2.9.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed1184ab8f113e8d660ce49a56390ca181f2981066acc27cf637d5c1e10ce46e"}, + {file = "psycopg2_binary-2.9.9-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d2997c458c690ec2bc6b0b7ecbafd02b029b7b4283078d3b32a852a7ce3ddd98"}, + {file = "psycopg2_binary-2.9.9-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:b58b4710c7f4161b5e9dcbe73bb7c62d65670a87df7bcce9e1faaad43e715245"}, + {file = "psycopg2_binary-2.9.9-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:0c009475ee389757e6e34611d75f6e4f05f0cf5ebb76c6037508318e1a1e0d7e"}, + {file = "psycopg2_binary-2.9.9-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8dbf6d1bc73f1d04ec1734bae3b4fb0ee3cb2a493d35ede9badbeb901fb40f6f"}, + {file = "psycopg2_binary-2.9.9-cp310-cp310-win32.whl", hash = "sha256:3f78fd71c4f43a13d342be74ebbc0666fe1f555b8837eb113cb7416856c79682"}, + {file = "psycopg2_binary-2.9.9-cp310-cp310-win_amd64.whl", hash = "sha256:876801744b0dee379e4e3c38b76fc89f88834bb15bf92ee07d94acd06ec890a0"}, + {file = "psycopg2_binary-2.9.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ee825e70b1a209475622f7f7b776785bd68f34af6e7a46e2e42f27b659b5bc26"}, + {file = "psycopg2_binary-2.9.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1ea665f8ce695bcc37a90ee52de7a7980be5161375d42a0b6c6abedbf0d81f0f"}, + {file = "psycopg2_binary-2.9.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:143072318f793f53819048fdfe30c321890af0c3ec7cb1dfc9cc87aa88241de2"}, + {file = "psycopg2_binary-2.9.9-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c332c8d69fb64979ebf76613c66b985414927a40f8defa16cf1bc028b7b0a7b0"}, + {file = "psycopg2_binary-2.9.9-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7fc5a5acafb7d6ccca13bfa8c90f8c51f13d8fb87d95656d3950f0158d3ce53"}, + {file = "psycopg2_binary-2.9.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:977646e05232579d2e7b9c59e21dbe5261f403a88417f6a6512e70d3f8a046be"}, + {file = "psycopg2_binary-2.9.9-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b6356793b84728d9d50ead16ab43c187673831e9d4019013f1402c41b1db9b27"}, + {file = "psycopg2_binary-2.9.9-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:bc7bb56d04601d443f24094e9e31ae6deec9ccb23581f75343feebaf30423359"}, + {file = "psycopg2_binary-2.9.9-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:77853062a2c45be16fd6b8d6de2a99278ee1d985a7bd8b103e97e41c034006d2"}, + {file = "psycopg2_binary-2.9.9-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:78151aa3ec21dccd5cdef6c74c3e73386dcdfaf19bced944169697d7ac7482fc"}, + {file = "psycopg2_binary-2.9.9-cp311-cp311-win32.whl", hash = "sha256:dc4926288b2a3e9fd7b50dc6a1909a13bbdadfc67d93f3374d984e56f885579d"}, + {file = "psycopg2_binary-2.9.9-cp311-cp311-win_amd64.whl", hash = "sha256:b76bedd166805480ab069612119ea636f5ab8f8771e640ae103e05a4aae3e417"}, + {file = "psycopg2_binary-2.9.9-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:8532fd6e6e2dc57bcb3bc90b079c60de896d2128c5d9d6f24a63875a95a088cf"}, + {file = "psycopg2_binary-2.9.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b0605eaed3eb239e87df0d5e3c6489daae3f7388d455d0c0b4df899519c6a38d"}, + {file = "psycopg2_binary-2.9.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f8544b092a29a6ddd72f3556a9fcf249ec412e10ad28be6a0c0d948924f2212"}, + {file = "psycopg2_binary-2.9.9-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2d423c8d8a3c82d08fe8af900ad5b613ce3632a1249fd6a223941d0735fce493"}, + {file = "psycopg2_binary-2.9.9-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2e5afae772c00980525f6d6ecf7cbca55676296b580c0e6abb407f15f3706996"}, + {file = "psycopg2_binary-2.9.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e6f98446430fdf41bd36d4faa6cb409f5140c1c2cf58ce0bbdaf16af7d3f119"}, + {file = "psycopg2_binary-2.9.9-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c77e3d1862452565875eb31bdb45ac62502feabbd53429fdc39a1cc341d681ba"}, + {file = "psycopg2_binary-2.9.9-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:cb16c65dcb648d0a43a2521f2f0a2300f40639f6f8c1ecbc662141e4e3e1ee07"}, + {file = "psycopg2_binary-2.9.9-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:911dda9c487075abd54e644ccdf5e5c16773470a6a5d3826fda76699410066fb"}, + {file = "psycopg2_binary-2.9.9-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:57fede879f08d23c85140a360c6a77709113efd1c993923c59fde17aa27599fe"}, + {file = "psycopg2_binary-2.9.9-cp312-cp312-win32.whl", hash = "sha256:64cf30263844fa208851ebb13b0732ce674d8ec6a0c86a4e160495d299ba3c93"}, + {file = "psycopg2_binary-2.9.9-cp312-cp312-win_amd64.whl", hash = "sha256:81ff62668af011f9a48787564ab7eded4e9fb17a4a6a74af5ffa6a457400d2ab"}, + {file = "psycopg2_binary-2.9.9-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:2293b001e319ab0d869d660a704942c9e2cce19745262a8aba2115ef41a0a42a"}, + {file = "psycopg2_binary-2.9.9-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03ef7df18daf2c4c07e2695e8cfd5ee7f748a1d54d802330985a78d2a5a6dca9"}, + {file = "psycopg2_binary-2.9.9-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a602ea5aff39bb9fac6308e9c9d82b9a35c2bf288e184a816002c9fae930b77"}, + {file = "psycopg2_binary-2.9.9-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8359bf4791968c5a78c56103702000105501adb557f3cf772b2c207284273984"}, + {file = "psycopg2_binary-2.9.9-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:275ff571376626195ab95a746e6a04c7df8ea34638b99fc11160de91f2fef503"}, + {file = "psycopg2_binary-2.9.9-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:f9b5571d33660d5009a8b3c25dc1db560206e2d2f89d3df1cb32d72c0d117d52"}, + {file = "psycopg2_binary-2.9.9-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:420f9bbf47a02616e8554e825208cb947969451978dceb77f95ad09c37791dae"}, + {file = "psycopg2_binary-2.9.9-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:4154ad09dac630a0f13f37b583eae260c6aa885d67dfbccb5b02c33f31a6d420"}, + {file = "psycopg2_binary-2.9.9-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:a148c5d507bb9b4f2030a2025c545fccb0e1ef317393eaba42e7eabd28eb6041"}, + {file = "psycopg2_binary-2.9.9-cp37-cp37m-win32.whl", hash = "sha256:68fc1f1ba168724771e38bee37d940d2865cb0f562380a1fb1ffb428b75cb692"}, + {file = "psycopg2_binary-2.9.9-cp37-cp37m-win_amd64.whl", hash = "sha256:281309265596e388ef483250db3640e5f414168c5a67e9c665cafce9492eda2f"}, + {file = "psycopg2_binary-2.9.9-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:60989127da422b74a04345096c10d416c2b41bd7bf2a380eb541059e4e999980"}, + {file = "psycopg2_binary-2.9.9-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:246b123cc54bb5361588acc54218c8c9fb73068bf227a4a531d8ed56fa3ca7d6"}, + {file = "psycopg2_binary-2.9.9-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34eccd14566f8fe14b2b95bb13b11572f7c7d5c36da61caf414d23b91fcc5d94"}, + {file = "psycopg2_binary-2.9.9-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18d0ef97766055fec15b5de2c06dd8e7654705ce3e5e5eed3b6651a1d2a9a152"}, + {file = "psycopg2_binary-2.9.9-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d3f82c171b4ccd83bbaf35aa05e44e690113bd4f3b7b6cc54d2219b132f3ae55"}, + {file = "psycopg2_binary-2.9.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ead20f7913a9c1e894aebe47cccf9dc834e1618b7aa96155d2091a626e59c972"}, + {file = "psycopg2_binary-2.9.9-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:ca49a8119c6cbd77375ae303b0cfd8c11f011abbbd64601167ecca18a87e7cdd"}, + {file = "psycopg2_binary-2.9.9-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:323ba25b92454adb36fa425dc5cf6f8f19f78948cbad2e7bc6cdf7b0d7982e59"}, + {file = "psycopg2_binary-2.9.9-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:1236ed0952fbd919c100bc839eaa4a39ebc397ed1c08a97fc45fee2a595aa1b3"}, + {file = "psycopg2_binary-2.9.9-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:729177eaf0aefca0994ce4cffe96ad3c75e377c7b6f4efa59ebf003b6d398716"}, + {file = "psycopg2_binary-2.9.9-cp38-cp38-win32.whl", hash = "sha256:804d99b24ad523a1fe18cc707bf741670332f7c7412e9d49cb5eab67e886b9b5"}, + {file = "psycopg2_binary-2.9.9-cp38-cp38-win_amd64.whl", hash = "sha256:a6cdcc3ede532f4a4b96000b6362099591ab4a3e913d70bcbac2b56c872446f7"}, + {file = "psycopg2_binary-2.9.9-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:72dffbd8b4194858d0941062a9766f8297e8868e1dd07a7b36212aaa90f49472"}, + {file = "psycopg2_binary-2.9.9-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:30dcc86377618a4c8f3b72418df92e77be4254d8f89f14b8e8f57d6d43603c0f"}, + {file = "psycopg2_binary-2.9.9-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:31a34c508c003a4347d389a9e6fcc2307cc2150eb516462a7a17512130de109e"}, + {file = "psycopg2_binary-2.9.9-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:15208be1c50b99203fe88d15695f22a5bed95ab3f84354c494bcb1d08557df67"}, + {file = "psycopg2_binary-2.9.9-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1873aade94b74715be2246321c8650cabf5a0d098a95bab81145ffffa4c13876"}, + {file = "psycopg2_binary-2.9.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a58c98a7e9c021f357348867f537017057c2ed7f77337fd914d0bedb35dace7"}, + {file = "psycopg2_binary-2.9.9-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4686818798f9194d03c9129a4d9a702d9e113a89cb03bffe08c6cf799e053291"}, + {file = "psycopg2_binary-2.9.9-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:ebdc36bea43063116f0486869652cb2ed7032dbc59fbcb4445c4862b5c1ecf7f"}, + {file = "psycopg2_binary-2.9.9-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:ca08decd2697fdea0aea364b370b1249d47336aec935f87b8bbfd7da5b2ee9c1"}, + {file = "psycopg2_binary-2.9.9-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ac05fb791acf5e1a3e39402641827780fe44d27e72567a000412c648a85ba860"}, + {file = "psycopg2_binary-2.9.9-cp39-cp39-win32.whl", hash = "sha256:9dba73be7305b399924709b91682299794887cbbd88e38226ed9f6712eabee90"}, + {file = "psycopg2_binary-2.9.9-cp39-cp39-win_amd64.whl", hash = "sha256:f7ae5d65ccfbebdfa761585228eb4d0df3a8b15cfb53bd953e713e09fbb12957"}, ] [[package]] name = "pyasn1" -version = "0.5.0" +version = "0.6.1" description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs (X.208)" -category = "main" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +python-versions = ">=3.8" files = [ - {file = "pyasn1-0.5.0-py2.py3-none-any.whl", hash = "sha256:87a2121042a1ac9358cabcaf1d07680ff97ee6404333bacca15f76aa8ad01a57"}, - {file = "pyasn1-0.5.0.tar.gz", hash = "sha256:97b7290ca68e62a832558ec3976f15cbf911bf5d7c7039d8b861c2a0ece69fde"}, + {file = "pyasn1-0.6.1-py3-none-any.whl", hash = "sha256:0d632f46f2ba09143da3a8afe9e33fb6f92fa2320ab7e886e2d0f7672af84629"}, + {file = "pyasn1-0.6.1.tar.gz", hash = "sha256:6f580d2bdd84365380830acf45550f2511469f673cb4a5ae3857a3170128b034"}, ] [[package]] name = "pyasn1-modules" -version = "0.3.0" +version = "0.4.1" description = "A collection of ASN.1-based protocols modules" -category = "main" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +python-versions = ">=3.8" files = [ - {file = "pyasn1_modules-0.3.0-py2.py3-none-any.whl", hash = "sha256:d3ccd6ed470d9ffbc716be08bd90efbd44d0734bc9303818f7336070984a162d"}, - {file = "pyasn1_modules-0.3.0.tar.gz", hash = "sha256:5bd01446b736eb9d31512a30d46c1ac3395d676c6f3cafa4c03eb54b9925631c"}, + {file = "pyasn1_modules-0.4.1-py3-none-any.whl", hash = "sha256:49bfa96b45a292b711e986f222502c1c9a5e1f4e568fc30e2574a6c7d07838fd"}, + {file = "pyasn1_modules-0.4.1.tar.gz", hash = "sha256:c28e2dbf9c06ad61c71a075c7e0f9fd0f1b0bb2d2ad4377f240d33ac2ab60a7c"}, ] [package.dependencies] -pyasn1 = ">=0.4.6,<0.6.0" +pyasn1 = ">=0.4.6,<0.7.0" [[package]] name = "pycparser" -version = "2.21" +version = "2.22" description = "C parser in Python" -category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.8" files = [ - {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, - {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, + {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, + {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, ] [[package]] name = "pynacl" version = "1.5.0" description = "Python binding to the Networking and Cryptography (NaCl) library" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2164,109 +2103,100 @@ tests = ["hypothesis (>=3.27.0)", "pytest (>=3.2.1,!=3.3.0)"] [[package]] name = "pyodbc" -version = "4.0.39" -description = "DB API Module for ODBC" -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" -files = [ - {file = "pyodbc-4.0.39-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:74af348dbaee4885998858daf50c8964e767629ecf6c195868b016367b0bb861"}, - {file = "pyodbc-4.0.39-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0f5901b57eaef0761f4cf02bca8e7c63f589fd0fd723a79f6ccf1ea1275372e5"}, - {file = "pyodbc-4.0.39-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e0db69478d00fcd8d0b9bdde8aca0b0eada341fd6ed8c2da84b594b928c84106"}, - {file = "pyodbc-4.0.39-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c5faf2870e9d434c6a85c6adc1cdff55c0e376273baf480f06d9848025405688"}, - {file = "pyodbc-4.0.39-cp310-cp310-win32.whl", hash = "sha256:62bb6d7d0d25dc75d1445e539f946461c9c5a3643ae14676b240f71794ea004f"}, - {file = "pyodbc-4.0.39-cp310-cp310-win_amd64.whl", hash = "sha256:8eb5547282dc73a7784ce7b99584f68687dd85543538ca6f70cffaa6310676e7"}, - {file = "pyodbc-4.0.39-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:530c1ac37ead782803b44fb1934ba4c68ed4a6969f7475cb8bc04ae1da14486e"}, - {file = "pyodbc-4.0.39-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1f7fb65191926308f09ce75ae7ccecf89310232ee50cdea74edf17ee04a9b068"}, - {file = "pyodbc-4.0.39-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ec009180fcd7c8197f45d083e6670623d8dfe198a457ca2a50ebb1bafe4107f"}, - {file = "pyodbc-4.0.39-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:400e911d54980098c6badadecc82385fc0d6a9057db525d63d2652317df43efe"}, - {file = "pyodbc-4.0.39-cp311-cp311-win32.whl", hash = "sha256:f792677b88e1dde12dab46de8647620fc8171742c02780d51744f7b1b2135dbc"}, - {file = "pyodbc-4.0.39-cp311-cp311-win_amd64.whl", hash = "sha256:3d9d70e1635d35ba3aee3df216ec8e35f2824909f43331c0112b17f460a93923"}, - {file = "pyodbc-4.0.39-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:c1a59096f1784d0cda3d0b8f393849f05515c46a10016edb6da1b1960d039800"}, - {file = "pyodbc-4.0.39-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b3467157661615d5c30893efa1069b55c9ffa434097fc3ae3739e740d83d2ec"}, - {file = "pyodbc-4.0.39-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af027a60e84274ea08fad1c75991d37a5f1f6e8bcd30f6bda20db99f0cdfbc7d"}, - {file = "pyodbc-4.0.39-cp36-cp36m-win32.whl", hash = "sha256:64c1de1263281de7b5ce585b0352746ab1a483453017a8589f838a79cbe3d6d9"}, - {file = "pyodbc-4.0.39-cp36-cp36m-win_amd64.whl", hash = "sha256:27d1b3c3159673b44c97c878f9d8056901d45f747ce2e0b4d5d99f0fb6949dc7"}, - {file = "pyodbc-4.0.39-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:efccc11dff6fba684a74ae1030c92ff8b82429d7f00e0a50aa2ac6f56621cd9f"}, - {file = "pyodbc-4.0.39-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea08e9379c08663d7260e2b8a6c451f56d36c17291af735191089f8e29ad9578"}, - {file = "pyodbc-4.0.39-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b36fe804d367d01ad81077fa524a36e667aabc3945e32564c7ef9595b28edfa9"}, - {file = "pyodbc-4.0.39-cp37-cp37m-win32.whl", hash = "sha256:72d364e52f6ca2417881a23834b3a36733c09e0dcd4760f49a6b864218d98d92"}, - {file = "pyodbc-4.0.39-cp37-cp37m-win_amd64.whl", hash = "sha256:39f6c56022c764309aa7552c0eb2c58fbb5902ab5d2010d42b021c0b205aa609"}, - {file = "pyodbc-4.0.39-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ebcb900fcaf19ca2bc38632218c5d48c666fcc19fe38b08cde001917f4581456"}, - {file = "pyodbc-4.0.39-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a3e133621ac2dad22d0870a8521c7e82d4270e24ce02451d64e7eb6a40ad0941"}, - {file = "pyodbc-4.0.39-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05a0912e852ebddaffa8f235b0f3974475021dd8eb604eb46ea67af06efe1239"}, - {file = "pyodbc-4.0.39-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6353044b99c763aeec7ca1760b4340298504d8ee544fdcab3c380a2abec15b78"}, - {file = "pyodbc-4.0.39-cp38-cp38-win32.whl", hash = "sha256:a591a1cf3c251a9c7c1642cfb3774119bf3512f3be56151247238f8a7b22b336"}, - {file = "pyodbc-4.0.39-cp38-cp38-win_amd64.whl", hash = "sha256:8553eaef9f8ec333bbddff6eadf0d322dda34b37f4bab19f0658eb532037840c"}, - {file = "pyodbc-4.0.39-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9253e746c5c94bf61e3e9adb08fb7688d413cb68c06ebb287ec233387534760a"}, - {file = "pyodbc-4.0.39-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a6f4067f46aaa78e77e8a15ade81eb21fb344563d245fb2d9a0aaa553c367cbd"}, - {file = "pyodbc-4.0.39-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cdf5a27e6587d1762f7f0e35d6f0309f09019bf3e19ca9177a4b765121f3f106"}, - {file = "pyodbc-4.0.39-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe4ee87b88867867f582dd0c1236cd982508db359a6cbb5e91623ceb6c83e60a"}, - {file = "pyodbc-4.0.39-cp39-cp39-win32.whl", hash = "sha256:42649ed57d09c04aa197bdd4fe0aa9ca319790b7aa86d0b0784cc70e78c426e5"}, - {file = "pyodbc-4.0.39-cp39-cp39-win_amd64.whl", hash = "sha256:305c7d6337e2d4c8350677cc641b343fc0197b7b9bc167815c66b64545c67a53"}, - {file = "pyodbc-4.0.39.tar.gz", hash = "sha256:e528bb70dd6d6299ee429868925df0866e3e919c772b9eff79c8e17920d8f116"}, +version = "5.1.0" +description = "DB API module for ODBC" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyodbc-5.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:02fe9821711a2d14415eaeb4deab471d2c8b7034b107e524e414c0e133c42248"}, + {file = "pyodbc-5.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2cbdbd019756285dc44bc35238a3ed8dfaa454e8c8b2c3462f1710cfeebfb290"}, + {file = "pyodbc-5.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:84df3bbce9bafe65abd25788d55c9f1da304f6115d70f25758ff8c85f3ce0517"}, + {file = "pyodbc-5.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:218bb75d4bc67075529a65ce8ec7daeed1d83c33dd7410450fbf68d43d184d28"}, + {file = "pyodbc-5.1.0-cp310-cp310-win32.whl", hash = "sha256:eae576b3b67d21d6f237e18bb5f3df8323a2258f52c3e3afeef79269704072a9"}, + {file = "pyodbc-5.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:c3b65343557f4c7753204e06f4c82c97ed212a636501f4bc27c5ce0e549eb3e8"}, + {file = "pyodbc-5.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:aa6f46377da303bf79bcb4b559899507df4b2559f30dcfdf191358ee4b99f3ab"}, + {file = "pyodbc-5.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b19d7f44cfee89901e482f554a88177e83fae76b03c3f830e0023a195d840220"}, + {file = "pyodbc-5.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c36448322f8d6479d87c528cf52401a6ea4f509b9637750b67340382b4e1b40"}, + {file = "pyodbc-5.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c5e0cb79222aad4b31a3602e39b242683c29c6221a16ed43f45f18fd0b73659"}, + {file = "pyodbc-5.1.0-cp311-cp311-win32.whl", hash = "sha256:92caed9d445815ed3f7e5a1249e29a4600ebc1e99404df81b6ed7671074c9227"}, + {file = "pyodbc-5.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:a1bd14633e91b7a9814f4fd944c9ebb89fb7f1fd4710c4e3999b5ef041536347"}, + {file = "pyodbc-5.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d3d9cc4af703c4817b6e604315910b0cf5dcb68056d52b25ca072dd59c52dcbc"}, + {file = "pyodbc-5.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:406b8fa2133a7b6a713aa5187dba2d08cf763b5884606bed77610a7660fdfabe"}, + {file = "pyodbc-5.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8488c3818f12207650836c5c6f7352f9ff9f56a05a05512145995e497c0bbb1"}, + {file = "pyodbc-5.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0df69e3a500791b70b5748c68a79483b24428e4c16027b56aa0305e95c143a4"}, + {file = "pyodbc-5.1.0-cp312-cp312-win32.whl", hash = "sha256:aa4e02d3a9bf819394510b726b25f1566f8b3f0891ca400ad2d4c8b86b535b78"}, + {file = "pyodbc-5.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:33f4984af38872e7bdec78007a34e4d43ae72bf9d0bae3344e79d9d0db157c0e"}, + {file = "pyodbc-5.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:29425e2d366e7f5828b76c7993f412a3db4f18bd5bcee00186c00b5a5965e205"}, + {file = "pyodbc-5.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a2bbd2e75c77dee9f3cd100c3246110abaeb9af3f7fa304ccc2934ff9c6a4fa4"}, + {file = "pyodbc-5.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3602136a936bc0c1bb9722eb2fbf2042b3ff1ddccdc4688e514b82d4b831563b"}, + {file = "pyodbc-5.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bed1c843565d3a4fd8c332ebceaf33efe817657a0505eacb97dd1b786a985b0b"}, + {file = "pyodbc-5.1.0-cp38-cp38-win32.whl", hash = "sha256:735f6da3762e5856b5580be0ed96bb946948346ebd1e526d5169a5513626a67a"}, + {file = "pyodbc-5.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:c5bb4e43f6c72f5fa2c634570e0d761767d8ea49f39205229b812fb4d3fe05aa"}, + {file = "pyodbc-5.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:33f0f1d7764cefef6f787936bd6359670828a6086be67518ab951f1f7f503cda"}, + {file = "pyodbc-5.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:be3b1c36c31ec7d73d0b34a8ad8743573763fadd8f2bceef1e84408252b48dce"}, + {file = "pyodbc-5.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e71a51c252b503b4d753e21ed31e640015fc0d00202d42ea42f2396fcc924b4a"}, + {file = "pyodbc-5.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af5282cc8b667af97d76f4955250619a53f25486cbb6b1f45a06b781006ffa0b"}, + {file = "pyodbc-5.1.0-cp39-cp39-win32.whl", hash = "sha256:96b2a8dc27693a517e3aad3944a7faa8be95d40d7ec1eda51a1885162eedfa33"}, + {file = "pyodbc-5.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:e738c5eedb4a0cbab20cc008882f49b106054499db56864057c2530ff208cf32"}, + {file = "pyodbc-5.1.0.tar.gz", hash = "sha256:397feee44561a6580be08cedbe986436859563f4bb378f48224655c8e987ea60"}, ] [[package]] name = "pyopenssl" -version = "23.2.0" +version = "24.2.1" description = "Python wrapper module around the OpenSSL library" -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "pyOpenSSL-23.2.0-py3-none-any.whl", hash = "sha256:24f0dc5227396b3e831f4c7f602b950a5e9833d292c8e4a2e06b709292806ae2"}, - {file = "pyOpenSSL-23.2.0.tar.gz", hash = "sha256:276f931f55a452e7dea69c7173e984eb2a4407ce413c918aa34b55f82f9b8bac"}, + {file = "pyOpenSSL-24.2.1-py3-none-any.whl", hash = "sha256:967d5719b12b243588573f39b0c677637145c7a1ffedcd495a487e58177fbb8d"}, + {file = "pyopenssl-24.2.1.tar.gz", hash = "sha256:4247f0dbe3748d560dcbb2ff3ea01af0f9a1a001ef5f7c4c647956ed8cbf0e95"}, ] [package.dependencies] -cryptography = ">=38.0.0,<40.0.0 || >40.0.0,<40.0.1 || >40.0.1,<42" +cryptography = ">=41.0.5,<44" [package.extras] -docs = ["sphinx (!=5.2.0,!=5.2.0.post0)", "sphinx-rtd-theme"] -test = ["flaky", "pretend", "pytest (>=3.0.1)"] +docs = ["sphinx (!=5.2.0,!=5.2.0.post0,!=7.2.5)", "sphinx-rtd-theme"] +test = ["pretend", "pytest (>=3.0.1)", "pytest-rerunfailures"] [[package]] name = "pyproject-api" -version = "1.6.1" +version = "1.7.1" description = "API to interact with the python pyproject.toml based projects" -category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "pyproject_api-1.6.1-py3-none-any.whl", hash = "sha256:4c0116d60476b0786c88692cf4e325a9814965e2469c5998b830bba16b183675"}, - {file = "pyproject_api-1.6.1.tar.gz", hash = "sha256:1817dc018adc0d1ff9ca1ed8c60e1623d5aaca40814b953af14a9cf9a5cae538"}, + {file = "pyproject_api-1.7.1-py3-none-any.whl", hash = "sha256:2dc1654062c2b27733d8fd4cdda672b22fe8741ef1dde8e3a998a9547b071eeb"}, + {file = "pyproject_api-1.7.1.tar.gz", hash = "sha256:7ebc6cd10710f89f4cf2a2731710a98abce37ebff19427116ff2174c9236a827"}, ] [package.dependencies] -packaging = ">=23.1" +packaging = ">=24.1" tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} [package.extras] -docs = ["furo (>=2023.8.19)", "sphinx (<7.2)", "sphinx-autodoc-typehints (>=1.24)"] -testing = ["covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)", "setuptools (>=68.1.2)", "wheel (>=0.41.2)"] +docs = ["furo (>=2024.5.6)", "sphinx-autodoc-typehints (>=2.2.1)"] +testing = ["covdefaults (>=2.3)", "pytest (>=8.2.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)", "setuptools (>=70.1)"] [[package]] name = "pysaml2" -version = "7.3.1" +version = "7.5.0" description = "Python implementation of SAML Version 2 Standard" -category = "main" optional = false -python-versions = ">=3.6.2,<4.0.0" +python-versions = ">=3.9,<4.0" files = [ - {file = "pysaml2-7.3.1-py3-none-any.whl", hash = "sha256:2cc66e7a371d3f5ff9601f0ed93b5276cca816fce82bb38447d5a0651f2f5193"}, - {file = "pysaml2-7.3.1.tar.gz", hash = "sha256:eab22d187c6dd7707c58b5bb1688f9b8e816427667fc99d77f54399e15cd0a0a"}, + {file = "pysaml2-7.5.0-py3-none-any.whl", hash = "sha256:bc6627cc344476a83c757f440a73fda1369f13b6fda1b4e16bca63ffbabb5318"}, + {file = "pysaml2-7.5.0.tar.gz", hash = "sha256:f36871d4e5ee857c6b85532e942550d2cf90ea4ee943d75eb681044bbc4f54f7"}, ] [package.dependencies] cryptography = ">=3.1" defusedxml = "*" -importlib-resources = {version = "*", markers = "python_version < \"3.9\""} pyopenssl = "*" python-dateutil = "*" pytz = "*" requests = ">=2,<3" -xmlschema = ">=1.2.1" +xmlschema = ">=2,<3" [package.extras] s2repoze = ["paste", "repoze.who", "zope.interface"] @@ -2275,7 +2205,6 @@ s2repoze = ["paste", "repoze.who", "zope.interface"] name = "pysmb" version = "1.2.9.1" description = "pysmb is an experimental SMB/CIFS library written in Python to support file sharing between Windows and Linux machines" -category = "main" optional = false python-versions = "*" files = [ @@ -2288,14 +2217,13 @@ tqdm = "*" [[package]] name = "pytest" -version = "7.4.2" +version = "8.3.3" description = "pytest: simple powerful testing with Python" -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pytest-7.4.2-py3-none-any.whl", hash = "sha256:1d881c6124e08ff0a1bb75ba3ec0bfd8b5354a01c194ddd5a0a870a48d99b002"}, - {file = "pytest-7.4.2.tar.gz", hash = "sha256:a766259cfab564a2ad52cb1aae1b881a75c3eb7e34ca3779697c23ed47c47069"}, + {file = "pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2"}, + {file = "pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181"}, ] [package.dependencies] @@ -2303,22 +2231,21 @@ colorama = {version = "*", markers = "sys_platform == \"win32\""} exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} iniconfig = "*" packaging = "*" -pluggy = ">=0.12,<2.0" -tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} +pluggy = ">=1.5,<2" +tomli = {version = ">=1", markers = "python_version < \"3.11\""} [package.extras] -testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] [[package]] name = "pytest-cov" -version = "4.1.0" +version = "5.0.0" description = "Pytest plugin for measuring coverage." -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pytest-cov-4.1.0.tar.gz", hash = "sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6"}, - {file = "pytest_cov-4.1.0-py3-none-any.whl", hash = "sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a"}, + {file = "pytest-cov-5.0.0.tar.gz", hash = "sha256:5837b58e9f6ebd335b0f8060eecce69b662415b16dc503883a02f45dfeb14857"}, + {file = "pytest_cov-5.0.0-py3-none-any.whl", hash = "sha256:4f0764a1219df53214206bf1feea4633c3b558a2925c8b59f144f682861ce652"}, ] [package.dependencies] @@ -2326,18 +2253,17 @@ coverage = {version = ">=5.2.1", extras = ["toml"]} pytest = ">=4.6" [package.extras] -testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtualenv"] +testing = ["fields", "hunter", "process-tests", "pytest-xdist", "virtualenv"] [[package]] name = "python-dateutil" -version = "2.8.2" +version = "2.9.0.post0" description = "Extensions to the standard Python datetime module" -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ - {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, - {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, + {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, + {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, ] [package.dependencies] @@ -2345,25 +2271,23 @@ six = ">=1.5" [[package]] name = "python-gnupg" -version = "0.5.1" +version = "0.5.2" description = "A wrapper for the Gnu Privacy Guard (GPG or GnuPG)" -category = "main" optional = false python-versions = "*" files = [ - {file = "python-gnupg-0.5.1.tar.gz", hash = "sha256:5674bad4e93876c0b0d3197e314d7f942d39018bf31e2b833f6788a6813c3fb8"}, - {file = "python_gnupg-0.5.1-py2.py3-none-any.whl", hash = "sha256:bf9b2d9032ef38139b7d64184176cd0b293eaeae6e4f93f50e304c7051174482"}, + {file = "python-gnupg-0.5.2.tar.gz", hash = "sha256:01d8013931c9fa3f45824bbea7054c03d6e11f258a72e7e086e168dbcb91854c"}, + {file = "python_gnupg-0.5.2-py2.py3-none-any.whl", hash = "sha256:72ce142af6da7f07e433fef148b445fb3e07854acd2f88739008838745c0e9f5"}, ] [[package]] name = "python-ldap" -version = "3.4.3" +version = "3.4.4" description = "Python modules for implementing LDAP clients" -category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "python-ldap-3.4.3.tar.gz", hash = "sha256:ab26c519a0ef2a443a2a10391fa3c5cb52d7871323399db949ebfaa9f25ee2a0"}, + {file = "python-ldap-3.4.4.tar.gz", hash = "sha256:7edb0accec4e037797705f3a05cbf36a9fde50d08c8f67f2aef99a2628fab828"}, ] [package.dependencies] @@ -2372,15 +2296,14 @@ pyasn1_modules = ">=0.1.5" [[package]] name = "python3-saml" -version = "1.15.0" +version = "1.16.0" description = "Saml Python Toolkit. Add SAML support to your Python software using this library" -category = "main" optional = false python-versions = "*" files = [ - {file = "python3-saml-1.15.0.tar.gz", hash = "sha256:8c68b31739471faffb93dcdfe3bcab375b9d6a0459cab7fa9cb0d7d874ecf0b0"}, - {file = "python3_saml-1.15.0-py2-none-any.whl", hash = "sha256:3a76a17c6a2384313c5cdb450ea8b2e6d098f30836ee3dddbfe8e870903971d2"}, - {file = "python3_saml-1.15.0-py3-none-any.whl", hash = "sha256:cc0458351ddaa08270ebe29ffaf9e1a41dbd285ba43a176cbd70907af5944c66"}, + {file = "python3-saml-1.16.0.tar.gz", hash = "sha256:97c9669aecabc283c6e5fb4eb264f446b6e006f5267d01c9734f9d8bffdac133"}, + {file = "python3_saml-1.16.0-py2-none-any.whl", hash = "sha256:c49097863c278ff669a337a96c46dc1f25d16307b4bb2679d2d1733cc4f5176a"}, + {file = "python3_saml-1.16.0-py3-none-any.whl", hash = "sha256:20b97d11b04f01ee22e98f4a38242e2fea2e28fbc7fbc9bdd57cab5ac7fc2d0d"}, ] [package.dependencies] @@ -2393,21 +2316,19 @@ test = ["coverage (>=4.5.2)", "flake8 (>=3.6.0,<=5.0.0)", "freezegun (>=0.3.11,< [[package]] name = "pytz" -version = "2022.7.1" +version = "2024.2" description = "World timezone definitions, modern and historical" -category = "main" optional = false python-versions = "*" files = [ - {file = "pytz-2022.7.1-py2.py3-none-any.whl", hash = "sha256:78f4f37d8198e0627c5f1143240bb0206b8691d8d7ac6d78fee88b78733f8c4a"}, - {file = "pytz-2022.7.1.tar.gz", hash = "sha256:01a0681c4b9684a28304615eba55d1ab31ae00bf68ec157ec3708a8182dbbcd0"}, + {file = "pytz-2024.2-py2.py3-none-any.whl", hash = "sha256:31c7c1817eb7fae7ca4b8c7ee50c72f93aa2dd863de768e1ef4245d426aa0725"}, + {file = "pytz-2024.2.tar.gz", hash = "sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a"}, ] [[package]] name = "pytz-deprecation-shim" version = "0.1.0.post0" description = "Shims to make deprecation of pytz easier" -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ @@ -2416,74 +2337,74 @@ files = [ ] [package.dependencies] -"backports.zoneinfo" = {version = "*", markers = "python_version >= \"3.6\" and python_version < \"3.9\""} tzdata = {version = "*", markers = "python_version >= \"3.6\""} [[package]] name = "pyyaml" -version = "6.0.1" +version = "6.0.2" description = "YAML parser and emitter for Python" -category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, - {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, - {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, - {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, - {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, - {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, - {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, - {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, - {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, - {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, - {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, - {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, - {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, - {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, - {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, - {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, - {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, - {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, - {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, - {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, - {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, - {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, - {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, - {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, - {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, - {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, - {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, - {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, - {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, - {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, - {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, - {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, - {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, - {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, - {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, + {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, + {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, + {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, + {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, + {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, + {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, + {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, + {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, + {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, + {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, + {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, + {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, + {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, + {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, + {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, ] [[package]] name = "radon" version = "6.0.1" description = "Code Metrics in Python" -category = "dev" optional = false python-versions = "*" files = [ @@ -2500,51 +2421,73 @@ toml = ["tomli (>=2.0.1)"] [[package]] name = "rcssmin" -version = "1.1.1" +version = "1.1.2" description = "CSS Minifier" -category = "main" optional = false python-versions = "*" files = [ - {file = "rcssmin-1.1.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:d4e263fa9428704fd94c2cb565c7519ca1d225217943f71caffe6741ab5b9df1"}, - {file = "rcssmin-1.1.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:c7278c1c25bb90d8e554df92cfb3b6a1195004ead50f764653d3093933ee0877"}, - {file = "rcssmin-1.1.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:f15673e97f0a68b4c378c4d15b088fe96d60bc106d278c88829923118833c20f"}, - {file = "rcssmin-1.1.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:d0afc6e7b64ef30d6dcde88830ec1a237b9f16a39f920a8fd159928684ccf8db"}, - {file = "rcssmin-1.1.1-cp310-cp310-manylinux1_i686.whl", hash = "sha256:705c9112d0ed54ea40aecf97e7fd29bdf0f1c46d278a32d8f957f31dde90778a"}, - {file = "rcssmin-1.1.1-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:f7a1fcdbafaacac0530da04edca4a44303baab430ea42e7d59aece4b3f3e9a51"}, - {file = "rcssmin-1.1.1-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:cf74d7ea5e191f0f344b354eed8b7c83eeafbd9a97bec3a579c3d26edf11b005"}, - {file = "rcssmin-1.1.1-cp311-cp311-manylinux1_i686.whl", hash = "sha256:908fe072efd2432fb0975a61124609a8e05021367f6a3463d45f5e3e74c4fdda"}, - {file = "rcssmin-1.1.1-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:35da6a6999e9e2c5b0e691b42ed56cc479373e0ecab33ef5277dfecce625e44a"}, - {file = "rcssmin-1.1.1-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:e923c105100ab70abde1c01d3196ddd6b07255e32073685542be4e3a60870c8e"}, - {file = "rcssmin-1.1.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:868215e1fd0e92a6122e0ed5973dfc7bb8330fe1e92274d05b2585253b38c0ca"}, - {file = "rcssmin-1.1.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:c7728e3b546b1b6ea08cab721e8e21409dbcc11b881d0b87d10b0be8930af2a2"}, - {file = "rcssmin-1.1.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:271e3d2f8614a6d4637ed8fff3d90007f03e2a654cd9444f37d888797662ba72"}, - {file = "rcssmin-1.1.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:42576d95dfad53d77df2e68dfdec95b89b10fad320f241f1af3ca1438578254a"}, - {file = "rcssmin-1.1.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:79421230dd67c37ec61ed9892813d2b839b68f2f48ef55c75f976e81701d60b4"}, - {file = "rcssmin-1.1.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:8fcfd10ae2a1c4ce231a33013f2539e07c3836bf17cc945cc25cc30bf8e68e45"}, - {file = "rcssmin-1.1.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:c30f8bc839747b6da59274e0c6e4361915d66532e26448d589cb2b1846d7bf11"}, - {file = "rcssmin-1.1.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:ee386bec6d62f8c814d65c011d604a7c82d24aa3f718facd66e850eea8d6a5a1"}, - {file = "rcssmin-1.1.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:8a26fec3c1e6b7a3765ccbaccc20fbb5c0ed3422cc381e01a2607f08d7621c44"}, - {file = "rcssmin-1.1.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:a04d58a2a21e9a089306d3f99c4b12bf5b656a79c198ef2321e80f8fd9afab06"}, - {file = "rcssmin-1.1.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:914e589f40573035006913861ed2adc28fbe70082a8b6bff5be7ee430b7b5c2e"}, - {file = "rcssmin-1.1.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:a417735d4023d47d048a6288c88dbceadd20abaaf65a11bb4fda1e8458057019"}, - {file = "rcssmin-1.1.1.tar.gz", hash = "sha256:4f9400b4366d29f5f5446f58e78549afa8338e6a59740c73115e9f6ac413dc64"}, + {file = "rcssmin-1.1.2-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:0101a55992ded00220d38ebaf003d0858c1e6e8b365df6f18f9d7a2cdc5574b3"}, + {file = "rcssmin-1.1.2-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:9d7a5c6a08948ae5d7e1422ac34031fc05242786e6b600b37948412ee16f3655"}, + {file = "rcssmin-1.1.2-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:5f602bcaa457680a89904c10d1a539ffae5d4de08ec61a2044efc93c9a743860"}, + {file = "rcssmin-1.1.2-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:d9384421d8cb516202349da7b6502d77df14860fa710f91dbe0b03b3b895dda3"}, + {file = "rcssmin-1.1.2-cp310-cp310-manylinux1_i686.whl", hash = "sha256:d40964dc7fbd74be30b1ef5543bb75c479a53d53362ecccba3f1a5de6453faca"}, + {file = "rcssmin-1.1.2-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:c9a55657a3d11c5901259b14f941ed7eec118cd5a4416535102eda491de6753f"}, + {file = "rcssmin-1.1.2-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:065b7f85902c87011951b1d084fa694099d70feb6bef1c3e89456a1a0668c73b"}, + {file = "rcssmin-1.1.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b37db48eacf5b8ad09ee14eb25db8cc7176ce2339c1028499547858c152a936a"}, + {file = "rcssmin-1.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:f1468ccbfe16a2b4cff5bc0d330488bb496f71b542d26bd2005b2ab05a295752"}, + {file = "rcssmin-1.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b3577e4955b89324cd8214ae8e9c2ce452197ea2f789527538cf41e662930495"}, + {file = "rcssmin-1.1.2-cp311-cp311-manylinux1_i686.whl", hash = "sha256:83dd2c3f7b70fae9c97bab99fd7a709dc852f0bc3e7482f8cfb378e0c5f1aed8"}, + {file = "rcssmin-1.1.2-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:2219d704f27006ecd17ef4b5744cac5f68a276be0889b114130660fb798f3583"}, + {file = "rcssmin-1.1.2-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:a5e758c8db03a57fef847542bf14d96da75913cc0e2495540c018943c1f2d142"}, + {file = "rcssmin-1.1.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a0e353ecbfde3dba0a6579a674fc1dcdc1ff7e47ceff3b29beb6e235b53a981c"}, + {file = "rcssmin-1.1.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:140d1c0ba21fb8c3a2bafae164540a6816e8ec3492bea6ace0c52eebd2cf303f"}, + {file = "rcssmin-1.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ef0d472d8f6b8271fef3e388f98085a257703a635556a3ea77287616ab594ea9"}, + {file = "rcssmin-1.1.2-cp312-cp312-manylinux1_i686.whl", hash = "sha256:e58a54e63f79c996284240ec2dfb2992e8b90ad8941b1c70997e256b65940de7"}, + {file = "rcssmin-1.1.2-cp312-cp312-manylinux1_x86_64.whl", hash = "sha256:657324bfb76fa9e97badabe26af97a1622446f33c9073dd0510c7c7e8c7b96da"}, + {file = "rcssmin-1.1.2-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:fdffd58868a752cac0400249ce21bddf55e00d3206f8885d4a3aca1dab487070"}, + {file = "rcssmin-1.1.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:82aad2c3526055956fba537ab067ad937b3f57a1bd13c89bf691fced9c24c89d"}, + {file = "rcssmin-1.1.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3a860a1f4304e9813900f70fe6b1d429aff73a6fa30ef07f345f68d0a4e33abc"}, + {file = "rcssmin-1.1.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:0451a2c7e7c1ff893ecb7820de862f2ea6336cc69d473ecb0206212e49c817fc"}, + {file = "rcssmin-1.1.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:283b5931eb25e159c0c37bba0717cf3ada2ff77a2827337790cd3921d33ae1eb"}, + {file = "rcssmin-1.1.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:4cf7de426fbcce30df31261c1ce84d06fb2ae2f239b0c16ab7e9e083e0462432"}, + {file = "rcssmin-1.1.2-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:47d4d5d67f9ab8f18a6412f8eff843612ebddfff131260fd25a0b273a3d3b1a0"}, + {file = "rcssmin-1.1.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:ce4fce4b3f0cf3621f13f6b8aebbe6c90de3587e383d13dbc7c4c1576f27fda8"}, + {file = "rcssmin-1.1.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:3ab50d50ecbfa41d8984b545871df447c90a0c55e16a594e0c97057eb694a7af"}, + {file = "rcssmin-1.1.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:8eddfed4ac175a97eb228a289f820ff1bffcc3db7c63345e4590a49de7051244"}, + {file = "rcssmin-1.1.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:bc2d0ccf449f3f4c385789c9e7898f77fa40f88211cc7d385502f5ea11bc36f4"}, + {file = "rcssmin-1.1.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:754c3cab791da42cabfd430289dd991183d2e97f6c36a758ac4fd83c6998cb77"}, + {file = "rcssmin-1.1.2-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:997d3f6defd707f8a7bd39cedb765cedbf9c790ed0bc1f1c8fb65f4026007021"}, + {file = "rcssmin-1.1.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9c9688d42654f06535a2a052a0c2f02989b9052149f6cd3263ed320a10379657"}, + {file = "rcssmin-1.1.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:a8856db4529e524a632478d88f34d075ec7e772804257d9b99071b8bdd5f3733"}, + {file = "rcssmin-1.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d59a28d6819ad43ed660dfcdf297593f04e8bc227d7abd9548f12a16d6e645f1"}, + {file = "rcssmin-1.1.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:d1c9efc26682ff610194a0c56b0f192355136e066ff78683806778f0bc5e5093"}, + {file = "rcssmin-1.1.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:e5f08c79991c8ee0aa7064aa58ae92b0811d4a84948636ec0219b39d257470aa"}, + {file = "rcssmin-1.1.2-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:2d39b277a568f6208a4beea237c2d1188bd680deaff39f3742278462645a87ed"}, + {file = "rcssmin-1.1.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2b6a19926f7257ebb7d23040bb0ace05fa43dff7b60d8a9c35bfdf551fa57686"}, + {file = "rcssmin-1.1.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:69283a445483ac439af10ca9f50463c3770ef79a99833af7d5105c75f8ab3c5d"}, + {file = "rcssmin-1.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:a8e4c1bfa110d450970df60d904feab71c287e777a3cf522fd20e766483c8ce4"}, + {file = "rcssmin-1.1.2-cp39-cp39-manylinux1_i686.whl", hash = "sha256:19e48f7f66a3fa329215a02b3a952737b0b12f9976cd79ff2c236f96960d71d1"}, + {file = "rcssmin-1.1.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:e3ad642a1bfcbbddc3c36ad4c5676ef53267dd7c193c746a2f6670fe5bd03a60"}, + {file = "rcssmin-1.1.2-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:20f8592341960b031967f7ada165e6c8077dfc01eb4092fb970a5a4e64506695"}, + {file = "rcssmin-1.1.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:1c1d9a24132f4c48d080a59c20fce99a4fd9c393eb63f9779f2497ae28992de1"}, + {file = "rcssmin-1.1.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:50576521c1e08e8f137225b8a6e8ae88e867f53dfd82c537616591c67f112aad"}, + {file = "rcssmin-1.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:f363c9d242e1afce4fafbbf6bed52452464b19199e66075bed606764f31ca329"}, + {file = "rcssmin-1.1.2.tar.gz", hash = "sha256:bc75eb75bd6d345c0c51fd80fc487ddd6f9fd409dd7861b3fe98dee85018e1e9"}, ] [[package]] name = "redis" -version = "5.0.0" +version = "5.1.0b7" description = "Python client for Redis database and key-value store" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "redis-5.0.0-py3-none-any.whl", hash = "sha256:06570d0b2d84d46c21defc550afbaada381af82f5b83e5b3777600e05d8e2ed0"}, - {file = "redis-5.0.0.tar.gz", hash = "sha256:5cea6c0d335c9a7332a460ed8729ceabb4d0c489c7285b0a86dbbf8a017bd120"}, + {file = "redis-5.1.0b7-py3-none-any.whl", hash = "sha256:a6c6464b3eadda9d8eec14559fe124ebd13bd7f57a1162c225d971c4b3015e53"}, + {file = "redis-5.1.0b7.tar.gz", hash = "sha256:4137a3d5209761d0dd572c4f91dcf48a60eb34a8aafa5811d8180742deb70201"}, ] [package.dependencies] -async-timeout = {version = ">=4.0.2", markers = "python_full_version <= \"3.11.2\""} +async-timeout = {version = ">=4.0.3", markers = "python_full_version < \"3.11.3\""} [package.extras] hiredis = ["hiredis (>=1.0.0)"] @@ -2552,107 +2495,111 @@ ocsp = ["cryptography (>=36.0.1)", "pyopenssl (==20.0.1)", "requests (>=2.26.0)" [[package]] name = "regex" -version = "2023.8.8" +version = "2024.9.11" description = "Alternative regular expression module, to replace re." -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "regex-2023.8.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:88900f521c645f784260a8d346e12a1590f79e96403971241e64c3a265c8ecdb"}, - {file = "regex-2023.8.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3611576aff55918af2697410ff0293d6071b7e00f4b09e005d614686ac4cd57c"}, - {file = "regex-2023.8.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8a0ccc8f2698f120e9e5742f4b38dc944c38744d4bdfc427616f3a163dd9de5"}, - {file = "regex-2023.8.8-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c662a4cbdd6280ee56f841f14620787215a171c4e2d1744c9528bed8f5816c96"}, - {file = "regex-2023.8.8-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cf0633e4a1b667bfe0bb10b5e53fe0d5f34a6243ea2530eb342491f1adf4f739"}, - {file = "regex-2023.8.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:551ad543fa19e94943c5b2cebc54c73353ffff08228ee5f3376bd27b3d5b9800"}, - {file = "regex-2023.8.8-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54de2619f5ea58474f2ac211ceea6b615af2d7e4306220d4f3fe690c91988a61"}, - {file = "regex-2023.8.8-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5ec4b3f0aebbbe2fc0134ee30a791af522a92ad9f164858805a77442d7d18570"}, - {file = "regex-2023.8.8-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3ae646c35cb9f820491760ac62c25b6d6b496757fda2d51be429e0e7b67ae0ab"}, - {file = "regex-2023.8.8-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ca339088839582d01654e6f83a637a4b8194d0960477b9769d2ff2cfa0fa36d2"}, - {file = "regex-2023.8.8-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:d9b6627408021452dcd0d2cdf8da0534e19d93d070bfa8b6b4176f99711e7f90"}, - {file = "regex-2023.8.8-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:bd3366aceedf274f765a3a4bc95d6cd97b130d1dda524d8f25225d14123c01db"}, - {file = "regex-2023.8.8-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7aed90a72fc3654fba9bc4b7f851571dcc368120432ad68b226bd593f3f6c0b7"}, - {file = "regex-2023.8.8-cp310-cp310-win32.whl", hash = "sha256:80b80b889cb767cc47f31d2b2f3dec2db8126fbcd0cff31b3925b4dc6609dcdb"}, - {file = "regex-2023.8.8-cp310-cp310-win_amd64.whl", hash = "sha256:b82edc98d107cbc7357da7a5a695901b47d6eb0420e587256ba3ad24b80b7d0b"}, - {file = "regex-2023.8.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1e7d84d64c84ad97bf06f3c8cb5e48941f135ace28f450d86af6b6512f1c9a71"}, - {file = "regex-2023.8.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ce0f9fbe7d295f9922c0424a3637b88c6c472b75eafeaff6f910494a1fa719ef"}, - {file = "regex-2023.8.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06c57e14ac723b04458df5956cfb7e2d9caa6e9d353c0b4c7d5d54fcb1325c46"}, - {file = "regex-2023.8.8-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e7a9aaa5a1267125eef22cef3b63484c3241aaec6f48949b366d26c7250e0357"}, - {file = "regex-2023.8.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b7408511fca48a82a119d78a77c2f5eb1b22fe88b0d2450ed0756d194fe7a9a"}, - {file = "regex-2023.8.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14dc6f2d88192a67d708341f3085df6a4f5a0c7b03dec08d763ca2cd86e9f559"}, - {file = "regex-2023.8.8-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:48c640b99213643d141550326f34f0502fedb1798adb3c9eb79650b1ecb2f177"}, - {file = "regex-2023.8.8-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0085da0f6c6393428bf0d9c08d8b1874d805bb55e17cb1dfa5ddb7cfb11140bf"}, - {file = "regex-2023.8.8-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:964b16dcc10c79a4a2be9f1273fcc2684a9eedb3906439720598029a797b46e6"}, - {file = "regex-2023.8.8-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7ce606c14bb195b0e5108544b540e2c5faed6843367e4ab3deb5c6aa5e681208"}, - {file = "regex-2023.8.8-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:40f029d73b10fac448c73d6eb33d57b34607f40116e9f6e9f0d32e9229b147d7"}, - {file = "regex-2023.8.8-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3b8e6ea6be6d64104d8e9afc34c151926f8182f84e7ac290a93925c0db004bfd"}, - {file = "regex-2023.8.8-cp311-cp311-win32.whl", hash = "sha256:942f8b1f3b223638b02df7df79140646c03938d488fbfb771824f3d05fc083a8"}, - {file = "regex-2023.8.8-cp311-cp311-win_amd64.whl", hash = "sha256:51d8ea2a3a1a8fe4f67de21b8b93757005213e8ac3917567872f2865185fa7fb"}, - {file = "regex-2023.8.8-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e951d1a8e9963ea51efd7f150450803e3b95db5939f994ad3d5edac2b6f6e2b4"}, - {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:704f63b774218207b8ccc6c47fcef5340741e5d839d11d606f70af93ee78e4d4"}, - {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:22283c769a7b01c8ac355d5be0715bf6929b6267619505e289f792b01304d898"}, - {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:91129ff1bb0619bc1f4ad19485718cc623a2dc433dff95baadbf89405c7f6b57"}, - {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de35342190deb7b866ad6ba5cbcccb2d22c0487ee0cbb251efef0843d705f0d4"}, - {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b993b6f524d1e274a5062488a43e3f9f8764ee9745ccd8e8193df743dbe5ee61"}, - {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3026cbcf11d79095a32d9a13bbc572a458727bd5b1ca332df4a79faecd45281c"}, - {file = "regex-2023.8.8-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:293352710172239bf579c90a9864d0df57340b6fd21272345222fb6371bf82b3"}, - {file = "regex-2023.8.8-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:d909b5a3fff619dc7e48b6b1bedc2f30ec43033ba7af32f936c10839e81b9217"}, - {file = "regex-2023.8.8-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:3d370ff652323c5307d9c8e4c62efd1956fb08051b0e9210212bc51168b4ff56"}, - {file = "regex-2023.8.8-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:b076da1ed19dc37788f6a934c60adf97bd02c7eea461b73730513921a85d4235"}, - {file = "regex-2023.8.8-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:e9941a4ada58f6218694f382e43fdd256e97615db9da135e77359da257a7168b"}, - {file = "regex-2023.8.8-cp36-cp36m-win32.whl", hash = "sha256:a8c65c17aed7e15a0c824cdc63a6b104dfc530f6fa8cb6ac51c437af52b481c7"}, - {file = "regex-2023.8.8-cp36-cp36m-win_amd64.whl", hash = "sha256:aadf28046e77a72f30dcc1ab185639e8de7f4104b8cb5c6dfa5d8ed860e57236"}, - {file = "regex-2023.8.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:423adfa872b4908843ac3e7a30f957f5d5282944b81ca0a3b8a7ccbbfaa06103"}, - {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ae594c66f4a7e1ea67232a0846649a7c94c188d6c071ac0210c3e86a5f92109"}, - {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e51c80c168074faa793685656c38eb7a06cbad7774c8cbc3ea05552d615393d8"}, - {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:09b7f4c66aa9d1522b06e31a54f15581c37286237208df1345108fcf4e050c18"}, - {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e73e5243af12d9cd6a9d6a45a43570dbe2e5b1cdfc862f5ae2b031e44dd95a8"}, - {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:941460db8fe3bd613db52f05259c9336f5a47ccae7d7def44cc277184030a116"}, - {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f0ccf3e01afeb412a1a9993049cb160d0352dba635bbca7762b2dc722aa5742a"}, - {file = "regex-2023.8.8-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:2e9216e0d2cdce7dbc9be48cb3eacb962740a09b011a116fd7af8c832ab116ca"}, - {file = "regex-2023.8.8-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:5cd9cd7170459b9223c5e592ac036e0704bee765706445c353d96f2890e816c8"}, - {file = "regex-2023.8.8-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:4873ef92e03a4309b3ccd8281454801b291b689f6ad45ef8c3658b6fa761d7ac"}, - {file = "regex-2023.8.8-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:239c3c2a339d3b3ddd51c2daef10874410917cd2b998f043c13e2084cb191684"}, - {file = "regex-2023.8.8-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:1005c60ed7037be0d9dea1f9c53cc42f836188227366370867222bda4c3c6bd7"}, - {file = "regex-2023.8.8-cp37-cp37m-win32.whl", hash = "sha256:e6bd1e9b95bc5614a7a9c9c44fde9539cba1c823b43a9f7bc11266446dd568e3"}, - {file = "regex-2023.8.8-cp37-cp37m-win_amd64.whl", hash = "sha256:9a96edd79661e93327cfeac4edec72a4046e14550a1d22aa0dd2e3ca52aec921"}, - {file = "regex-2023.8.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f2181c20ef18747d5f4a7ea513e09ea03bdd50884a11ce46066bb90fe4213675"}, - {file = "regex-2023.8.8-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a2ad5add903eb7cdde2b7c64aaca405f3957ab34f16594d2b78d53b8b1a6a7d6"}, - {file = "regex-2023.8.8-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9233ac249b354c54146e392e8a451e465dd2d967fc773690811d3a8c240ac601"}, - {file = "regex-2023.8.8-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:920974009fb37b20d32afcdf0227a2e707eb83fe418713f7a8b7de038b870d0b"}, - {file = "regex-2023.8.8-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd2b6c5dfe0929b6c23dde9624483380b170b6e34ed79054ad131b20203a1a63"}, - {file = "regex-2023.8.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96979d753b1dc3b2169003e1854dc67bfc86edf93c01e84757927f810b8c3c93"}, - {file = "regex-2023.8.8-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2ae54a338191e1356253e7883d9d19f8679b6143703086245fb14d1f20196be9"}, - {file = "regex-2023.8.8-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2162ae2eb8b079622176a81b65d486ba50b888271302190870b8cc488587d280"}, - {file = "regex-2023.8.8-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:c884d1a59e69e03b93cf0dfee8794c63d7de0ee8f7ffb76e5f75be8131b6400a"}, - {file = "regex-2023.8.8-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:cf9273e96f3ee2ac89ffcb17627a78f78e7516b08f94dc435844ae72576a276e"}, - {file = "regex-2023.8.8-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:83215147121e15d5f3a45d99abeed9cf1fe16869d5c233b08c56cdf75f43a504"}, - {file = "regex-2023.8.8-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:3f7454aa427b8ab9101f3787eb178057c5250478e39b99540cfc2b889c7d0586"}, - {file = "regex-2023.8.8-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f0640913d2c1044d97e30d7c41728195fc37e54d190c5385eacb52115127b882"}, - {file = "regex-2023.8.8-cp38-cp38-win32.whl", hash = "sha256:0c59122ceccb905a941fb23b087b8eafc5290bf983ebcb14d2301febcbe199c7"}, - {file = "regex-2023.8.8-cp38-cp38-win_amd64.whl", hash = "sha256:c12f6f67495ea05c3d542d119d270007090bad5b843f642d418eb601ec0fa7be"}, - {file = "regex-2023.8.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:82cd0a69cd28f6cc3789cc6adeb1027f79526b1ab50b1f6062bbc3a0ccb2dbc3"}, - {file = "regex-2023.8.8-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:bb34d1605f96a245fc39790a117ac1bac8de84ab7691637b26ab2c5efb8f228c"}, - {file = "regex-2023.8.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:987b9ac04d0b38ef4f89fbc035e84a7efad9cdd5f1e29024f9289182c8d99e09"}, - {file = "regex-2023.8.8-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9dd6082f4e2aec9b6a0927202c85bc1b09dcab113f97265127c1dc20e2e32495"}, - {file = "regex-2023.8.8-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7eb95fe8222932c10d4436e7a6f7c99991e3fdd9f36c949eff16a69246dee2dc"}, - {file = "regex-2023.8.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7098c524ba9f20717a56a8d551d2ed491ea89cbf37e540759ed3b776a4f8d6eb"}, - {file = "regex-2023.8.8-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b694430b3f00eb02c594ff5a16db30e054c1b9589a043fe9174584c6efa8033"}, - {file = "regex-2023.8.8-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b2aeab3895d778155054abea5238d0eb9a72e9242bd4b43f42fd911ef9a13470"}, - {file = "regex-2023.8.8-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:988631b9d78b546e284478c2ec15c8a85960e262e247b35ca5eaf7ee22f6050a"}, - {file = "regex-2023.8.8-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:67ecd894e56a0c6108ec5ab1d8fa8418ec0cff45844a855966b875d1039a2e34"}, - {file = "regex-2023.8.8-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:14898830f0a0eb67cae2bbbc787c1a7d6e34ecc06fbd39d3af5fe29a4468e2c9"}, - {file = "regex-2023.8.8-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:f2200e00b62568cfd920127782c61bc1c546062a879cdc741cfcc6976668dfcf"}, - {file = "regex-2023.8.8-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9691a549c19c22d26a4f3b948071e93517bdf86e41b81d8c6ac8a964bb71e5a6"}, - {file = "regex-2023.8.8-cp39-cp39-win32.whl", hash = "sha256:6ab2ed84bf0137927846b37e882745a827458689eb969028af8032b1b3dac78e"}, - {file = "regex-2023.8.8-cp39-cp39-win_amd64.whl", hash = "sha256:5543c055d8ec7801901e1193a51570643d6a6ab8751b1f7dd9af71af467538bb"}, - {file = "regex-2023.8.8.tar.gz", hash = "sha256:fcbdc5f2b0f1cd0f6a56cdb46fe41d2cce1e644e3b68832f3eeebc5fb0f7712e"}, + {file = "regex-2024.9.11-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1494fa8725c285a81d01dc8c06b55287a1ee5e0e382d8413adc0a9197aac6408"}, + {file = "regex-2024.9.11-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0e12c481ad92d129c78f13a2a3662317e46ee7ef96c94fd332e1c29131875b7d"}, + {file = "regex-2024.9.11-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:16e13a7929791ac1216afde26f712802e3df7bf0360b32e4914dca3ab8baeea5"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:46989629904bad940bbec2106528140a218b4a36bb3042d8406980be1941429c"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a906ed5e47a0ce5f04b2c981af1c9acf9e8696066900bf03b9d7879a6f679fc8"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e9a091b0550b3b0207784a7d6d0f1a00d1d1c8a11699c1a4d93db3fbefc3ad35"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ddcd9a179c0a6fa8add279a4444015acddcd7f232a49071ae57fa6e278f1f71"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6b41e1adc61fa347662b09398e31ad446afadff932a24807d3ceb955ed865cc8"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ced479f601cd2f8ca1fd7b23925a7e0ad512a56d6e9476f79b8f381d9d37090a"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:635a1d96665f84b292e401c3d62775851aedc31d4f8784117b3c68c4fcd4118d"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:c0256beda696edcf7d97ef16b2a33a8e5a875affd6fa6567b54f7c577b30a137"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:3ce4f1185db3fbde8ed8aa223fc9620f276c58de8b0d4f8cc86fd1360829edb6"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:09d77559e80dcc9d24570da3745ab859a9cf91953062e4ab126ba9d5993688ca"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7a22ccefd4db3f12b526eccb129390942fe874a3a9fdbdd24cf55773a1faab1a"}, + {file = "regex-2024.9.11-cp310-cp310-win32.whl", hash = "sha256:f745ec09bc1b0bd15cfc73df6fa4f726dcc26bb16c23a03f9e3367d357eeedd0"}, + {file = "regex-2024.9.11-cp310-cp310-win_amd64.whl", hash = "sha256:01c2acb51f8a7d6494c8c5eafe3d8e06d76563d8a8a4643b37e9b2dd8a2ff623"}, + {file = "regex-2024.9.11-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2cce2449e5927a0bf084d346da6cd5eb016b2beca10d0013ab50e3c226ffc0df"}, + {file = "regex-2024.9.11-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3b37fa423beefa44919e009745ccbf353d8c981516e807995b2bd11c2c77d268"}, + {file = "regex-2024.9.11-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:64ce2799bd75039b480cc0360907c4fb2f50022f030bf9e7a8705b636e408fad"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4cc92bb6db56ab0c1cbd17294e14f5e9224f0cc6521167ef388332604e92679"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d05ac6fa06959c4172eccd99a222e1fbf17b5670c4d596cb1e5cde99600674c4"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:040562757795eeea356394a7fb13076ad4f99d3c62ab0f8bdfb21f99a1f85664"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6113c008a7780792efc80f9dfe10ba0cd043cbf8dc9a76ef757850f51b4edc50"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8e5fb5f77c8745a60105403a774fe2c1759b71d3e7b4ca237a5e67ad066c7199"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:54d9ff35d4515debf14bc27f1e3b38bfc453eff3220f5bce159642fa762fe5d4"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:df5cbb1fbc74a8305b6065d4ade43b993be03dbe0f8b30032cced0d7740994bd"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:7fb89ee5d106e4a7a51bce305ac4efb981536301895f7bdcf93ec92ae0d91c7f"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:a738b937d512b30bf75995c0159c0ddf9eec0775c9d72ac0202076c72f24aa96"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e28f9faeb14b6f23ac55bfbbfd3643f5c7c18ede093977f1df249f73fd22c7b1"}, + {file = "regex-2024.9.11-cp311-cp311-win32.whl", hash = "sha256:18e707ce6c92d7282dfce370cd205098384b8ee21544e7cb29b8aab955b66fa9"}, + {file = "regex-2024.9.11-cp311-cp311-win_amd64.whl", hash = "sha256:313ea15e5ff2a8cbbad96ccef6be638393041b0a7863183c2d31e0c6116688cf"}, + {file = "regex-2024.9.11-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b0d0a6c64fcc4ef9c69bd5b3b3626cc3776520a1637d8abaa62b9edc147a58f7"}, + {file = "regex-2024.9.11-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:49b0e06786ea663f933f3710a51e9385ce0cba0ea56b67107fd841a55d56a231"}, + {file = "regex-2024.9.11-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5b513b6997a0b2f10e4fd3a1313568e373926e8c252bd76c960f96fd039cd28d"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ee439691d8c23e76f9802c42a95cfeebf9d47cf4ffd06f18489122dbb0a7ad64"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a8f877c89719d759e52783f7fe6e1c67121076b87b40542966c02de5503ace42"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:23b30c62d0f16827f2ae9f2bb87619bc4fba2044911e2e6c2eb1af0161cdb766"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85ab7824093d8f10d44330fe1e6493f756f252d145323dd17ab6b48733ff6c0a"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8dee5b4810a89447151999428fe096977346cf2f29f4d5e29609d2e19e0199c9"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:98eeee2f2e63edae2181c886d7911ce502e1292794f4c5ee71e60e23e8d26b5d"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:57fdd2e0b2694ce6fc2e5ccf189789c3e2962916fb38779d3e3521ff8fe7a822"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:d552c78411f60b1fdaafd117a1fca2f02e562e309223b9d44b7de8be451ec5e0"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:a0b2b80321c2ed3fcf0385ec9e51a12253c50f146fddb2abbb10f033fe3d049a"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:18406efb2f5a0e57e3a5881cd9354c1512d3bb4f5c45d96d110a66114d84d23a"}, + {file = "regex-2024.9.11-cp312-cp312-win32.whl", hash = "sha256:e464b467f1588e2c42d26814231edecbcfe77f5ac414d92cbf4e7b55b2c2a776"}, + {file = "regex-2024.9.11-cp312-cp312-win_amd64.whl", hash = "sha256:9e8719792ca63c6b8340380352c24dcb8cd7ec49dae36e963742a275dfae6009"}, + {file = "regex-2024.9.11-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:c157bb447303070f256e084668b702073db99bbb61d44f85d811025fcf38f784"}, + {file = "regex-2024.9.11-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4db21ece84dfeefc5d8a3863f101995de646c6cb0536952c321a2650aa202c36"}, + {file = "regex-2024.9.11-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:220e92a30b426daf23bb67a7962900ed4613589bab80382be09b48896d211e92"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb1ae19e64c14c7ec1995f40bd932448713d3c73509e82d8cd7744dc00e29e86"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f47cd43a5bfa48f86925fe26fbdd0a488ff15b62468abb5d2a1e092a4fb10e85"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9d4a76b96f398697fe01117093613166e6aa8195d63f1b4ec3f21ab637632963"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ea51dcc0835eea2ea31d66456210a4e01a076d820e9039b04ae8d17ac11dee6"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7aaa315101c6567a9a45d2839322c51c8d6e81f67683d529512f5bcfb99c802"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c57d08ad67aba97af57a7263c2d9006d5c404d721c5f7542f077f109ec2a4a29"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:f8404bf61298bb6f8224bb9176c1424548ee1181130818fcd2cbffddc768bed8"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:dd4490a33eb909ef5078ab20f5f000087afa2a4daa27b4c072ccb3cb3050ad84"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:eee9130eaad130649fd73e5cd92f60e55708952260ede70da64de420cdcad554"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6a2644a93da36c784e546de579ec1806bfd2763ef47babc1b03d765fe560c9f8"}, + {file = "regex-2024.9.11-cp313-cp313-win32.whl", hash = "sha256:e997fd30430c57138adc06bba4c7c2968fb13d101e57dd5bb9355bf8ce3fa7e8"}, + {file = "regex-2024.9.11-cp313-cp313-win_amd64.whl", hash = "sha256:042c55879cfeb21a8adacc84ea347721d3d83a159da6acdf1116859e2427c43f"}, + {file = "regex-2024.9.11-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:35f4a6f96aa6cb3f2f7247027b07b15a374f0d5b912c0001418d1d55024d5cb4"}, + {file = "regex-2024.9.11-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:55b96e7ce3a69a8449a66984c268062fbaa0d8ae437b285428e12797baefce7e"}, + {file = "regex-2024.9.11-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cb130fccd1a37ed894824b8c046321540263013da72745d755f2d35114b81a60"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:323c1f04be6b2968944d730e5c2091c8c89767903ecaa135203eec4565ed2b2b"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:be1c8ed48c4c4065ecb19d882a0ce1afe0745dfad8ce48c49586b90a55f02366"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b5b029322e6e7b94fff16cd120ab35a253236a5f99a79fb04fda7ae71ca20ae8"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6fff13ef6b5f29221d6904aa816c34701462956aa72a77f1f151a8ec4f56aeb"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:587d4af3979376652010e400accc30404e6c16b7df574048ab1f581af82065e4"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:079400a8269544b955ffa9e31f186f01d96829110a3bf79dc338e9910f794fca"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:f9268774428ec173654985ce55fc6caf4c6d11ade0f6f914d48ef4719eb05ebb"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:23f9985c8784e544d53fc2930fc1ac1a7319f5d5332d228437acc9f418f2f168"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:ae2941333154baff9838e88aa71c1d84f4438189ecc6021a12c7573728b5838e"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:e93f1c331ca8e86fe877a48ad64e77882c0c4da0097f2212873a69bbfea95d0c"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:846bc79ee753acf93aef4184c040d709940c9d001029ceb7b7a52747b80ed2dd"}, + {file = "regex-2024.9.11-cp38-cp38-win32.whl", hash = "sha256:c94bb0a9f1db10a1d16c00880bdebd5f9faf267273b8f5bd1878126e0fbde771"}, + {file = "regex-2024.9.11-cp38-cp38-win_amd64.whl", hash = "sha256:2b08fce89fbd45664d3df6ad93e554b6c16933ffa9d55cb7e01182baaf971508"}, + {file = "regex-2024.9.11-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:07f45f287469039ffc2c53caf6803cd506eb5f5f637f1d4acb37a738f71dd066"}, + {file = "regex-2024.9.11-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4838e24ee015101d9f901988001038f7f0d90dc0c3b115541a1365fb439add62"}, + {file = "regex-2024.9.11-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6edd623bae6a737f10ce853ea076f56f507fd7726bee96a41ee3d68d347e4d16"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c69ada171c2d0e97a4b5aa78fbb835e0ffbb6b13fc5da968c09811346564f0d3"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02087ea0a03b4af1ed6ebab2c54d7118127fee8d71b26398e8e4b05b78963199"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:69dee6a020693d12a3cf892aba4808fe168d2a4cef368eb9bf74f5398bfd4ee8"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:297f54910247508e6e5cae669f2bc308985c60540a4edd1c77203ef19bfa63ca"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ecea58b43a67b1b79805f1a0255730edaf5191ecef84dbc4cc85eb30bc8b63b9"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:eab4bb380f15e189d1313195b062a6aa908f5bd687a0ceccd47c8211e9cf0d4a"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0cbff728659ce4bbf4c30b2a1be040faafaa9eca6ecde40aaff86f7889f4ab39"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:54c4a097b8bc5bb0dfc83ae498061d53ad7b5762e00f4adaa23bee22b012e6ba"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:73d6d2f64f4d894c96626a75578b0bf7d9e56dcda8c3d037a2118fdfe9b1c664"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:e53b5fbab5d675aec9f0c501274c467c0f9a5d23696cfc94247e1fb56501ed89"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0ffbcf9221e04502fc35e54d1ce9567541979c3fdfb93d2c554f0ca583a19b35"}, + {file = "regex-2024.9.11-cp39-cp39-win32.whl", hash = "sha256:e4c22e1ac1f1ec1e09f72e6c44d8f2244173db7eb9629cc3a346a8d7ccc31142"}, + {file = "regex-2024.9.11-cp39-cp39-win_amd64.whl", hash = "sha256:faa3c142464efec496967359ca99696c896c591c56c53506bac1ad465f66e919"}, + {file = "regex-2024.9.11.tar.gz", hash = "sha256:6c188c307e8433bcb63dc1915022deb553b4203a70722fc542c363bf120a01fd"}, ] [[package]] name = "relative-to-now" version = "1.1.0" description = "Print a datetime's distance from now" -category = "main" optional = false python-versions = ">=3.7.2,<4.0.0" files = [ @@ -2662,14 +2609,13 @@ files = [ [[package]] name = "requests" -version = "2.31.0" +version = "2.32.3" description = "Python HTTP for Humans." -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, - {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, + {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, + {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, ] [package.dependencies] @@ -2684,14 +2630,13 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "requests-oauthlib" -version = "1.3.1" +version = "2.0.0" description = "OAuthlib authentication support for Requests." -category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.4" files = [ - {file = "requests-oauthlib-1.3.1.tar.gz", hash = "sha256:75beac4a47881eeb94d5ea5d6ad31ef88856affe2332b9aafb52c6452ccf0d7a"}, - {file = "requests_oauthlib-1.3.1-py2.py3-none-any.whl", hash = "sha256:2577c501a2fb8d05a304c09d090d6e47c306fef15809d102b327cf8364bddab5"}, + {file = "requests-oauthlib-2.0.0.tar.gz", hash = "sha256:b3dffaebd884d8cd778494369603a9e7b58d29111bf6b41bdc2dcd87203af4e9"}, + {file = "requests_oauthlib-2.0.0-py2.py3-none-any.whl", hash = "sha256:7dd8a5c40426b779b0868c404bdef9768deccf22749cde15852df527e6269b36"}, ] [package.dependencies] @@ -2703,53 +2648,51 @@ rsa = ["oauthlib[signedtoken] (>=3.0.0)"] [[package]] name = "ruff" -version = "0.0.289" -description = "An extremely fast Python linter, written in Rust." -category = "dev" +version = "0.6.5" +description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.0.289-py3-none-macosx_10_7_x86_64.whl", hash = "sha256:c9a89d748e90c840bac9c37afe90cf13a5bfd460ca02ea93dad9d7bee3af03b4"}, - {file = "ruff-0.0.289-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:7f7396c6ea01ba332a6ad9d47642bac25d16bd2076aaa595b001f58b2f32ff05"}, - {file = "ruff-0.0.289-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7180de86c8ecd39624dec1699136f941c07e723201b4ce979bec9e7c67b40ad2"}, - {file = "ruff-0.0.289-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:73f37c65508203dd01a539926375a10243769c20d4fcab3fa6359cd3fbfc54b7"}, - {file = "ruff-0.0.289-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c14abcd7563b5c80be2dd809eeab20e4aa716bf849860b60a22d87ddf19eb88"}, - {file = "ruff-0.0.289-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:91b6d63b6b46d4707916472c91baa87aa0592e73f62a80ff55efdf6c0668cfd6"}, - {file = "ruff-0.0.289-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6479b8c4be3c36046c6c92054762b276fa0fddb03f6b9a310fbbf4c4951267fd"}, - {file = "ruff-0.0.289-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c5424318c254bcb091cb67e140ec9b9f7122074e100b06236f252923fb41e767"}, - {file = "ruff-0.0.289-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4daa90865796aedcedf0d8897fdd4cd09bf0ddd3504529a4ccf211edcaff3c7d"}, - {file = "ruff-0.0.289-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:8057e8ab0016c13b9419bad119e854f881e687bd96bc5e2d52c8baac0f278a44"}, - {file = "ruff-0.0.289-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:7eebfab2e6a6991908ff1bf82f2dc1e5095fc7e316848e62124526837b445f4d"}, - {file = "ruff-0.0.289-py3-none-musllinux_1_2_i686.whl", hash = "sha256:ebc7af550018001a7fb39ca22cdce20e1a0de4388ea4a007eb5c822f6188c297"}, - {file = "ruff-0.0.289-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:6e4e6eccb753efe760ba354fc8e9f783f6bba71aa9f592756f5bd0d78db898ed"}, - {file = "ruff-0.0.289-py3-none-win32.whl", hash = "sha256:bbb3044f931c09cf17dbe5b339896eece0d6ac10c9a86e172540fcdb1974f2b7"}, - {file = "ruff-0.0.289-py3-none-win_amd64.whl", hash = "sha256:6d043c5456b792be2615a52f16056c3cf6c40506ce1f2d6f9d3083cfcb9eeab6"}, - {file = "ruff-0.0.289-py3-none-win_arm64.whl", hash = "sha256:04a720bcca5e987426bb14ad8b9c6f55e259ea774da1cbeafe71569744cfd20a"}, - {file = "ruff-0.0.289.tar.gz", hash = "sha256:2513f853b0fc42f0339b7ab0d2751b63ce7a50a0032d2689b54b2931b3b866d7"}, + {file = "ruff-0.6.5-py3-none-linux_armv6l.whl", hash = "sha256:7e4e308f16e07c95fc7753fc1aaac690a323b2bb9f4ec5e844a97bb7fbebd748"}, + {file = "ruff-0.6.5-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:932cd69eefe4daf8c7d92bd6689f7e8182571cb934ea720af218929da7bd7d69"}, + {file = "ruff-0.6.5-py3-none-macosx_11_0_arm64.whl", hash = "sha256:3a8d42d11fff8d3143ff4da41742a98f8f233bf8890e9fe23077826818f8d680"}, + {file = "ruff-0.6.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a50af6e828ee692fb10ff2dfe53f05caecf077f4210fae9677e06a808275754f"}, + {file = "ruff-0.6.5-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:794ada3400a0d0b89e3015f1a7e01f4c97320ac665b7bc3ade24b50b54cb2972"}, + {file = "ruff-0.6.5-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:381413ec47f71ce1d1c614f7779d88886f406f1fd53d289c77e4e533dc6ea200"}, + {file = "ruff-0.6.5-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:52e75a82bbc9b42e63c08d22ad0ac525117e72aee9729a069d7c4f235fc4d276"}, + {file = "ruff-0.6.5-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09c72a833fd3551135ceddcba5ebdb68ff89225d30758027280968c9acdc7810"}, + {file = "ruff-0.6.5-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:800c50371bdcb99b3c1551d5691e14d16d6f07063a518770254227f7f6e8c178"}, + {file = "ruff-0.6.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e25ddd9cd63ba1f3bd51c1f09903904a6adf8429df34f17d728a8fa11174253"}, + {file = "ruff-0.6.5-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:7291e64d7129f24d1b0c947ec3ec4c0076e958d1475c61202497c6aced35dd19"}, + {file = "ruff-0.6.5-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:9ad7dfbd138d09d9a7e6931e6a7e797651ce29becd688be8a0d4d5f8177b4b0c"}, + {file = "ruff-0.6.5-py3-none-musllinux_1_2_i686.whl", hash = "sha256:005256d977021790cc52aa23d78f06bb5090dc0bfbd42de46d49c201533982ae"}, + {file = "ruff-0.6.5-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:482c1e6bfeb615eafc5899127b805d28e387bd87db38b2c0c41d271f5e58d8cc"}, + {file = "ruff-0.6.5-py3-none-win32.whl", hash = "sha256:cf4d3fa53644137f6a4a27a2b397381d16454a1566ae5335855c187fbf67e4f5"}, + {file = "ruff-0.6.5-py3-none-win_amd64.whl", hash = "sha256:3e42a57b58e3612051a636bc1ac4e6b838679530235520e8f095f7c44f706ff9"}, + {file = "ruff-0.6.5-py3-none-win_arm64.whl", hash = "sha256:51935067740773afdf97493ba9b8231279e9beef0f2a8079188c4776c25688e0"}, + {file = "ruff-0.6.5.tar.gz", hash = "sha256:4d32d87fab433c0cf285c3683dd4dae63be05fd7a1d65b3f5bf7cdd05a6b96fb"}, ] [[package]] name = "setuptools" -version = "68.2.2" +version = "72.2.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-68.2.2-py3-none-any.whl", hash = "sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a"}, - {file = "setuptools-68.2.2.tar.gz", hash = "sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87"}, + {file = "setuptools-72.2.0-py3-none-any.whl", hash = "sha256:f11dd94b7bae3a156a95ec151f24e4637fb4fa19c878e4d191bfb8b2d82728c4"}, + {file = "setuptools-72.2.0.tar.gz", hash = "sha256:80aacbf633704e9c8bfa1d99fa5dd4dc59573efcf9e4042c13d3bcef91ac2ef9"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] -testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] +core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.text (>=3.7)", "more-itertools (>=8.8)", "ordered-set (>=3.1.1)", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] +test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "mypy (==1.11.*)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (<0.4)", "pytest-ruff (>=0.2.1)", "pytest-ruff (>=0.3.2)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -2759,74 +2702,81 @@ files = [ [[package]] name = "soupsieve" -version = "2.5" +version = "2.6" description = "A modern CSS selector implementation for Beautiful Soup." -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "soupsieve-2.5-py3-none-any.whl", hash = "sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7"}, - {file = "soupsieve-2.5.tar.gz", hash = "sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690"}, + {file = "soupsieve-2.6-py3-none-any.whl", hash = "sha256:e72c4ff06e4fb6e4b5a9f0f55fe6e81514581fca1515028625d0f299c602ccc9"}, + {file = "soupsieve-2.6.tar.gz", hash = "sha256:e2e68417777af359ec65daac1057404a3c8a5455bb8abc36f1a9866ab1a51abb"}, ] [[package]] name = "sqlalchemy" -version = "2.0.20" +version = "2.0.34" description = "Database Abstraction Library" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "SQLAlchemy-2.0.20-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:759b51346aa388c2e606ee206c0bc6f15a5299f6174d1e10cadbe4530d3c7a98"}, - {file = "SQLAlchemy-2.0.20-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1506e988ebeaaf316f183da601f24eedd7452e163010ea63dbe52dc91c7fc70e"}, - {file = "SQLAlchemy-2.0.20-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5768c268df78bacbde166b48be788b83dddaa2a5974b8810af422ddfe68a9bc8"}, - {file = "SQLAlchemy-2.0.20-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a3f0dd6d15b6dc8b28a838a5c48ced7455c3e1fb47b89da9c79cc2090b072a50"}, - {file = "SQLAlchemy-2.0.20-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:243d0fb261f80a26774829bc2cee71df3222587ac789b7eaf6555c5b15651eed"}, - {file = "SQLAlchemy-2.0.20-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6eb6d77c31e1bf4268b4d61b549c341cbff9842f8e115ba6904249c20cb78a61"}, - {file = "SQLAlchemy-2.0.20-cp310-cp310-win32.whl", hash = "sha256:bcb04441f370cbe6e37c2b8d79e4af9e4789f626c595899d94abebe8b38f9a4d"}, - {file = "SQLAlchemy-2.0.20-cp310-cp310-win_amd64.whl", hash = "sha256:d32b5ffef6c5bcb452723a496bad2d4c52b346240c59b3e6dba279f6dcc06c14"}, - {file = "SQLAlchemy-2.0.20-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:dd81466bdbc82b060c3c110b2937ab65ace41dfa7b18681fdfad2f37f27acdd7"}, - {file = "SQLAlchemy-2.0.20-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6fe7d61dc71119e21ddb0094ee994418c12f68c61b3d263ebaae50ea8399c4d4"}, - {file = "SQLAlchemy-2.0.20-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4e571af672e1bb710b3cc1a9794b55bce1eae5aed41a608c0401885e3491179"}, - {file = "SQLAlchemy-2.0.20-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3364b7066b3c7f4437dd345d47271f1251e0cfb0aba67e785343cdbdb0fff08c"}, - {file = "SQLAlchemy-2.0.20-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1be86ccea0c965a1e8cd6ccf6884b924c319fcc85765f16c69f1ae7148eba64b"}, - {file = "SQLAlchemy-2.0.20-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1d35d49a972649b5080557c603110620a86aa11db350d7a7cb0f0a3f611948a0"}, - {file = "SQLAlchemy-2.0.20-cp311-cp311-win32.whl", hash = "sha256:27d554ef5d12501898d88d255c54eef8414576f34672e02fe96d75908993cf53"}, - {file = "SQLAlchemy-2.0.20-cp311-cp311-win_amd64.whl", hash = "sha256:411e7f140200c02c4b953b3dbd08351c9f9818d2bd591b56d0fa0716bd014f1e"}, - {file = "SQLAlchemy-2.0.20-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3c6aceebbc47db04f2d779db03afeaa2c73ea3f8dcd3987eb9efdb987ffa09a3"}, - {file = "SQLAlchemy-2.0.20-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7d3f175410a6db0ad96b10bfbb0a5530ecd4fcf1e2b5d83d968dd64791f810ed"}, - {file = "SQLAlchemy-2.0.20-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea8186be85da6587456c9ddc7bf480ebad1a0e6dcbad3967c4821233a4d4df57"}, - {file = "SQLAlchemy-2.0.20-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c3d99ba99007dab8233f635c32b5cd24fb1df8d64e17bc7df136cedbea427897"}, - {file = "SQLAlchemy-2.0.20-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:76fdfc0f6f5341987474ff48e7a66c3cd2b8a71ddda01fa82fedb180b961630a"}, - {file = "SQLAlchemy-2.0.20-cp37-cp37m-win32.whl", hash = "sha256:d3793dcf5bc4d74ae1e9db15121250c2da476e1af8e45a1d9a52b1513a393459"}, - {file = "SQLAlchemy-2.0.20-cp37-cp37m-win_amd64.whl", hash = "sha256:79fde625a0a55220d3624e64101ed68a059c1c1f126c74f08a42097a72ff66a9"}, - {file = "SQLAlchemy-2.0.20-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:599ccd23a7146e126be1c7632d1d47847fa9f333104d03325c4e15440fc7d927"}, - {file = "SQLAlchemy-2.0.20-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1a58052b5a93425f656675673ef1f7e005a3b72e3f2c91b8acca1b27ccadf5f4"}, - {file = "SQLAlchemy-2.0.20-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79543f945be7a5ada9943d555cf9b1531cfea49241809dd1183701f94a748624"}, - {file = "SQLAlchemy-2.0.20-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63e73da7fb030ae0a46a9ffbeef7e892f5def4baf8064786d040d45c1d6d1dc5"}, - {file = "SQLAlchemy-2.0.20-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3ce5e81b800a8afc870bb8e0a275d81957e16f8c4b62415a7b386f29a0cb9763"}, - {file = "SQLAlchemy-2.0.20-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:cb0d3e94c2a84215532d9bcf10229476ffd3b08f481c53754113b794afb62d14"}, - {file = "SQLAlchemy-2.0.20-cp38-cp38-win32.whl", hash = "sha256:8dd77fd6648b677d7742d2c3cc105a66e2681cc5e5fb247b88c7a7b78351cf74"}, - {file = "SQLAlchemy-2.0.20-cp38-cp38-win_amd64.whl", hash = "sha256:6f8a934f9dfdf762c844e5164046a9cea25fabbc9ec865c023fe7f300f11ca4a"}, - {file = "SQLAlchemy-2.0.20-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:26a3399eaf65e9ab2690c07bd5cf898b639e76903e0abad096cd609233ce5208"}, - {file = "SQLAlchemy-2.0.20-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4cde2e1096cbb3e62002efdb7050113aa5f01718035ba9f29f9d89c3758e7e4e"}, - {file = "SQLAlchemy-2.0.20-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1b09ba72e4e6d341bb5bdd3564f1cea6095d4c3632e45dc69375a1dbe4e26ec"}, - {file = "SQLAlchemy-2.0.20-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1b74eeafaa11372627ce94e4dc88a6751b2b4d263015b3523e2b1e57291102f0"}, - {file = "SQLAlchemy-2.0.20-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:77d37c1b4e64c926fa3de23e8244b964aab92963d0f74d98cbc0783a9e04f501"}, - {file = "SQLAlchemy-2.0.20-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:eefebcc5c555803065128401a1e224a64607259b5eb907021bf9b175f315d2a6"}, - {file = "SQLAlchemy-2.0.20-cp39-cp39-win32.whl", hash = "sha256:3423dc2a3b94125094897118b52bdf4d37daf142cbcf26d48af284b763ab90e9"}, - {file = "SQLAlchemy-2.0.20-cp39-cp39-win_amd64.whl", hash = "sha256:5ed61e3463021763b853628aef8bc5d469fe12d95f82c74ef605049d810f3267"}, - {file = "SQLAlchemy-2.0.20-py3-none-any.whl", hash = "sha256:63a368231c53c93e2b67d0c5556a9836fdcd383f7e3026a39602aad775b14acf"}, - {file = "SQLAlchemy-2.0.20.tar.gz", hash = "sha256:ca8a5ff2aa7f3ade6c498aaafce25b1eaeabe4e42b73e25519183e4566a16fc6"}, -] - -[package.dependencies] -greenlet = {version = "!=0.4.17", markers = "platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\""} -typing-extensions = ">=4.2.0" + {file = "SQLAlchemy-2.0.34-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:95d0b2cf8791ab5fb9e3aa3d9a79a0d5d51f55b6357eecf532a120ba3b5524db"}, + {file = "SQLAlchemy-2.0.34-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:243f92596f4fd4c8bd30ab8e8dd5965afe226363d75cab2468f2c707f64cd83b"}, + {file = "SQLAlchemy-2.0.34-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9ea54f7300553af0a2a7235e9b85f4204e1fc21848f917a3213b0e0818de9a24"}, + {file = "SQLAlchemy-2.0.34-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:173f5f122d2e1bff8fbd9f7811b7942bead1f5e9f371cdf9e670b327e6703ebd"}, + {file = "SQLAlchemy-2.0.34-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:196958cde924a00488e3e83ff917be3b73cd4ed8352bbc0f2989333176d1c54d"}, + {file = "SQLAlchemy-2.0.34-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:bd90c221ed4e60ac9d476db967f436cfcecbd4ef744537c0f2d5291439848768"}, + {file = "SQLAlchemy-2.0.34-cp310-cp310-win32.whl", hash = "sha256:3166dfff2d16fe9be3241ee60ece6fcb01cf8e74dd7c5e0b64f8e19fab44911b"}, + {file = "SQLAlchemy-2.0.34-cp310-cp310-win_amd64.whl", hash = "sha256:6831a78bbd3c40f909b3e5233f87341f12d0b34a58f14115c9e94b4cdaf726d3"}, + {file = "SQLAlchemy-2.0.34-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7db3db284a0edaebe87f8f6642c2b2c27ed85c3e70064b84d1c9e4ec06d5d84"}, + {file = "SQLAlchemy-2.0.34-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:430093fce0efc7941d911d34f75a70084f12f6ca5c15d19595c18753edb7c33b"}, + {file = "SQLAlchemy-2.0.34-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79cb400c360c7c210097b147c16a9e4c14688a6402445ac848f296ade6283bbc"}, + {file = "SQLAlchemy-2.0.34-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb1b30f31a36c7f3fee848391ff77eebdd3af5750bf95fbf9b8b5323edfdb4ec"}, + {file = "SQLAlchemy-2.0.34-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8fddde2368e777ea2a4891a3fb4341e910a056be0bb15303bf1b92f073b80c02"}, + {file = "SQLAlchemy-2.0.34-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:80bd73ea335203b125cf1d8e50fef06be709619eb6ab9e7b891ea34b5baa2287"}, + {file = "SQLAlchemy-2.0.34-cp311-cp311-win32.whl", hash = "sha256:6daeb8382d0df526372abd9cb795c992e18eed25ef2c43afe518c73f8cccb721"}, + {file = "SQLAlchemy-2.0.34-cp311-cp311-win_amd64.whl", hash = "sha256:5bc08e75ed11693ecb648b7a0a4ed80da6d10845e44be0c98c03f2f880b68ff4"}, + {file = "SQLAlchemy-2.0.34-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:53e68b091492c8ed2bd0141e00ad3089bcc6bf0e6ec4142ad6505b4afe64163e"}, + {file = "SQLAlchemy-2.0.34-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bcd18441a49499bf5528deaa9dee1f5c01ca491fc2791b13604e8f972877f812"}, + {file = "SQLAlchemy-2.0.34-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:165bbe0b376541092bf49542bd9827b048357f4623486096fc9aaa6d4e7c59a2"}, + {file = "SQLAlchemy-2.0.34-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3330415cd387d2b88600e8e26b510d0370db9b7eaf984354a43e19c40df2e2b"}, + {file = "SQLAlchemy-2.0.34-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:97b850f73f8abbffb66ccbab6e55a195a0eb655e5dc74624d15cff4bfb35bd74"}, + {file = "SQLAlchemy-2.0.34-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7cee4c6917857fd6121ed84f56d1dc78eb1d0e87f845ab5a568aba73e78adf83"}, + {file = "SQLAlchemy-2.0.34-cp312-cp312-win32.whl", hash = "sha256:fbb034f565ecbe6c530dff948239377ba859420d146d5f62f0271407ffb8c580"}, + {file = "SQLAlchemy-2.0.34-cp312-cp312-win_amd64.whl", hash = "sha256:707c8f44931a4facd4149b52b75b80544a8d824162602b8cd2fe788207307f9a"}, + {file = "SQLAlchemy-2.0.34-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:24af3dc43568f3780b7e1e57c49b41d98b2d940c1fd2e62d65d3928b6f95f021"}, + {file = "SQLAlchemy-2.0.34-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e60ed6ef0a35c6b76b7640fe452d0e47acc832ccbb8475de549a5cc5f90c2c06"}, + {file = "SQLAlchemy-2.0.34-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:413c85cd0177c23e32dee6898c67a5f49296640041d98fddb2c40888fe4daa2e"}, + {file = "SQLAlchemy-2.0.34-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:25691f4adfb9d5e796fd48bf1432272f95f4bbe5f89c475a788f31232ea6afba"}, + {file = "SQLAlchemy-2.0.34-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:526ce723265643dbc4c7efb54f56648cc30e7abe20f387d763364b3ce7506c82"}, + {file = "SQLAlchemy-2.0.34-cp37-cp37m-win32.whl", hash = "sha256:13be2cc683b76977a700948411a94c67ad8faf542fa7da2a4b167f2244781cf3"}, + {file = "SQLAlchemy-2.0.34-cp37-cp37m-win_amd64.whl", hash = "sha256:e54ef33ea80d464c3dcfe881eb00ad5921b60f8115ea1a30d781653edc2fd6a2"}, + {file = "SQLAlchemy-2.0.34-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:43f28005141165edd11fbbf1541c920bd29e167b8bbc1fb410d4fe2269c1667a"}, + {file = "SQLAlchemy-2.0.34-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b68094b165a9e930aedef90725a8fcfafe9ef95370cbb54abc0464062dbf808f"}, + {file = "SQLAlchemy-2.0.34-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a1e03db964e9d32f112bae36f0cc1dcd1988d096cfd75d6a588a3c3def9ab2b"}, + {file = "SQLAlchemy-2.0.34-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:203d46bddeaa7982f9c3cc693e5bc93db476ab5de9d4b4640d5c99ff219bee8c"}, + {file = "SQLAlchemy-2.0.34-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ae92bebca3b1e6bd203494e5ef919a60fb6dfe4d9a47ed2453211d3bd451b9f5"}, + {file = "SQLAlchemy-2.0.34-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:9661268415f450c95f72f0ac1217cc6f10256f860eed85c2ae32e75b60278ad8"}, + {file = "SQLAlchemy-2.0.34-cp38-cp38-win32.whl", hash = "sha256:895184dfef8708e15f7516bd930bda7e50ead069280d2ce09ba11781b630a434"}, + {file = "SQLAlchemy-2.0.34-cp38-cp38-win_amd64.whl", hash = "sha256:6e7cde3a2221aa89247944cafb1b26616380e30c63e37ed19ff0bba5e968688d"}, + {file = "SQLAlchemy-2.0.34-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dbcdf987f3aceef9763b6d7b1fd3e4ee210ddd26cac421d78b3c206d07b2700b"}, + {file = "SQLAlchemy-2.0.34-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ce119fc4ce0d64124d37f66a6f2a584fddc3c5001755f8a49f1ca0a177ef9796"}, + {file = "SQLAlchemy-2.0.34-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a17d8fac6df9835d8e2b4c5523666e7051d0897a93756518a1fe101c7f47f2f0"}, + {file = "SQLAlchemy-2.0.34-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ebc11c54c6ecdd07bb4efbfa1554538982f5432dfb8456958b6d46b9f834bb7"}, + {file = "SQLAlchemy-2.0.34-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2e6965346fc1491a566e019a4a1d3dfc081ce7ac1a736536367ca305da6472a8"}, + {file = "SQLAlchemy-2.0.34-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:220574e78ad986aea8e81ac68821e47ea9202b7e44f251b7ed8c66d9ae3f4278"}, + {file = "SQLAlchemy-2.0.34-cp39-cp39-win32.whl", hash = "sha256:b75b00083e7fe6621ce13cfce9d4469c4774e55e8e9d38c305b37f13cf1e874c"}, + {file = "SQLAlchemy-2.0.34-cp39-cp39-win_amd64.whl", hash = "sha256:c29d03e0adf3cc1a8c3ec62d176824972ae29b67a66cbb18daff3062acc6faa8"}, + {file = "SQLAlchemy-2.0.34-py3-none-any.whl", hash = "sha256:7286c353ee6475613d8beff83167374006c6b3e3f0e6491bfe8ca610eb1dec0f"}, + {file = "sqlalchemy-2.0.34.tar.gz", hash = "sha256:10d8f36990dd929690666679b0f42235c159a7051534adb135728ee52828dd22"}, +] + +[package.dependencies] +greenlet = {version = "!=0.4.17", markers = "python_version < \"3.13\" and (platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\")"} +typing-extensions = ">=4.6.0" [package.extras] aiomysql = ["aiomysql (>=0.2.0)", "greenlet (!=0.4.17)"] -aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing-extensions (!=3.10.0.1)"] +aioodbc = ["aioodbc", "greenlet (!=0.4.17)"] +aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing_extensions (!=3.10.0.1)"] asyncio = ["greenlet (!=0.4.17)"] asyncmy = ["asyncmy (>=0.2.3,!=0.2.4,!=0.2.6)", "greenlet (!=0.4.17)"] mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5)"] @@ -2836,7 +2786,7 @@ mssql-pyodbc = ["pyodbc"] mypy = ["mypy (>=0.910)"] mysql = ["mysqlclient (>=1.4.0)"] mysql-connector = ["mysql-connector-python"] -oracle = ["cx-oracle (>=7)"] +oracle = ["cx_oracle (>=8)"] oracle-oracledb = ["oracledb (>=1.0.1)"] postgresql = ["psycopg2 (>=2.7)"] postgresql-asyncpg = ["asyncpg", "greenlet (!=0.4.17)"] @@ -2846,18 +2796,17 @@ postgresql-psycopg2binary = ["psycopg2-binary"] postgresql-psycopg2cffi = ["psycopg2cffi"] postgresql-psycopgbinary = ["psycopg[binary] (>=3.0.7)"] pymysql = ["pymysql"] -sqlcipher = ["sqlcipher3-binary"] +sqlcipher = ["sqlcipher3_binary"] [[package]] name = "sqlalchemy-utils" -version = "0.41.1" +version = "0.41.2" description = "Various utility functions for SQLAlchemy." -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "SQLAlchemy-Utils-0.41.1.tar.gz", hash = "sha256:a2181bff01eeb84479e38571d2c0718eb52042f9afd8c194d0d02877e84b7d74"}, - {file = "SQLAlchemy_Utils-0.41.1-py3-none-any.whl", hash = "sha256:6c96b0768ea3f15c0dc56b363d386138c562752b84f647fb8d31a2223aaab801"}, + {file = "SQLAlchemy-Utils-0.41.2.tar.gz", hash = "sha256:bc599c8c3b3319e53ce6c5c3c471120bd325d0071fb6f38a10e924e3d07b9990"}, + {file = "SQLAlchemy_Utils-0.41.2-py3-none-any.whl", hash = "sha256:85cf3842da2bf060760f955f8467b87983fb2e30f1764fd0e24a48307dc8ec6e"}, ] [package.dependencies] @@ -2872,31 +2821,15 @@ intervals = ["intervals (>=0.7.1)"] password = ["passlib (>=1.6,<2.0)"] pendulum = ["pendulum (>=2.0.5)"] phone = ["phonenumbers (>=5.9.2)"] -test = ["Jinja2 (>=2.3)", "Pygments (>=1.2)", "backports.zoneinfo", "docutils (>=0.10)", "flake8 (>=2.4.0)", "flexmock (>=0.9.7)", "isort (>=4.2.2)", "pg8000 (>=1.12.4)", "psycopg (>=3.1.8)", "psycopg2 (>=2.5.1)", "psycopg2cffi (>=2.8.1)", "pymysql", "pyodbc", "pytest (>=2.7.1)", "python-dateutil (>=2.6)", "pytz (>=2014.2)"] -test-all = ["Babel (>=1.3)", "Jinja2 (>=2.3)", "Pygments (>=1.2)", "arrow (>=0.3.4)", "backports.zoneinfo", "colour (>=0.0.4)", "cryptography (>=0.6)", "docutils (>=0.10)", "flake8 (>=2.4.0)", "flexmock (>=0.9.7)", "furl (>=0.4.1)", "intervals (>=0.7.1)", "isort (>=4.2.2)", "passlib (>=1.6,<2.0)", "pendulum (>=2.0.5)", "pg8000 (>=1.12.4)", "phonenumbers (>=5.9.2)", "psycopg (>=3.1.8)", "psycopg2 (>=2.5.1)", "psycopg2cffi (>=2.8.1)", "pymysql", "pyodbc", "pytest (>=2.7.1)", "python-dateutil", "python-dateutil (>=2.6)", "pytz (>=2014.2)"] +test = ["Jinja2 (>=2.3)", "Pygments (>=1.2)", "backports.zoneinfo", "docutils (>=0.10)", "flake8 (>=2.4.0)", "flexmock (>=0.9.7)", "isort (>=4.2.2)", "pg8000 (>=1.12.4)", "psycopg (>=3.1.8)", "psycopg2 (>=2.5.1)", "psycopg2cffi (>=2.8.1)", "pymysql", "pyodbc", "pytest (==7.4.4)", "python-dateutil (>=2.6)", "pytz (>=2014.2)"] +test-all = ["Babel (>=1.3)", "Jinja2 (>=2.3)", "Pygments (>=1.2)", "arrow (>=0.3.4)", "backports.zoneinfo", "colour (>=0.0.4)", "cryptography (>=0.6)", "docutils (>=0.10)", "flake8 (>=2.4.0)", "flexmock (>=0.9.7)", "furl (>=0.4.1)", "intervals (>=0.7.1)", "isort (>=4.2.2)", "passlib (>=1.6,<2.0)", "pendulum (>=2.0.5)", "pg8000 (>=1.12.4)", "phonenumbers (>=5.9.2)", "psycopg (>=3.1.8)", "psycopg2 (>=2.5.1)", "psycopg2cffi (>=2.8.1)", "pymysql", "pyodbc", "pytest (==7.4.4)", "python-dateutil", "python-dateutil (>=2.6)", "pytz (>=2014.2)"] timezone = ["python-dateutil"] url = ["furl (>=0.4.1)"] -[[package]] -name = "sqlalchemy2-stubs" -version = "0.0.2a35" -description = "Typing Stubs for SQLAlchemy 1.4" -category = "main" -optional = false -python-versions = ">=3.6" -files = [ - {file = "sqlalchemy2-stubs-0.0.2a35.tar.gz", hash = "sha256:bd5d530697d7e8c8504c7fe792ef334538392a5fb7aa7e4f670bfacdd668a19d"}, - {file = "sqlalchemy2_stubs-0.0.2a35-py3-none-any.whl", hash = "sha256:593784ff9fc0dc2ded1895e3322591689db3be06f3ca006e3ef47640baf2d38a"}, -] - -[package.dependencies] -typing-extensions = ">=3.7.4" - [[package]] name = "supervisor" version = "4.2.5" description = "A system for controlling process state under UNIX" -category = "main" optional = false python-versions = "*" files = [ @@ -2914,7 +2847,6 @@ testing = ["pytest", "pytest-cov"] name = "toml" version = "0.10.2" description = "Python Library for Tom's Obvious, Minimal Language" -category = "dev" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -2926,7 +2858,6 @@ files = [ name = "tomli" version = "2.0.1" description = "A lil' TOML parser" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2936,54 +2867,51 @@ files = [ [[package]] name = "tomlkit" -version = "0.12.1" +version = "0.13.2" description = "Style preserving TOML library" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomlkit-0.12.1-py3-none-any.whl", hash = "sha256:712cbd236609acc6a3e2e97253dfc52d4c2082982a88f61b640ecf0817eab899"}, - {file = "tomlkit-0.12.1.tar.gz", hash = "sha256:38e1ff8edb991273ec9f6181244a6a391ac30e9f5098e7535640ea6be97a7c86"}, + {file = "tomlkit-0.13.2-py3-none-any.whl", hash = "sha256:7a974427f6e119197f670fbbbeae7bef749a6c14e793db934baefc1b5f03efde"}, + {file = "tomlkit-0.13.2.tar.gz", hash = "sha256:fff5fe59a87295b278abd31bec92c15d9bc4a06885ab12bcea52c71119392e79"}, ] [[package]] name = "tox" -version = "4.11.3" +version = "4.18.1" description = "tox is a generic virtualenv management and test command line tool" -category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "tox-4.11.3-py3-none-any.whl", hash = "sha256:599af5e5bb0cad0148ac1558a0b66f8fff219ef88363483b8d92a81e4246f28f"}, - {file = "tox-4.11.3.tar.gz", hash = "sha256:5039f68276461fae6a9452a3b2c7295798f00a0e92edcd9a3b78ba1a73577951"}, + {file = "tox-4.18.1-py3-none-any.whl", hash = "sha256:35d472032ee1f73fe20c3e0e73d7073a4e85075c86ff02c576f9fc7c6a15a578"}, + {file = "tox-4.18.1.tar.gz", hash = "sha256:3c0c96bc3a568a5c7e66387a4cfcf8c875b52e09f4d47c9f7a277ec82f1a0b11"}, ] [package.dependencies] -cachetools = ">=5.3.1" +cachetools = ">=5.5" chardet = ">=5.2" colorama = ">=0.4.6" -filelock = ">=3.12.3" -packaging = ">=23.1" -platformdirs = ">=3.10" -pluggy = ">=1.3" -pyproject-api = ">=1.6.1" +filelock = ">=3.15.4" +packaging = ">=24.1" +platformdirs = ">=4.2.2" +pluggy = ">=1.5" +pyproject-api = ">=1.7.1" tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} -virtualenv = ">=20.24.3" +virtualenv = ">=20.26.3" [package.extras] -docs = ["furo (>=2023.8.19)", "sphinx (>=7.2.4)", "sphinx-argparse-cli (>=1.11.1)", "sphinx-autodoc-typehints (>=1.24)", "sphinx-copybutton (>=0.5.2)", "sphinx-inline-tabs (>=2023.4.21)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] -testing = ["build[virtualenv] (>=0.10)", "covdefaults (>=2.3)", "detect-test-pollution (>=1.1.1)", "devpi-process (>=1)", "diff-cover (>=7.7)", "distlib (>=0.3.7)", "flaky (>=3.7)", "hatch-vcs (>=0.3)", "hatchling (>=1.18)", "psutil (>=5.9.5)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)", "pytest-xdist (>=3.3.1)", "re-assert (>=1.1)", "time-machine (>=2.12)", "wheel (>=0.41.2)"] +docs = ["furo (>=2024.8.6)", "sphinx (>=8.0.2)", "sphinx-argparse-cli (>=1.17)", "sphinx-autodoc-typehints (>=2.4)", "sphinx-copybutton (>=0.5.2)", "sphinx-inline-tabs (>=2023.4.21)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=24.8)"] +testing = ["build[virtualenv] (>=1.2.2)", "covdefaults (>=2.3)", "detect-test-pollution (>=1.2)", "devpi-process (>=1)", "diff-cover (>=9.1.1)", "distlib (>=0.3.8)", "flaky (>=3.8.1)", "hatch-vcs (>=0.4)", "hatchling (>=1.25)", "psutil (>=6)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)", "pytest-xdist (>=3.6.1)", "re-assert (>=1.1)", "setuptools (>=74.1.2)", "time-machine (>=2.15)", "wheel (>=0.44)"] [[package]] name = "tqdm" -version = "4.66.1" +version = "4.66.5" description = "Fast, Extensible Progress Meter" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "tqdm-4.66.1-py3-none-any.whl", hash = "sha256:d302b3c5b53d47bce91fea46679d9c3c6508cf6332229aa1e7d8653723793386"}, - {file = "tqdm-4.66.1.tar.gz", hash = "sha256:d88e651f9db8d8551a62556d3cff9e3034274ca5d66e93197cf2490e2dcb69c7"}, + {file = "tqdm-4.66.5-py3-none-any.whl", hash = "sha256:90279a3770753eafc9194a0364852159802111925aa30eb3f9d85b0e805ac7cd"}, + {file = "tqdm-4.66.5.tar.gz", hash = "sha256:e1020aef2e5096702d8a025ac7d16b1577279c9d63f8375b63083e9a5f0fcbad"}, ] [package.dependencies] @@ -2995,246 +2923,125 @@ notebook = ["ipywidgets (>=6)"] slack = ["slack-sdk"] telegram = ["requests"] -[[package]] -name = "types-click" -version = "7.1.8" -description = "Typing stubs for click" -category = "dev" -optional = false -python-versions = "*" -files = [ - {file = "types-click-7.1.8.tar.gz", hash = "sha256:b6604968be6401dc516311ca50708a0a28baa7a0cb840efd7412f0dbbff4e092"}, - {file = "types_click-7.1.8-py3-none-any.whl", hash = "sha256:8cb030a669e2e927461be9827375f83c16b8178c365852c060a34e24871e7e81"}, -] - -[[package]] -name = "types-flask" -version = "1.1.6" -description = "Typing stubs for Flask" -category = "dev" -optional = false -python-versions = "*" -files = [ - {file = "types-Flask-1.1.6.tar.gz", hash = "sha256:aac777b3abfff9436e6b01f6d08171cf23ea6e5be71cbf773aaabb1c5763e9cf"}, - {file = "types_Flask-1.1.6-py3-none-any.whl", hash = "sha256:6ab8a9a5e258b76539d652f6341408867298550b19b81f0e41e916825fc39087"}, -] - -[package.dependencies] -types-click = "*" -types-Jinja2 = "*" -types-Werkzeug = "*" - -[[package]] -name = "types-jinja2" -version = "2.11.9" -description = "Typing stubs for Jinja2" -category = "dev" -optional = false -python-versions = "*" -files = [ - {file = "types-Jinja2-2.11.9.tar.gz", hash = "sha256:dbdc74a40aba7aed520b7e4d89e8f0fe4286518494208b35123bcf084d4b8c81"}, - {file = "types_Jinja2-2.11.9-py3-none-any.whl", hash = "sha256:60a1e21e8296979db32f9374d8a239af4cb541ff66447bb915d8ad398f9c63b2"}, -] - -[package.dependencies] -types-MarkupSafe = "*" - -[[package]] -name = "types-markupsafe" -version = "1.1.10" -description = "Typing stubs for MarkupSafe" -category = "dev" -optional = false -python-versions = "*" -files = [ - {file = "types-MarkupSafe-1.1.10.tar.gz", hash = "sha256:85b3a872683d02aea3a5ac2a8ef590193c344092032f58457287fbf8e06711b1"}, - {file = "types_MarkupSafe-1.1.10-py3-none-any.whl", hash = "sha256:ca2bee0f4faafc45250602567ef38d533e877d2ddca13003b319c551ff5b3cc5"}, -] - [[package]] name = "types-paramiko" -version = "2.12.0.3" +version = "3.4.0.20240423" description = "Typing stubs for paramiko" -category = "dev" optional = false -python-versions = "*" +python-versions = ">=3.8" files = [ - {file = "types-paramiko-2.12.0.3.tar.gz", hash = "sha256:3a79232382bcc7ed140f53d865feaec35188fd2ee105efdbf325200736e01aa2"}, - {file = "types_paramiko-2.12.0.3-py3-none-any.whl", hash = "sha256:a8b224e8a93cc0ffb60f67516890e49977ea0d3f5811c605238e71d9c49a152d"}, + {file = "types-paramiko-3.4.0.20240423.tar.gz", hash = "sha256:aaa98dda232c47886563d66743d3a8b66c432790c596bc3bdd3f17f91be2a8c1"}, + {file = "types_paramiko-3.4.0.20240423-py3-none-any.whl", hash = "sha256:c56e0d43399a1b909901b1e0375e0ff6ee62e16cd6e00695024abc2e9fe02035"}, ] [package.dependencies] cryptography = ">=37.0.0" -[[package]] -name = "types-pyopenssl" -version = "23.2.0.2" -description = "Typing stubs for pyOpenSSL" -category = "dev" -optional = false -python-versions = "*" -files = [ - {file = "types-pyOpenSSL-23.2.0.2.tar.gz", hash = "sha256:6a010dac9ecd42b582d7dd2cc3e9e40486b79b3b64bb2fffba1474ff96af906d"}, - {file = "types_pyOpenSSL-23.2.0.2-py3-none-any.whl", hash = "sha256:19536aa3debfbe25a918cf0d898e9f5fbbe6f3594a429da7914bf331deb1b342"}, -] - -[package.dependencies] -cryptography = ">=35.0.0" - [[package]] name = "types-python-dateutil" -version = "2.8.19.14" +version = "2.9.0.20240906" description = "Typing stubs for python-dateutil" -category = "dev" -optional = false -python-versions = "*" -files = [ - {file = "types-python-dateutil-2.8.19.14.tar.gz", hash = "sha256:1f4f10ac98bb8b16ade9dbee3518d9ace017821d94b057a425b069f834737f4b"}, - {file = "types_python_dateutil-2.8.19.14-py3-none-any.whl", hash = "sha256:f977b8de27787639986b4e28963263fd0e5158942b3ecef91b9335c130cb1ce9"}, -] - -[[package]] -name = "types-redis" -version = "4.6.0.6" -description = "Typing stubs for redis" -category = "dev" optional = false -python-versions = "*" +python-versions = ">=3.8" files = [ - {file = "types-redis-4.6.0.6.tar.gz", hash = "sha256:7865a843802937ab2ddca33579c4e255bfe73f87af85824ead7a6729ba92fc52"}, - {file = "types_redis-4.6.0.6-py3-none-any.whl", hash = "sha256:e0e9dcc530623db3a41ec058ccefdcd5c7582557f02ab5f7aa9a27fe10a78d7e"}, + {file = "types-python-dateutil-2.9.0.20240906.tar.gz", hash = "sha256:9706c3b68284c25adffc47319ecc7947e5bb86b3773f843c73906fd598bc176e"}, + {file = "types_python_dateutil-2.9.0.20240906-py3-none-any.whl", hash = "sha256:27c8cc2d058ccb14946eebcaaa503088f4f6dbc4fb6093d3d456a49aef2753f6"}, ] -[package.dependencies] -cryptography = ">=35.0.0" -types-pyOpenSSL = "*" - [[package]] name = "types-requests" -version = "2.31.0.2" +version = "2.32.0.20240914" description = "Typing stubs for requests" -category = "dev" optional = false -python-versions = "*" +python-versions = ">=3.8" files = [ - {file = "types-requests-2.31.0.2.tar.gz", hash = "sha256:6aa3f7faf0ea52d728bb18c0a0d1522d9bfd8c72d26ff6f61bfc3d06a411cf40"}, - {file = "types_requests-2.31.0.2-py3-none-any.whl", hash = "sha256:56d181c85b5925cbc59f4489a57e72a8b2166f18273fd8ba7b6fe0c0b986f12a"}, + {file = "types-requests-2.32.0.20240914.tar.gz", hash = "sha256:2850e178db3919d9bf809e434eef65ba49d0e7e33ac92d588f4a5e295fffd405"}, + {file = "types_requests-2.32.0.20240914-py3-none-any.whl", hash = "sha256:59c2f673eb55f32a99b2894faf6020e1a9f4a402ad0f192bfee0b64469054310"}, ] [package.dependencies] -types-urllib3 = "*" - -[[package]] -name = "types-urllib3" -version = "1.26.25.14" -description = "Typing stubs for urllib3" -category = "dev" -optional = false -python-versions = "*" -files = [ - {file = "types-urllib3-1.26.25.14.tar.gz", hash = "sha256:229b7f577c951b8c1b92c1bc2b2fdb0b49847bd2af6d1cc2a2e3dd340f3bda8f"}, - {file = "types_urllib3-1.26.25.14-py3-none-any.whl", hash = "sha256:9683bbb7fb72e32bfe9d2be6e04875fbe1b3eeec3cbb4ea231435aa7fd6b4f0e"}, -] - -[[package]] -name = "types-werkzeug" -version = "1.0.9" -description = "Typing stubs for Werkzeug" -category = "dev" -optional = false -python-versions = "*" -files = [ - {file = "types-Werkzeug-1.0.9.tar.gz", hash = "sha256:5cc269604c400133d452a40cee6397655f878fc460e03fde291b9e3a5eaa518c"}, - {file = "types_Werkzeug-1.0.9-py3-none-any.whl", hash = "sha256:194bd5715a13c598f05c63e8a739328657590943bce941e8a3619a6b5d4a54ec"}, -] +urllib3 = ">=2" [[package]] name = "typing-extensions" -version = "4.8.0" +version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.8.0-py3-none-any.whl", hash = "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0"}, - {file = "typing_extensions-4.8.0.tar.gz", hash = "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef"}, + {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, + {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, ] [[package]] name = "tzdata" -version = "2023.3" +version = "2024.1" description = "Provider of IANA time zone data" -category = "main" optional = false python-versions = ">=2" files = [ - {file = "tzdata-2023.3-py2.py3-none-any.whl", hash = "sha256:7e65763eef3120314099b6939b5546db7adce1e7d6f2e179e3df563c70511eda"}, - {file = "tzdata-2023.3.tar.gz", hash = "sha256:11ef1e08e54acb0d4f95bdb1be05da659673de4acbd21bf9c69e94cc5e907a3a"}, + {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"}, + {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"}, ] [[package]] name = "tzlocal" -version = "5.0.1" +version = "5.2" description = "tzinfo object for the local timezone" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tzlocal-5.0.1-py3-none-any.whl", hash = "sha256:f3596e180296aaf2dbd97d124fe76ae3a0e3d32b258447de7b939b3fd4be992f"}, - {file = "tzlocal-5.0.1.tar.gz", hash = "sha256:46eb99ad4bdb71f3f72b7d24f4267753e240944ecfc16f25d2719ba89827a803"}, + {file = "tzlocal-5.2-py3-none-any.whl", hash = "sha256:49816ef2fe65ea8ac19d19aa7a1ae0551c834303d5014c6d5a62e4cbda8047b8"}, + {file = "tzlocal-5.2.tar.gz", hash = "sha256:8d399205578f1a9342816409cc1e46a93ebd5755e39ea2d85334bea911bf0e6e"}, ] [package.dependencies] -"backports.zoneinfo" = {version = "*", markers = "python_version < \"3.9\""} tzdata = {version = "*", markers = "platform_system == \"Windows\""} [package.extras] -devenv = ["black", "check-manifest", "flake8", "pyroma", "pytest (>=4.3)", "pytest-cov", "pytest-mock (>=3.3)", "zest.releaser"] +devenv = ["check-manifest", "pytest (>=4.3)", "pytest-cov", "pytest-mock (>=3.3)", "zest.releaser"] [[package]] name = "urllib3" -version = "2.0.4" +version = "2.2.3" description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "urllib3-2.0.4-py3-none-any.whl", hash = "sha256:de7df1803967d2c2a98e4b11bb7d6bd9210474c46e8a0401514e3a42a75ebde4"}, - {file = "urllib3-2.0.4.tar.gz", hash = "sha256:8d22f86aae8ef5e410d4f539fde9ce6b2113a001bb4d189e0aed70642d602b11"}, + {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, + {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, ] [package.extras] brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] -secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"] +h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] [[package]] name = "virtualenv" -version = "20.24.5" +version = "20.26.4" description = "Virtual Python Environment builder" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "virtualenv-20.24.5-py3-none-any.whl", hash = "sha256:b80039f280f4919c77b30f1c23294ae357c4c8701042086e3fc005963e4e537b"}, - {file = "virtualenv-20.24.5.tar.gz", hash = "sha256:e8361967f6da6fbdf1426483bfe9fca8287c242ac0bc30429905721cefbff752"}, + {file = "virtualenv-20.26.4-py3-none-any.whl", hash = "sha256:48f2695d9809277003f30776d155615ffc11328e6a0a8c1f0ec80188d7874a55"}, + {file = "virtualenv-20.26.4.tar.gz", hash = "sha256:c17f4e0f3e6036e9f26700446f85c76ab11df65ff6d8a9cbfad9f71aabfcf23c"}, ] [package.dependencies] distlib = ">=0.3.7,<1" filelock = ">=3.12.2,<4" -platformdirs = ">=3.9.1,<4" +platformdirs = ">=3.9.1,<5" [package.extras] -docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] +docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"] [[package]] name = "webassets" version = "2.0" description = "Media asset management for Python, with glue code for various web frameworks" -category = "main" optional = false python-versions = "*" files = [ @@ -3246,7 +3053,6 @@ files = [ name = "webassets-rollup" version = "1.0.0" description = "Rollup filter for webassets" -category = "main" optional = false python-versions = "*" files = [ @@ -3258,14 +3064,13 @@ webassets = "*" [[package]] name = "werkzeug" -version = "2.3.7" +version = "3.0.4" description = "The comprehensive WSGI web application library." -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "werkzeug-2.3.7-py3-none-any.whl", hash = "sha256:effc12dba7f3bd72e605ce49807bbe692bd729c3bb122a3b91747a6ae77df528"}, - {file = "werkzeug-2.3.7.tar.gz", hash = "sha256:2b8c0e447b4b9dbcc85dd97b6eeb4dcbaf6c8b6c3be0bd654e25553e0a2157d8"}, + {file = "werkzeug-3.0.4-py3-none-any.whl", hash = "sha256:02c9eb92b7d6c06f31a782811505d2157837cea66aaede3e217c7c27c039476c"}, + {file = "werkzeug-3.0.4.tar.gz", hash = "sha256:34f2371506b250df4d4f84bfe7b0921e4762525762bbd936614909fe25cd7306"}, ] [package.dependencies] @@ -3276,29 +3081,27 @@ watchdog = ["watchdog (>=2.3)"] [[package]] name = "whitenoise" -version = "6.5.0" +version = "6.7.0" description = "Radically simplified static file serving for WSGI applications" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "whitenoise-6.5.0-py3-none-any.whl", hash = "sha256:16468e9ad2189f09f4a8c635a9031cc9bb2cdbc8e5e53365407acf99f7ade9ec"}, - {file = "whitenoise-6.5.0.tar.gz", hash = "sha256:15fe60546ac975b58e357ccaeb165a4ca2d0ab697e48450b8f0307ca368195a8"}, + {file = "whitenoise-6.7.0-py3-none-any.whl", hash = "sha256:a1ae85e01fdc9815d12fa33f17765bc132ed2c54fa76daf9e39e879dd93566f6"}, + {file = "whitenoise-6.7.0.tar.gz", hash = "sha256:58c7a6cd811e275a6c91af22e96e87da0b1109e9a53bb7464116ef4c963bf636"}, ] [package.extras] -brotli = ["Brotli"] +brotli = ["brotli"] [[package]] name = "xmlschema" -version = "2.4.0" +version = "2.5.1" description = "An XML Schema validator and decoder" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "xmlschema-2.4.0-py3-none-any.whl", hash = "sha256:dc87be0caaa61f42649899189aab2fd8e0d567f2cf548433ba7b79278d231a4a"}, - {file = "xmlschema-2.4.0.tar.gz", hash = "sha256:d74cd0c10866ac609e1ef94a5a69b018ad16e39077bc6393408b40c6babee793"}, + {file = "xmlschema-2.5.1-py3-none-any.whl", hash = "sha256:ec2b2a15c8896c1fcd14dcee34ca30032b99456c3c43ce793fdb9dca2fb4b869"}, + {file = "xmlschema-2.5.1.tar.gz", hash = "sha256:4f7497de6c8b6dc2c28ad7b9ed6e21d186f4afe248a5bea4f54eedab4da44083"}, ] [package.dependencies] @@ -3311,51 +3114,78 @@ docs = ["Sphinx", "elementpath (>=4.1.5,<5.0.0)", "jinja2", "sphinx-rtd-theme"] [[package]] name = "xmlsec" -version = "1.3.13" +version = "1.3.14" description = "Python bindings for the XML Security Library" -category = "main" optional = false python-versions = ">=3.5" files = [ - {file = "xmlsec-1.3.13-cp310-cp310-win32.whl", hash = "sha256:2174e8c88555383322d8b7d3927490a92ef72ad72a6ddaf4fa1b96a3f27c3e90"}, - {file = "xmlsec-1.3.13-cp310-cp310-win_amd64.whl", hash = "sha256:46d1daf16a8f4430efca5bb9c6a15776f2671f69f48a1941d6bb335e6f8cb29d"}, - {file = "xmlsec-1.3.13-cp35-cp35m-win32.whl", hash = "sha256:d47062c42775a025aa94fb8b15de97c1db86e301e549d3168157e0b1223d51b1"}, - {file = "xmlsec-1.3.13-cp35-cp35m-win_amd64.whl", hash = "sha256:7c7e8ef52688ddaf5b66750cc8d901f61716f46727014ff012f41d8858cedeb0"}, - {file = "xmlsec-1.3.13-cp36-cp36m-win32.whl", hash = "sha256:1725d70ee2bb2cd8dd66c7a7451be02bb59dc8280103db4f68e731f00135b1e0"}, - {file = "xmlsec-1.3.13-cp36-cp36m-win_amd64.whl", hash = "sha256:1f8c41162152d7086fd459926e61bc7cb2d52ffc829e760bf8b2c221a645d568"}, - {file = "xmlsec-1.3.13-cp37-cp37m-win32.whl", hash = "sha256:ff1c61f296e75cba5bac802d0000bfde09143eed946ced1a5162211867c335f8"}, - {file = "xmlsec-1.3.13-cp37-cp37m-win_amd64.whl", hash = "sha256:d249c0a2bf3ff13a231bca6a588e7d276b3f1e2cf09316b542f470a63855799e"}, - {file = "xmlsec-1.3.13-cp38-cp38-win32.whl", hash = "sha256:56cfcf3487b6ad269eb1fb543c04dee2c101f1bc91e06d6cf7bfab9ac486efd8"}, - {file = "xmlsec-1.3.13-cp38-cp38-win_amd64.whl", hash = "sha256:e6626bece0e97a8598b5df28c27bc6f2ae1e97d29dca3c1a4910a7598a4d1d0f"}, - {file = "xmlsec-1.3.13-cp39-cp39-win32.whl", hash = "sha256:091f23765729df6f3b3a55c8a6a96f9c713fa86e76b86a19cdb756aaa6dc0646"}, - {file = "xmlsec-1.3.13-cp39-cp39-win_amd64.whl", hash = "sha256:5162f416179350587c4ff64737af68a846a9b86f95fd465df4e68b589ce56618"}, - {file = "xmlsec-1.3.13.tar.gz", hash = "sha256:916f5d78e8041f6cd9391abba659da8c94a4fef7196d126d40af1ff417f2cf86"}, + {file = "xmlsec-1.3.14-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4dea6df3ffcb65d0b215678c3a0fe7bbc66785d6eae81291296e372498bad43a"}, + {file = "xmlsec-1.3.14-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1fa1311f7489d050dde9028f5a2b5849c2927bb09c9a93491cb2f28fdc563912"}, + {file = "xmlsec-1.3.14-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28cd9f513cf01dc0c5b9d9f0728714ecde2e7f46b3b6f63de91f4ae32f3008b3"}, + {file = "xmlsec-1.3.14-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:77749b338503fb6e151052c664064b34264f4168e2cb0cca1de78b7e5312a783"}, + {file = "xmlsec-1.3.14-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4af81ce8044862ec865782efd353d22abdcd95b92364eef3c934de57ae6d5852"}, + {file = "xmlsec-1.3.14-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:cf35a25be3eb6263b2e0544ba26294651113fab79064f994d347a2ca5973e8e2"}, + {file = "xmlsec-1.3.14-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:004e8a82e26728bf8a60f8ece1ef3ffafdac30ef538139dfe28870e8503ca64a"}, + {file = "xmlsec-1.3.14-cp310-cp310-win32.whl", hash = "sha256:e6cbc914d77678db0c8bc39e723d994174633d18f9d6be4665ec29cce978a96d"}, + {file = "xmlsec-1.3.14-cp310-cp310-win_amd64.whl", hash = "sha256:4922afa9234d1c5763950b26c328a5320019e55eb6000272a79dfe54fee8e704"}, + {file = "xmlsec-1.3.14-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7799a9ff3593f9dd43464e18b1a621640bffc40456c47c23383727f937dca7fc"}, + {file = "xmlsec-1.3.14-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1fe23c2dd5f5dbcb24f40e2c1061e2672a32aabee7cf8ac5337036a485607d72"}, + {file = "xmlsec-1.3.14-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0be3b7a28e54a03b87faf07fb3c6dc3e50a2c79b686718c3ad08300b8bf6bb67"}, + {file = "xmlsec-1.3.14-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:48e894ad3e7de373f56efc09d6a56f7eae73a8dd4cec8943313134849e9c6607"}, + {file = "xmlsec-1.3.14-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:204d3c586b8bd6f02a5d4c59850a8157205569d40c32567f49576fa5795d897d"}, + {file = "xmlsec-1.3.14-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6679cec780386d848e7351d4b0de92c4483289ea4f0a2187e216159f939a4c6b"}, + {file = "xmlsec-1.3.14-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c4d41c83c8a2b8d8030204391ebeb6174fbdb044f0331653c4b5a4ce4150bcc0"}, + {file = "xmlsec-1.3.14-cp311-cp311-win32.whl", hash = "sha256:df4aa0782a53032fd35e18dcd6d328d6126324bfcfdef0cb5c2856f25b4b6f94"}, + {file = "xmlsec-1.3.14-cp311-cp311-win_amd64.whl", hash = "sha256:1072878301cb9243a54679e0520e6a5be2266c07a28b0ecef9e029d05a90ffcd"}, + {file = "xmlsec-1.3.14-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:1eb3dcf244a52f796377112d8f238dbb522eb87facffb498425dc8582a84a6bf"}, + {file = "xmlsec-1.3.14-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:330147ce59fbe56a9be5b2085d739c55a569f112576b3f1b33681f87416eaf33"}, + {file = "xmlsec-1.3.14-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed4034939d8566ccdcd3b4e4f23c63fd807fb8763ae5668d59a19e11640a8242"}, + {file = "xmlsec-1.3.14-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a98eadfcb0c3b23ccceb7a2f245811f8d784bd287640dcfe696a26b9db1e2fc0"}, + {file = "xmlsec-1.3.14-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86ff7b2711557c1087b72b0a1a88d82eafbf2a6d38b97309a6f7101d4a7041c3"}, + {file = "xmlsec-1.3.14-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:774d5d1e45f07f953c1cc14fd055c1063f0725f7248b6b0e681f59fd8638934d"}, + {file = "xmlsec-1.3.14-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:bd10ca3201f164482775a7ce61bf7ee9aade2e7d032046044dd0f6f52c91d79d"}, + {file = "xmlsec-1.3.14-cp312-cp312-win32.whl", hash = "sha256:19c86bab1498e4c2e56d8e2c878f461ccb6e56b67fd7522b0c8fda46d8910781"}, + {file = "xmlsec-1.3.14-cp312-cp312-win_amd64.whl", hash = "sha256:d0762f4232bce2c7f6c0af329db8b821b4460bbe123a2528fb5677d03db7a4b5"}, + {file = "xmlsec-1.3.14-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:03ccba7dacf197850de954666af0221c740a5de631a80136362a1559223fab75"}, + {file = "xmlsec-1.3.14-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c12900e1903e289deb84eb893dca88591d6884d3e3cda4fb711b8812118416e8"}, + {file = "xmlsec-1.3.14-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6566434e2e5c58e472362a6187f208601f1627a148683a6f92bd16479f1d9e20"}, + {file = "xmlsec-1.3.14-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:2401e162aaab7d9416c3405bac7a270e5f370988a0f1f46f0f29b735edba87e1"}, + {file = "xmlsec-1.3.14-cp36-cp36m-win32.whl", hash = "sha256:ba3b39c493e3b04354615068a3218f30897fcc2f42c6d8986d0c1d63aca87782"}, + {file = "xmlsec-1.3.14-cp36-cp36m-win_amd64.whl", hash = "sha256:4edd8db4df04bbac9c4a5ab4af855b74fe2bf2c248d07cac2e6d92a485f1a685"}, + {file = "xmlsec-1.3.14-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b6dd86f440fec9242515c64f0be93fec8b4289287db1f6de2651eee9995aaecb"}, + {file = "xmlsec-1.3.14-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ad1634cabe0915fe2a12e142db0ed2daf5be80cbe3891a2cecbba0750195cc6b"}, + {file = "xmlsec-1.3.14-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dba457ff87c39cbae3c5020475a728d24bbd9d00376df9af9724cd3bb59ff07a"}, + {file = "xmlsec-1.3.14-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:12d90059308bb0c1b94bde065784e6852999d08b91bcb2048c17e62b954acb07"}, + {file = "xmlsec-1.3.14-cp37-cp37m-win32.whl", hash = "sha256:ce4e165a1436697e5e39587c4fba24db4545a5c9801e0d749f1afd09ad3ab901"}, + {file = "xmlsec-1.3.14-cp37-cp37m-win_amd64.whl", hash = "sha256:7e8e0171916026cbe8e2022c959558d02086655fd3c3466f2bc0451b09cf9ee8"}, + {file = "xmlsec-1.3.14-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c42735cc68fdb4c6065cf0a0701dfff3a12a1734c63a36376349af9a5481f27b"}, + {file = "xmlsec-1.3.14-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:38e035bf48300b7dbde2dd01d3b8569f8584fc9c73809be13886e6b6c77b74fb"}, + {file = "xmlsec-1.3.14-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:73eabf5ef58189d81655058cf328c1dfa9893d89f1bff5fc941481f08533f338"}, + {file = "xmlsec-1.3.14-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bddd2a2328b4e08c8a112e06cf2cd2b4d281f4ad94df15b4cef18f06cdc49d78"}, + {file = "xmlsec-1.3.14-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:57fed3bc7943681c9ed4d2221600ab440f060d8d1a8f92f346f2b41effe175b8"}, + {file = "xmlsec-1.3.14-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:147934bd39dfd840663fb6b920ea9201455fa886427975713f1b42d9f20b9b29"}, + {file = "xmlsec-1.3.14-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e732a75fcb6b84872b168f972fbbf3749baf76308635f14015d1d35ed0c5719c"}, + {file = "xmlsec-1.3.14-cp38-cp38-win32.whl", hash = "sha256:b109cdf717257fd4daa77c1d3ec8a3fb2a81318a6d06a36c55a8a53ae381ae5e"}, + {file = "xmlsec-1.3.14-cp38-cp38-win_amd64.whl", hash = "sha256:b7ba2ea38e3d9efa520b14f3c0b7d99a7c055244ae5ba8bc9f4ca73b18f3a215"}, + {file = "xmlsec-1.3.14-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1b9b5de6bc69fdec23147e5f712cb05dc86df105462f254f140d743cc680cc7b"}, + {file = "xmlsec-1.3.14-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:82ac81deb7d7bf5cc8a748148948e5df5386597ff43fb92ec651cc5c7addb0e7"}, + {file = "xmlsec-1.3.14-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bae37b2920115cf00759ee9fb7841cbdebcef3a8a92734ab93ae8fa41ac581d"}, + {file = "xmlsec-1.3.14-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4fac2a787ae3b9fb761f9aec6b9f10f2d1c1b87abb574ebd8ff68435bdc97e3d"}, + {file = "xmlsec-1.3.14-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:34c61ec0c0e70fda710290ae74b9efe1928d9242ed82c4eecf97aa696cff68e6"}, + {file = "xmlsec-1.3.14-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:995e87acecc263a2f6f2aa3cc204268f651cac8f4d7a2047f11b2cd49979cc38"}, + {file = "xmlsec-1.3.14-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2f84a1c509c52773365645a87949081ee9ea9c535cd452048cc8ca4ad3b45666"}, + {file = "xmlsec-1.3.14-cp39-cp39-win32.whl", hash = "sha256:7882963e9cb9c0bd0e8c2715a29159a366417ff4a30d8baf42b05bc5cf249446"}, + {file = "xmlsec-1.3.14-cp39-cp39-win_amd64.whl", hash = "sha256:a487c3d144f791c32f5e560aa27a705fba23171728b8a8511f36de053ff6bc93"}, + {file = "xmlsec-1.3.14.tar.gz", hash = "sha256:934f804f2f895bcdb86f1eaee236b661013560ee69ec108d29cdd6e5f292a2d9"}, ] [package.dependencies] lxml = ">=3.8" -[[package]] -name = "zipp" -version = "3.16.2" -description = "Backport of pathlib-compatible object wrapper for zip files" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "zipp-3.16.2-py3-none-any.whl", hash = "sha256:679e51dd4403591b2d6838a48de3d283f3d188412a9782faadf845f298736ba0"}, - {file = "zipp-3.16.2.tar.gz", hash = "sha256:ebc15946aa78bd63458992fc81ec3b6f7b1e92d51c35e6de1c3804e73b799147"}, -] - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] - [[package]] name = "zope-event" version = "5.0" description = "Very basic event publishing system" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3372,53 +3202,168 @@ test = ["zope.testrunner"] [[package]] name = "zope-interface" -version = "6.0" +version = "7.0.3" description = "Interfaces for Python" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "zope.interface-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f299c020c6679cb389814a3b81200fe55d428012c5e76da7e722491f5d205990"}, - {file = "zope.interface-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ee4b43f35f5dc15e1fec55ccb53c130adb1d11e8ad8263d68b1284b66a04190d"}, - {file = "zope.interface-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5a158846d0fca0a908c1afb281ddba88744d403f2550dc34405c3691769cdd85"}, - {file = "zope.interface-6.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f72f23bab1848edb7472309e9898603141644faec9fd57a823ea6b4d1c4c8995"}, - {file = "zope.interface-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48f4d38cf4b462e75fac78b6f11ad47b06b1c568eb59896db5b6ec1094eb467f"}, - {file = "zope.interface-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:87b690bbee9876163210fd3f500ee59f5803e4a6607d1b1238833b8885ebd410"}, - {file = "zope.interface-6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f2363e5fd81afb650085c6686f2ee3706975c54f331b426800b53531191fdf28"}, - {file = "zope.interface-6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:af169ba897692e9cd984a81cb0f02e46dacdc07d6cf9fd5c91e81f8efaf93d52"}, - {file = "zope.interface-6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fa90bac61c9dc3e1a563e5babb3fd2c0c1c80567e815442ddbe561eadc803b30"}, - {file = "zope.interface-6.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:89086c9d3490a0f265a3c4b794037a84541ff5ffa28bb9c24cc9f66566968464"}, - {file = "zope.interface-6.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:809fe3bf1a91393abc7e92d607976bbb8586512913a79f2bf7d7ec15bd8ea518"}, - {file = "zope.interface-6.0-cp311-cp311-win_amd64.whl", hash = "sha256:0ec9653825f837fbddc4e4b603d90269b501486c11800d7c761eee7ce46d1bbb"}, - {file = "zope.interface-6.0-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:790c1d9d8f9c92819c31ea660cd43c3d5451df1df61e2e814a6f99cebb292788"}, - {file = "zope.interface-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b39b8711578dcfd45fc0140993403b8a81e879ec25d53189f3faa1f006087dca"}, - {file = "zope.interface-6.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eba51599370c87088d8882ab74f637de0c4f04a6d08a312dce49368ba9ed5c2a"}, - {file = "zope.interface-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ee934f023f875ec2cfd2b05a937bd817efcc6c4c3f55c5778cbf78e58362ddc"}, - {file = "zope.interface-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:042f2381118b093714081fd82c98e3b189b68db38ee7d35b63c327c470ef8373"}, - {file = "zope.interface-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:dfbbbf0809a3606046a41f8561c3eada9db811be94138f42d9135a5c47e75f6f"}, - {file = "zope.interface-6.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:424d23b97fa1542d7be882eae0c0fc3d6827784105264a8169a26ce16db260d8"}, - {file = "zope.interface-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e538f2d4a6ffb6edfb303ce70ae7e88629ac6e5581870e66c306d9ad7b564a58"}, - {file = "zope.interface-6.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:12175ca6b4db7621aedd7c30aa7cfa0a2d65ea3a0105393e05482d7a2d367446"}, - {file = "zope.interface-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c3d7dfd897a588ec27e391edbe3dd320a03684457470415870254e714126b1f"}, - {file = "zope.interface-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:b3f543ae9d3408549a9900720f18c0194ac0fe810cecda2a584fd4dca2eb3bb8"}, - {file = "zope.interface-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d0583b75f2e70ec93f100931660328965bb9ff65ae54695fb3fa0a1255daa6f2"}, - {file = "zope.interface-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:23ac41d52fd15dd8be77e3257bc51bbb82469cf7f5e9a30b75e903e21439d16c"}, - {file = "zope.interface-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99856d6c98a326abbcc2363827e16bd6044f70f2ef42f453c0bd5440c4ce24e5"}, - {file = "zope.interface-6.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1592f68ae11e557b9ff2bc96ac8fc30b187e77c45a3c9cd876e3368c53dc5ba8"}, - {file = "zope.interface-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4407b1435572e3e1610797c9203ad2753666c62883b921318c5403fb7139dec2"}, - {file = "zope.interface-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:5171eb073474a5038321409a630904fd61f12dd1856dd7e9d19cd6fe092cbbc5"}, - {file = "zope.interface-6.0.tar.gz", hash = "sha256:aab584725afd10c710b8f1e6e208dbee2d0ad009f57d674cb9d1b3964037275d"}, + {file = "zope.interface-7.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9b9369671a20b8d039b8e5a1a33abd12e089e319a3383b4cc0bf5c67bd05fe7b"}, + {file = "zope.interface-7.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:db6237e8fa91ea4f34d7e2d16d74741187e9105a63bbb5686c61fea04cdbacca"}, + {file = "zope.interface-7.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:53d678bb1c3b784edbfb0adeebfeea6bf479f54da082854406a8f295d36f8386"}, + {file = "zope.interface-7.0.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3aa8fcbb0d3c2be1bfd013a0f0acd636f6ed570c287743ae2bbd467ee967154d"}, + {file = "zope.interface-7.0.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6195c3c03fef9f87c0dbee0b3b6451df6e056322463cf35bca9a088e564a3c58"}, + {file = "zope.interface-7.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:11fa1382c3efb34abf16becff8cb214b0b2e3144057c90611621f2d186b7e1b7"}, + {file = "zope.interface-7.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:af94e429f9d57b36e71ef4e6865182090648aada0cb2d397ae2b3f7fc478493a"}, + {file = "zope.interface-7.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6dd647fcd765030638577fe6984284e0ebba1a1008244c8a38824be096e37fe3"}, + {file = "zope.interface-7.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1bee1b722077d08721005e8da493ef3adf0b7908e0cd85cc7dc836ac117d6f32"}, + {file = "zope.interface-7.0.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2545d6d7aac425d528cd9bf0d9e55fcd47ab7fd15f41a64b1c4bf4c6b24946dc"}, + {file = "zope.interface-7.0.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d04b11ea47c9c369d66340dbe51e9031df2a0de97d68f442305ed7625ad6493"}, + {file = "zope.interface-7.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:064ade95cb54c840647205987c7b557f75d2b2f7d1a84bfab4cf81822ef6e7d1"}, + {file = "zope.interface-7.0.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3fcdc76d0cde1c09c37b7c6b0f8beba2d857d8417b055d4f47df9c34ec518bdd"}, + {file = "zope.interface-7.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3d4b91821305c8d8f6e6207639abcbdaf186db682e521af7855d0bea3047c8ca"}, + {file = "zope.interface-7.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35062d93bc49bd9b191331c897a96155ffdad10744ab812485b6bad5b588d7e4"}, + {file = "zope.interface-7.0.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c96b3e6b0d4f6ddfec4e947130ec30bd2c7b19db6aa633777e46c8eecf1d6afd"}, + {file = "zope.interface-7.0.3-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e0c151a6c204f3830237c59ee4770cc346868a7a1af6925e5e38650141a7f05"}, + {file = "zope.interface-7.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:3de1d553ce72868b77a7e9d598c9bff6d3816ad2b4cc81c04f9d8914603814f3"}, + {file = "zope.interface-7.0.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ab985c566a99cc5f73bc2741d93f1ed24a2cc9da3890144d37b9582965aff996"}, + {file = "zope.interface-7.0.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d976fa7b5faf5396eb18ce6c132c98e05504b52b60784e3401f4ef0b2e66709b"}, + {file = "zope.interface-7.0.3-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21a207c6b2c58def5011768140861a73f5240f4f39800625072ba84e76c9da0b"}, + {file = "zope.interface-7.0.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:382d31d1e68877061daaa6499468e9eb38eb7625d4369b1615ac08d3860fe896"}, + {file = "zope.interface-7.0.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2c4316a30e216f51acbd9fb318aa5af2e362b716596d82cbb92f9101c8f8d2e7"}, + {file = "zope.interface-7.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01e6e58078ad2799130c14a1d34ec89044ada0e1495329d72ee0407b9ae5100d"}, + {file = "zope.interface-7.0.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:799ef7a444aebbad5a145c3b34bff012b54453cddbde3332d47ca07225792ea4"}, + {file = "zope.interface-7.0.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3b7ce6d46fb0e60897d62d1ff370790ce50a57d40a651db91a3dde74f73b738"}, + {file = "zope.interface-7.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:f418c88f09c3ba159b95a9d1cfcdbe58f208443abb1f3109f4b9b12fd60b187c"}, + {file = "zope.interface-7.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:84f8794bd59ca7d09d8fce43ae1b571be22f52748169d01a13d3ece8394d8b5b"}, + {file = "zope.interface-7.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7d92920416f31786bc1b2f34cc4fc4263a35a407425319572cbf96b51e835cd3"}, + {file = "zope.interface-7.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:95e5913ec718010dc0e7c215d79a9683b4990e7026828eedfda5268e74e73e11"}, + {file = "zope.interface-7.0.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1eeeb92cb7d95c45e726e3c1afe7707919370addae7ed14f614e22217a536958"}, + {file = "zope.interface-7.0.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ecd32f30f40bfd8511b17666895831a51b532e93fc106bfa97f366589d3e4e0e"}, + {file = "zope.interface-7.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:5112c530fa8aa2108a3196b9c2f078f5738c1c37cfc716970edc0df0414acda8"}, + {file = "zope.interface-7.0.3.tar.gz", hash = "sha256:cd2690d4b08ec9eaf47a85914fe513062b20da78d10d6d789a792c0b20307fb1"}, ] [package.dependencies] setuptools = "*" [package.extras] -docs = ["Sphinx", "repoze.sphinx.autointerface"] +docs = ["Sphinx", "repoze.sphinx.autointerface", "sphinx-rtd-theme"] test = ["coverage (>=5.0.3)", "zope.event", "zope.testing"] testing = ["coverage (>=5.0.3)", "zope.event", "zope.testing"] +[[package]] +name = "zstandard" +version = "0.23.0" +description = "Zstandard bindings for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "zstandard-0.23.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bf0a05b6059c0528477fba9054d09179beb63744355cab9f38059548fedd46a9"}, + {file = "zstandard-0.23.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fc9ca1c9718cb3b06634c7c8dec57d24e9438b2aa9a0f02b8bb36bf478538880"}, + {file = "zstandard-0.23.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77da4c6bfa20dd5ea25cbf12c76f181a8e8cd7ea231c673828d0386b1740b8dc"}, + {file = "zstandard-0.23.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b2170c7e0367dde86a2647ed5b6f57394ea7f53545746104c6b09fc1f4223573"}, + {file = "zstandard-0.23.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c16842b846a8d2a145223f520b7e18b57c8f476924bda92aeee3a88d11cfc391"}, + {file = "zstandard-0.23.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:157e89ceb4054029a289fb504c98c6a9fe8010f1680de0201b3eb5dc20aa6d9e"}, + {file = "zstandard-0.23.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:203d236f4c94cd8379d1ea61db2fce20730b4c38d7f1c34506a31b34edc87bdd"}, + {file = "zstandard-0.23.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:dc5d1a49d3f8262be192589a4b72f0d03b72dcf46c51ad5852a4fdc67be7b9e4"}, + {file = "zstandard-0.23.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:752bf8a74412b9892f4e5b58f2f890a039f57037f52c89a740757ebd807f33ea"}, + {file = "zstandard-0.23.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:80080816b4f52a9d886e67f1f96912891074903238fe54f2de8b786f86baded2"}, + {file = "zstandard-0.23.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:84433dddea68571a6d6bd4fbf8ff398236031149116a7fff6f777ff95cad3df9"}, + {file = "zstandard-0.23.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:ab19a2d91963ed9e42b4e8d77cd847ae8381576585bad79dbd0a8837a9f6620a"}, + {file = "zstandard-0.23.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:59556bf80a7094d0cfb9f5e50bb2db27fefb75d5138bb16fb052b61b0e0eeeb0"}, + {file = "zstandard-0.23.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:27d3ef2252d2e62476389ca8f9b0cf2bbafb082a3b6bfe9d90cbcbb5529ecf7c"}, + {file = "zstandard-0.23.0-cp310-cp310-win32.whl", hash = "sha256:5d41d5e025f1e0bccae4928981e71b2334c60f580bdc8345f824e7c0a4c2a813"}, + {file = "zstandard-0.23.0-cp310-cp310-win_amd64.whl", hash = "sha256:519fbf169dfac1222a76ba8861ef4ac7f0530c35dd79ba5727014613f91613d4"}, + {file = "zstandard-0.23.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:34895a41273ad33347b2fc70e1bff4240556de3c46c6ea430a7ed91f9042aa4e"}, + {file = "zstandard-0.23.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:77ea385f7dd5b5676d7fd943292ffa18fbf5c72ba98f7d09fc1fb9e819b34c23"}, + {file = "zstandard-0.23.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:983b6efd649723474f29ed42e1467f90a35a74793437d0bc64a5bf482bedfa0a"}, + {file = "zstandard-0.23.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80a539906390591dd39ebb8d773771dc4db82ace6372c4d41e2d293f8e32b8db"}, + {file = "zstandard-0.23.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:445e4cb5048b04e90ce96a79b4b63140e3f4ab5f662321975679b5f6360b90e2"}, + {file = "zstandard-0.23.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd30d9c67d13d891f2360b2a120186729c111238ac63b43dbd37a5a40670b8ca"}, + {file = "zstandard-0.23.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d20fd853fbb5807c8e84c136c278827b6167ded66c72ec6f9a14b863d809211c"}, + {file = "zstandard-0.23.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ed1708dbf4d2e3a1c5c69110ba2b4eb6678262028afd6c6fbcc5a8dac9cda68e"}, + {file = "zstandard-0.23.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:be9b5b8659dff1f913039c2feee1aca499cfbc19e98fa12bc85e037c17ec6ca5"}, + {file = "zstandard-0.23.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:65308f4b4890aa12d9b6ad9f2844b7ee42c7f7a4fd3390425b242ffc57498f48"}, + {file = "zstandard-0.23.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:98da17ce9cbf3bfe4617e836d561e433f871129e3a7ac16d6ef4c680f13a839c"}, + {file = "zstandard-0.23.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:8ed7d27cb56b3e058d3cf684d7200703bcae623e1dcc06ed1e18ecda39fee003"}, + {file = "zstandard-0.23.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:b69bb4f51daf461b15e7b3db033160937d3ff88303a7bc808c67bbc1eaf98c78"}, + {file = "zstandard-0.23.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:034b88913ecc1b097f528e42b539453fa82c3557e414b3de9d5632c80439a473"}, + {file = "zstandard-0.23.0-cp311-cp311-win32.whl", hash = "sha256:f2d4380bf5f62daabd7b751ea2339c1a21d1c9463f1feb7fc2bdcea2c29c3160"}, + {file = "zstandard-0.23.0-cp311-cp311-win_amd64.whl", hash = "sha256:62136da96a973bd2557f06ddd4e8e807f9e13cbb0bfb9cc06cfe6d98ea90dfe0"}, + {file = "zstandard-0.23.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b4567955a6bc1b20e9c31612e615af6b53733491aeaa19a6b3b37f3b65477094"}, + {file = "zstandard-0.23.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1e172f57cd78c20f13a3415cc8dfe24bf388614324d25539146594c16d78fcc8"}, + {file = "zstandard-0.23.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b0e166f698c5a3e914947388c162be2583e0c638a4703fc6a543e23a88dea3c1"}, + {file = "zstandard-0.23.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:12a289832e520c6bd4dcaad68e944b86da3bad0d339ef7989fb7e88f92e96072"}, + {file = "zstandard-0.23.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d50d31bfedd53a928fed6707b15a8dbeef011bb6366297cc435accc888b27c20"}, + {file = "zstandard-0.23.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72c68dda124a1a138340fb62fa21b9bf4848437d9ca60bd35db36f2d3345f373"}, + {file = "zstandard-0.23.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:53dd9d5e3d29f95acd5de6802e909ada8d8d8cfa37a3ac64836f3bc4bc5512db"}, + {file = "zstandard-0.23.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:6a41c120c3dbc0d81a8e8adc73312d668cd34acd7725f036992b1b72d22c1772"}, + {file = "zstandard-0.23.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:40b33d93c6eddf02d2c19f5773196068d875c41ca25730e8288e9b672897c105"}, + {file = "zstandard-0.23.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9206649ec587e6b02bd124fb7799b86cddec350f6f6c14bc82a2b70183e708ba"}, + {file = "zstandard-0.23.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:76e79bc28a65f467e0409098fa2c4376931fd3207fbeb6b956c7c476d53746dd"}, + {file = "zstandard-0.23.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:66b689c107857eceabf2cf3d3fc699c3c0fe8ccd18df2219d978c0283e4c508a"}, + {file = "zstandard-0.23.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9c236e635582742fee16603042553d276cca506e824fa2e6489db04039521e90"}, + {file = "zstandard-0.23.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a8fffdbd9d1408006baaf02f1068d7dd1f016c6bcb7538682622c556e7b68e35"}, + {file = "zstandard-0.23.0-cp312-cp312-win32.whl", hash = "sha256:dc1d33abb8a0d754ea4763bad944fd965d3d95b5baef6b121c0c9013eaf1907d"}, + {file = "zstandard-0.23.0-cp312-cp312-win_amd64.whl", hash = "sha256:64585e1dba664dc67c7cdabd56c1e5685233fbb1fc1966cfba2a340ec0dfff7b"}, + {file = "zstandard-0.23.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:576856e8594e6649aee06ddbfc738fec6a834f7c85bf7cadd1c53d4a58186ef9"}, + {file = "zstandard-0.23.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:38302b78a850ff82656beaddeb0bb989a0322a8bbb1bf1ab10c17506681d772a"}, + {file = "zstandard-0.23.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2240ddc86b74966c34554c49d00eaafa8200a18d3a5b6ffbf7da63b11d74ee2"}, + {file = "zstandard-0.23.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2ef230a8fd217a2015bc91b74f6b3b7d6522ba48be29ad4ea0ca3a3775bf7dd5"}, + {file = "zstandard-0.23.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:774d45b1fac1461f48698a9d4b5fa19a69d47ece02fa469825b442263f04021f"}, + {file = "zstandard-0.23.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f77fa49079891a4aab203d0b1744acc85577ed16d767b52fc089d83faf8d8ed"}, + {file = "zstandard-0.23.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ac184f87ff521f4840e6ea0b10c0ec90c6b1dcd0bad2f1e4a9a1b4fa177982ea"}, + {file = "zstandard-0.23.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c363b53e257246a954ebc7c488304b5592b9c53fbe74d03bc1c64dda153fb847"}, + {file = "zstandard-0.23.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e7792606d606c8df5277c32ccb58f29b9b8603bf83b48639b7aedf6df4fe8171"}, + {file = "zstandard-0.23.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a0817825b900fcd43ac5d05b8b3079937073d2b1ff9cf89427590718b70dd840"}, + {file = "zstandard-0.23.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:9da6bc32faac9a293ddfdcb9108d4b20416219461e4ec64dfea8383cac186690"}, + {file = "zstandard-0.23.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:fd7699e8fd9969f455ef2926221e0233f81a2542921471382e77a9e2f2b57f4b"}, + {file = "zstandard-0.23.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:d477ed829077cd945b01fc3115edd132c47e6540ddcd96ca169facff28173057"}, + {file = "zstandard-0.23.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa6ce8b52c5987b3e34d5674b0ab529a4602b632ebab0a93b07bfb4dfc8f8a33"}, + {file = "zstandard-0.23.0-cp313-cp313-win32.whl", hash = "sha256:a9b07268d0c3ca5c170a385a0ab9fb7fdd9f5fd866be004c4ea39e44edce47dd"}, + {file = "zstandard-0.23.0-cp313-cp313-win_amd64.whl", hash = "sha256:f3513916e8c645d0610815c257cbfd3242adfd5c4cfa78be514e5a3ebb42a41b"}, + {file = "zstandard-0.23.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2ef3775758346d9ac6214123887d25c7061c92afe1f2b354f9388e9e4d48acfc"}, + {file = "zstandard-0.23.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4051e406288b8cdbb993798b9a45c59a4896b6ecee2f875424ec10276a895740"}, + {file = "zstandard-0.23.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2d1a054f8f0a191004675755448d12be47fa9bebbcffa3cdf01db19f2d30a54"}, + {file = "zstandard-0.23.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f83fa6cae3fff8e98691248c9320356971b59678a17f20656a9e59cd32cee6d8"}, + {file = "zstandard-0.23.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:32ba3b5ccde2d581b1e6aa952c836a6291e8435d788f656fe5976445865ae045"}, + {file = "zstandard-0.23.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f146f50723defec2975fb7e388ae3a024eb7151542d1599527ec2aa9cacb152"}, + {file = "zstandard-0.23.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1bfe8de1da6d104f15a60d4a8a768288f66aa953bbe00d027398b93fb9680b26"}, + {file = "zstandard-0.23.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:29a2bc7c1b09b0af938b7a8343174b987ae021705acabcbae560166567f5a8db"}, + {file = "zstandard-0.23.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:61f89436cbfede4bc4e91b4397eaa3e2108ebe96d05e93d6ccc95ab5714be512"}, + {file = "zstandard-0.23.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:53ea7cdc96c6eb56e76bb06894bcfb5dfa93b7adcf59d61c6b92674e24e2dd5e"}, + {file = "zstandard-0.23.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:a4ae99c57668ca1e78597d8b06d5af837f377f340f4cce993b551b2d7731778d"}, + {file = "zstandard-0.23.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:379b378ae694ba78cef921581ebd420c938936a153ded602c4fea612b7eaa90d"}, + {file = "zstandard-0.23.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:50a80baba0285386f97ea36239855f6020ce452456605f262b2d33ac35c7770b"}, + {file = "zstandard-0.23.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:61062387ad820c654b6a6b5f0b94484fa19515e0c5116faf29f41a6bc91ded6e"}, + {file = "zstandard-0.23.0-cp38-cp38-win32.whl", hash = "sha256:b8c0bd73aeac689beacd4e7667d48c299f61b959475cdbb91e7d3d88d27c56b9"}, + {file = "zstandard-0.23.0-cp38-cp38-win_amd64.whl", hash = "sha256:a05e6d6218461eb1b4771d973728f0133b2a4613a6779995df557f70794fd60f"}, + {file = "zstandard-0.23.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3aa014d55c3af933c1315eb4bb06dd0459661cc0b15cd61077afa6489bec63bb"}, + {file = "zstandard-0.23.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0a7f0804bb3799414af278e9ad51be25edf67f78f916e08afdb983e74161b916"}, + {file = "zstandard-0.23.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb2b1ecfef1e67897d336de3a0e3f52478182d6a47eda86cbd42504c5cbd009a"}, + {file = "zstandard-0.23.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:837bb6764be6919963ef41235fd56a6486b132ea64afe5fafb4cb279ac44f259"}, + {file = "zstandard-0.23.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1516c8c37d3a053b01c1c15b182f3b5f5eef19ced9b930b684a73bad121addf4"}, + {file = "zstandard-0.23.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48ef6a43b1846f6025dde6ed9fee0c24e1149c1c25f7fb0a0585572b2f3adc58"}, + {file = "zstandard-0.23.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11e3bf3c924853a2d5835b24f03eeba7fc9b07d8ca499e247e06ff5676461a15"}, + {file = "zstandard-0.23.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2fb4535137de7e244c230e24f9d1ec194f61721c86ebea04e1581d9d06ea1269"}, + {file = "zstandard-0.23.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8c24f21fa2af4bb9f2c492a86fe0c34e6d2c63812a839590edaf177b7398f700"}, + {file = "zstandard-0.23.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:a8c86881813a78a6f4508ef9daf9d4995b8ac2d147dcb1a450448941398091c9"}, + {file = "zstandard-0.23.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:fe3b385d996ee0822fd46528d9f0443b880d4d05528fd26a9119a54ec3f91c69"}, + {file = "zstandard-0.23.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:82d17e94d735c99621bf8ebf9995f870a6b3e6d14543b99e201ae046dfe7de70"}, + {file = "zstandard-0.23.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:c7c517d74bea1a6afd39aa612fa025e6b8011982a0897768a2f7c8ab4ebb78a2"}, + {file = "zstandard-0.23.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1fd7e0f1cfb70eb2f95a19b472ee7ad6d9a0a992ec0ae53286870c104ca939e5"}, + {file = "zstandard-0.23.0-cp39-cp39-win32.whl", hash = "sha256:43da0f0092281bf501f9c5f6f3b4c975a8a0ea82de49ba3f7100e64d422a1274"}, + {file = "zstandard-0.23.0-cp39-cp39-win_amd64.whl", hash = "sha256:f8346bfa098532bc1fb6c7ef06783e969d87a99dd1d2a5a18a892c1d7a643c58"}, + {file = "zstandard-0.23.0.tar.gz", hash = "sha256:b2d8c62d08e7255f68f7a740bae85b3c9b8e5466baa9cbf7f57f1cde0ac6bc09"}, +] + +[package.dependencies] +cffi = {version = ">=1.11", optional = true, markers = "platform_python_implementation == \"PyPy\" or extra == \"cffi\""} + +[package.extras] +cffi = ["cffi (>=1.11)"] + [metadata] lock-version = "2.0" -python-versions = ">=3.8.1,<4.0" -content-hash = "5f4f1dbd28ebebce329e08e9f60bf2dbda90f48773dc6b52afc9b5a6aaedb200" +python-versions = ">=3.10.0,<4.0" +content-hash = "ba7c8219362b398abd6498c767e183550d0151ec96799ff4a6b784a9d3e9da64" diff --git a/pyproject.toml b/pyproject.toml index d6cfc731..aa7ef143 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,13 +28,7 @@ exclude = ''' | node_modules )/ ''' -max_line_length = 99 - -[tool.djlint] -blank_line_after_tag = "load,extends,include,endblock" -format_attribute_template_tags = true -ignore = "H011,H021,H023,H031" -profile = "jinja" +line-length = 99 [tool.isort] profile = "black" @@ -66,7 +60,8 @@ authors = [ "Christopher Pickering ", "Dan Ryan", "Richard Schissler", - "Eric Shultz" + "Eric Shultz", + "Payton Snider III" ] classifiers = [ "Programming Language :: Python :: 3 :: Only", @@ -97,81 +92,75 @@ packages = [ ] readme = "readme.md" repository = "https://github.com/atlas-bi/Hub" -version = "2.12.3" +version = "3.0.0" [tool.poetry.dependencies] -Flask = "^2.0.1" -Flask-APScheduler = "^1.12.2" -Flask-Assets = "^2.0" -Flask-Caching = "^2.0.0" -Flask-Compress = "1.14" +Flask = "^3.0.3" +Flask-APScheduler = "^1.13.1" +Flask-Assets = "^2.1.0" +Flask-Caching = "^2.3.0" +Flask-Compress = "1.15" Flask-Executor = "^1.0.0" -Flask-HTMLmin = "^2.1.0" -Flask-Login = "^0.6.0" -Flask-Migrate = "^4.0.0" +Flask-HTMLmin = "^2.2.1" +Flask-Login = "^0.6.3" +Flask-Migrate = "^4.0.7" Flask-SQLAlchemy = "^3.1.1" Flask-Script = "^2.0.6" -Jinja2 = "^3.0.1" -SQLAlchemy = "^2.0.20" -SQLAlchemy-Utils = "^0.41.0" -azure-devops = "^7.1.0b3" -bs4 = "^0.0.1" -cryptography = "^41.0.0" -flask-assets = {git = "https://github.com/christopherpickering/flask-assets.git"} +Jinja2 = "^3.1.4" +SQLAlchemy = "^2.0.34" +SQLAlchemy-Utils = "^0.41.2" +azure-devops = "^7.1.0b4" +bs4 = "^0.0.2" +cryptography = "^43.0.1" flask-redis = "^0.4.0" -flask-session2 = "^1.2.0" -gevent = "^23.9.1" -gunicorn = "^21.0.0" +flask-session = "^0.8.0" +gevent = "^24.2.1" +gunicorn = "^23.0.0" is-safe-url = "^1.0" jaydebeapi = "^1.2.3" -paramiko = "^3.0.0" -pathvalidate = "^3.0.0" -psutil = "^5.8.0" -psycopg2-binary = "^2.9.1" -pyodbc = "^4.0.31" -pysaml2 = "^7.0.1" -pysmb = "^1.2.7" -python = ">=3.8.1,<4.0" -python-dateutil = "^2.8.2" -python-gnupg = "^0.5.0" -python-ldap = "^3.3.1" -python3-saml = "^1.12.0" -pytz-deprecation-shim = "^0.1.0-post.0" -rcssmin = "^1.0.6" -redis = "^5.0.0" -regex = "^2023.0.0" +paramiko = "^3.5.0" +pathvalidate = "^3.2.0" +psutil = "^6.0.0" +psycopg2-binary = "^2.9.9" +pyodbc = "^5.1.0" +pysaml2 = "^7.5.0" +pysmb = "^1.2.9.1" +python = ">=3.10.0,<4.0" +python-dateutil = "^2.9.0" +python-gnupg = "^0.5.2" +python-ldap = "3.4.4" +python3-saml = "^1.16.0" +pytz-deprecation-shim = "^0.1.0" +rcssmin = "^1.1.2" +redis = "^5.0.9" +regex = "^2024.9.11" relative-to-now = "^1.0.0" -requests = "^2.26.0" -setuptools = "^68.0.0" -sqlalchemy2-stubs = "^0.0.2-alpha.32" -supervisor = "^4.2.2" +requests = "^2.32.3" +setuptools = "^72.2.0" +supervisor = "^4.2.5" tomli = "^2.0.1" -tomlkit = "^0.12.0" -virtualenv = "^20.7.2" +tomlkit = "^0.13.2" +virtualenv = "^20.26.4" webassets-rollup = "^1.0.0" -whitenoise = "^6.2.0" -xmlsec = "^1.3.11" +whitenoise = "^6.7.0" +xmlsec = "^1.3.14" [tool.poetry.group.dev.dependencies] -black = "^23.0.0" -coverage = "^7.0.0" -djlint = "^1.19.17" -flask-debugtoolbar = "^0.13.1" -isort = "^5.10.1" -mypy = "0.991" -pre-commit = "^3.0.0" -pytest = "^7.2.0" -pytest-cov = "^4.0.0" -radon = "^6.0.0" -ruff = "^0.0.289" +black = "^24.8.0" +coverage = "^7.6.1" +flask-debugtoolbar = "^0.15.1" +isort = "^5.13.2" +mypy = "1.11.1" +pre-commit = "^3.8.0" +pytest = "^8.3.3" +pytest-cov = "^5.0.0" +radon = "^6.0.1" +ruff = "^0.6.5" toml = "^0.10.2" -tox = "^4.0.8" -types-flask = "^1.1.6" -types-jinja2 = "^2.11.9" -types-paramiko = "^2.12.0.1" -types-python-dateutil = "^2.8.19.4" -types-redis = "^4.3.21.6" -types-requests = "^2.28.11.5" +tox = "^4.18.1" +types-paramiko = "^3.4.0.20240423" +types-python-dateutil = "^2.9.0.20240906" +types-requests = "^2.32.0.20240914" [tool.pytest] @@ -181,11 +170,13 @@ filterwarnings = "always" testpaths = "tests" [tool.ruff] -extend-exclude = ['test*', 'ldap_auth*'] -ignore = ['RUF015', 'B034', 'PLR1714', 'S602', 'S605', 'D213', 'S324', 'D203', 'S301', 'N818', 'PLW0120', 'PLR0915', 'S110', 'S101', 'C417', 'PLR0913', 'D212', 'RUF100', 'B020', 'S106', 'PLC1901', 'PLR0911', 'F401', "E501", 'SIM118', 'PLR2004', 'PLW2901', 'B905', 'E402', 'PLR0912', 'B904', 'ERA001', 'PLR5501', 'D401', 'SIM108'] +extend-exclude = ['test*', 'ldap_auth*', 'migrations*'] + +[tool.ruff.lint] +ignore = ['RUF015', 'B034', 'PLR1714', 'S602', 'S605', 'D213', 'S324', 'D203', 'S301', 'N818', 'PLW0120', 'PLR0915', 'S110', 'S101', 'C417', 'PLR0913', 'D212', 'RUF100', 'B020', 'S106', 'PLC1901', 'PLR0911', 'F401', "E501", 'SIM118', 'PLR2004', 'PLW2901', 'B905', 'E402', 'PLR0912', 'B904', 'ERA001', 'PLR5501', 'D401', 'SIM108', 'S507'] select = ['F', 'E', 'W', 'N', 'D', 'S', 'B', 'C4', 'T20', 'Q', 'SIM', 'ERA', 'PL', 'RUF'] -[tool.ruff.per-file-ignores] +[tool.ruff.lint.per-file-ignores] "runner/scripts/em_python.py" = ['SIM114'] [tool.setuptools_scm] diff --git a/runner/__init__.py b/runner/__init__.py index 501e881a..40483ce3 100644 --- a/runner/__init__.py +++ b/runner/__init__.py @@ -34,6 +34,7 @@ cp web/model.py scheduler/ """ + import logging import os diff --git a/runner/extensions.py b/runner/extensions.py index df8ec6b3..684c3c34 100644 --- a/runner/extensions.py +++ b/runner/extensions.py @@ -13,10 +13,50 @@ """ +import datetime + from flask_executor import Executor from flask_redis import FlaskRedis from flask_sqlalchemy import SQLAlchemy +from sqlalchemy import String +from sqlalchemy.orm import DeclarativeBase, mapped_column, registry +from sqlalchemy.sql import functions +from typing_extensions import Annotated + +str_5 = Annotated[str, 5] +str_10 = Annotated[str, 10] +str_30 = Annotated[str, 30] +str_120 = Annotated[str, 120] +str_200 = Annotated[str, 200] +str_400 = Annotated[str, 400] +str_500 = Annotated[str, 500] +str_1000 = Annotated[str, 1000] +str_8000 = Annotated[str, 8000] +intpk = Annotated[int, mapped_column(primary_key=True, index=True)] +timestamp = Annotated[ + datetime.datetime, + mapped_column(nullable=False, server_default=functions.now()), +] + + +class Base(DeclarativeBase): + """Declare base types.""" + + registry = registry( + type_annotation_map={ + str_120: String(120), + str_200: String(200), + str_500: String(500), + str_1000: String(1000), + str_8000: String(8000), + str_5: String(5), + str_30: String(30), + str_400: String(400), + } + ) + + +db = SQLAlchemy(model_class=Base) -db = SQLAlchemy() executor = Executor() redis_client = FlaskRedis() diff --git a/runner/model.py b/runner/model.py index 1ce36e25..603e7308 100644 --- a/runner/model.py +++ b/runner/model.py @@ -20,85 +20,78 @@ """ - import datetime -from dataclasses import dataclass -from typing import Optional +from typing import List, Optional -from sqlalchemy.orm import declarative_base +from sqlalchemy.orm import Mapped, mapped_column, relationship from sqlalchemy.sql import functions -from .extensions import db - -Base = declarative_base() +from .extensions import ( + db, + intpk, + str_5, + str_10, + str_30, + str_120, + str_200, + str_400, + str_500, + str_1000, + str_8000, + timestamp, +) -@dataclass class LoginType(db.Model): """Lookup table of user login types.""" __tablename__ = "login_type" - id: Optional[int] = None - name: Optional[str] = None - id = db.Column(db.Integer, primary_key=True, index=True) - name = db.Column(db.String(120), nullable=True) - login = db.relationship("Login", backref="login_type", lazy=True) + id: Mapped[intpk] + name: Mapped[Optional[str_120]] + login: Mapped[List["Login"]] = relationship(back_populates="login_type", lazy=True) -@dataclass class Login(db.Model): """Table should contain all login attempts.""" __tablename__ = "login" - id: Optional[int] = None - username: Optional[str] = None - login_date: Optional[datetime.datetime] = None - type_id: Optional[int] = None - id = db.Column(db.Integer, primary_key=True, index=True) - type_id = db.Column(db.Integer, db.ForeignKey(LoginType.id), nullable=True) - username = db.Column(db.String(120), nullable=True) - login_date = db.Column(db.DateTime, server_default=functions.now()) + id: Mapped[intpk] + type_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(LoginType.id)) + username: Mapped[Optional[str_120]] + login_date: Mapped[Optional[timestamp]] + login_type: Mapped["LoginType"] = relationship(back_populates="login") -@dataclass class User(db.Model): """Table containing any user-specific information.""" # pylint: disable=too-many-instance-attributes - id: Optional[int] = None - account_name: Optional[str] = None - email: Optional[str] = None - full_name: Optional[str] = None - first_name: Optional[str] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - account_name = db.Column(db.String(200), nullable=True, index=True) - email = db.Column(db.String(200), nullable=True, index=True) - full_name = db.Column(db.String(200), nullable=True) - first_name = db.Column(db.String(200), nullable=True) - project_owner = db.relationship( - "Project", backref="project_owner", lazy=True, foreign_keys="Project.owner_id" + id: Mapped[intpk] + account_name: Mapped[Optional[str_200]] = mapped_column(index=True) + email: Mapped[Optional[str_200]] = mapped_column(index=True) + full_name: Mapped[Optional[str_200]] + first_name: Mapped[Optional[str_200]] + project_owner: Mapped["Project"] = relationship( + backref="project_owner", lazy=True, foreign_keys="Project.owner_id" ) - project_creator = db.relationship( - "Project", + project_creator: Mapped["Project"] = relationship( backref="project_creator", lazy=True, foreign_keys="Project.creator_id", ) - project_updater = db.relationship( - "Project", + project_updater: Mapped["Project"] = relationship( backref="project_updater", lazy=True, foreign_keys="Project.updater_id", ) - task_creator = db.relationship( - "Task", backref="task_creator", lazy=True, foreign_keys="Task.creator_id" + task_creator: Mapped["Task"] = relationship( + backref="task_creator", lazy=True, foreign_keys="Task.creator_id" ) - task_updater = db.relationship( - "Task", backref="task_updater", lazy=True, foreign_keys="Task.updater_id" + task_updater: Mapped["Task"] = relationship( + backref="task_updater", lazy=True, foreign_keys="Task.updater_id" ) is_authenticated = True is_active = True @@ -113,78 +106,40 @@ def __str__(self) -> str: return self.full_name or f"User {self.id}" -@dataclass class Project(db.Model): """Table containing project details.""" # pylint: disable=too-many-instance-attributes - id: Optional[int] = None - name: Optional[str] = None - description: Optional[str] = None - owner_id: Optional[int] = None - cron: Optional[int] = None - cron_year: Optional[int] = None - cron_month: Optional[int] = None - cron_week: Optional[int] = None - cron_day: Optional[int] = None - cron_week_day: Optional[int] = None - cron_hour: Optional[int] = None - cron_min: Optional[int] = None - cron_sec: Optional[int] = None - cron_start_date: Optional[datetime.datetime] = None - cron_end_date: Optional[datetime.datetime] = None - - intv: Optional[int] = None - intv_type: Optional[str] = None - intv_value: Optional[int] = None - intv_start_date: Optional[datetime.datetime] = None - intv_end_date: Optional[datetime.datetime] = None - - ooff: Optional[int] = None - ooff_date: Optional[datetime.datetime] = None - - created: Optional[datetime.datetime] = None - creator_id: Optional[int] = None - updated: Optional[datetime.datetime] = None - updater_id: Optional[int] = None - - global_params: Optional[str] = None - - sequence_tasks: Optional[int] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - name = db.Column(db.String(120), nullable=True) - description = db.Column(db.String(8000), nullable=True) - owner_id = db.Column(db.Integer, db.ForeignKey(User.id), nullable=True, index=True) - - cron = db.Column(db.Integer, nullable=True) - cron_year = db.Column(db.Integer, nullable=True) - cron_month = db.Column(db.Integer, nullable=True) - cron_week = db.Column(db.Integer, nullable=True) - cron_day = db.Column(db.Integer, nullable=True) - cron_week_day = db.Column(db.Integer, nullable=True) - cron_hour = db.Column(db.Integer, nullable=True) - cron_min = db.Column(db.Integer, nullable=True) - cron_sec = db.Column(db.Integer, nullable=True) - cron_start_date = db.Column(db.DateTime, nullable=True) - cron_end_date = db.Column(db.DateTime, nullable=True) - - intv = db.Column(db.Integer, nullable=True) - intv_type = db.Column(db.String(5), nullable=True) - intv_value = db.Column(db.Integer, nullable=True) - intv_start_date = db.Column(db.DateTime, nullable=True) - intv_end_date = db.Column(db.DateTime, nullable=True) - - ooff = db.Column(db.Integer, nullable=True) - ooff_date = db.Column(db.DateTime, nullable=True) - - global_params = db.Column(db.String(8000), nullable=True) - - sequence_tasks = db.Column(db.Integer, nullable=True) - - task = db.relationship( - "Task", + id: Mapped[intpk] + name: Mapped[Optional[str_120]] + description: Mapped[Optional[str_8000]] + owner_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(User.id), index=True) + + cron: Mapped[Optional[int]] + cron_year: Mapped[Optional[str_120]] + cron_month: Mapped[Optional[str_120]] + cron_week: Mapped[Optional[str_120]] + cron_day: Mapped[Optional[str_120]] + cron_week_day: Mapped[Optional[str_120]] + cron_hour: Mapped[Optional[str_120]] + cron_min: Mapped[Optional[str_120]] + cron_sec: Mapped[Optional[str_120]] + cron_start_date: Mapped[Optional[datetime.datetime]] + cron_end_date: Mapped[Optional[datetime.datetime]] + + intv: Mapped[Optional[int]] + intv_type: Mapped[Optional[str_5]] + intv_value: Mapped[Optional[int]] + intv_start_date: Mapped[Optional[datetime.datetime]] + intv_end_date: Mapped[Optional[datetime.datetime]] + ooff: Mapped[Optional[int]] + ooff_date: Mapped[Optional[datetime.datetime]] + + global_params: Mapped[Optional[str_8000]] + sequence_tasks: Mapped[Optional[int]] + + task: Mapped[List["Task"]] = relationship( backref="project", lazy="dynamic", cascade="all, delete, delete-orphan", @@ -192,68 +147,53 @@ class Project(db.Model): ) # projectparams link - params = db.relationship( - "ProjectParam", + params: Mapped[List["ProjectParam"]] = relationship( backref="project", lazy=True, cascade="all, delete, delete-orphan", passive_deletes=True, ) - created = db.Column(db.DateTime, server_default=functions.now()) - creator_id = db.Column( - db.Integer, db.ForeignKey(User.id), nullable=True, index=True - ) - updated = db.Column(db.DateTime, onupdate=functions.now()) - updater_id = db.Column( - db.Integer, db.ForeignKey(User.id), nullable=True, index=True - ) + created: Mapped[Optional[timestamp]] + creator_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(User.id), index=True) + updated: Mapped[Optional[datetime.datetime]] = mapped_column(onupdate=functions.now()) + updater_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(User.id), index=True) def __str__(self) -> str: """Return default string.""" return str(self.name) -@dataclass class TaskSourceType(db.Model): """Lookup table of task source types.""" __tablename__ = "task_source_type" - id: Optional[int] = None - name: Optional[str] = None - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(120), nullable=True) - task = db.relationship("Task", backref="source_type", lazy=True) + id: Mapped[int] = mapped_column(primary_key=True) + name: Mapped[Optional[str_120]] + task: Mapped["Task"] = relationship(backref="source_type", lazy=True) -@dataclass class TaskSourceQueryType(db.Model): """Lookup table of task query source types.""" __tablename__ = "task_source_query_type" - id: Optional[int] = None - name: Optional[str] = None - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(120), nullable=True) - task = db.relationship("Task", backref="query_type", lazy=True) + id: Mapped[int] = mapped_column(primary_key=True) + name: Mapped[Optional[str_120]] + task: Mapped["Task"] = relationship(backref="query_type", lazy=True) -@dataclass class TaskProcessingType(db.Model): """Lookup table of task query source types.""" __tablename__ = "task_processing_type" - id: Optional[int] = None - name: Optional[str] = None - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(120), nullable=True) - task = db.relationship("Task", backref="processing_type", lazy=True) + id: Mapped[intpk] + name: Mapped[Optional[str_120]] + task: Mapped["Task"] = relationship(backref="processing_type", lazy=True) -@dataclass class TaskStatus(db.Model): """Lookup table of task status types. @@ -261,20 +201,16 @@ class TaskStatus(db.Model): """ __tablename__ = "task_status" - id: Optional[int] = None - name: Optional[str] = None - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(1000), nullable=True) - task = db.relationship( - "Task", + id: Mapped[intpk] + name: Mapped[Optional[str_1000]] + task: Mapped[List["Task"]] = relationship( backref="status", lazy="dynamic", cascade="all, delete, delete-orphan", passive_deletes=True, ) - task_log = db.relationship( - "TaskLog", + task_log: Mapped[List["TaskLog"]] = relationship( backref="status", lazy="dynamic", cascade="all, delete, delete-orphan", @@ -282,60 +218,45 @@ class TaskStatus(db.Model): ) -@dataclass class Connection(db.Model): """Table containing all destination information.""" # pylint: disable=too-many-instance-attributes __tablename__ = "connection" - id: Optional[int] = None - name: Optional[str] = None - description: Optional[str] = None - address: Optional[str] = None - primary_contact: Optional[str] = None - primary_contact_email: Optional[str] = None - primary_contact_phone: Optional[str] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - name = db.Column(db.String(120), nullable=True) - description = db.Column(db.String(120), nullable=True) - address = db.Column(db.String(120), nullable=True) - primary_contact = db.Column(db.String(400), nullable=True) - primary_contact_email = db.Column(db.String(120), nullable=True) - primary_contact_phone = db.Column(db.String(120), nullable=True) - ssh = db.relationship( - "ConnectionSsh", + + id: Mapped[intpk] + name: Mapped[Optional[str_120]] + description: Mapped[Optional[str_120]] + address: Mapped[Optional[str_120]] + primary_contact: Mapped[Optional[str_400]] + primary_contact_email: Mapped[Optional[str_120]] + primary_contact_phone: Mapped[Optional[str_120]] + ssh: Mapped[List["ConnectionSsh"]] = relationship( backref="connection", lazy=True, foreign_keys="ConnectionSsh.connection_id", ) - sftp = db.relationship( - "ConnectionSftp", + sftp: Mapped[List["ConnectionSftp"]] = relationship( backref="connection", lazy=True, foreign_keys="ConnectionSftp.connection_id", ) - ftp = db.relationship( - "ConnectionFtp", + ftp: Mapped[List["ConnectionFtp"]] = relationship( backref="connection", lazy=True, foreign_keys="ConnectionFtp.connection_id", ) - smb = db.relationship( - "ConnectionSmb", + smb: Mapped[List["ConnectionSmb"]] = relationship( backref="connection", lazy=True, foreign_keys="ConnectionSmb.connection_id", ) - database = db.relationship( - "ConnectionDatabase", - backref="connection", + database: Mapped[List["ConnectionDatabase"]] = relationship( + back_populates="connection", lazy=True, - foreign_keys="ConnectionDatabase.connection_id", ) - gpg = db.relationship( - "ConnectionGpg", + gpg: Mapped[List["ConnectionGpg"]] = relationship( backref="connection", lazy=True, foreign_keys="ConnectionGpg.connection_id", @@ -346,52 +267,37 @@ def __str__(self) -> str: return str(self.name) -@dataclass class ConnectionSftp(db.Model): """Table conntaining sftp connection strings.""" # pylint: disable=too-many-instance-attributes __tablename__ = "connection_sftp" - id: Optional[int] = None - connection_id: Optional[int] = None - name: Optional[str] = None - address: Optional[str] = None - port: Optional[int] = None - path: Optional[str] = None - username: Optional[str] = None - key: Optional[str] = None - password: Optional[str] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - connection_id = db.Column( - db.Integer, db.ForeignKey(Connection.id), nullable=True, index=True - ) - name = db.Column(db.String(500), nullable=True) - address = db.Column(db.String(500), nullable=True) - port = db.Column(db.Integer, nullable=True) - path = db.Column(db.String(500), nullable=True) - username = db.Column(db.String(120), nullable=True) - key = db.Column(db.String(8000), nullable=True) - password = db.Column(db.Text, nullable=True) - key_password = db.Column(db.Text, nullable=True) - task = db.relationship( - "Task", + + id: Mapped[intpk] + connection_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Connection.id), index=True) + name: Mapped[Optional[str_500]] + address: Mapped[Optional[str_500]] + port: Mapped[Optional[int]] + path: Mapped[Optional[str_500]] + username: Mapped[Optional[str_120]] + key: Mapped[Optional[str_8000]] + password: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + key_password: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + task: Mapped["Task"] = relationship( backref="destination_sftp_conn", lazy=True, foreign_keys="Task.destination_sftp_id", ) - task_source = db.relationship( - "Task", + task_source: Mapped["Task"] = relationship( backref="source_sftp_conn", lazy=True, foreign_keys="Task.source_sftp_id", ) - query_source = db.relationship( - "Task", backref="query_sftp_conn", lazy=True, foreign_keys="Task.query_sftp_id" + query_source: Mapped["Task"] = relationship( + backref="query_sftp_conn", lazy=True, foreign_keys="Task.query_sftp_id" ) - processing_source = db.relationship( - "Task", + processing_source: Mapped["Task"] = relationship( backref="processing_sftp_conn", lazy=True, foreign_keys="Task.processing_sftp_id", @@ -402,32 +308,21 @@ def __str__(self) -> str: return str(self.name) -@dataclass class ConnectionSsh(db.Model): - """Table conntaining sftp connection strings.""" + """Table conntaining ssh connection strings.""" # pylint: disable=too-many-instance-attributes __tablename__ = "connection_ssh" - id: Optional[int] = None - connection_id: Optional[int] = None - name: Optional[str] = None - address: Optional[str] = None - port: Optional[int] = None - username: Optional[str] = None - password: Optional[str] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - connection_id = db.Column( - db.Integer, db.ForeignKey(Connection.id), nullable=True, index=True - ) - name = db.Column(db.String(500), nullable=True) - address = db.Column(db.String(500), nullable=True) - port = db.Column(db.Integer, nullable=True) - username = db.Column(db.String(120), nullable=True) - password = db.Column(db.Text, nullable=True) - task_source = db.relationship( - "Task", + + id: Mapped[intpk] + connection_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Connection.id), index=True) + name: Mapped[Optional[str_500]] + address: Mapped[Optional[str_500]] + port: Mapped[Optional[int]] + username: Mapped[Optional[str_120]] + password: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + task_source: Mapped["Task"] = relationship( backref="source_ssh_conn", lazy=True, foreign_keys="Task.source_ssh_id", @@ -438,26 +333,18 @@ def __str__(self) -> str: return str(self.name) -@dataclass class ConnectionGpg(db.Model): """Table conntaining gpg keys.""" # pylint: disable=too-many-instance-attributes __tablename__ = "connection_gpg" - id: Optional[int] = None - connection_id: Optional[int] = None - name: Optional[str] = None - key: Optional[str] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - connection_id = db.Column( - db.Integer, db.ForeignKey(Connection.id), nullable=True, index=True - ) - name = db.Column(db.String(500), nullable=True) - key = db.Column(db.String(8000), nullable=True) - task_source = db.relationship( - "Task", + + id: Mapped[intpk] + connection_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Connection.id), index=True) + name: Mapped[Optional[str_500]] + key: Mapped[Optional[str_8000]] + task_source: Mapped["Task"] = relationship( backref="file_gpg_conn", lazy=True, foreign_keys="Task.file_gpg_id", @@ -468,44 +355,32 @@ def __str__(self) -> str: return str(self.name) -@dataclass class ConnectionFtp(db.Model): - """Table conntaining sftp connection strings.""" + """Table conntaining ftp connection strings.""" # pylint: disable=too-many-instance-attributes __tablename__ = "connection_ftp" - id: Optional[int] = None - connection_id: Optional[int] = None - name: Optional[str] = None - address: Optional[str] = None - path: Optional[str] = None - username: Optional[str] = None - password: Optional[str] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - connection_id = db.Column( - db.Integer, db.ForeignKey(Connection.id), nullable=True, index=True - ) - name = db.Column(db.String(500), nullable=True) - address = db.Column(db.String(500), nullable=True) - path = db.Column(db.String(500), nullable=True) - username = db.Column(db.String(500), nullable=True) - password = db.Column(db.Text, nullable=True) - task = db.relationship( - "Task", + + id: Mapped[intpk] + connection_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Connection.id), index=True) + name: Mapped[Optional[str_500]] + address: Mapped[Optional[str_500]] + path: Mapped[Optional[str_500]] + username: Mapped[Optional[str_500]] + password: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + task: Mapped["Task"] = relationship( backref="destination_ftp_conn", lazy=True, foreign_keys="Task.destination_ftp_id", ) - task_source = db.relationship( - "Task", backref="source_ftp_conn", lazy=True, foreign_keys="Task.source_ftp_id" + task_source: Mapped["Task"] = relationship( + backref="source_ftp_conn", lazy=True, foreign_keys="Task.source_ftp_id" ) - query_source = db.relationship( - "Task", backref="query_ftp_conn", lazy=True, foreign_keys="Task.query_ftp_id" + query_source: Mapped["Task"] = relationship( + backref="query_ftp_conn", lazy=True, foreign_keys="Task.query_ftp_id" ) - processing_source = db.relationship( - "Task", + processing_source: Mapped["Task"] = relationship( backref="processing_ftp_conn", lazy=True, foreign_keys="Task.processing_ftp_id", @@ -516,48 +391,34 @@ def __str__(self) -> str: return str(self.name) -@dataclass class ConnectionSmb(db.Model): - """Table conntaining sftp connection strings.""" + """Table conntaining smb connection strings.""" # pylint: disable=too-many-instance-attributes __tablename__ = "connection_smb" - id: Optional[int] = None - connection_id: Optional[int] = None - name: Optional[str] = None - share_name: Optional[str] = None - path: Optional[str] = None - username: Optional[str] = None - password: Optional[str] = None - server_ip: Optional[str] = None - server_name: Optional[str] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - connection_id = db.Column( - db.Integer, db.ForeignKey(Connection.id), nullable=True, index=True - ) - name = db.Column(db.String(120), nullable=True) - share_name = db.Column(db.String(500), nullable=True) - path = db.Column(db.String(1000), nullable=True) - username = db.Column(db.String(500), nullable=True) - password = db.Column(db.Text, nullable=True) - server_ip = db.Column(db.String(500), nullable=True) - server_name = db.Column(db.String(500), nullable=True) - task = db.relationship( - "Task", + + id: Mapped[intpk] + connection_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Connection.id), index=True) + name: Mapped[Optional[str_120]] + share_name: Mapped[Optional[str_500]] + path: Mapped[Optional[str_1000]] + username: Mapped[Optional[str_500]] + password: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + server_ip: Mapped[Optional[str_500]] + server_name: Mapped[Optional[str_500]] + task: Mapped["Task"] = relationship( backref="destination_smb_conn", lazy=True, foreign_keys="Task.destination_smb_id", ) - task_source = db.relationship( - "Task", backref="source_smb_conn", lazy=True, foreign_keys="Task.source_smb_id" + task_source: Mapped["Task"] = relationship( + backref="source_smb_conn", lazy=True, foreign_keys="Task.source_smb_id" ) - query_source = db.relationship( - "Task", backref="query_smb_conn", lazy=True, foreign_keys="Task.query_smb_id" + query_source: Mapped["Task"] = relationship( + backref="query_smb_conn", lazy=True, foreign_keys="Task.query_smb_id" ) - processing_source = db.relationship( - "Task", + processing_source: Mapped["Task"] = relationship( backref="processing_smb_conn", lazy=True, foreign_keys="Task.processing_smb_id", @@ -568,431 +429,273 @@ def __str__(self) -> str: return str(self.name) -@dataclass class ConnectionDatabaseType(db.Model): """Lookup table of task source database types.""" __tablename__ = "connection_database_type" - id: Optional[int] = None - name: Optional[str] = None - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(120), nullable=True) - database = db.relationship("ConnectionDatabase", backref="database_type", lazy=True) + id: Mapped[intpk] + name: Mapped[Optional[str_120]] + database: Mapped["ConnectionDatabase"] = relationship(backref="database_type", lazy=True) -@dataclass class ConnectionDatabase(db.Model): """List of task source databases and connection strings.""" __tablename__ = "connection_database" - id: Optional[int] = None - type_id: Optional[int] = None - name: Optional[str] = None - connection_string: Optional[str] = None - connection_id: Optional[int] = None - timeout: Optional[int] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - type_id = db.Column( - db.Integer, db.ForeignKey(ConnectionDatabaseType.id), nullable=True, index=True - ) - connection_id = db.Column( - db.Integer, db.ForeignKey(Connection.id), nullable=True, index=True - ) - name = db.Column(db.String(500), nullable=True) - connection_string = db.Column(db.Text, nullable=True) - timeout = db.Column(db.Integer, nullable=True) - task_source = db.relationship( - "Task", + + id: Mapped[intpk] + type_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(ConnectionDatabaseType.id)) + connection_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Connection.id), index=True) + name: Mapped[Optional[str_500]] + connection_string: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + timeout: Mapped[Optional[int]] + task_source: Mapped["Task"] = relationship( backref="source_database_conn", lazy=True, foreign_keys="Task.source_database_id", ) + connection: Mapped["Connection"] = relationship(back_populates="database") def __str__(self) -> str: """Get string of name.""" return str(self.name) -@dataclass class TaskDestinationFileType(db.Model): """Lookup table of task destination file types.""" __tablename__ = "task_destination_file_type" - id: Optional[int] = None - name: Optional[str] = None - ext: Optional[str] = None - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(120), nullable=True) - ext = db.Column(db.String(120), nullable=False) - task = db.relationship("Task", backref="file_type", lazy=True) + id: Mapped[intpk] + name: Mapped[Optional[str_120]] + ext: Mapped[Optional[str_120]] = mapped_column(nullable=False) + task: Mapped["Task"] = relationship(backref="file_type", lazy=True) -@dataclass class QuoteLevel(db.Model): """Lookup table for python quote levels.""" __tablename__ = "quote_level" - id: Optional[int] = None - name: Optional[str] = None - id = db.Column(db.Integer, primary_key=True, index=True) - name = db.Column(db.String(120), nullable=True) - task = db.relationship("Task", backref="destination_file_quote_level", lazy=True) + id: Mapped[intpk] + name: Mapped[Optional[str_120]] + task: Mapped["Task"] = relationship(backref="destination_file_quote_level", lazy=True) -@dataclass class ProjectParam(db.Model): """Task parameters.""" __tablename__ = "project_param" - id: Optional[int] = None - key: Optional[str] = None - value: Optional[str] = None - sensitive: Optional[int] = None - project_id: Optional[int] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - key = db.Column(db.String(500), nullable=True) - value = db.Column(db.String(8000), nullable=True) - project_id = db.Column( - db.Integer, db.ForeignKey(Project.id), nullable=True, index=True - ) - sensitive = db.Column(db.Integer, nullable=True, index=True) + + id: Mapped[intpk] + key: Mapped[Optional[str_500]] + value: Mapped[Optional[str_8000]] + project_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Project.id), index=True) + sensitive: Mapped[Optional[int]] = mapped_column(index=True) -@dataclass class Task(db.Model): """Table containing task details.""" # pylint: disable=too-many-instance-attributes __tablename__ = "task" - # general information - id: Optional[int] = None - name: Optional[str] = None - project_id: Optional[int] = None - status_id: Optional[int] = None - enabled: Optional[int] = None - order: Optional[int] = None - last_run: Optional[datetime.datetime] = None - next_run: Optional[datetime.datetime] = None - last_run_job_id: Optional[str] = None - created: Optional[datetime.datetime] = None - creator_id: Optional[int] = None - updated: Optional[datetime.datetime] = None - updater_id: Optional[int] = None - - # data source - source_type_id: Optional[int] = None - source_database_id: Optional[int] = None - - source_query_type_id: Optional[int] = None - source_query_include_header: Optional[int] = None - source_git: Optional[str] = None - source_devops: Optional[str] = None - source_url: Optional[str] = None - source_code: Optional[str] = None - - source_require_sql_output: Optional[int] = None - - query_smb_id: Optional[int] = None - query_smb_file: Optional[str] = None - query_sftp_id: Optional[int] = None - query_sftp_file: Optional[str] = None - query_ftp_id: Optional[int] = None - query_ftp_file: Optional[str] = None - query_params: Optional[str] = None - - source_smb_delimiter: Optional[str] = None - source_smb_ignore_delimiter: Optional[int] = None - source_smb_file: Optional[str] = None - source_smb_id: Optional[int] = None - - source_ftp_file: Optional[str] = None - source_ftp_delimiter: Optional[str] = None - source_ftp_ignore_delimiter: Optional[int] = None - source_ftp_id: Optional[int] = None - - source_sftp_file: Optional[str] = None - source_sftp_delimiter: Optional[str] = None - source_sftp_ignore_delimiter: Optional[int] = None - source_sftp_id: Optional[int] = None - - source_ssh_id: Optional[int] = None - - # caching - source_cache: Optional[str] = None - enable_source_cache: Optional[int] = None - - # processing - processing_type_id: Optional[int] = None - processing_smb_id: Optional[int] = None - processing_smb_file: Optional[str] = None - processing_sftp_id: Optional[int] = None - processing_sftp_file: Optional[str] = None - processing_ftp_id: Optional[int] = None - processing_ftp_file: Optional[str] = None - processing_code: Optional[str] = None - processing_url: Optional[str] = None - processing_git: Optional[str] = None - processing_devops: Optional[str] = None - processing_command: Optional[str] = None - - # destination - destination_file_delimiter: Optional[str] = None - destination_file_name: Optional[str] = None - destination_ignore_delimiter: Optional[int] = None - destination_file_line_terminator: Optional[str] = None - destination_quote_level_id: Optional[int] = None - - destination_create_zip: Optional[int] = None - destination_zip_name: Optional[str] = None - - destination_file_type_id: Optional[int] = None - - destination_sftp: Optional[int] = None - destination_sftp_overwrite: Optional[int] = None - destination_sftp_id: Optional[int] = None - destination_sftp_dont_send_empty_file: Optional[int] = None - - destination_ftp: Optional[int] = None - destination_ftp_overwrite: Optional[int] = None - destination_ftp_id: Optional[int] = None - destination_ftp_dont_send_empty_file: Optional[int] = None - - destination_smb: Optional[int] = None - destination_smb_overwrite: Optional[int] = None - destination_smb_id: Optional[int] = None - destination_smb_dont_send_empty_file: Optional[int] = None - - file_gpg: Optional[int] = None - file_gpg_id: Optional[int] = None - - email_completion: Optional[int] = None - email_completion_log: Optional[int] = None - email_completion_file: Optional[int] = None - email_completion_file_embed: Optional[int] = None - email_completion_dont_send_empty_file: Optional[int] = None - email_completion_recipients: Optional[str] = None - email_completion_message: Optional[str] = None - - email_error: Optional[int] = None - email_error_recipients: Optional[str] = None - email_error_message: Optional[str] = None - - max_retries: Optional[int] = None - - est_duration: Optional[int] = None # general information - id = db.Column(db.Integer, primary_key=True, index=True) - name = db.Column(db.String(1000), nullable=True) - project_id = db.Column( - db.Integer, db.ForeignKey(Project.id), nullable=True, index=True - ) - status_id = db.Column( - db.Integer, db.ForeignKey(TaskStatus.id), nullable=True, index=True - ) - enabled = db.Column(db.Integer, nullable=True, index=True) - order = db.Column(db.Integer, nullable=True, index=True) - last_run = db.Column(db.DateTime, nullable=True) - last_run_job_id = db.Column(db.String(30), nullable=True, index=True) - next_run = db.Column(db.DateTime, nullable=True, index=True) - created = db.Column(db.DateTime, server_default=functions.now(), index=True) - creator_id = db.Column( - db.Integer, db.ForeignKey(User.id), nullable=True, index=True - ) - updated = db.Column(db.DateTime, onupdate=functions.now(), index=True) - updater_id = db.Column( - db.Integer, db.ForeignKey(User.id), nullable=True, index=True - ) + id: Mapped[intpk] + name: Mapped[Optional[str_1000]] + project_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Project.id), index=True) + status_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(TaskStatus.id)) + enabled: Mapped[Optional[int]] = mapped_column(index=True) + order: Mapped[Optional[int]] = mapped_column(index=True) + last_run: Mapped[Optional[datetime.datetime]] + last_run_job_id: Mapped[Optional[str_30]] = mapped_column(index=True) + next_run: Mapped[Optional[datetime.datetime]] = mapped_column(index=True) + created: Mapped[Optional[timestamp]] = mapped_column(index=True) + creator_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(User.id), index=True) + updated: Mapped[Optional[datetime.datetime]] = mapped_column( + onupdate=functions.now(), index=True + ) + updater_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(User.id), index=True) """ data source """ # db/sftp/smb/ftp - source_type_id = db.Column( - db.Integer, db.ForeignKey(TaskSourceType.id), nullable=True, index=True + source_type_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(TaskSourceType.id), index=True ) # source locations # git/url/code/sftp/ftp/smb/devops - source_query_type_id = db.Column( - db.Integer, db.ForeignKey(TaskSourceQueryType.id), nullable=True, index=True + source_query_type_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(TaskSourceQueryType.id), index=True ) - source_query_include_header = db.Column(db.Integer, nullable=True) + source_query_include_header: Mapped[Optional[int]] - source_require_sql_output = db.Column(db.Integer, nullable=True) + source_require_sql_output: Mapped[Optional[int]] # source git - source_git = db.Column(db.String(1000), nullable=True) + source_git: Mapped[Optional[str_1000]] # source devops - source_devops = db.Column(db.String(1000), nullable=True) + source_devops: Mapped[Optional[str_1000]] # source web url - source_url = db.Column(db.String(1000), nullable=True) + source_url: Mapped[Optional[str_1000]] # source typed code - source_code = db.Column(db.Text, nullable=True) + source_code: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) # cached source query - source_cache = db.Column(db.Text, nullable=True) - enable_source_cache = db.Column(db.Integer, nullable=True, index=True) + source_cache: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + enable_source_cache: Mapped[Optional[int]] = mapped_column(index=True) - query_smb_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSmb.id), nullable=True, index=True + query_smb_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSmb.id), index=True ) - query_smb_file = db.Column(db.String(1000), nullable=True) + query_smb_file: Mapped[Optional[str_1000]] - query_sftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSftp.id), nullable=True, index=True + query_sftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSftp.id), index=True ) - query_sftp_file = db.Column(db.String(1000), nullable=True) + query_sftp_file: Mapped[Optional[str_1000]] - query_ftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionFtp.id), nullable=True, index=True + query_ftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionFtp.id), index=True ) - query_ftp_file = db.Column(db.String(1000), nullable=True) + query_ftp_file: Mapped[Optional[str_1000]] - query_params = db.Column(db.String(8000), nullable=True) + query_params: Mapped[Optional[str_8000]] # source smb sql file - source_smb_file = db.Column(db.String(1000), nullable=True) - source_smb_delimiter = db.Column(db.String(10), nullable=True) - source_smb_ignore_delimiter = db.Column(db.Integer, nullable=True) - source_smb_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSmb.id), nullable=True, index=True + source_smb_file: Mapped[Optional[str_1000]] + source_smb_delimiter: Mapped[Optional[str_10]] + source_smb_ignore_delimiter: Mapped[Optional[int]] + source_smb_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSmb.id), index=True ) # source ftp sql file - source_ftp_file = db.Column(db.String(1000), nullable=True) - source_ftp_delimiter = db.Column(db.String(10), nullable=True) - source_ftp_ignore_delimiter = db.Column(db.Integer, nullable=True) - source_ftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionFtp.id), nullable=True, index=True + source_ftp_file: Mapped[Optional[str_1000]] + source_ftp_delimiter: Mapped[Optional[str_10]] + source_ftp_ignore_delimiter: Mapped[Optional[int]] + source_ftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionFtp.id), index=True ) # source sftp sql file - source_sftp_file = db.Column(db.String(1000), nullable=True) - source_sftp_delimiter = db.Column(db.String(10), nullable=True) - source_sftp_ignore_delimiter = db.Column(db.Integer, nullable=True) - source_sftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSftp.id), nullable=True, index=True + source_sftp_file: Mapped[Optional[str_1000]] + source_sftp_delimiter: Mapped[Optional[str_10]] + source_sftp_ignore_delimiter: Mapped[Optional[int]] + source_sftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSftp.id), index=True ) # source database - source_database_id = db.Column( - db.Integer, db.ForeignKey(ConnectionDatabase.id), nullable=True, index=True + source_database_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionDatabase.id), index=True ) - source_ssh_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSsh.id), nullable=True, index=True + source_ssh_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSsh.id), index=True ) """ processing script source """ - processing_type_id = db.Column( - db.Integer, db.ForeignKey(TaskProcessingType.id), nullable=True, index=True - ) + processing_type_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(TaskProcessingType.id)) - processing_smb_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSmb.id), nullable=True, index=True + processing_smb_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSmb.id), index=True ) - processing_smb_file = db.Column(db.String(1000), nullable=True) + processing_smb_file: Mapped[Optional[str_1000]] - processing_sftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSftp.id), nullable=True, index=True + processing_sftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSftp.id), index=True ) - processing_sftp_file = db.Column(db.String(1000), nullable=True) + processing_sftp_file: Mapped[Optional[str_1000]] - processing_ftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionFtp.id), nullable=True, index=True + processing_ftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionFtp.id), index=True ) - processing_ftp_file = db.Column(db.String(1000), nullable=True) + processing_ftp_file: Mapped[Optional[str_1000]] - processing_code = db.Column(db.String(8000), nullable=True) - processing_url = db.Column(db.String(1000), nullable=True) - processing_git = db.Column(db.String(1000), nullable=True) - processing_devops = db.Column(db.String(1000), nullable=True) - processing_command = db.Column(db.String(1000), nullable=True) + processing_code: Mapped[Optional[str_8000]] + processing_url: Mapped[Optional[str_1000]] + processing_git: Mapped[Optional[str_1000]] + processing_devops: Mapped[Optional[str_1000]] + processing_command: Mapped[Optional[str_1000]] """ destination """ # destination file - destination_file_name = db.Column(db.String(1000), nullable=True) - destination_file_delimiter = db.Column(db.String(10), nullable=True) - destination_ignore_delimiter = db.Column(db.Integer, nullable=True) - destination_file_line_terminator = db.Column(db.String(10), nullable=True) + destination_file_name: Mapped[Optional[str_1000]] + destination_file_delimiter: Mapped[Optional[str_10]] + destination_ignore_delimiter: Mapped[Optional[int]] + destination_file_line_terminator: Mapped[Optional[str_10]] # destination zip archive - destination_create_zip = db.Column(db.Integer, nullable=True) - destination_zip_name = db.Column(db.String(1000), nullable=True) + destination_create_zip: Mapped[Optional[int]] + destination_zip_name: Mapped[Optional[str_1000]] # csv/txt/other - destination_file_type_id = db.Column( - db.Integer, db.ForeignKey(TaskDestinationFileType.id), nullable=True, index=True + destination_file_type_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(TaskDestinationFileType.id) ) # save to sftp server - destination_sftp = db.Column(db.Integer, nullable=True, index=True) - destination_sftp_overwrite = db.Column(db.Integer, nullable=True) - destination_sftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSftp.id), nullable=True, index=True + destination_sftp: Mapped[Optional[int]] = mapped_column(index=True) + destination_sftp_overwrite: Mapped[Optional[int]] + destination_sftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSftp.id), index=True ) - destination_sftp_dont_send_empty_file = db.Column(db.Integer, nullable=True) + destination_sftp_dont_send_empty_file: Mapped[Optional[int]] # save to ftp server - destination_ftp = db.Column(db.Integer, nullable=True, index=True) - destination_ftp_overwrite = db.Column(db.Integer, nullable=True) - destination_ftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionFtp.id), nullable=True, index=True + destination_ftp: Mapped[Optional[int]] = mapped_column(index=True) + destination_ftp_overwrite: Mapped[Optional[int]] + destination_ftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionFtp.id), index=True ) - destination_ftp_dont_send_empty_file = db.Column(db.Integer, nullable=True) - + destination_ftp_dont_send_empty_file: Mapped[Optional[int]] # save to smb server - destination_smb = db.Column(db.Integer, nullable=True, index=True) - destination_smb_overwrite = db.Column(db.Integer, nullable=True) - destination_smb_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSmb.id), nullable=True, index=True + destination_smb: Mapped[Optional[int]] = mapped_column(index=True) + destination_smb_overwrite: Mapped[Optional[int]] + destination_smb_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSmb.id), index=True ) - destination_smb_dont_send_empty_file = db.Column(db.Integer, nullable=True) + destination_smb_dont_send_empty_file: Mapped[Optional[int]] - file_gpg = db.Column(db.Integer, nullable=True, index=True) - file_gpg_id = db.Column( - db.Integer, db.ForeignKey(ConnectionGpg.id), nullable=True, index=True - ) + file_gpg: Mapped[Optional[int]] = mapped_column(index=True) + file_gpg_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(ConnectionGpg.id), index=True) - destination_quote_level_id = db.Column( - db.Integer, db.ForeignKey(QuoteLevel.id), nullable=True, index=True + destination_quote_level_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(QuoteLevel.id), index=True ) """ email """ # completion email - email_completion = db.Column(db.Integer, nullable=True, index=True) - email_completion_log = db.Column(db.Integer, nullable=True) - email_completion_file = db.Column(db.Integer, nullable=True) - email_completion_file_embed = db.Column(db.Integer, nullable=True) - email_completion_recipients = db.Column(db.String(1000), nullable=True) - email_completion_subject = db.Column(db.String(8000), nullable=True) - email_completion_message = db.Column(db.String(8000), nullable=True) - email_completion_dont_send_empty_file = db.Column(db.Integer, nullable=True) + email_completion: Mapped[Optional[int]] = mapped_column(index=True) + email_completion_log: Mapped[Optional[int]] + email_completion_file: Mapped[Optional[int]] + email_completion_file_embed: Mapped[Optional[int]] + email_completion_recipients: Mapped[Optional[str_1000]] + email_completion_subject: Mapped[Optional[str_8000]] + email_completion_message: Mapped[Optional[str_8000]] + email_completion_dont_send_empty_file: Mapped[Optional[int]] # error email - email_error = db.Column(db.Integer, nullable=True, index=True) - email_error_recipients = db.Column(db.String(1000), nullable=True) - email_error_subject = db.Column(db.String(8000), nullable=True) - email_error_message = db.Column(db.String(8000), nullable=True) + email_error: Mapped[Optional[int]] + email_error_recipients: Mapped[Optional[str_1000]] + email_error_subject: Mapped[Optional[str_8000]] + email_error_message: Mapped[Optional[str_8000]] # rerun on fail - max_retries = db.Column(db.Integer, nullable=True, index=True) + max_retries: Mapped[Optional[int]] = mapped_column(index=True) - est_duration = db.Column(db.Integer, nullable=True, index=True) + est_duration: Mapped[Optional[int]] = mapped_column(index=True) # tasklog link - task = db.relationship( - "TaskLog", + task: Mapped[List["TaskLog"]] = relationship( backref="task", lazy=True, cascade="all, delete, delete-orphan", @@ -1000,8 +703,7 @@ class Task(db.Model): ) # taskparams link - params = db.relationship( - "TaskParam", + params: Mapped[List["TaskParam"]] = relationship( backref="task", lazy=True, cascade="all, delete, delete-orphan", @@ -1009,8 +711,7 @@ class Task(db.Model): ) # taskfiles link - files = db.relationship( - "TaskFile", + files: Mapped[List["TaskFile"]] = relationship( backref="task", lazy=True, cascade="all, delete, delete-orphan", @@ -1028,70 +729,46 @@ class TaskLog(db.Model): # pylint: disable=too-many-instance-attributes __tablename__ = "task_log" - id: Optional[int] = None - task_id: Optional[int] = None - status_id: Optional[int] = None - job_id: Optional[str] = None - message: Optional[str] = None - error: Optional[int] = 0 - status_date: Optional[datetime.datetime] = None - - job_id = db.Column(db.String(1000), nullable=True, index=True) - id = db.Column(db.Integer, primary_key=True, index=True) - task_id = db.Column(db.Integer, db.ForeignKey(Task.id), nullable=True, index=True) - status_id = db.Column( - db.Integer, db.ForeignKey(TaskStatus.id), nullable=True, index=True - ) - message = db.Column(db.Text, nullable=True) - status_date = db.Column(db.DateTime, default=datetime.datetime.now, index=True) - error = db.Column(db.Integer, nullable=True, index=True) - __table_args__ = ( - db.Index("ix_task_log_status_date_error", "status_date", "error"), + job_id: Mapped[Optional[str_1000]] = mapped_column(index=True) + id: Mapped[intpk] + task_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Task.id), index=True) + status_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(TaskStatus.id), index=True) + message: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + status_date: Mapped[Optional[datetime.datetime]] = mapped_column( + default=datetime.datetime.now, index=True ) + error: Mapped[Optional[int]] = mapped_column(index=True) + + __table_args__ = (db.Index("ix_task_log_status_date_error", "status_date", "error"),) -@dataclass class TaskFile(db.Model): """Table containing paths to task backup files.""" __tablename__ = "task_file" - id: Optional[int] = None - name: Optional[str] = None - task_id: Optional[int] = None - job_id: Optional[str] = None - size: Optional[str] = None - file_hash: Optional[str] = None - path: Optional[str] = None - created: Optional[datetime.datetime] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - name = db.Column(db.String(1000), nullable=True, index=True) - task_id = db.Column(db.Integer, db.ForeignKey(Task.id), nullable=True, index=True) - job_id = db.Column(db.String(1000), nullable=True, index=True) - size = db.Column(db.String(200), nullable=True, index=True) - path = db.Column(db.String(1000), nullable=True, index=True) - file_hash = db.Column(db.String(1000), nullable=True) - created = db.Column(db.DateTime, default=datetime.datetime.now, index=True) - - __table_args__ = ( - db.Index("ix_task_file_id_task_id_job_id", "id", "task_id", "job_id"), + + id: Mapped[intpk] + name: Mapped[Optional[str_1000]] = mapped_column(index=True) + task_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Task.id), index=True) + job_id: Mapped[Optional[str_1000]] = mapped_column(index=True) + size: Mapped[Optional[str_200]] = mapped_column(index=True) + path: Mapped[Optional[str_1000]] = mapped_column(index=True) + file_hash: Mapped[Optional[str_1000]] + created: Mapped[Optional[datetime.datetime]] = mapped_column( + default=datetime.datetime.now, index=True ) + __table_args__ = (db.Index("ix_task_file_id_task_id_job_id", "id", "task_id", "job_id"),) + -@dataclass class TaskParam(db.Model): """Task parameters.""" __tablename__ = "task_param" - id: Optional[int] = None - key: Optional[str] = None - value: Optional[str] = None - sensitive: Optional[int] = None - task_id: Optional[int] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - key = db.Column(db.String(500), nullable=True) - value = db.Column(db.String(8000), nullable=True) - task_id = db.Column(db.Integer, db.ForeignKey(Task.id), nullable=True, index=True) - sensitive = db.Column(db.Integer, nullable=True, index=True) + + id: Mapped[intpk] + key: Mapped[Optional[str_500]] + value: Mapped[Optional[str_8000]] + task_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Task.id), index=True) + sensitive: Mapped[Optional[int]] = mapped_column(index=True) diff --git a/runner/scripts/em_cmd.py b/runner/scripts/em_cmd.py index 22de03ec..3fb4c8c7 100644 --- a/runner/scripts/em_cmd.py +++ b/runner/scripts/em_cmd.py @@ -1,6 +1,5 @@ """Functions used to run system commands.""" - import os import re import subprocess @@ -36,9 +35,7 @@ def __init__( def shell(self) -> str: """Run input command as a shell command.""" try: - out_bytes = subprocess.check_output( - self.cmd, stderr=subprocess.STDOUT, shell=True - ) + out_bytes = subprocess.check_output(self.cmd, stderr=subprocess.STDOUT, shell=True) out = out_bytes.decode("utf-8") if "Error" in out: diff --git a/runner/scripts/em_code.py b/runner/scripts/em_code.py index 838cef55..58b2f6e4 100644 --- a/runner/scripts/em_code.py +++ b/runner/scripts/em_code.py @@ -1,6 +1,5 @@ """Task source code handler.""" - import re import urllib.parse from typing import Optional @@ -43,8 +42,7 @@ def __init__( self.params = params self.db_type = ( "mssql" - if self.task.source_database_conn - and self.task.source_database_conn.type_id == 2 + if self.task.source_database_conn and self.task.source_database_conn.type_id == 2 else None ) @@ -84,9 +82,7 @@ def devops(self, url: str) -> str: projects = [i for i in get_projects_response if (i.name == project[0])] # this for repository id. - repos = git.get_repositories( - [i for i in projects if (i.name == project[0])][0].id - ) + repos = git.get_repositories([i for i in projects if (i.name == project[0])][0].id) repo_id = [i.id for i in repos if (i.name == repo_name[0])][0] item = git.get_item_content( @@ -122,20 +118,12 @@ def devops(self, url: str) -> str: # insert params return self.cleanup() - return ( - text - if not text.startswith(" str: f"Failed to get source from {url}.\n{e}", ) - raise RunnerException( - self.task, self.run_id, 15, "No url specified to get source from." - ) + raise RunnerException(self.task, self.run_id, 15, "No url specified to get source from.") def gitlab(self, url: str) -> str: """Get source code from gitlab using authentication.""" @@ -186,23 +172,17 @@ def gitlab(self, url: str) -> str: try: # convert the "raw" url into an api url branch = urllib.parse.quote( - urllib.parse.unquote( - re.findall(r"\/(?:raw|blob)\/(.+?)\/", url)[0] - ), + urllib.parse.unquote(re.findall(r"\/(?:raw|blob)\/(.+?)\/", url)[0]), safe="", ) project = urllib.parse.quote( - urllib.parse.unquote( - re.findall(r"\.(?:com|net|org)\/(.+?)\/-", url)[0] - ), + urllib.parse.unquote(re.findall(r"\.(?:com|net|org)\/(.+?)\/-", url)[0]), safe="", ) file_path = urllib.parse.quote( - urllib.parse.unquote( - re.findall(r"\/(?:raw|blob)\/.+?\/(.+?)$", url)[0] - ), + urllib.parse.unquote(re.findall(r"\/(?:raw|blob)\/.+?\/(.+?)$", url)[0]), safe="", ) @@ -262,11 +242,7 @@ def gitlab(self, url: str) -> str: # pylint: disable=broad-except except BaseException as e: # only use cache if we have a run id. Otherwise failures are from code preview. - if ( - self.run_id - and self.task.enable_source_cache == 1 - and self.task.source_cache - ): + if self.run_id and self.task.enable_source_cache == 1 and self.task.source_cache: RunnerLog( self.task, self.run_id, @@ -303,9 +279,7 @@ def gitlab(self, url: str) -> str: f"Failed to get source from {url}.\n{e}", ) - raise RunnerException( - self.task, self.run_id, 15, "No url specified to get source from." - ) + raise RunnerException(self.task, self.run_id, 15, "No url specified to get source from.") def web_url(self, url: str) -> str: """Get contents of a webpage.""" @@ -318,8 +292,7 @@ def web_url(self, url: str) -> str: self.query = page.text self.db_type = ( "mssql" - if self.task.source_database_conn - and self.task.source_database_conn.type_id == 2 + if self.task.source_database_conn and self.task.source_database_conn.type_id == 2 else None ) if page.status_code != 200: @@ -331,20 +304,14 @@ def web_url(self, url: str) -> str: db.session.commit() if self.refresh_cache: - RunnerLog( - self.task, self.run_id, 15, "Source cache manually refreshed." - ) + RunnerLog(self.task, self.run_id, 15, "Source cache manually refreshed.") # insert params return self.cleanup() # pylint: disable=broad-except except BaseException as e: - if ( - self.run_id - and self.task.enable_source_cache == 1 - and self.task.source_cache - ): + if self.run_id and self.task.enable_source_cache == 1 and self.task.source_cache: RunnerLog( self.task, self.run_id, @@ -363,11 +330,7 @@ def web_url(self, url: str) -> str: return self.cleanup() - elif ( - self.run_id - and self.task.enable_source_cache == 1 - and not self.task.source_cache - ): + elif self.run_id and self.task.enable_source_cache == 1 and not self.task.source_cache: raise RunnerException( self.task, self.run_id, @@ -385,8 +348,7 @@ def source(self, query: Optional[str] = None) -> str: self.query = query or self.task.source_code or "" self.db_type = ( "mssql" - if self.task.source_database_conn - and self.task.source_database_conn.type_id == 2 + if self.task.source_database_conn and self.task.source_database_conn.type_id == 2 else None ) return self.cleanup() @@ -414,16 +376,12 @@ def cleanup(self, query: Optional[str] = None) -> str: # only needed for mssql if self.task.source_type_id == 1 and self.db_type == "mssql": query = re.sub( - re.compile( - r"(^;?\s*;?)\buse\b\s+.+", flags=re.IGNORECASE | re.MULTILINE - ), + re.compile(r"(^;?\s*;?)\buse\b\s+.+", flags=re.IGNORECASE | re.MULTILINE), "", query, ) query = re.sub( - re.compile( - r"(^;?\s*;?)\buse\b\s+.+?;", flags=re.IGNORECASE | re.MULTILINE - ), + re.compile(r"(^;?\s*;?)\buse\b\s+.+?;", flags=re.IGNORECASE | re.MULTILINE), "", query, ) @@ -439,9 +397,7 @@ def cleanup(self, query: Optional[str] = None) -> str: # remove " go" query = re.sub( - re.compile( - r"^;?\s*?;?\bgo\b\s*?;?", flags=re.IGNORECASE | re.MULTILINE - ), + re.compile(r"^;?\s*?;?\bgo\b\s*?;?", flags=re.IGNORECASE | re.MULTILINE), r"", query, ) diff --git a/runner/scripts/em_date.py b/runner/scripts/em_date.py index 9862108a..d12ed705 100644 --- a/runner/scripts/em_date.py +++ b/runner/scripts/em_date.py @@ -20,7 +20,6 @@ years """ - import calendar import datetime import re @@ -157,11 +156,7 @@ def get_date_part(my_string: str) -> str: .replace("firstday", "1") .replace( "lastday", - str( - calendar.monthrange(date_from_string.year, date_from_string.month)[ - 1 - ] - ), + str(calendar.monthrange(date_from_string.year, date_from_string.month)[1]), ) ) @@ -185,9 +180,7 @@ def get_repeating_part(parts: List[str]) -> Optional[str]: return None try: - parameters = [ - x.group() for x in re.finditer(r"%[a-zA-Z]", self.date_string) - ] + parameters = [x.group() for x in re.finditer(r"%[a-zA-Z]", self.date_string)] parts = [] # split into parts @@ -206,9 +199,7 @@ def get_repeating_part(parts: List[str]) -> Optional[str]: date_string = param + split_parts[2] # update remaining parameters - parameters = [ - x.group() for x in re.finditer(r"%[a-zA-Z]", date_string) - ] + parameters = [x.group() for x in re.finditer(r"%[a-zA-Z]", date_string)] param = get_repeating_part(parameters) # need to add on the last part, if there are no more duplicate params. @@ -223,6 +214,4 @@ def get_repeating_part(parts: List[str]) -> Optional[str]: return self.date_string except BaseException as e: - raise RunnerException( - self.task, self.run_id, 17, f"Failed to parse date string.\n{e}" - ) + raise RunnerException(self.task, self.run_id, 17, f"Failed to parse date string.\n{e}") diff --git a/runner/scripts/em_file.py b/runner/scripts/em_file.py index 50c21357..8b0aa111 100644 --- a/runner/scripts/em_file.py +++ b/runner/scripts/em_file.py @@ -109,10 +109,7 @@ def save(self) -> Tuple[str, str, str]: returns [filename, filepath] of final file. """ - if ( - self.task.destination_file_name is None - or self.task.destination_file_name == "" - ): + if self.task.destination_file_name is None or self.task.destination_file_name == "": RunnerLog( self.task, self.run_id, @@ -120,19 +117,14 @@ def save(self) -> Tuple[str, str, str]: f"No filename specified, {Path(self.data_file.name).name} will be used.", ) - if ( - self.task.destination_file_name != "" - and self.task.destination_file_name is not None - ): + if self.task.destination_file_name != "" and self.task.destination_file_name is not None: # insert params self.file_name = self.params.insert_file_params( self.task.destination_file_name.strip() ) # parse python dates - self.file_name = DateParsing( - self.task, self.run_id, self.file_name - ).string_to_date() + self.file_name = DateParsing(self.task, self.run_id, self.file_name).string_to_date() else: self.file_name = Path(self.data_file.name).name @@ -200,8 +192,7 @@ def save(self) -> Tuple[str, str, str]: ) for row in reader: new_row = [ - (x.strip('"').strip("'") if isinstance(x, str) else x) - for x in row + (x.strip('"').strip("'") if isinstance(x, str) else x) for x in row ] if ( @@ -212,9 +203,7 @@ def save(self) -> Tuple[str, str, str]: self.task.destination_file_line_terminator is not None and self.task.destination_file_line_terminator != "" ): - new_row.append( - self.task.destination_file_line_terminator - ) + new_row.append(self.task.destination_file_line_terminator) wrtr.writerow(new_row) @@ -228,8 +217,7 @@ def save(self) -> Tuple[str, str, str]: ) for row in reader: new_row = [ - (x.strip('"').strip("'") if isinstance(x, str) else x) - for x in row + (x.strip('"').strip("'") if isinstance(x, str) else x) for x in row ] wrtr.writerow(new_row) @@ -300,9 +288,7 @@ def save(self) -> Tuple[str, str, str]: break self.file_hash.update(chunk) - RunnerLog( - self.task, self.run_id, 11, f"File md5 hash: {self.file_hash.hexdigest()}" - ) + RunnerLog(self.task, self.run_id, 11, f"File md5 hash: {self.file_hash.hexdigest()}") # create zip if self.task.destination_create_zip == 1: @@ -329,8 +315,6 @@ def save(self) -> Tuple[str, str, str]: self.file_name = self.zip_name self.file_path = str(Path(self.base_path).joinpath(self.zip_name)) - RunnerLog( - self.task, self.run_id, 11, f"ZIP archive created.\n{self.file_path}" - ) + RunnerLog(self.task, self.run_id, 11, f"ZIP archive created.\n{self.file_path}") return self.file_name, self.file_path, self.file_hash.hexdigest() diff --git a/runner/scripts/em_ftp.py b/runner/scripts/em_ftp.py index b2f70022..125b048a 100644 --- a/runner/scripts/em_ftp.py +++ b/runner/scripts/em_ftp.py @@ -1,6 +1,5 @@ """FTP connection manager.""" - import csv import fnmatch import ftplib # noqa: S402 @@ -44,9 +43,7 @@ def connect(connection: ConnectionFtp) -> FTP: conn = FTP(connection.address or "") # noqa: S321 conn.login( user=(connection.username or ""), - passwd=( - em_decrypt(connection.password, app.config["PASS_KEY"]) or "" - ), + passwd=(em_decrypt(connection.password, app.config["PASS_KEY"]) or ""), ) break except ftplib.error_reply as e: @@ -95,9 +92,7 @@ def __connect(self) -> FTP: except ValueError as e: raise RunnerException(self.task, self.run_id, 13, str(e)) - def _walk( - self, directory: str - ) -> Generator[Tuple[str, List[Any], List[str]], None, None]: + def _walk(self, directory: str) -> Generator[Tuple[str, List[Any], List[str]], None, None]: dirs = [] nondirs = [] @@ -124,13 +119,8 @@ def handle_binary(more_data: bytes) -> None: self.conn.retrbinary("RETR " + file_name, callback=handle_binary) data = "".join([str(x) for x in my_binary]) - with tempfile.NamedTemporaryFile( - mode="w", delete=False, dir=self.dir - ) as data_file: - if ( - self.task.source_sftp_ignore_delimiter != 1 - and self.task.source_sftp_delimiter - ): + with tempfile.NamedTemporaryFile(mode="w", delete=False, dir=self.dir) as data_file: + if self.task.source_sftp_ignore_delimiter != 1 and self.task.source_sftp_delimiter: my_delimiter = self.task.source_sftp_delimiter or "," csv_reader = csv.reader( @@ -216,9 +206,7 @@ def save(self, overwrite: int, file_name: str) -> None: # pylint: disable=broad-except except BaseException as e: - raise RunnerException( - self.task, self.run_id, 13, f"Failed to change path.\n{e}" - ) + raise RunnerException(self.task, self.run_id, 13, f"Failed to change path.\n{e}") if overwrite != 1: try: @@ -255,6 +243,4 @@ def __close(self) -> None: self.conn.close() except BaseException as e: - raise RunnerException( - self.task, self.run_id, 13, f"Failed to close connection.\n{e}" - ) + raise RunnerException(self.task, self.run_id, 13, f"Failed to close connection.\n{e}") diff --git a/runner/scripts/em_jdbc.py b/runner/scripts/em_jdbc.py index a6d87f5b..a0cc9c76 100644 --- a/runner/scripts/em_jdbc.py +++ b/runner/scripts/em_jdbc.py @@ -70,7 +70,7 @@ def __rows(self, size: int = 50) -> Generator: log = TaskLog( task_id=self.task.id, job_id=self.run_id, - status_id=20, + status_id=22, message=("Getting first %d query rows." % size), ) db.session.add(log) diff --git a/runner/scripts/em_messages.py b/runner/scripts/em_messages.py index 41fd6d77..675d8c9f 100644 --- a/runner/scripts/em_messages.py +++ b/runner/scripts/em_messages.py @@ -1,6 +1,5 @@ """Exception and logging messages.""" - import datetime import sys from dataclasses import dataclass @@ -110,10 +109,10 @@ def __init__( success=0, date=date, logs=logs, + host=app.config["WEB_HOST"], org=app.config["ORG_NAME"], ), - short_message=task.email_error_message - or f"Atlas Hub task {task} failed.", + short_message=task.email_error_message or f"Atlas Hub task {task} failed.", attachments=[], ) except BaseException as e: @@ -136,9 +135,7 @@ def __init__( if (redis_client.zincrby(f"runner_{task.id}_attempt", 0, "inc") or 1) <= ( task.max_retries or 0 ): - run_number = int( - redis_client.zincrby(f"runner_{task.id}_attempt", 0, "inc") or 1 - ) + run_number = int(redis_client.zincrby(f"runner_{task.id}_attempt", 0, "inc") or 1) # schedule a rerun in 5 minutes. RunnerLog( diff --git a/runner/scripts/em_params.py b/runner/scripts/em_params.py index dcc51e5a..9ead7be5 100644 --- a/runner/scripts/em_params.py +++ b/runner/scripts/em_params.py @@ -47,9 +47,7 @@ def insert_date(match: re.Match) -> str: # parse python dates for key, value in params_dict.items(): - params_dict[key] = re.sub( - r"\bparse\((.*?)\)", insert_date, value, re.IGNORECASE - ) + params_dict[key] = re.sub(r"\bparse\((.*?)\)", insert_date, value, re.IGNORECASE) # sort by key length.. longest first to avoid replacing wrong values return dict(sorted(params_dict.items(), key=lambda x: len(x[0]), reverse=True)) diff --git a/runner/scripts/em_postgres.py b/runner/scripts/em_postgres.py index b3ef7e89..fc0598d5 100644 --- a/runner/scripts/em_postgres.py +++ b/runner/scripts/em_postgres.py @@ -69,7 +69,7 @@ def __rows(self, size: int = 50) -> Generator: log = TaskLog( task_id=self.task.id, job_id=self.run_id, - status_id=20, + status_id=21, message=("Getting first %d query rows." % size), ) db.session.add(log) diff --git a/runner/scripts/em_python.py b/runner/scripts/em_python.py index 8af2a99d..7acac9ee 100644 --- a/runner/scripts/em_python.py +++ b/runner/scripts/em_python.py @@ -1,6 +1,5 @@ """Python script runner.""" - import ast import datetime import sys @@ -181,37 +180,27 @@ def __pip_install(self) -> None: else: # find all scripts in dir, but not in venv paths = list( - set(Path(self.job_path).rglob("*.py")) - - set(Path(self.env_path).rglob("*.py")) + set(Path(self.job_path).rglob("*.py")) - set(Path(self.env_path).rglob("*.py")) ) for this_file in paths: with open(this_file, "r") as my_file: for line in my_file: - imports.extend( - re.findall(r"^\s*?import\K\s+[^\.][^\s]+?\s+?$", line) - ) - imports.extend( - re.findall(r"^\s*?from\K\s+[^\.].+?(?=import)", line) - ) - imports.extend( - re.findall(r"^\s*?import\K\s+[^\.][^\s]+?(?=\s)", line) - ) + imports.extend(re.findall(r"^\s*?import\K\s+[^\.][^\s]+?\s+?$", line)) + imports.extend(re.findall(r"^\s*?from\K\s+[^\.].+?(?=import)", line)) + imports.extend(re.findall(r"^\s*?import\K\s+[^\.][^\s]+?(?=\s)", line)) package_map = { "dateutil": "python-dateutil", "smb": "pysmb", "dotenv": "python-dotenv", "azure": "azure-devops", + "office365": "Office365-REST-Python-Client", } # clean list imports = [ - str( - package_map.get( - x.strip().split(".")[0], x.strip().split(".")[0] - ) - ) + str(package_map.get(x.strip().split(".")[0], x.strip().split(".")[0])) for x in imports if x.strip() != "" ] @@ -239,11 +228,7 @@ def __pip_install(self) -> None: this_out.strip() for this_out in list( chain.from_iterable( - [ - g.split(" ") - for g in built_in_packages.split("\n") - if g != "" - ] + [g.split(" ") for g in built_in_packages.split("\n") if g != ""] ) ) if this_out.strip() != "" @@ -251,9 +236,7 @@ def __pip_install(self) -> None: # remove default python packages from list imports = [ - x.strip() - for x in imports - if x not in cleaned_built_in_packages and x.strip() + x.strip() for x in imports if x not in cleaned_built_in_packages and x.strip() ] # try to install @@ -271,9 +254,7 @@ def __pip_install(self) -> None: + " with command: " + "\n" + cmd, - error_msg="Failed to install imports with command: " - + "\n" - + cmd, + error_msg="Failed to install imports with command: " + "\n" + cmd, ).shell() except BaseException as e: @@ -298,8 +279,7 @@ def __run_script(self) -> None: "connection_string": em_decrypt( external_db.connection_string, app.config["PASS_KEY"] ), - "timeout": external_db.timeout - or app.config["DEFAULT_SQL_TIMEOUT"], + "timeout": external_db.timeout or app.config["DEFAULT_SQL_TIMEOUT"], } elif external_db.database_type.id == 2: # mssql @@ -307,8 +287,7 @@ def __run_script(self) -> None: "connection_string": em_decrypt( external_db.connection_string, app.config["PASS_KEY"] ), - "timeout": external_db.timeout - or app.config["DEFAULT_SQL_TIMEOUT"], + "timeout": external_db.timeout or app.config["DEFAULT_SQL_TIMEOUT"], } elif self.task.source_type_id == 2: # smb file connection = em_smb.connection_json(self.task.source_smb_conn) @@ -371,19 +350,13 @@ def clean_string(text: Optional[Union[str, int, datetime.datetime]]) -> str: "source_type_id": clean_string(self.task.source_type_id), "source_database_id": clean_string(self.task.source_database_id), "source_query_type_id": clean_string(self.task.source_query_type_id), - "source_query_include_header": clean_string( - self.task.source_query_include_header - ), + "source_query_include_header": clean_string(self.task.source_query_include_header), "source_git": clean_string(self.task.source_git), "source_devops": clean_string(self.task.source_devops), "source_url": clean_string(self.task.source_url), - "source_require_sql_output": clean_string( - self.task.source_require_sql_output - ), + "source_require_sql_output": clean_string(self.task.source_require_sql_output), "enable_source_cache": clean_string(self.task.enable_source_cache), - "destination_file_delimiter": clean_string( - self.task.destination_file_delimiter - ), + "destination_file_delimiter": clean_string(self.task.destination_file_delimiter), "destination_file_name": clean_string(self.task.destination_file_name), "destination_ignore_delimiter": clean_string( self.task.destination_ignore_delimiter @@ -391,35 +364,21 @@ def clean_string(text: Optional[Union[str, int, datetime.datetime]]) -> str: "destination_file_line_terminator": clean_string( self.task.destination_file_line_terminator ), - "destination_quote_level_id": clean_string( - self.task.destination_quote_level_id - ), - "destination_create_zip": clean_string( - self.task.destination_create_zip - ), + "destination_quote_level_id": clean_string(self.task.destination_quote_level_id), + "destination_create_zip": clean_string(self.task.destination_create_zip), "destination_zip_name": clean_string(self.task.destination_zip_name), - "destination_file_type_id": clean_string( - self.task.destination_file_type_id - ), + "destination_file_type_id": clean_string(self.task.destination_file_type_id), "email_completion": clean_string(self.task.email_completion), "email_completion_log": clean_string(self.task.email_completion_log), "email_completion_file": clean_string(self.task.email_completion_file), - "email_completion_file_embed": clean_string( - self.task.email_completion_file_embed - ), + "email_completion_file_embed": clean_string(self.task.email_completion_file_embed), "email_completion_dont_send_empty_file": clean_string( self.task.email_completion_dont_send_empty_file ), - "email_completion_recipients": clean_string( - self.task.email_completion_recipients - ), - "email_completion_message": clean_string( - self.task.email_completion_message - ), + "email_completion_recipients": clean_string(self.task.email_completion_recipients), + "email_completion_message": clean_string(self.task.email_completion_message), "email_error": clean_string(self.task.email_error), - "email_error_recipients": clean_string( - self.task.email_error_recipients - ), + "email_error_recipients": clean_string(self.task.email_error_recipients), "email_error_message": clean_string(self.task.email_error_message), "max_retries": clean_string(self.task.max_retries), "est_duration": clean_string(self.task.est_duration), diff --git a/runner/scripts/em_sftp.py b/runner/scripts/em_sftp.py index 0f7c3759..b72ef04f 100644 --- a/runner/scripts/em_sftp.py +++ b/runner/scripts/em_sftp.py @@ -1,6 +1,5 @@ """SFTP connection manager.""" - import csv import fnmatch import os @@ -39,9 +38,11 @@ def connection_key(connection: ConnectionSftp) -> Optional[paramiko.pkey.PKey]: key = paramiko.RSAKey.from_private_key_file( key_file.name, - password=em_decrypt(connection.key_password, app.config["PASS_KEY"]) - if connection.key_password - else None, + password=( + em_decrypt(connection.key_password, app.config["PASS_KEY"]) + if connection.key_password + else None + ), ) return key @@ -81,9 +82,11 @@ def connect(connection: ConnectionSftp) -> Tuple[Transport, SFTPClient]: transport.auth_publickey(connection.username, key, event=None) transport.auth_password( connection.username, - em_decrypt(connection.password, app.config["PASS_KEY"]) - if connection.password - else "", + ( + em_decrypt(connection.password, app.config["PASS_KEY"]) + if connection.password + else "" + ), event=None, ) @@ -147,9 +150,7 @@ def __connect(self) -> Tuple[Transport, SFTPClient]: except ValueError as e: raise RunnerException(self.task, self.run_id, 9, str(e)) - def _walk( - self, directory: str - ) -> Generator[Tuple[str, List[Any], List[str]], None, None]: + def _walk(self, directory: str) -> Generator[Tuple[str, List[Any], List[str]], None, None]: dirs = [] nondirs = [] @@ -185,14 +186,9 @@ def load_data(file_obj: SFTPFile) -> Generator: break yield data - with tempfile.NamedTemporaryFile( - mode="w", delete=False, dir=self.dir - ) as data_file: + with tempfile.NamedTemporaryFile(mode="w+", delete=False, dir=self.dir) as data_file: for data in load_data(sftp_file): - if ( - self.task.source_sftp_ignore_delimiter != 1 - and self.task.source_sftp_delimiter - ): + if self.task.source_sftp_ignore_delimiter != 1 and self.task.source_sftp_delimiter: my_delimiter = self.task.source_sftp_delimiter or "," csv_reader = csv.reader( @@ -280,9 +276,7 @@ def save(self, overwrite: int, file_name: str) -> None: self.conn.chdir(self.__clean_path(self.connection.path or "/")) except BaseException as e: - raise RunnerException( - self.task, self.run_id, 9, f"Failed to change path.\n{e}" - ) + raise RunnerException(self.task, self.run_id, 9, f"Failed to change path.\n{e}") if overwrite != 1: try: @@ -343,6 +337,4 @@ def __close(self) -> None: self.transport.close() except BaseException as e: - raise RunnerException( - self.task, self.run_id, 9, f"Failed to close connection.\n{e}" - ) + raise RunnerException(self.task, self.run_id, 9, f"Failed to close connection.\n{e}") diff --git a/runner/scripts/em_smb.py b/runner/scripts/em_smb.py index 0c556c73..2104b870 100644 --- a/runner/scripts/em_smb.py +++ b/runner/scripts/em_smb.py @@ -39,9 +39,7 @@ def connection_json(connection: SMBConnection) -> Dict: } -def connect( - username: str, password: str, server_name: str, server_ip: str -) -> SMBConnection: +def connect(username: str, password: str, server_name: str, server_ip: str) -> SMBConnection: """Connect to SMB server. After making a connection we save it to redis. Next time we need a connection @@ -137,9 +135,7 @@ def __init__( self.username = self.connection.username self.password = self.connection.password self.server_ip = self.connection.server_ip - self.server_name = ( - self.connection.server_name if self.connection else "Error" - ) + self.server_name = self.connection.server_name if self.connection else "Error" else: # default connection for backups self.share_name = app.config["SMB_DEFAULT_SHARE"].strip("/").strip("\\") @@ -170,9 +166,7 @@ def __connect(self) -> SMBConnection: except ValueError as e: raise RunnerException(self.task, self.run_id, 10, str(e)) - def _walk( - self, directory: str - ) -> Generator[Tuple[str, List[Any], List[str]], None, None]: + def _walk(self, directory: str) -> Generator[Tuple[str, List[Any], List[str]], None, None]: dirs = [] nondirs = [] @@ -191,10 +185,8 @@ def _walk( new_path = str(Path(directory).joinpath(dirname)) yield from self._walk(new_path) - def __load_file(self, file_name: str, index: int, length: int) -> IO[str]: - RunnerLog( - self.task, self.run_id, 10, f"({index} of {length}) downloading {file_name}" - ) + def __load_file(self, file_name: str, index: int, length: int) -> IO[Any]: + RunnerLog(self.task, self.run_id, 10, f"({index} of {length}) downloading {file_name}") director = urllib.request.build_opener(SMBHandler) @@ -214,14 +206,9 @@ def load_data(file_obj: TextIOWrapper) -> Generator: # send back contents - with tempfile.NamedTemporaryFile( - mode="wb+", delete=False, dir=self.dir - ) as data_file: + with tempfile.NamedTemporaryFile(mode="wb+", delete=False, dir=self.dir) as data_file: for data in load_data(open_file_for_read): - if ( - self.task.source_smb_ignore_delimiter != 1 - and self.task.source_smb_delimiter - ): + if self.task.source_smb_ignore_delimiter != 1 and self.task.source_smb_delimiter: my_delimiter = self.task.source_smb_delimiter or "," csv_reader = csv.reader( @@ -310,8 +297,8 @@ def save(self, overwrite: int, file_name: str) -> str: # type: ignore[return] Path( ( Path( - sanitize_filename(self.subfolder) - / sanitize_filename(self.task.project.name or "") + Path(sanitize_filename(self.subfolder or "")) + / Path(sanitize_filename(self.task.project.name or "")) ) if self.subfolder else Path(sanitize_filename(self.task.project.name or "")) @@ -358,16 +345,12 @@ def save(self, overwrite: int, file_name: str) -> str: # type: ignore[return] except BaseException: pass - with open( - str(self.dir.joinpath(file_name)), "rb", buffering=0 - ) as file_obj: + with open(str(self.dir.joinpath(file_name)), "rb", buffering=0) as file_obj: uploaded_size = self.conn.storeFile( self.share_name, dest_path, file_obj, timeout=120 ) - server_name = ( - "backup" if self.connection is None else self.connection.server_name - ) + server_name = "backup" if self.connection is None else self.connection.server_name RunnerLog( self.task, diff --git a/runner/scripts/em_smtp.py b/runner/scripts/em_smtp.py index a553eff4..aa21caf9 100644 --- a/runner/scripts/em_smtp.py +++ b/runner/scripts/em_smtp.py @@ -73,16 +73,12 @@ def __send_ssms(self) -> None: if app.config.get("SMTP_USE_TLS", False): mail_server.starttls() mail_server.ehlo() - - if app.config.get("SMTP_USERNAME"): mail_server.login( app.config["SMTP_USERNAME"], app.config.get("SMTP_PASSWORD", None), ) - mail_server.sendmail( - app.config["SMTP_SENDER_EMAIL"], phone, self.msg.as_string() - ) + mail_server.sendmail(app.config["SMTP_SENDER_EMAIL"], phone, self.msg.as_string()) mail_server.quit() log = TaskLog( @@ -112,9 +108,7 @@ def __send_mail(self) -> None: self.msg = MIMEMultipart() self.msg["From"] = email.utils.formataddr( # type: ignore[attr-defined] ( - email.header.Header(app.config["SMTP_SENDER_NAME"], "utf-8").encode( - "utf-8" - ), + email.header.Header(app.config["SMTP_SENDER_NAME"], "utf-8").encode("utf-8"), app.config["SMTP_SENDER_EMAIL"], ) ) @@ -145,6 +139,13 @@ def __send_mail(self) -> None: ) mail_server.ehlo() + if app.config.get("SMTP_USE_TLS", False): + mail_server.starttls() + mail_server.ehlo() + mail_server.login( + app.config["SMTP_USERNAME"], + app.config.get("SMTP_PASSWORD", None), + ) mail_server.sendmail( app.config["SMTP_SENDER_EMAIL"], self.mailto, self.msg.as_string() ) diff --git a/runner/scripts/em_sqlserver.py b/runner/scripts/em_sqlserver.py index 0639a3a5..2cbe7d18 100644 --- a/runner/scripts/em_sqlserver.py +++ b/runner/scripts/em_sqlserver.py @@ -4,6 +4,7 @@ import itertools import sys import tempfile +import time from pathlib import Path from typing import IO, Any, Generator, List, Optional, Tuple @@ -108,24 +109,51 @@ def run(self, query: str) -> Tuple[int, List[IO[str]]]: Returns a path or raises an exception. """ - self.cur.execute(query) - - with tempfile.NamedTemporaryFile( - mode="w+", newline="", delete=False, dir=self.dir - ) as data_file: - writer = csv.writer(data_file) - - if self.task.source_query_include_header: - writer.writerow( - [i[0] for i in self.cur.description] if self.cur.description else [] + # lets retry the runs if there are operational errors. + # such as connection reset + retries = 0 + max_retries = 3 + sleep_time = 10 + while retries < max_retries: + try: + self.cur.execute(query) + + with tempfile.NamedTemporaryFile( + mode="w+", newline="", delete=False, dir=self.dir + ) as data_file: + writer = csv.writer(data_file) + + if self.task.source_query_include_header: + writer.writerow( + [i[0] for i in self.cur.description] if self.cur.description else [] + ) + + for row in self.__rows(): + writer.writerow(row) + + self.__close() + + if self.task.source_require_sql_output == 1 and self.row_count == 0: + raise ValueError("SQL output is required but no records returned.") + + return self.row_count, [data_file] + + except pyodbc.OperationalError as err: + retries += 1 + self.__close() + if retries >= max_retries: + raise ValueError("pyodbc operationalError when trying to connect to db") + log = TaskLog( + task_id=self.task.id, + job_id=self.run_id, + status_id=20, + message=f"Query failed with error: {err} It will retry again. Retry {retries} out of {max_retries}", ) - - for row in self.__rows(): - writer.writerow(row) - - self.__close() - - if self.task.source_require_sql_output == 1 and self.row_count == 0: - raise ValueError("SQL output is required but no records returned.") - - return self.row_count, [data_file] + db.session.add(log) + db.session.commit() + time.sleep(sleep_time) # sleep for 10 seconds + sleep_time += 20 + # reconnect + self.conn, self.cur = self.__connect() + # this should never hit but it makes mypy happy. + return 0, [] diff --git a/runner/scripts/em_ssh.py b/runner/scripts/em_ssh.py index 09989ca4..cb215d8e 100644 --- a/runner/scripts/em_ssh.py +++ b/runner/scripts/em_ssh.py @@ -1,4 +1,5 @@ """SSH connection handler.""" + import select import sys import time @@ -73,18 +74,14 @@ def __connect(self) -> paramiko.SSHClient: try: return connect(self.connection) except BaseException as e: - raise RunnerException( - self.task, self.run_id, 19, f"Failed to connect.\n{e}" - ) + raise RunnerException(self.task, self.run_id, 19, f"Failed to connect.\n{e}") def __close(self) -> None: try: self.session.close() except BaseException as e: - raise RunnerException( - self.task, self.run_id, 19, f"Failed to disconnect.\n{e}" - ) + raise RunnerException(self.task, self.run_id, 19, f"Failed to disconnect.\n{e}") def run(self) -> None: """Run an SSH Command. @@ -113,11 +110,7 @@ def run(self) -> None: stderr_data = b"" stdout_data = b"" - while ( - not channel.closed - or channel.recv_ready() - or channel.recv_stderr_ready() - ): + while not channel.closed or channel.recv_ready() or channel.recv_stderr_ready(): got_chunk = False readq, _, _ = select.select([stdout.channel], [], [], timeout) @@ -126,9 +119,7 @@ def run(self) -> None: stdout_data += stdout.channel.recv(len(chunk.in_buffer)) got_chunk = True if chunk.recv_stderr_ready(): - stderr_data += stderr.channel.recv_stderr( - len(chunk.in_stderr_buffer) - ) + stderr_data += stderr.channel.recv_stderr(len(chunk.in_stderr_buffer)) got_chunk = True if ( @@ -163,8 +154,6 @@ def run(self) -> None: ) except BaseException as e: - raise RunnerException( - self.task, self.run_id, 19, f"Failed to run command.\n{e}" - ) + raise RunnerException(self.task, self.run_id, 19, f"Failed to run command.\n{e}") self.__close() diff --git a/runner/scripts/smb_fix.py b/runner/scripts/smb_fix.py index 7cdaaede..4c1297c3 100644 --- a/runner/scripts/smb_fix.py +++ b/runner/scripts/smb_fix.py @@ -1,4 +1,5 @@ """Update to an older version of https://github.com/miketeo/pysmb. Waiting for next release.""" + # flake8: noqa # type: ignore # mypy: ignore-errors @@ -134,9 +135,7 @@ def smb_open(self, req): return addinfourl(fp, headers, req.get_full_url()) except Exception as ex: - raise urllib.error.URLError("smb error: %s" % ex).with_traceback( - sys.exc_info()[2] - ) + raise urllib.error.URLError("smb error: %s" % ex).with_traceback(sys.exc_info()[2]) def createTempFile(self): return tempfile.TemporaryFile() diff --git a/runner/scripts/task_runner.py b/runner/scripts/task_runner.py index acea1e1e..ff9ef104 100644 --- a/runner/scripts/task_runner.py +++ b/runner/scripts/task_runner.py @@ -172,48 +172,66 @@ def __init__(self, task_id: int) -> None: redis_client.delete(f"runner_{task_id}_attempt") task.status_id = 4 task.est_duration = (datetime.datetime.now() - task.last_run).total_seconds() - # if this is a sequence job, trigger the next job. if task.project.sequence_tasks == 1: - task_id_list = [ - x.id - for x in Task.query.filter_by(enabled=1) - .filter_by(project_id=task.project_id) - .order_by(Task.order.asc(), Task.name.asc()) # type: ignore[union-attr] + task_list = ( + db.session.execute( + db.select(Task) + .filter_by(enabled=1, project_id=task.project_id) + .where(Task.order > task.order) + .order_by(Task.order.asc()) + ) + .scalars() .all() - ] + ) + + # check if any are still running in same order. + runners = db.session.execute( + db.select(Task) + .filter_by(enabled=1, order=task.order, project_id=task.project_id) + # 4 is completed. This also filters out error tasks + .where(Task.status_id != 4) + .where(Task.id != task.id) + ).scalar() + # potentially the task was disabled while running # and removed from list. when that happens we should # quit. - if task.id in task_id_list: - next_task_id = task_id_list[ - task_id_list.index(task.id) + 1 : task_id_list.index(task.id) + 2 - ] - if next_task_id: - # trigger next task - RunnerLog( - self.task, - self.run_id, - 8, - f"Triggering run of next sequence job: {next_task_id}.", - ) - - next_task = Task.query.filter_by(id=next_task_id[0]).first() - - RunnerLog( - next_task, - None, - 8, - f"Run triggered by previous sequence job: {task.id}.", - ) + # also make sure everything is completed before + # going on to starting next tasks. + if ( + db.session.execute(db.select(Task).filter_by(enabled=1, id=task.id)).scalar() + and not runners + and task_list + ): + # get the next rank from the task_list. + task_sequence = task_list[0].order + + # kick off all the tasks in task_list that match the next rank. + for tsk in task_list: + if tsk.order == task_sequence: + # trigger next tasks + RunnerLog( + self.task, + self.run_id, + 8, + f"Triggering run of next sequence job: {tsk.id}.", + ) - requests.get( - app.config["RUNNER_HOST"] + "/" + str(next_task_id[0]), - timeout=60, - ) + RunnerLog( + tsk, + None, + 8, + f"Run triggered by previous sequence job: {task.id}.", + ) - else: - RunnerLog(self.task, self.run_id, 8, "Sequence completed!") + requests.get( + app.config["RUNNER_HOST"] + "/" + str(tsk.id), + timeout=60, + ) + # if there isn't anything in task list, add log that sequence is completed. + elif not task_list: + RunnerLog(self.task, self.run_id, 8, "Sequence completed!") task.last_run_job_id = None task.last_run = datetime.datetime.now() @@ -227,13 +245,9 @@ def __get_source(self) -> None: RunnerLog(self.task, self.run_id, 8, "Loading query...") query = self.__get_query() except BaseException as e: - raise RunnerException( - self.task, self.run_id, 8, f"Failed to load query.\n{e}" - ) + raise RunnerException(self.task, self.run_id, 8, f"Failed to load query.\n{e}") - RunnerLog( - self.task, self.run_id, 8, "Starting query run, waiting for results..." - ) + RunnerLog(self.task, self.run_id, 8, "Starting query run, waiting for results...") if external_db.database_type.id == 1: # postgres try: @@ -243,8 +257,7 @@ def __get_source(self) -> None: connection=em_decrypt( external_db.connection_string, app.config["PASS_KEY"] ), - timeout=external_db.timeout - or app.config["DEFAULT_SQL_TIMEOUT"], + timeout=external_db.timeout or app.config["DEFAULT_SQL_TIMEOUT"], directory=self.temp_path, ).run(query) @@ -264,8 +277,7 @@ def __get_source(self) -> None: connection=em_decrypt( external_db.connection_string, app.config["PASS_KEY"] ), - timeout=external_db.timeout - or app.config["DEFAULT_SQL_TIMEOUT"], + timeout=external_db.timeout or app.config["DEFAULT_SQL_TIMEOUT"], directory=self.temp_path, ).run(query) @@ -306,9 +318,7 @@ def __get_source(self) -> None: elif self.task.source_type_id == 2: # smb file if self.task.source_smb_file: RunnerLog(self.task, self.run_id, 10, "Loading data from server...") - file_name = self.param_loader.insert_file_params( - self.task.source_smb_file - ) + file_name = self.param_loader.insert_file_params(self.task.source_smb_file) file_name = DateParsing( task=self.task, run_id=self.run_id, @@ -327,9 +337,7 @@ def __get_source(self) -> None: elif self.task.source_type_id == 3: # sftp file if self.task.source_sftp_file: RunnerLog(self.task, self.run_id, 9, "Loading data from server...") - file_name = self.param_loader.insert_file_params( - self.task.source_sftp_file - ) + file_name = self.param_loader.insert_file_params(self.task.source_sftp_file) file_name = DateParsing( task=self.task, run_id=self.run_id, @@ -348,9 +356,7 @@ def __get_source(self) -> None: elif self.task.source_type_id == 4: # ftp file if self.task.source_ftp_file: RunnerLog(self.task, self.run_id, 13, "Loading data from server...") - file_name = self.param_loader.insert_file_params( - self.task.source_ftp_file - ) + file_name = self.param_loader.insert_file_params(self.task.source_ftp_file) file_name = DateParsing( task=self.task, run_id=self.run_id, @@ -390,9 +396,7 @@ def __get_query(self) -> str: query = self.source_loader.source() elif self.task.source_query_type_id == 2: # smb - file_name = self.param_loader.insert_file_params( - self.task.source_query_file - ) + file_name = self.param_loader.insert_file_params(self.task.source_query_file) file_name = DateParsing( task=self.task, run_id=self.run_id, @@ -428,10 +432,7 @@ def __process(self) -> None: processing_script_name = self.temp_path / (self.run_id + ".py") my_file = "" - if ( - self.task.processing_type_id == 1 - and self.task.processing_smb_id is not None - ): + if self.task.processing_type_id == 1 and self.task.processing_smb_id is not None: file_name = self.param_loader.insert_file_params(self.task.source_smb_file) file_name = DateParsing( task=self.task, @@ -450,13 +451,8 @@ def __process(self) -> None: .name ).read_text("utf8") - elif ( - self.task.processing_type_id == 2 - and self.task.processing_sftp_id is not None - ): - file_name = self.param_loader.insert_file_params( - self.task.processing_sftp_file - ) + elif self.task.processing_type_id == 2 and self.task.processing_sftp_id is not None: + file_name = self.param_loader.insert_file_params(self.task.processing_sftp_file) file_name = DateParsing( task=self.task, run_id=self.run_id, @@ -474,13 +470,8 @@ def __process(self) -> None: .name ).read_text("utf8") - elif ( - self.task.processing_type_id == 3 - and self.task.processing_ftp_id is not None - ): - file_name = self.param_loader.insert_file_params( - self.task.processing_ftp_file - ) + elif self.task.processing_type_id == 3 and self.task.processing_ftp_id is not None: + file_name = self.param_loader.insert_file_params(self.task.processing_ftp_file) file_name = DateParsing( task=self.task, run_id=self.run_id, @@ -500,10 +491,7 @@ def __process(self) -> None: elif self.task.processing_type_id == 4 and self.task.processing_git is not None: # if a dir is specified then download all files - if ( - self.task.processing_command is not None - and self.task.processing_command != "" - ): + if self.task.processing_command is not None and self.task.processing_command != "": try: split_url = re.split("#|@", self.task.processing_git) branch = None @@ -518,12 +506,8 @@ def __process(self) -> None: base_url, flags=re.IGNORECASE, ) - .replace( - "", urllib.parse.quote(app.config["GIT_USERNAME"]) - ) - .replace( - "", urllib.parse.quote(app.config["GIT_PASSWORD"]) - ) + .replace("", urllib.parse.quote(app.config["GIT_USERNAME"])) + .replace("", urllib.parse.quote(app.config["GIT_PASSWORD"])) ) cmd = ( @@ -572,8 +556,7 @@ def __process(self) -> None: run_id=self.run_id, cmd=cmd, success_msg="Repo cloned", - error_msg="Failed to clone repo: %s" - % (self.task.processing_url,), + error_msg="Failed to clone repo: %s" % (self.task.processing_url,), ).shell() processing_script_name = str(self.temp_path) + ( @@ -589,26 +572,16 @@ def __process(self) -> None: else: my_file = self.source_loader.web_url(self.task.processing_url) - elif ( - self.task.processing_type_id == 6 and self.task.processing_code is not None - ): + elif self.task.processing_type_id == 6 and self.task.processing_code is not None: my_file = self.task.processing_code - elif ( - self.task.processing_type_id == 7 - and self.task.processing_devops is not None - ): + elif self.task.processing_type_id == 7 and self.task.processing_devops is not None: # if a dir is specified then download all files - if ( - self.task.processing_command is not None - and self.task.processing_command != "" - ): + if self.task.processing_command is not None and self.task.processing_command != "": try: token = app.config["DEVOPS_TOKEN"] creds = cd.BasicAuthentication("", token) - connection = Connection( - base_url=app.config["DEVOPS_URL"], creds=creds - ) + connection = Connection(base_url=app.config["DEVOPS_URL"], creds=creds) # Get a client (the "core" client provides access to projects, teams, etc) core_client = connection.clients.get_core_client() @@ -625,18 +598,14 @@ def __process(self) -> None: rf"\.(?:com\/{org_name[0]}\/{project[0]}\/_git)\/(.+?)\?", url ) # need this to get the projects id - projects = [ - i for i in get_projects_response if (i.name == project[0]) - ] + projects = [i for i in get_projects_response if (i.name == project[0])] path = re.findall(r"(path[=])\/(.+?)(&|$)", url) # if branch is specified, we need to get that, else pass in main branch. this_branch = re.findall(r"(version[=]GB)(.+?)$", url) version = AttributeDict( { - "version": ( - "main" if len(this_branch) == 0 else this_branch[0][1] - ), + "version": ("main" if len(this_branch) == 0 else this_branch[0][1]), "version_type": 0, "version_options": 0, } @@ -699,9 +668,7 @@ def __process(self) -> None: # pylint: disable=broad-except except BaseException as e: - raise RunnerException( - self.task, self.run_id, 8, f"Processing script failure:\n{e}" - ) + raise RunnerException(self.task, self.run_id, 8, f"Processing script failure:\n{e}") try: # run processing script @@ -710,15 +677,15 @@ def __process(self) -> None: run_id=self.run_id, directory=self.temp_path, source_files=self.source_files, - script=self.task.processing_command or processing_script_name.name - if self.task.processing_type_id != 6 # source code - else processing_script_name.name, + script=( + self.task.processing_command or processing_script_name.name + if self.task.processing_type_id != 6 # source code + else processing_script_name.name + ), params=self.param_loader, ).run() except BaseException as e: - raise RunnerException( - self.task, self.run_id, 8, f"Processing script failure:\n{e}" - ) + raise RunnerException(self.task, self.run_id, 8, f"Processing script failure:\n{e}") # allow processor to rename file if output: @@ -746,8 +713,8 @@ def __process(self) -> None: os.link(data_file.name, original_name) - data_file.name = original_name # type: ignore[misc] - self.source_files.append(data_file) + data_file.name = original_name + self.source_files.append(data_file) # type: ignore except BaseException as e: raise RunnerException( @@ -825,10 +792,7 @@ def __store_files(self) -> None: # send to sftp if self.task.destination_sftp == 1 and self.task.destination_sftp_conn: - if ( - self.task.destination_sftp_dont_send_empty_file == 1 - and this_file_size == 0 - ): + if self.task.destination_sftp_dont_send_empty_file == 1 and this_file_size == 0: RunnerLog( self.task, self.run_id, @@ -848,10 +812,7 @@ def __store_files(self) -> None: # send to ftp if self.task.destination_ftp == 1 and self.task.destination_ftp_conn: - if ( - self.task.destination_ftp_dont_send_empty_file == 1 - and this_file_size == 0 - ): + if self.task.destination_ftp_dont_send_empty_file == 1 and this_file_size == 0: RunnerLog( self.task, self.run_id, @@ -871,10 +832,7 @@ def __store_files(self) -> None: # save to smb if self.task.destination_smb == 1 and self.task.destination_smb_conn: - if ( - self.task.destination_smb_dont_send_empty_file == 1 - and this_file_size == 0 - ): + if self.task.destination_smb_dont_send_empty_file == 1 and this_file_size == 0: RunnerLog( self.task, self.run_id, @@ -911,19 +869,17 @@ def __send_email(self) -> None: try: template = env.get_template("email/email.html.j2") except BaseException as e: - raise RunnerException( - self.task, self.run_id, 8, f"Failed to get email template.\n{e}" - ) + raise RunnerException(self.task, self.run_id, 8, f"Failed to get email template.\n{e}") # success email if self.task.email_completion == 1 and ( - (len(error_logs) < 1 and self.task.email_error == 1) - or self.task.email_error != 1 + (len(error_logs) < 1 and self.task.email_error == 1) or self.task.email_error != 1 ): RunnerLog(self.task, self.run_id, 8, "Sending completion email.") output: List[List[str]] = [] empty = 0 + num_lines = 0 attachments: List[str] = [] if self.task.email_completion_file == 1 and len(self.output_files) > 0: @@ -931,16 +887,24 @@ def __send_email(self) -> None: if self.task.email_completion_file_embed == 1: with open(output_file, newline="") as csvfile: output.extend(list(csv.reader(csvfile))) - + with open(output_file, "r") as f: + num_lines = len(f.readlines()) # check attachement file size if the task # should not send blank files if ( self.task.email_completion_dont_send_empty_file == 1 and output_file # if query and data is blank, or other types and file is 0 - and os.path.getsize(output_file) == 0 + # don't attach file if it is just the header. + and ( + os.path.getsize(output_file) == 0 + or (self.task.source_query_include_header == 1 and num_lines <= 1) + ) ): empty = 1 + # there may be multiple output files. If one isn't empty, still include it. + else: + empty = 0 attachments.append(output_file) @@ -961,9 +925,7 @@ def __send_email(self) -> None: ) if self.task.email_completion_subject: - subject = self.param_loader.insert_file_params( - self.task.email_completion_subject - ) + subject = self.param_loader.insert_file_params(self.task.email_completion_subject) subject = DateParsing(self.task, None, subject).string_to_date() try: @@ -999,6 +961,4 @@ def __clean_up(self) -> None: # pylint: disable=broad-except except BaseException as e: - raise RunnerException( - self.task, self.run_id, 8, f"Failed to clean up job.\n{e}" - ) + raise RunnerException(self.task, self.run_id, 8, f"Failed to clean up job.\n{e}") diff --git a/runner/tests/__init__.py b/runner/tests/__init__.py index 3a49a28b..ddedae7e 100644 --- a/runner/tests/__init__.py +++ b/runner/tests/__init__.py @@ -5,6 +5,7 @@ poetry run pytest runner/tests/ \ --cov --cov-append --cov-branch --cov-report=term-missing --disable-warnings """ + import sys from pathlib import Path diff --git a/runner/tests/conftest.py b/runner/tests/conftest.py index 40d32a76..d5123d34 100644 --- a/runner/tests/conftest.py +++ b/runner/tests/conftest.py @@ -1,4 +1,5 @@ """Setyp pytest.""" + import os import pytest diff --git a/runner/tests/test_filters.py b/runner/tests/test_filters.py index 930c4d8c..0e8a192c 100644 --- a/runner/tests/test_filters.py +++ b/runner/tests/test_filters.py @@ -11,6 +11,7 @@ """ + import datetime from pytest import fixture diff --git a/runner/tests/test_scripts_code.py b/runner/tests/test_scripts_code.py index e6d1ff6d..1e4efe3d 100644 --- a/runner/tests/test_scripts_code.py +++ b/runner/tests/test_scripts_code.py @@ -11,7 +11,6 @@ """ - from pytest import fixture from runner.extensions import db diff --git a/runner/tests/test_scripts_date.py b/runner/tests/test_scripts_date.py index 68e09451..d2187d7a 100644 --- a/runner/tests/test_scripts_date.py +++ b/runner/tests/test_scripts_date.py @@ -11,7 +11,6 @@ """ - import calendar import datetime @@ -404,9 +403,7 @@ def test_complex_patterns(client_fixture: fixture) -> None: my_date_string = DateParsing(task, None, "%m-6-%d-30-%Y+1-lastday").string_to_date() - new_date = datetime.datetime.now() + relativedelta.relativedelta( - months=-6, days=-30, years=1 - ) + new_date = datetime.datetime.now() + relativedelta.relativedelta(months=-6, days=-30, years=1) last_day = calendar.monthrange( int(new_date.strftime("%Y")), @@ -418,13 +415,9 @@ def test_complex_patterns(client_fixture: fixture) -> None: task, None, "%m-6-%d-30-%Y+1-lastday_something_cool_%m+6-%d+30-%Y-1-lastday" ).string_to_date() - new_date = datetime.datetime.now() + relativedelta.relativedelta( - months=-6, days=-30, years=1 - ) + new_date = datetime.datetime.now() + relativedelta.relativedelta(months=-6, days=-30, years=1) - last_day = calendar.monthrange( - int(new_date.strftime("%Y")), int(new_date.strftime("%m")) - )[1] + last_day = calendar.monthrange(int(new_date.strftime("%Y")), int(new_date.strftime("%m")))[1] second_new_date = datetime.datetime.now() + relativedelta.relativedelta( months=6, days=30, years=-1 @@ -436,6 +429,4 @@ def test_complex_patterns(client_fixture: fixture) -> None: assert my_date_string == new_date.strftime("%m-%d-%Y-") + str( last_day - ) + "_something_cool_" + second_new_date.strftime("%m-%d-%Y-") + str( - second_last_day - ) + ) + "_something_cool_" + second_new_date.strftime("%m-%d-%Y-") + str(second_last_day) diff --git a/runner/tests/test_scripts_postgres.py b/runner/tests/test_scripts_postgres.py index 1f60c7b4..16bf579c 100644 --- a/runner/tests/test_scripts_postgres.py +++ b/runner/tests/test_scripts_postgres.py @@ -10,6 +10,7 @@ --cov --cov-append --cov-branch --cov-report=term-missing --disable-warnings """ + from pathlib import Path import pytest @@ -47,9 +48,7 @@ def test_connection_failure(client_fixture: fixture) -> None: temp_dir.mkdir(parents=True, exist_ok=True) with pytest.raises(ValueError) as e: - pg = Postgres( - task, None, str(task.source_database_conn.connection_string), 90, temp_dir - ) + pg = Postgres(task, None, str(task.source_database_conn.connection_string), 90, temp_dir) assert "Failed to connect to database" in e assert 'missing "=" after "asdf"' in e diff --git a/runner/tests/test_scripts_sftp.py b/runner/tests/test_scripts_sftp.py index bbce4263..3a22d470 100644 --- a/runner/tests/test_scripts_sftp.py +++ b/runner/tests/test_scripts_sftp.py @@ -10,6 +10,7 @@ --cov --cov-append --cov-branch --cov-report=term-missing --disable-warnings """ + import sys import tempfile from pathlib import Path diff --git a/runner/tests/test_scripts_sqlserver.py b/runner/tests/test_scripts_sqlserver.py index 84fba902..ba6a9e2a 100644 --- a/runner/tests/test_scripts_sqlserver.py +++ b/runner/tests/test_scripts_sqlserver.py @@ -48,9 +48,7 @@ def test_connection_failure(client_fixture: fixture) -> None: temp_dir.mkdir(parents=True, exist_ok=True) with pytest.raises(ValueError) as e: - pg = SqlServer( - task, None, str(task.source_database_conn.connection_string), 90, temp_dir - ) + pg = SqlServer(task, None, str(task.source_database_conn.connection_string), 90, temp_dir) assert "Failed to connection to database." in e assert "Neither DSN nor SERVER keyword supplied" in e diff --git a/runner/tests/test_scripts_system.py b/runner/tests/test_scripts_system.py index 29802606..1ad5aff7 100644 --- a/runner/tests/test_scripts_system.py +++ b/runner/tests/test_scripts_system.py @@ -11,7 +11,6 @@ """ - import pytest from pytest import fixture diff --git a/runner/web/__init__.py b/runner/web/__init__.py index a1b3397c..e90350ac 100644 --- a/runner/web/__init__.py +++ b/runner/web/__init__.py @@ -1,2 +1,3 @@ """Import web modules.""" + print(__name__) # noqa: T201 diff --git a/runner/web/web.py b/runner/web/web.py index 1e8978b7..415a6cfa 100644 --- a/runner/web/web.py +++ b/runner/web/web.py @@ -10,6 +10,7 @@ from flask import jsonify from jinja2 import Environment, PackageLoader, select_autoescape from pathvalidate import sanitize_filename +from werkzeug.wrappers import Response from runner import executor from runner.model import ( @@ -36,6 +37,7 @@ from runner.scripts.em_sqlserver import connect as sql_connect from runner.scripts.em_ssh import connect as ssh_connect from runner.scripts.task_runner import Runner +from runner.web.filters import datetime_format web_bp = Blueprint("web_bp", __name__) @@ -43,19 +45,19 @@ loader=PackageLoader("runner", "templates"), autoescape=select_autoescape(["html", "xml"]), ) - +env.filters["datetime_format"] = datetime_format sys.path.append(str(Path(__file__).parents[2]) + "/scripts") from crypto import em_decrypt @web_bp.route("/api") -def alive() -> dict: +def alive() -> Response: """Check API status.""" return jsonify({"status": "alive"}) @web_bp.route("/api/send_ftp///") -def send_ftp(task_id: int, run_id: int, file_id: int) -> dict: +def send_ftp(task_id: int, run_id: int, file_id: int) -> Response: """Send file to FPT server specified in the task. File is loaded from the backup SMB file server into a tempfile. @@ -99,7 +101,7 @@ def send_ftp(task_id: int, run_id: int, file_id: int) -> dict: @web_bp.route("/api/send_sftp//") -def send_sftp(run_id: int, file_id: int) -> dict: +def send_sftp(run_id: int, file_id: int) -> Response: """Send file to SFPT server specified in the task. File is loaded from the backup SMB file server into a tempfile. @@ -146,7 +148,7 @@ def send_sftp(run_id: int, file_id: int) -> dict: @web_bp.route("/api/send_smb//") -def send_smb(run_id: int, file_id: int) -> dict: +def send_smb(run_id: int, file_id: int) -> Response: """Send file to SMB server specified in the task. File is loaded from the backup SMB file server into a tempfile. @@ -192,8 +194,8 @@ def send_smb(run_id: int, file_id: int) -> dict: return jsonify({"error": str(e)}) -@web_bp.route("/api/send_email///") -def send_email(run_id: int, file_id: int) -> dict: +@web_bp.route("/api/send_email//") +def send_email(run_id: int, file_id: int) -> Response: """Send file to email address specified in the task. File is loaded from the backup SMB file server into a tempfile. @@ -232,12 +234,14 @@ def send_email(run_id: int, file_id: int) -> dict: run_id=str(run_id), recipients=task.email_completion_recipients, short_message=f"Atlas Hub: {task.name} data emailed.", - subject="(Manual Send) Project: " - + task.project.name - + " / Task: " - + task.name, + subject="(Manual Send) Project: " + task.project.name + " / Task: " + task.name, message=template.render( - task=task, success=1, date=date, logs=[], org=app.config["ORG_NAME"] + task=task, + success=1, + date=date, + logs=[], + host=app.config["WEB_HOST"], + org=app.config["ORG_NAME"], ), attachments=[x.name for x in downloaded_files], ) @@ -250,7 +254,7 @@ def send_email(run_id: int, file_id: int) -> dict: @web_bp.route("/api/") -def run(task_id: int) -> dict: +def run(task_id: int) -> Response: """Run specified task.""" executor.submit(Runner, task_id) @@ -258,7 +262,7 @@ def run(task_id: int) -> dict: @web_bp.route("/api//source_code") -def task_get_source_code(task_id: int) -> dict: +def task_get_source_code(task_id: int) -> Response: """Get source code for a task.""" try: task = Task.query.filter_by(id=task_id).first() @@ -281,7 +285,7 @@ def task_get_source_code(task_id: int) -> dict: @web_bp.route("/api//processing_code") -def task_get_processing_git_code(task_id: int) -> dict: +def task_get_processing_git_code(task_id: int) -> Response: """Get processing code for a task.""" try: task = Task.query.filter_by(id=task_id).first() @@ -299,9 +303,7 @@ def task_get_processing_git_code(task_id: int) -> dict: # if there is a branch we need rearrange the url. branch = re.findall(r"(&version[=]GB.+?)$", task.processing_devops) url = ( - re.sub( - (branch[0] if len(branch) > 0 else ""), "", task.processing_devops - ) + re.sub((branch[0] if len(branch) > 0 else ""), "", task.processing_devops) + "/" + task.processing_command + (branch[0] if len(branch) > 0 else "") @@ -314,7 +316,7 @@ def task_get_processing_git_code(task_id: int) -> dict: @web_bp.route("/api/file/") -def get_task_file_download(file_id: int) -> dict: +def get_task_file_download(file_id: int) -> Response: """Download file from SMB backup server.""" my_file = TaskFile.query.filter_by(id=file_id).first() task = my_file.task @@ -362,24 +364,18 @@ def database_online(database_id: int) -> str: database_connection = ConnectionDatabase.query.filter_by(id=database_id).first() if database_connection.type_id == 2: conn, _ = sql_connect( - em_decrypt( - database_connection.connection_string, app.config["PASS_KEY"] - ).strip(), + em_decrypt(database_connection.connection_string, app.config["PASS_KEY"]).strip(), database_connection.timeout or app.config["DEFAULT_SQL_TIMEOUT"], ) conn.close() elif database_connection.type_id == 3: conn, _ = jdbc_connect( - em_decrypt( - database_connection.connection_string, app.config["PASS_KEY"] - ).strip(), + em_decrypt(database_connection.connection_string, app.config["PASS_KEY"]).strip(), ) conn.close() else: conn, _ = pg_connect( - em_decrypt( - database_connection.connection_string, app.config["PASS_KEY"] - ).strip(), + em_decrypt(database_connection.connection_string, app.config["PASS_KEY"]).strip(), database_connection.timeout or app.config["DEFAULT_SQL_TIMEOUT"], ) conn.close() diff --git a/scheduler/__init__.py b/scheduler/__init__.py index 098bdcd7..ce51a944 100644 --- a/scheduler/__init__.py +++ b/scheduler/__init__.py @@ -41,7 +41,6 @@ """ - import contextlib import logging import os diff --git a/scheduler/events.py b/scheduler/events.py index f3e3e2e1..7e75b1f1 100644 --- a/scheduler/events.py +++ b/scheduler/events.py @@ -54,9 +54,7 @@ def job_missed(event: JobEvent) -> None: if re.match(r"^\d+-\d+-.+?$", event.job_id): _, task_id = event.job_id.split("-")[:2] - ex_time = ( - datetime.datetime.now(datetime.timezone.utc) - event.scheduled_run_time - ) + ex_time = datetime.datetime.now(datetime.timezone.utc) - event.scheduled_run_time if Task.query.filter_by(id=task_id).first(): log = TaskLog( @@ -85,10 +83,7 @@ def job_error(event: JobEvent) -> None: # only add logs for valid tasks if task: - ex_time = ( - datetime.datetime.now(datetime.timezone.utc) - - event.scheduled_run_time - ) + ex_time = datetime.datetime.now(datetime.timezone.utc) - event.scheduled_run_time log = TaskLog( task_id=task_id, @@ -122,10 +117,7 @@ def job_executed(event: JobExecutionEvent) -> None: # only log valid tasks if task: - ex_time = ( - datetime.datetime.now(datetime.timezone.utc) - - event.scheduled_run_time - ) + ex_time = datetime.datetime.now(datetime.timezone.utc) - event.scheduled_run_time log = TaskLog( task_id=task_id, diff --git a/scheduler/extensions.py b/scheduler/extensions.py index de7a2fc1..f63d1919 100644 --- a/scheduler/extensions.py +++ b/scheduler/extensions.py @@ -13,8 +13,47 @@ """ +import datetime + from flask_apscheduler import APScheduler from flask_sqlalchemy import SQLAlchemy +from sqlalchemy import String +from sqlalchemy.orm import DeclarativeBase, mapped_column, registry +from sqlalchemy.sql import functions +from typing_extensions import Annotated + +str_5 = Annotated[str, 5] +str_10 = Annotated[str, 10] +str_30 = Annotated[str, 30] +str_120 = Annotated[str, 120] +str_200 = Annotated[str, 200] +str_400 = Annotated[str, 400] +str_500 = Annotated[str, 500] +str_1000 = Annotated[str, 1000] +str_8000 = Annotated[str, 8000] +intpk = Annotated[int, mapped_column(primary_key=True, index=True)] +timestamp = Annotated[ + datetime.datetime, + mapped_column(nullable=False, server_default=functions.now()), +] + + +class Base(DeclarativeBase): + """Declare base types.""" + + registry = registry( + type_annotation_map={ + str_120: String(120), + str_200: String(200), + str_500: String(500), + str_1000: String(1000), + str_8000: String(8000), + str_5: String(5), + str_30: String(30), + str_400: String(400), + } + ) + -db = SQLAlchemy() +db = SQLAlchemy(model_class=Base) atlas_scheduler = APScheduler() diff --git a/scheduler/functions.py b/scheduler/functions.py index 22c1ca99..5033a30e 100644 --- a/scheduler/functions.py +++ b/scheduler/functions.py @@ -125,14 +125,14 @@ def scheduler_add_task(task_id: int) -> bool: atlas_scheduler.add_job( func=scheduler_task_runner, trigger="cron", - second=project.cron_sec, - minute=project.cron_min, - hour=project.cron_hour, - year=project.cron_year, - month=project.cron_month, - week=project.cron_week, - day=project.cron_day, - day_of_week=project.cron_week_day, + second=project.cron_sec if project.cron_sec else None, + minute=project.cron_min if project.cron_min else None, + hour=project.cron_hour if project.cron_hour else None, + year=project.cron_year if project.cron_year else None, + month=project.cron_month if project.cron_month else None, + week=project.cron_week if project.cron_week else None, + day=project.cron_day if project.cron_day else None, + day_of_week=project.cron_week_day if project.cron_week_day else None, start_date=project.cron_start_date, end_date=project.cron_end_date, args=[str(task_id)], diff --git a/scheduler/maintenance.py b/scheduler/maintenance.py index 204f89ae..d35a72f8 100644 --- a/scheduler/maintenance.py +++ b/scheduler/maintenance.py @@ -7,7 +7,7 @@ import psutil from flask import current_app as app -from sqlalchemy import update +from sqlalchemy import and_, or_, update from scheduler.extensions import atlas_scheduler, db from scheduler.model import Task @@ -28,8 +28,10 @@ def job_sync() -> None: db.session.execute( update(Task) .where( - Task.enabled == 0 - and (Task.next_run is not None or Task.est_duration is not None) + and_( + Task.enabled == 0, + or_(Task.next_run != None, Task.est_duration != None), # noqa: E711 + ) ) .values(next_run=None, est_duration=None) ) @@ -53,15 +55,9 @@ def drop_them(temp_path: Path, age: int) -> None: for temp_file in temp_path.glob("*/*/*"): if os.stat(temp_file.resolve()).st_mtime < time.time() - age: try: - if ( - Path(temp_file.resolve()).exists() - and Path(temp_file.resolve()).is_dir() - ): + if Path(temp_file.resolve()).exists() and Path(temp_file.resolve()).is_dir(): shutil.rmtree(temp_file.resolve()) - if ( - Path(temp_file.resolve()).exists() - and Path(temp_file.resolve()).is_file() - ): + if Path(temp_file.resolve()).exists() and Path(temp_file.resolve()).is_file(): os.remove(temp_file.resolve()) # pylint: disable=broad-except diff --git a/scheduler/model.py b/scheduler/model.py index 1ce36e25..603e7308 100644 --- a/scheduler/model.py +++ b/scheduler/model.py @@ -20,85 +20,78 @@ """ - import datetime -from dataclasses import dataclass -from typing import Optional +from typing import List, Optional -from sqlalchemy.orm import declarative_base +from sqlalchemy.orm import Mapped, mapped_column, relationship from sqlalchemy.sql import functions -from .extensions import db - -Base = declarative_base() +from .extensions import ( + db, + intpk, + str_5, + str_10, + str_30, + str_120, + str_200, + str_400, + str_500, + str_1000, + str_8000, + timestamp, +) -@dataclass class LoginType(db.Model): """Lookup table of user login types.""" __tablename__ = "login_type" - id: Optional[int] = None - name: Optional[str] = None - id = db.Column(db.Integer, primary_key=True, index=True) - name = db.Column(db.String(120), nullable=True) - login = db.relationship("Login", backref="login_type", lazy=True) + id: Mapped[intpk] + name: Mapped[Optional[str_120]] + login: Mapped[List["Login"]] = relationship(back_populates="login_type", lazy=True) -@dataclass class Login(db.Model): """Table should contain all login attempts.""" __tablename__ = "login" - id: Optional[int] = None - username: Optional[str] = None - login_date: Optional[datetime.datetime] = None - type_id: Optional[int] = None - id = db.Column(db.Integer, primary_key=True, index=True) - type_id = db.Column(db.Integer, db.ForeignKey(LoginType.id), nullable=True) - username = db.Column(db.String(120), nullable=True) - login_date = db.Column(db.DateTime, server_default=functions.now()) + id: Mapped[intpk] + type_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(LoginType.id)) + username: Mapped[Optional[str_120]] + login_date: Mapped[Optional[timestamp]] + login_type: Mapped["LoginType"] = relationship(back_populates="login") -@dataclass class User(db.Model): """Table containing any user-specific information.""" # pylint: disable=too-many-instance-attributes - id: Optional[int] = None - account_name: Optional[str] = None - email: Optional[str] = None - full_name: Optional[str] = None - first_name: Optional[str] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - account_name = db.Column(db.String(200), nullable=True, index=True) - email = db.Column(db.String(200), nullable=True, index=True) - full_name = db.Column(db.String(200), nullable=True) - first_name = db.Column(db.String(200), nullable=True) - project_owner = db.relationship( - "Project", backref="project_owner", lazy=True, foreign_keys="Project.owner_id" + id: Mapped[intpk] + account_name: Mapped[Optional[str_200]] = mapped_column(index=True) + email: Mapped[Optional[str_200]] = mapped_column(index=True) + full_name: Mapped[Optional[str_200]] + first_name: Mapped[Optional[str_200]] + project_owner: Mapped["Project"] = relationship( + backref="project_owner", lazy=True, foreign_keys="Project.owner_id" ) - project_creator = db.relationship( - "Project", + project_creator: Mapped["Project"] = relationship( backref="project_creator", lazy=True, foreign_keys="Project.creator_id", ) - project_updater = db.relationship( - "Project", + project_updater: Mapped["Project"] = relationship( backref="project_updater", lazy=True, foreign_keys="Project.updater_id", ) - task_creator = db.relationship( - "Task", backref="task_creator", lazy=True, foreign_keys="Task.creator_id" + task_creator: Mapped["Task"] = relationship( + backref="task_creator", lazy=True, foreign_keys="Task.creator_id" ) - task_updater = db.relationship( - "Task", backref="task_updater", lazy=True, foreign_keys="Task.updater_id" + task_updater: Mapped["Task"] = relationship( + backref="task_updater", lazy=True, foreign_keys="Task.updater_id" ) is_authenticated = True is_active = True @@ -113,78 +106,40 @@ def __str__(self) -> str: return self.full_name or f"User {self.id}" -@dataclass class Project(db.Model): """Table containing project details.""" # pylint: disable=too-many-instance-attributes - id: Optional[int] = None - name: Optional[str] = None - description: Optional[str] = None - owner_id: Optional[int] = None - cron: Optional[int] = None - cron_year: Optional[int] = None - cron_month: Optional[int] = None - cron_week: Optional[int] = None - cron_day: Optional[int] = None - cron_week_day: Optional[int] = None - cron_hour: Optional[int] = None - cron_min: Optional[int] = None - cron_sec: Optional[int] = None - cron_start_date: Optional[datetime.datetime] = None - cron_end_date: Optional[datetime.datetime] = None - - intv: Optional[int] = None - intv_type: Optional[str] = None - intv_value: Optional[int] = None - intv_start_date: Optional[datetime.datetime] = None - intv_end_date: Optional[datetime.datetime] = None - - ooff: Optional[int] = None - ooff_date: Optional[datetime.datetime] = None - - created: Optional[datetime.datetime] = None - creator_id: Optional[int] = None - updated: Optional[datetime.datetime] = None - updater_id: Optional[int] = None - - global_params: Optional[str] = None - - sequence_tasks: Optional[int] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - name = db.Column(db.String(120), nullable=True) - description = db.Column(db.String(8000), nullable=True) - owner_id = db.Column(db.Integer, db.ForeignKey(User.id), nullable=True, index=True) - - cron = db.Column(db.Integer, nullable=True) - cron_year = db.Column(db.Integer, nullable=True) - cron_month = db.Column(db.Integer, nullable=True) - cron_week = db.Column(db.Integer, nullable=True) - cron_day = db.Column(db.Integer, nullable=True) - cron_week_day = db.Column(db.Integer, nullable=True) - cron_hour = db.Column(db.Integer, nullable=True) - cron_min = db.Column(db.Integer, nullable=True) - cron_sec = db.Column(db.Integer, nullable=True) - cron_start_date = db.Column(db.DateTime, nullable=True) - cron_end_date = db.Column(db.DateTime, nullable=True) - - intv = db.Column(db.Integer, nullable=True) - intv_type = db.Column(db.String(5), nullable=True) - intv_value = db.Column(db.Integer, nullable=True) - intv_start_date = db.Column(db.DateTime, nullable=True) - intv_end_date = db.Column(db.DateTime, nullable=True) - - ooff = db.Column(db.Integer, nullable=True) - ooff_date = db.Column(db.DateTime, nullable=True) - - global_params = db.Column(db.String(8000), nullable=True) - - sequence_tasks = db.Column(db.Integer, nullable=True) - - task = db.relationship( - "Task", + id: Mapped[intpk] + name: Mapped[Optional[str_120]] + description: Mapped[Optional[str_8000]] + owner_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(User.id), index=True) + + cron: Mapped[Optional[int]] + cron_year: Mapped[Optional[str_120]] + cron_month: Mapped[Optional[str_120]] + cron_week: Mapped[Optional[str_120]] + cron_day: Mapped[Optional[str_120]] + cron_week_day: Mapped[Optional[str_120]] + cron_hour: Mapped[Optional[str_120]] + cron_min: Mapped[Optional[str_120]] + cron_sec: Mapped[Optional[str_120]] + cron_start_date: Mapped[Optional[datetime.datetime]] + cron_end_date: Mapped[Optional[datetime.datetime]] + + intv: Mapped[Optional[int]] + intv_type: Mapped[Optional[str_5]] + intv_value: Mapped[Optional[int]] + intv_start_date: Mapped[Optional[datetime.datetime]] + intv_end_date: Mapped[Optional[datetime.datetime]] + ooff: Mapped[Optional[int]] + ooff_date: Mapped[Optional[datetime.datetime]] + + global_params: Mapped[Optional[str_8000]] + sequence_tasks: Mapped[Optional[int]] + + task: Mapped[List["Task"]] = relationship( backref="project", lazy="dynamic", cascade="all, delete, delete-orphan", @@ -192,68 +147,53 @@ class Project(db.Model): ) # projectparams link - params = db.relationship( - "ProjectParam", + params: Mapped[List["ProjectParam"]] = relationship( backref="project", lazy=True, cascade="all, delete, delete-orphan", passive_deletes=True, ) - created = db.Column(db.DateTime, server_default=functions.now()) - creator_id = db.Column( - db.Integer, db.ForeignKey(User.id), nullable=True, index=True - ) - updated = db.Column(db.DateTime, onupdate=functions.now()) - updater_id = db.Column( - db.Integer, db.ForeignKey(User.id), nullable=True, index=True - ) + created: Mapped[Optional[timestamp]] + creator_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(User.id), index=True) + updated: Mapped[Optional[datetime.datetime]] = mapped_column(onupdate=functions.now()) + updater_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(User.id), index=True) def __str__(self) -> str: """Return default string.""" return str(self.name) -@dataclass class TaskSourceType(db.Model): """Lookup table of task source types.""" __tablename__ = "task_source_type" - id: Optional[int] = None - name: Optional[str] = None - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(120), nullable=True) - task = db.relationship("Task", backref="source_type", lazy=True) + id: Mapped[int] = mapped_column(primary_key=True) + name: Mapped[Optional[str_120]] + task: Mapped["Task"] = relationship(backref="source_type", lazy=True) -@dataclass class TaskSourceQueryType(db.Model): """Lookup table of task query source types.""" __tablename__ = "task_source_query_type" - id: Optional[int] = None - name: Optional[str] = None - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(120), nullable=True) - task = db.relationship("Task", backref="query_type", lazy=True) + id: Mapped[int] = mapped_column(primary_key=True) + name: Mapped[Optional[str_120]] + task: Mapped["Task"] = relationship(backref="query_type", lazy=True) -@dataclass class TaskProcessingType(db.Model): """Lookup table of task query source types.""" __tablename__ = "task_processing_type" - id: Optional[int] = None - name: Optional[str] = None - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(120), nullable=True) - task = db.relationship("Task", backref="processing_type", lazy=True) + id: Mapped[intpk] + name: Mapped[Optional[str_120]] + task: Mapped["Task"] = relationship(backref="processing_type", lazy=True) -@dataclass class TaskStatus(db.Model): """Lookup table of task status types. @@ -261,20 +201,16 @@ class TaskStatus(db.Model): """ __tablename__ = "task_status" - id: Optional[int] = None - name: Optional[str] = None - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(1000), nullable=True) - task = db.relationship( - "Task", + id: Mapped[intpk] + name: Mapped[Optional[str_1000]] + task: Mapped[List["Task"]] = relationship( backref="status", lazy="dynamic", cascade="all, delete, delete-orphan", passive_deletes=True, ) - task_log = db.relationship( - "TaskLog", + task_log: Mapped[List["TaskLog"]] = relationship( backref="status", lazy="dynamic", cascade="all, delete, delete-orphan", @@ -282,60 +218,45 @@ class TaskStatus(db.Model): ) -@dataclass class Connection(db.Model): """Table containing all destination information.""" # pylint: disable=too-many-instance-attributes __tablename__ = "connection" - id: Optional[int] = None - name: Optional[str] = None - description: Optional[str] = None - address: Optional[str] = None - primary_contact: Optional[str] = None - primary_contact_email: Optional[str] = None - primary_contact_phone: Optional[str] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - name = db.Column(db.String(120), nullable=True) - description = db.Column(db.String(120), nullable=True) - address = db.Column(db.String(120), nullable=True) - primary_contact = db.Column(db.String(400), nullable=True) - primary_contact_email = db.Column(db.String(120), nullable=True) - primary_contact_phone = db.Column(db.String(120), nullable=True) - ssh = db.relationship( - "ConnectionSsh", + + id: Mapped[intpk] + name: Mapped[Optional[str_120]] + description: Mapped[Optional[str_120]] + address: Mapped[Optional[str_120]] + primary_contact: Mapped[Optional[str_400]] + primary_contact_email: Mapped[Optional[str_120]] + primary_contact_phone: Mapped[Optional[str_120]] + ssh: Mapped[List["ConnectionSsh"]] = relationship( backref="connection", lazy=True, foreign_keys="ConnectionSsh.connection_id", ) - sftp = db.relationship( - "ConnectionSftp", + sftp: Mapped[List["ConnectionSftp"]] = relationship( backref="connection", lazy=True, foreign_keys="ConnectionSftp.connection_id", ) - ftp = db.relationship( - "ConnectionFtp", + ftp: Mapped[List["ConnectionFtp"]] = relationship( backref="connection", lazy=True, foreign_keys="ConnectionFtp.connection_id", ) - smb = db.relationship( - "ConnectionSmb", + smb: Mapped[List["ConnectionSmb"]] = relationship( backref="connection", lazy=True, foreign_keys="ConnectionSmb.connection_id", ) - database = db.relationship( - "ConnectionDatabase", - backref="connection", + database: Mapped[List["ConnectionDatabase"]] = relationship( + back_populates="connection", lazy=True, - foreign_keys="ConnectionDatabase.connection_id", ) - gpg = db.relationship( - "ConnectionGpg", + gpg: Mapped[List["ConnectionGpg"]] = relationship( backref="connection", lazy=True, foreign_keys="ConnectionGpg.connection_id", @@ -346,52 +267,37 @@ def __str__(self) -> str: return str(self.name) -@dataclass class ConnectionSftp(db.Model): """Table conntaining sftp connection strings.""" # pylint: disable=too-many-instance-attributes __tablename__ = "connection_sftp" - id: Optional[int] = None - connection_id: Optional[int] = None - name: Optional[str] = None - address: Optional[str] = None - port: Optional[int] = None - path: Optional[str] = None - username: Optional[str] = None - key: Optional[str] = None - password: Optional[str] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - connection_id = db.Column( - db.Integer, db.ForeignKey(Connection.id), nullable=True, index=True - ) - name = db.Column(db.String(500), nullable=True) - address = db.Column(db.String(500), nullable=True) - port = db.Column(db.Integer, nullable=True) - path = db.Column(db.String(500), nullable=True) - username = db.Column(db.String(120), nullable=True) - key = db.Column(db.String(8000), nullable=True) - password = db.Column(db.Text, nullable=True) - key_password = db.Column(db.Text, nullable=True) - task = db.relationship( - "Task", + + id: Mapped[intpk] + connection_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Connection.id), index=True) + name: Mapped[Optional[str_500]] + address: Mapped[Optional[str_500]] + port: Mapped[Optional[int]] + path: Mapped[Optional[str_500]] + username: Mapped[Optional[str_120]] + key: Mapped[Optional[str_8000]] + password: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + key_password: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + task: Mapped["Task"] = relationship( backref="destination_sftp_conn", lazy=True, foreign_keys="Task.destination_sftp_id", ) - task_source = db.relationship( - "Task", + task_source: Mapped["Task"] = relationship( backref="source_sftp_conn", lazy=True, foreign_keys="Task.source_sftp_id", ) - query_source = db.relationship( - "Task", backref="query_sftp_conn", lazy=True, foreign_keys="Task.query_sftp_id" + query_source: Mapped["Task"] = relationship( + backref="query_sftp_conn", lazy=True, foreign_keys="Task.query_sftp_id" ) - processing_source = db.relationship( - "Task", + processing_source: Mapped["Task"] = relationship( backref="processing_sftp_conn", lazy=True, foreign_keys="Task.processing_sftp_id", @@ -402,32 +308,21 @@ def __str__(self) -> str: return str(self.name) -@dataclass class ConnectionSsh(db.Model): - """Table conntaining sftp connection strings.""" + """Table conntaining ssh connection strings.""" # pylint: disable=too-many-instance-attributes __tablename__ = "connection_ssh" - id: Optional[int] = None - connection_id: Optional[int] = None - name: Optional[str] = None - address: Optional[str] = None - port: Optional[int] = None - username: Optional[str] = None - password: Optional[str] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - connection_id = db.Column( - db.Integer, db.ForeignKey(Connection.id), nullable=True, index=True - ) - name = db.Column(db.String(500), nullable=True) - address = db.Column(db.String(500), nullable=True) - port = db.Column(db.Integer, nullable=True) - username = db.Column(db.String(120), nullable=True) - password = db.Column(db.Text, nullable=True) - task_source = db.relationship( - "Task", + + id: Mapped[intpk] + connection_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Connection.id), index=True) + name: Mapped[Optional[str_500]] + address: Mapped[Optional[str_500]] + port: Mapped[Optional[int]] + username: Mapped[Optional[str_120]] + password: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + task_source: Mapped["Task"] = relationship( backref="source_ssh_conn", lazy=True, foreign_keys="Task.source_ssh_id", @@ -438,26 +333,18 @@ def __str__(self) -> str: return str(self.name) -@dataclass class ConnectionGpg(db.Model): """Table conntaining gpg keys.""" # pylint: disable=too-many-instance-attributes __tablename__ = "connection_gpg" - id: Optional[int] = None - connection_id: Optional[int] = None - name: Optional[str] = None - key: Optional[str] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - connection_id = db.Column( - db.Integer, db.ForeignKey(Connection.id), nullable=True, index=True - ) - name = db.Column(db.String(500), nullable=True) - key = db.Column(db.String(8000), nullable=True) - task_source = db.relationship( - "Task", + + id: Mapped[intpk] + connection_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Connection.id), index=True) + name: Mapped[Optional[str_500]] + key: Mapped[Optional[str_8000]] + task_source: Mapped["Task"] = relationship( backref="file_gpg_conn", lazy=True, foreign_keys="Task.file_gpg_id", @@ -468,44 +355,32 @@ def __str__(self) -> str: return str(self.name) -@dataclass class ConnectionFtp(db.Model): - """Table conntaining sftp connection strings.""" + """Table conntaining ftp connection strings.""" # pylint: disable=too-many-instance-attributes __tablename__ = "connection_ftp" - id: Optional[int] = None - connection_id: Optional[int] = None - name: Optional[str] = None - address: Optional[str] = None - path: Optional[str] = None - username: Optional[str] = None - password: Optional[str] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - connection_id = db.Column( - db.Integer, db.ForeignKey(Connection.id), nullable=True, index=True - ) - name = db.Column(db.String(500), nullable=True) - address = db.Column(db.String(500), nullable=True) - path = db.Column(db.String(500), nullable=True) - username = db.Column(db.String(500), nullable=True) - password = db.Column(db.Text, nullable=True) - task = db.relationship( - "Task", + + id: Mapped[intpk] + connection_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Connection.id), index=True) + name: Mapped[Optional[str_500]] + address: Mapped[Optional[str_500]] + path: Mapped[Optional[str_500]] + username: Mapped[Optional[str_500]] + password: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + task: Mapped["Task"] = relationship( backref="destination_ftp_conn", lazy=True, foreign_keys="Task.destination_ftp_id", ) - task_source = db.relationship( - "Task", backref="source_ftp_conn", lazy=True, foreign_keys="Task.source_ftp_id" + task_source: Mapped["Task"] = relationship( + backref="source_ftp_conn", lazy=True, foreign_keys="Task.source_ftp_id" ) - query_source = db.relationship( - "Task", backref="query_ftp_conn", lazy=True, foreign_keys="Task.query_ftp_id" + query_source: Mapped["Task"] = relationship( + backref="query_ftp_conn", lazy=True, foreign_keys="Task.query_ftp_id" ) - processing_source = db.relationship( - "Task", + processing_source: Mapped["Task"] = relationship( backref="processing_ftp_conn", lazy=True, foreign_keys="Task.processing_ftp_id", @@ -516,48 +391,34 @@ def __str__(self) -> str: return str(self.name) -@dataclass class ConnectionSmb(db.Model): - """Table conntaining sftp connection strings.""" + """Table conntaining smb connection strings.""" # pylint: disable=too-many-instance-attributes __tablename__ = "connection_smb" - id: Optional[int] = None - connection_id: Optional[int] = None - name: Optional[str] = None - share_name: Optional[str] = None - path: Optional[str] = None - username: Optional[str] = None - password: Optional[str] = None - server_ip: Optional[str] = None - server_name: Optional[str] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - connection_id = db.Column( - db.Integer, db.ForeignKey(Connection.id), nullable=True, index=True - ) - name = db.Column(db.String(120), nullable=True) - share_name = db.Column(db.String(500), nullable=True) - path = db.Column(db.String(1000), nullable=True) - username = db.Column(db.String(500), nullable=True) - password = db.Column(db.Text, nullable=True) - server_ip = db.Column(db.String(500), nullable=True) - server_name = db.Column(db.String(500), nullable=True) - task = db.relationship( - "Task", + + id: Mapped[intpk] + connection_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Connection.id), index=True) + name: Mapped[Optional[str_120]] + share_name: Mapped[Optional[str_500]] + path: Mapped[Optional[str_1000]] + username: Mapped[Optional[str_500]] + password: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + server_ip: Mapped[Optional[str_500]] + server_name: Mapped[Optional[str_500]] + task: Mapped["Task"] = relationship( backref="destination_smb_conn", lazy=True, foreign_keys="Task.destination_smb_id", ) - task_source = db.relationship( - "Task", backref="source_smb_conn", lazy=True, foreign_keys="Task.source_smb_id" + task_source: Mapped["Task"] = relationship( + backref="source_smb_conn", lazy=True, foreign_keys="Task.source_smb_id" ) - query_source = db.relationship( - "Task", backref="query_smb_conn", lazy=True, foreign_keys="Task.query_smb_id" + query_source: Mapped["Task"] = relationship( + backref="query_smb_conn", lazy=True, foreign_keys="Task.query_smb_id" ) - processing_source = db.relationship( - "Task", + processing_source: Mapped["Task"] = relationship( backref="processing_smb_conn", lazy=True, foreign_keys="Task.processing_smb_id", @@ -568,431 +429,273 @@ def __str__(self) -> str: return str(self.name) -@dataclass class ConnectionDatabaseType(db.Model): """Lookup table of task source database types.""" __tablename__ = "connection_database_type" - id: Optional[int] = None - name: Optional[str] = None - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(120), nullable=True) - database = db.relationship("ConnectionDatabase", backref="database_type", lazy=True) + id: Mapped[intpk] + name: Mapped[Optional[str_120]] + database: Mapped["ConnectionDatabase"] = relationship(backref="database_type", lazy=True) -@dataclass class ConnectionDatabase(db.Model): """List of task source databases and connection strings.""" __tablename__ = "connection_database" - id: Optional[int] = None - type_id: Optional[int] = None - name: Optional[str] = None - connection_string: Optional[str] = None - connection_id: Optional[int] = None - timeout: Optional[int] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - type_id = db.Column( - db.Integer, db.ForeignKey(ConnectionDatabaseType.id), nullable=True, index=True - ) - connection_id = db.Column( - db.Integer, db.ForeignKey(Connection.id), nullable=True, index=True - ) - name = db.Column(db.String(500), nullable=True) - connection_string = db.Column(db.Text, nullable=True) - timeout = db.Column(db.Integer, nullable=True) - task_source = db.relationship( - "Task", + + id: Mapped[intpk] + type_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(ConnectionDatabaseType.id)) + connection_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Connection.id), index=True) + name: Mapped[Optional[str_500]] + connection_string: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + timeout: Mapped[Optional[int]] + task_source: Mapped["Task"] = relationship( backref="source_database_conn", lazy=True, foreign_keys="Task.source_database_id", ) + connection: Mapped["Connection"] = relationship(back_populates="database") def __str__(self) -> str: """Get string of name.""" return str(self.name) -@dataclass class TaskDestinationFileType(db.Model): """Lookup table of task destination file types.""" __tablename__ = "task_destination_file_type" - id: Optional[int] = None - name: Optional[str] = None - ext: Optional[str] = None - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(120), nullable=True) - ext = db.Column(db.String(120), nullable=False) - task = db.relationship("Task", backref="file_type", lazy=True) + id: Mapped[intpk] + name: Mapped[Optional[str_120]] + ext: Mapped[Optional[str_120]] = mapped_column(nullable=False) + task: Mapped["Task"] = relationship(backref="file_type", lazy=True) -@dataclass class QuoteLevel(db.Model): """Lookup table for python quote levels.""" __tablename__ = "quote_level" - id: Optional[int] = None - name: Optional[str] = None - id = db.Column(db.Integer, primary_key=True, index=True) - name = db.Column(db.String(120), nullable=True) - task = db.relationship("Task", backref="destination_file_quote_level", lazy=True) + id: Mapped[intpk] + name: Mapped[Optional[str_120]] + task: Mapped["Task"] = relationship(backref="destination_file_quote_level", lazy=True) -@dataclass class ProjectParam(db.Model): """Task parameters.""" __tablename__ = "project_param" - id: Optional[int] = None - key: Optional[str] = None - value: Optional[str] = None - sensitive: Optional[int] = None - project_id: Optional[int] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - key = db.Column(db.String(500), nullable=True) - value = db.Column(db.String(8000), nullable=True) - project_id = db.Column( - db.Integer, db.ForeignKey(Project.id), nullable=True, index=True - ) - sensitive = db.Column(db.Integer, nullable=True, index=True) + + id: Mapped[intpk] + key: Mapped[Optional[str_500]] + value: Mapped[Optional[str_8000]] + project_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Project.id), index=True) + sensitive: Mapped[Optional[int]] = mapped_column(index=True) -@dataclass class Task(db.Model): """Table containing task details.""" # pylint: disable=too-many-instance-attributes __tablename__ = "task" - # general information - id: Optional[int] = None - name: Optional[str] = None - project_id: Optional[int] = None - status_id: Optional[int] = None - enabled: Optional[int] = None - order: Optional[int] = None - last_run: Optional[datetime.datetime] = None - next_run: Optional[datetime.datetime] = None - last_run_job_id: Optional[str] = None - created: Optional[datetime.datetime] = None - creator_id: Optional[int] = None - updated: Optional[datetime.datetime] = None - updater_id: Optional[int] = None - - # data source - source_type_id: Optional[int] = None - source_database_id: Optional[int] = None - - source_query_type_id: Optional[int] = None - source_query_include_header: Optional[int] = None - source_git: Optional[str] = None - source_devops: Optional[str] = None - source_url: Optional[str] = None - source_code: Optional[str] = None - - source_require_sql_output: Optional[int] = None - - query_smb_id: Optional[int] = None - query_smb_file: Optional[str] = None - query_sftp_id: Optional[int] = None - query_sftp_file: Optional[str] = None - query_ftp_id: Optional[int] = None - query_ftp_file: Optional[str] = None - query_params: Optional[str] = None - - source_smb_delimiter: Optional[str] = None - source_smb_ignore_delimiter: Optional[int] = None - source_smb_file: Optional[str] = None - source_smb_id: Optional[int] = None - - source_ftp_file: Optional[str] = None - source_ftp_delimiter: Optional[str] = None - source_ftp_ignore_delimiter: Optional[int] = None - source_ftp_id: Optional[int] = None - - source_sftp_file: Optional[str] = None - source_sftp_delimiter: Optional[str] = None - source_sftp_ignore_delimiter: Optional[int] = None - source_sftp_id: Optional[int] = None - - source_ssh_id: Optional[int] = None - - # caching - source_cache: Optional[str] = None - enable_source_cache: Optional[int] = None - - # processing - processing_type_id: Optional[int] = None - processing_smb_id: Optional[int] = None - processing_smb_file: Optional[str] = None - processing_sftp_id: Optional[int] = None - processing_sftp_file: Optional[str] = None - processing_ftp_id: Optional[int] = None - processing_ftp_file: Optional[str] = None - processing_code: Optional[str] = None - processing_url: Optional[str] = None - processing_git: Optional[str] = None - processing_devops: Optional[str] = None - processing_command: Optional[str] = None - - # destination - destination_file_delimiter: Optional[str] = None - destination_file_name: Optional[str] = None - destination_ignore_delimiter: Optional[int] = None - destination_file_line_terminator: Optional[str] = None - destination_quote_level_id: Optional[int] = None - - destination_create_zip: Optional[int] = None - destination_zip_name: Optional[str] = None - - destination_file_type_id: Optional[int] = None - - destination_sftp: Optional[int] = None - destination_sftp_overwrite: Optional[int] = None - destination_sftp_id: Optional[int] = None - destination_sftp_dont_send_empty_file: Optional[int] = None - - destination_ftp: Optional[int] = None - destination_ftp_overwrite: Optional[int] = None - destination_ftp_id: Optional[int] = None - destination_ftp_dont_send_empty_file: Optional[int] = None - - destination_smb: Optional[int] = None - destination_smb_overwrite: Optional[int] = None - destination_smb_id: Optional[int] = None - destination_smb_dont_send_empty_file: Optional[int] = None - - file_gpg: Optional[int] = None - file_gpg_id: Optional[int] = None - - email_completion: Optional[int] = None - email_completion_log: Optional[int] = None - email_completion_file: Optional[int] = None - email_completion_file_embed: Optional[int] = None - email_completion_dont_send_empty_file: Optional[int] = None - email_completion_recipients: Optional[str] = None - email_completion_message: Optional[str] = None - - email_error: Optional[int] = None - email_error_recipients: Optional[str] = None - email_error_message: Optional[str] = None - - max_retries: Optional[int] = None - - est_duration: Optional[int] = None # general information - id = db.Column(db.Integer, primary_key=True, index=True) - name = db.Column(db.String(1000), nullable=True) - project_id = db.Column( - db.Integer, db.ForeignKey(Project.id), nullable=True, index=True - ) - status_id = db.Column( - db.Integer, db.ForeignKey(TaskStatus.id), nullable=True, index=True - ) - enabled = db.Column(db.Integer, nullable=True, index=True) - order = db.Column(db.Integer, nullable=True, index=True) - last_run = db.Column(db.DateTime, nullable=True) - last_run_job_id = db.Column(db.String(30), nullable=True, index=True) - next_run = db.Column(db.DateTime, nullable=True, index=True) - created = db.Column(db.DateTime, server_default=functions.now(), index=True) - creator_id = db.Column( - db.Integer, db.ForeignKey(User.id), nullable=True, index=True - ) - updated = db.Column(db.DateTime, onupdate=functions.now(), index=True) - updater_id = db.Column( - db.Integer, db.ForeignKey(User.id), nullable=True, index=True - ) + id: Mapped[intpk] + name: Mapped[Optional[str_1000]] + project_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Project.id), index=True) + status_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(TaskStatus.id)) + enabled: Mapped[Optional[int]] = mapped_column(index=True) + order: Mapped[Optional[int]] = mapped_column(index=True) + last_run: Mapped[Optional[datetime.datetime]] + last_run_job_id: Mapped[Optional[str_30]] = mapped_column(index=True) + next_run: Mapped[Optional[datetime.datetime]] = mapped_column(index=True) + created: Mapped[Optional[timestamp]] = mapped_column(index=True) + creator_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(User.id), index=True) + updated: Mapped[Optional[datetime.datetime]] = mapped_column( + onupdate=functions.now(), index=True + ) + updater_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(User.id), index=True) """ data source """ # db/sftp/smb/ftp - source_type_id = db.Column( - db.Integer, db.ForeignKey(TaskSourceType.id), nullable=True, index=True + source_type_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(TaskSourceType.id), index=True ) # source locations # git/url/code/sftp/ftp/smb/devops - source_query_type_id = db.Column( - db.Integer, db.ForeignKey(TaskSourceQueryType.id), nullable=True, index=True + source_query_type_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(TaskSourceQueryType.id), index=True ) - source_query_include_header = db.Column(db.Integer, nullable=True) + source_query_include_header: Mapped[Optional[int]] - source_require_sql_output = db.Column(db.Integer, nullable=True) + source_require_sql_output: Mapped[Optional[int]] # source git - source_git = db.Column(db.String(1000), nullable=True) + source_git: Mapped[Optional[str_1000]] # source devops - source_devops = db.Column(db.String(1000), nullable=True) + source_devops: Mapped[Optional[str_1000]] # source web url - source_url = db.Column(db.String(1000), nullable=True) + source_url: Mapped[Optional[str_1000]] # source typed code - source_code = db.Column(db.Text, nullable=True) + source_code: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) # cached source query - source_cache = db.Column(db.Text, nullable=True) - enable_source_cache = db.Column(db.Integer, nullable=True, index=True) + source_cache: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + enable_source_cache: Mapped[Optional[int]] = mapped_column(index=True) - query_smb_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSmb.id), nullable=True, index=True + query_smb_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSmb.id), index=True ) - query_smb_file = db.Column(db.String(1000), nullable=True) + query_smb_file: Mapped[Optional[str_1000]] - query_sftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSftp.id), nullable=True, index=True + query_sftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSftp.id), index=True ) - query_sftp_file = db.Column(db.String(1000), nullable=True) + query_sftp_file: Mapped[Optional[str_1000]] - query_ftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionFtp.id), nullable=True, index=True + query_ftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionFtp.id), index=True ) - query_ftp_file = db.Column(db.String(1000), nullable=True) + query_ftp_file: Mapped[Optional[str_1000]] - query_params = db.Column(db.String(8000), nullable=True) + query_params: Mapped[Optional[str_8000]] # source smb sql file - source_smb_file = db.Column(db.String(1000), nullable=True) - source_smb_delimiter = db.Column(db.String(10), nullable=True) - source_smb_ignore_delimiter = db.Column(db.Integer, nullable=True) - source_smb_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSmb.id), nullable=True, index=True + source_smb_file: Mapped[Optional[str_1000]] + source_smb_delimiter: Mapped[Optional[str_10]] + source_smb_ignore_delimiter: Mapped[Optional[int]] + source_smb_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSmb.id), index=True ) # source ftp sql file - source_ftp_file = db.Column(db.String(1000), nullable=True) - source_ftp_delimiter = db.Column(db.String(10), nullable=True) - source_ftp_ignore_delimiter = db.Column(db.Integer, nullable=True) - source_ftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionFtp.id), nullable=True, index=True + source_ftp_file: Mapped[Optional[str_1000]] + source_ftp_delimiter: Mapped[Optional[str_10]] + source_ftp_ignore_delimiter: Mapped[Optional[int]] + source_ftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionFtp.id), index=True ) # source sftp sql file - source_sftp_file = db.Column(db.String(1000), nullable=True) - source_sftp_delimiter = db.Column(db.String(10), nullable=True) - source_sftp_ignore_delimiter = db.Column(db.Integer, nullable=True) - source_sftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSftp.id), nullable=True, index=True + source_sftp_file: Mapped[Optional[str_1000]] + source_sftp_delimiter: Mapped[Optional[str_10]] + source_sftp_ignore_delimiter: Mapped[Optional[int]] + source_sftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSftp.id), index=True ) # source database - source_database_id = db.Column( - db.Integer, db.ForeignKey(ConnectionDatabase.id), nullable=True, index=True + source_database_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionDatabase.id), index=True ) - source_ssh_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSsh.id), nullable=True, index=True + source_ssh_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSsh.id), index=True ) """ processing script source """ - processing_type_id = db.Column( - db.Integer, db.ForeignKey(TaskProcessingType.id), nullable=True, index=True - ) + processing_type_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(TaskProcessingType.id)) - processing_smb_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSmb.id), nullable=True, index=True + processing_smb_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSmb.id), index=True ) - processing_smb_file = db.Column(db.String(1000), nullable=True) + processing_smb_file: Mapped[Optional[str_1000]] - processing_sftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSftp.id), nullable=True, index=True + processing_sftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSftp.id), index=True ) - processing_sftp_file = db.Column(db.String(1000), nullable=True) + processing_sftp_file: Mapped[Optional[str_1000]] - processing_ftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionFtp.id), nullable=True, index=True + processing_ftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionFtp.id), index=True ) - processing_ftp_file = db.Column(db.String(1000), nullable=True) + processing_ftp_file: Mapped[Optional[str_1000]] - processing_code = db.Column(db.String(8000), nullable=True) - processing_url = db.Column(db.String(1000), nullable=True) - processing_git = db.Column(db.String(1000), nullable=True) - processing_devops = db.Column(db.String(1000), nullable=True) - processing_command = db.Column(db.String(1000), nullable=True) + processing_code: Mapped[Optional[str_8000]] + processing_url: Mapped[Optional[str_1000]] + processing_git: Mapped[Optional[str_1000]] + processing_devops: Mapped[Optional[str_1000]] + processing_command: Mapped[Optional[str_1000]] """ destination """ # destination file - destination_file_name = db.Column(db.String(1000), nullable=True) - destination_file_delimiter = db.Column(db.String(10), nullable=True) - destination_ignore_delimiter = db.Column(db.Integer, nullable=True) - destination_file_line_terminator = db.Column(db.String(10), nullable=True) + destination_file_name: Mapped[Optional[str_1000]] + destination_file_delimiter: Mapped[Optional[str_10]] + destination_ignore_delimiter: Mapped[Optional[int]] + destination_file_line_terminator: Mapped[Optional[str_10]] # destination zip archive - destination_create_zip = db.Column(db.Integer, nullable=True) - destination_zip_name = db.Column(db.String(1000), nullable=True) + destination_create_zip: Mapped[Optional[int]] + destination_zip_name: Mapped[Optional[str_1000]] # csv/txt/other - destination_file_type_id = db.Column( - db.Integer, db.ForeignKey(TaskDestinationFileType.id), nullable=True, index=True + destination_file_type_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(TaskDestinationFileType.id) ) # save to sftp server - destination_sftp = db.Column(db.Integer, nullable=True, index=True) - destination_sftp_overwrite = db.Column(db.Integer, nullable=True) - destination_sftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSftp.id), nullable=True, index=True + destination_sftp: Mapped[Optional[int]] = mapped_column(index=True) + destination_sftp_overwrite: Mapped[Optional[int]] + destination_sftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSftp.id), index=True ) - destination_sftp_dont_send_empty_file = db.Column(db.Integer, nullable=True) + destination_sftp_dont_send_empty_file: Mapped[Optional[int]] # save to ftp server - destination_ftp = db.Column(db.Integer, nullable=True, index=True) - destination_ftp_overwrite = db.Column(db.Integer, nullable=True) - destination_ftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionFtp.id), nullable=True, index=True + destination_ftp: Mapped[Optional[int]] = mapped_column(index=True) + destination_ftp_overwrite: Mapped[Optional[int]] + destination_ftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionFtp.id), index=True ) - destination_ftp_dont_send_empty_file = db.Column(db.Integer, nullable=True) - + destination_ftp_dont_send_empty_file: Mapped[Optional[int]] # save to smb server - destination_smb = db.Column(db.Integer, nullable=True, index=True) - destination_smb_overwrite = db.Column(db.Integer, nullable=True) - destination_smb_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSmb.id), nullable=True, index=True + destination_smb: Mapped[Optional[int]] = mapped_column(index=True) + destination_smb_overwrite: Mapped[Optional[int]] + destination_smb_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSmb.id), index=True ) - destination_smb_dont_send_empty_file = db.Column(db.Integer, nullable=True) + destination_smb_dont_send_empty_file: Mapped[Optional[int]] - file_gpg = db.Column(db.Integer, nullable=True, index=True) - file_gpg_id = db.Column( - db.Integer, db.ForeignKey(ConnectionGpg.id), nullable=True, index=True - ) + file_gpg: Mapped[Optional[int]] = mapped_column(index=True) + file_gpg_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(ConnectionGpg.id), index=True) - destination_quote_level_id = db.Column( - db.Integer, db.ForeignKey(QuoteLevel.id), nullable=True, index=True + destination_quote_level_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(QuoteLevel.id), index=True ) """ email """ # completion email - email_completion = db.Column(db.Integer, nullable=True, index=True) - email_completion_log = db.Column(db.Integer, nullable=True) - email_completion_file = db.Column(db.Integer, nullable=True) - email_completion_file_embed = db.Column(db.Integer, nullable=True) - email_completion_recipients = db.Column(db.String(1000), nullable=True) - email_completion_subject = db.Column(db.String(8000), nullable=True) - email_completion_message = db.Column(db.String(8000), nullable=True) - email_completion_dont_send_empty_file = db.Column(db.Integer, nullable=True) + email_completion: Mapped[Optional[int]] = mapped_column(index=True) + email_completion_log: Mapped[Optional[int]] + email_completion_file: Mapped[Optional[int]] + email_completion_file_embed: Mapped[Optional[int]] + email_completion_recipients: Mapped[Optional[str_1000]] + email_completion_subject: Mapped[Optional[str_8000]] + email_completion_message: Mapped[Optional[str_8000]] + email_completion_dont_send_empty_file: Mapped[Optional[int]] # error email - email_error = db.Column(db.Integer, nullable=True, index=True) - email_error_recipients = db.Column(db.String(1000), nullable=True) - email_error_subject = db.Column(db.String(8000), nullable=True) - email_error_message = db.Column(db.String(8000), nullable=True) + email_error: Mapped[Optional[int]] + email_error_recipients: Mapped[Optional[str_1000]] + email_error_subject: Mapped[Optional[str_8000]] + email_error_message: Mapped[Optional[str_8000]] # rerun on fail - max_retries = db.Column(db.Integer, nullable=True, index=True) + max_retries: Mapped[Optional[int]] = mapped_column(index=True) - est_duration = db.Column(db.Integer, nullable=True, index=True) + est_duration: Mapped[Optional[int]] = mapped_column(index=True) # tasklog link - task = db.relationship( - "TaskLog", + task: Mapped[List["TaskLog"]] = relationship( backref="task", lazy=True, cascade="all, delete, delete-orphan", @@ -1000,8 +703,7 @@ class Task(db.Model): ) # taskparams link - params = db.relationship( - "TaskParam", + params: Mapped[List["TaskParam"]] = relationship( backref="task", lazy=True, cascade="all, delete, delete-orphan", @@ -1009,8 +711,7 @@ class Task(db.Model): ) # taskfiles link - files = db.relationship( - "TaskFile", + files: Mapped[List["TaskFile"]] = relationship( backref="task", lazy=True, cascade="all, delete, delete-orphan", @@ -1028,70 +729,46 @@ class TaskLog(db.Model): # pylint: disable=too-many-instance-attributes __tablename__ = "task_log" - id: Optional[int] = None - task_id: Optional[int] = None - status_id: Optional[int] = None - job_id: Optional[str] = None - message: Optional[str] = None - error: Optional[int] = 0 - status_date: Optional[datetime.datetime] = None - - job_id = db.Column(db.String(1000), nullable=True, index=True) - id = db.Column(db.Integer, primary_key=True, index=True) - task_id = db.Column(db.Integer, db.ForeignKey(Task.id), nullable=True, index=True) - status_id = db.Column( - db.Integer, db.ForeignKey(TaskStatus.id), nullable=True, index=True - ) - message = db.Column(db.Text, nullable=True) - status_date = db.Column(db.DateTime, default=datetime.datetime.now, index=True) - error = db.Column(db.Integer, nullable=True, index=True) - __table_args__ = ( - db.Index("ix_task_log_status_date_error", "status_date", "error"), + job_id: Mapped[Optional[str_1000]] = mapped_column(index=True) + id: Mapped[intpk] + task_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Task.id), index=True) + status_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(TaskStatus.id), index=True) + message: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + status_date: Mapped[Optional[datetime.datetime]] = mapped_column( + default=datetime.datetime.now, index=True ) + error: Mapped[Optional[int]] = mapped_column(index=True) + + __table_args__ = (db.Index("ix_task_log_status_date_error", "status_date", "error"),) -@dataclass class TaskFile(db.Model): """Table containing paths to task backup files.""" __tablename__ = "task_file" - id: Optional[int] = None - name: Optional[str] = None - task_id: Optional[int] = None - job_id: Optional[str] = None - size: Optional[str] = None - file_hash: Optional[str] = None - path: Optional[str] = None - created: Optional[datetime.datetime] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - name = db.Column(db.String(1000), nullable=True, index=True) - task_id = db.Column(db.Integer, db.ForeignKey(Task.id), nullable=True, index=True) - job_id = db.Column(db.String(1000), nullable=True, index=True) - size = db.Column(db.String(200), nullable=True, index=True) - path = db.Column(db.String(1000), nullable=True, index=True) - file_hash = db.Column(db.String(1000), nullable=True) - created = db.Column(db.DateTime, default=datetime.datetime.now, index=True) - - __table_args__ = ( - db.Index("ix_task_file_id_task_id_job_id", "id", "task_id", "job_id"), + + id: Mapped[intpk] + name: Mapped[Optional[str_1000]] = mapped_column(index=True) + task_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Task.id), index=True) + job_id: Mapped[Optional[str_1000]] = mapped_column(index=True) + size: Mapped[Optional[str_200]] = mapped_column(index=True) + path: Mapped[Optional[str_1000]] = mapped_column(index=True) + file_hash: Mapped[Optional[str_1000]] + created: Mapped[Optional[datetime.datetime]] = mapped_column( + default=datetime.datetime.now, index=True ) + __table_args__ = (db.Index("ix_task_file_id_task_id_job_id", "id", "task_id", "job_id"),) + -@dataclass class TaskParam(db.Model): """Task parameters.""" __tablename__ = "task_param" - id: Optional[int] = None - key: Optional[str] = None - value: Optional[str] = None - sensitive: Optional[int] = None - task_id: Optional[int] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - key = db.Column(db.String(500), nullable=True) - value = db.Column(db.String(8000), nullable=True) - task_id = db.Column(db.Integer, db.ForeignKey(Task.id), nullable=True, index=True) - sensitive = db.Column(db.Integer, nullable=True, index=True) + + id: Mapped[intpk] + key: Mapped[Optional[str_500]] + value: Mapped[Optional[str_8000]] + task_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Task.id), index=True) + sensitive: Mapped[Optional[int]] = mapped_column(index=True) diff --git a/scheduler/tests/__init__.py b/scheduler/tests/__init__.py index f8616900..50a87b88 100644 --- a/scheduler/tests/__init__.py +++ b/scheduler/tests/__init__.py @@ -5,6 +5,7 @@ poetry run pytest tests/ \ --cov --cov-append --cov-branch --cov-report=term-missing --disable-warnings """ + import sys from pathlib import Path diff --git a/scheduler/tests/conftest.py b/scheduler/tests/conftest.py index 608a05fe..083a733b 100644 --- a/scheduler/tests/conftest.py +++ b/scheduler/tests/conftest.py @@ -1,4 +1,5 @@ """Setyp pytest.""" + import os import sys from pathlib import Path @@ -134,7 +135,7 @@ def create_demo_task(session, year: int = 2025, sequence: int = 0) -> Tuple[int, name="Project 1 " + str(datetime.now()), cron=1, cron_min="1", - cron_start_date=datetime(year, 1, 1, tzinfo=timezone.utc), + cron_start_date=datetime(year, 1, 1), sequence_tasks=sequence, intv=1, intv_type="w", diff --git a/scheduler/tests/test_api.py b/scheduler/tests/test_api.py index 3bf21543..6204adbf 100644 --- a/scheduler/tests/test_api.py +++ b/scheduler/tests/test_api.py @@ -9,6 +9,7 @@ --cov --cov-append --cov-branch --cov-report=term-missing --disable-warnings """ + # flake8: noqa, # pylint: skip-file # check all admin links @@ -228,7 +229,7 @@ def test_delete_task(client_fixture: fixture) -> None: def test_run_task(client_fixture: fixture) -> None: p_id, t_id = create_demo_task(db.session) page = client_fixture.get(f"/api/run/{t_id}") - assert "Connection refused" in page.json["error"] + assert page.json == {"message": "Scheduler: task job added!"} assert page.status_code == 200 @@ -241,9 +242,7 @@ def test_run_task_with_delay(client_fixture: fixture) -> None: # check that job is in scheduler scheduled_task = [ - x - for x in atlas_scheduler.get_jobs() - if len(x.args) > 0 and x.args[0] == str(t_id) + x for x in atlas_scheduler.get_jobs() if len(x.args) > 0 and x.args[0] == str(t_id) ][0] assert ( scheduled_task.next_run_time.replace(microsecond=0, second=0).isoformat() diff --git a/scheduler/tests/test_events.py b/scheduler/tests/test_events.py index 510d1ab6..00558e20 100644 --- a/scheduler/tests/test_events.py +++ b/scheduler/tests/test_events.py @@ -9,6 +9,7 @@ --cov --cov-append --cov-branch --cov-report=term-missing --disable-warnings """ + print("importing tests") import time from datetime import datetime, timedelta @@ -284,9 +285,7 @@ def test_job_removed(api_fixture: fixture, caplog: fixture) -> None: for record in caplog.records: assert record.levelname not in ["CRITICAL", "ERROR"] - log = TaskLog.query.filter_by( - task_id=t_id, status_id=6, message="Job removed." - ).first() + log = TaskLog.query.filter_by(task_id=t_id, status_id=6, message="Job removed.").first() assert log is not None caplog.clear() # try invalid task_id @@ -306,9 +305,7 @@ def test_job_removed(api_fixture: fixture, caplog: fixture) -> None: for record in caplog.records: assert record.levelname not in ["CRITICAL", "ERROR"] - log = TaskLog.query.filter_by( - task_id=t_id, status_id=6, message="Job removed." - ).first() + log = TaskLog.query.filter_by(task_id=t_id, status_id=6, message="Job removed.").first() assert log is None caplog.clear() @@ -326,9 +323,7 @@ def test_job_removed(api_fixture: fixture, caplog: fixture) -> None: for record in caplog.records: assert record.levelname not in ["CRITICAL", "ERROR"] - log = TaskLog.query.filter_by( - task_id=t_id, status_id=6, message="Job removed." - ).first() + log = TaskLog.query.filter_by(task_id=t_id, status_id=6, message="Job removed.").first() assert log is None diff --git a/scheduler/web.py b/scheduler/web.py index 67adde85..4daa2da9 100644 --- a/scheduler/web.py +++ b/scheduler/web.py @@ -37,9 +37,7 @@ def schedule() -> Response: Merge two lists and put 0 where needed. """ - now = datetime.datetime.now( - datetime.datetime.now(datetime.timezone.utc).astimezone().tzinfo - ) + now = datetime.datetime.now(datetime.datetime.now(datetime.timezone.utc).astimezone().tzinfo) tomorrow = now + datetime.timedelta(hours=24) hour_list = ["now"] @@ -100,7 +98,7 @@ def schedule() -> Response: @web_bp.route("/api/add/") -def add_task(task_id: int) -> str: +def add_task(task_id: int) -> Response: """Schedule task to run. First check for any existing schedules, remove them, then add a new schedule. diff --git a/scripts/cron_descriptor.py b/scripts/cron_descriptor.py new file mode 100644 index 00000000..24eaf16c --- /dev/null +++ b/scripts/cron_descriptor.py @@ -0,0 +1,531 @@ +""" +Cron schedule descriptions. + +Returns schedules in a readable format. +""" + +import calendar +import datetime +import re +from typing import Any, Callable, ClassVar, List, Optional + + +class ExpressionDescriptor: + """Converts a Cron Expression into a human readable string.""" + + _cron_days: ClassVar[dict[str, int]] = { + v.upper(): k for (k, v) in enumerate(calendar.day_abbr) + } + _special_characters: ClassVar[List[str]] = ["/", "-", ",", "*"] + + def __init__( + self, + cron_year: str = "*", + cron_month: str = "*", + cron_week: str = "*", + cron_day: str = "*", + cron_week_day: str = "*", + cron_hour: str = "0", + cron_min: str = "0", + cron_sec: str = "0", + ) -> None: + """Initializes a new instance of the ExpressionDescriptor.""" + self.cron_year = "*" if cron_year is None or cron_year == "" else cron_year + self.cron_month = "*" if cron_month is None or cron_month == "" else cron_month + self.cron_week = "*" if cron_week is None or cron_week == "" else cron_week + self.cron_day = "*" if cron_day is None or cron_day == "" else cron_day + self.cron_week_day = "*" if cron_week_day is None or cron_week_day == "" else cron_week_day + self.cron_hour = "0" if cron_hour is None or cron_hour == "" else cron_hour + self.cron_min = "0" if cron_min is None or cron_min == "" else cron_min + self.cron_sec = "0" if cron_sec is None or cron_sec == "" else cron_sec + + def get_full_description(self) -> str: + """Generates the FULL description. + + Returns + ------- + The FULL description + Raises: + FormatException: if formatting fails + + """ + + def remove_adjacent_duplicates(sentence: str) -> str: + """Remove duplicate words that might pop up such as week week.""" + words = sentence.split() + unique_words = [words[0]] # Initialize unique words list with the first word + for word in words[1:]: + if ( + word != unique_words[-1] + ): # Check if the current word is different from the previous word + unique_words.append(word) + return " ".join(unique_words) + + try: + time_segment = self.get_time_of_day_description() + day_of_month_desc = self.get_day_of_month_description() + month_desc = self.get_month_description() + day_of_week_desc = self.get_day_of_week_description() + week_desc = self.get_week_number_description() + year_desc = self.get_year_description() + + description = f"{time_segment}{day_of_month_desc}{day_of_week_desc}{month_desc}{week_desc}{year_desc}" + description = remove_adjacent_duplicates(description) + description = f"{description[0].upper()}{description[1:]}" + + except Exception as e: + description = ( + f"An error occurred when generating the expression description. error is {e}" + ) + + raise ValueError(description) from e + + return description + + def get_time_of_day_description(self) -> str: + """Generates a description for only the TIMEOFDAY portion of the expression. + + Returns + ------- + The TIMEOFDAY description + + """ + seconds_expression = self.cron_sec + minute_expression = self.cron_min + hour_expression = self.cron_hour + description = "" + + # handle special cases first + if ( + any(exp in minute_expression for exp in self._special_characters) is False + and any(exp in hour_expression for exp in self._special_characters) is False + and any(exp in seconds_expression for exp in self._special_characters) is False + ): + # specific time of day (i.e. 10 14) + description = ( + f"At {self.format_time(hour_expression, minute_expression, seconds_expression)} " + ) + + elif ( + seconds_expression == "" + and "-" in minute_expression + and "," not in minute_expression + and any(exp in hour_expression for exp in self._special_characters) is False + ): + # minute range in single hour (i.e. 0-10 11) + minute_parts = minute_expression.split("-") + description = f"Every minute between {self.format_time(hour_expression, minute_parts[0])} and {self.format_time(hour_expression, minute_parts[1])} " + + elif ( + seconds_expression == "" + and "," in hour_expression + and "-" not in hour_expression + and any(exp in minute_expression for exp in self._special_characters) is False + ): + # hours list with single minute (o.e. 30 6,14,16) + hour_parts = hour_expression.split(",") + description = "At" + "".join( + f" {self.format_time(hour_part, minute_expression)}" + + ( + "," + if i < len(hour_parts) - 2 + else (" and" if i == len(hour_parts) - 2 else "") + ) + for i, hour_part in enumerate(hour_parts) + ) + + else: + # default time description + seconds_description = self.get_seconds_description() + minutes_description = self.get_minutes_description() + hours_description = self.get_hours_description() + + description = str(seconds_description) + + if description and minutes_description: + description += ", " + + description += str(minutes_description) + + if description and hours_description: + description += ", " + + description += str(hours_description) + return description + + def get_seconds_description(self) -> Optional[str]: + """Generates a description for only the SECONDS portion of the expression. + + Returns + ------- + The SECONDS description + + """ + return self.get_segment_description( + self.cron_sec, + "every second", + lambda s: s, + lambda s: f"every {s} seconds", + lambda s: "seconds {0} through {1} past the minute", + lambda s: "" if s == "0" else "at {0} seconds past the minute", + lambda s: ", {0} through {1}", + ) + + def get_minutes_description(self) -> Optional[str]: + """Generates a description for only the MINUTE portion of the expression. + + Returns + ------- + The MINUTE description + + """ + return self.get_segment_description( + self.cron_min, + "every minute", + lambda s: s, + lambda s: f"every {s} minutes", + lambda s: "minutes {0} through {1} past the hour", + lambda s: "" if s == "0" and self.cron_sec == "" else "at {0} minutes past the hour", + lambda s: ", {0} through {1}", + ) + + def get_hours_description(self) -> Optional[str]: + """Generates a description for only the HOUR portion of the expression. + + Returns + ------- + The HOUR description + + """ + return self.get_segment_description( + self.cron_hour, + "every hour", + lambda s: self.format_time(s, "0"), + lambda s: f"every {s} hours", + lambda s: "between {0} and {1}", + lambda s: "at {0}", + lambda s: ", {0} through {1}", + ) + + def get_day_of_week_description(self) -> Optional[str]: + """Generates a description for only the DAYOFWEEK portion of the expression. + + Returns + ------- + The DAYOFWEEK description + + """ + if self.cron_week_day == "*": + # DOW is specified as * so we will not generate a description and defer to DOM part. + # Otherwise, we could get a contradiction like "on day 1 of the month, every day" + # or a dupe description like "every day, every day". + return "" + + def get_day_name(s: str) -> str: + try: + return calendar.day_name[int(s)] + except (IndexError, ValueError): + pass + try: + return calendar.day_name[list(calendar.day_abbr).index(s.title())] + except ValueError: + pass + return s + + return self.get_segment_description( + self.cron_week_day, + ", every day", + lambda s: get_day_name(s), + lambda s: f", every {s} days of the week", + lambda s: ", {0} through {1}", + lambda s: ", only on {0}", + lambda s: ", {0} through {1}", + ) + + def get_week_number_description(self) -> Optional[str]: + """Generates a description for only the week number portion of the expression. + + Returns + ------- + The week description + + """ + return self.get_segment_description( + self.cron_week, + "", + lambda s: s, + lambda s: f", every {s} weeks", + lambda s: ", week {0} through {1}", + lambda s: ", only on week {0} of the year", + lambda s: ", week {0} through {1}", + ) + + def get_month_description(self) -> Optional[str]: + """Generates a description for only the MONTH portion of the expression. + + Returns + ------- + The MONTH description + + """ + + def get_month_name(s: str) -> str: + try: + return calendar.month_name[int(s)] + except (IndexError, ValueError): + pass + try: + return calendar.month_name[list(calendar.month_abbr).index(s.title())] + except ValueError: + pass + return s + + return self.get_segment_description( + self.cron_month, + "", + lambda s: get_month_name(s), + lambda s: f", every {s} months", + lambda s: ", {0} through {1}", + lambda s: ", only in {0}", + lambda s: ", {0} through {1}", + ) + + def get_day_of_month_description(self) -> str: + """Generates a description for only the DAYOFMONTH portion of the expression. + + Returns + ------- + The DAYOFMONTH description + + """ + + def _add_suffix(day: str) -> str: + try: + d = int(day) + if 10 <= d % 100 <= 20: + suffix = "th" + else: + suffix = {1: "st", 2: "nd", 3: "rd"}.get(d % 10, "th") + return str(d) + suffix + " day" + except ValueError: + return day + + exp = self.cron_day + if exp.lower() == "last": + description = ", on the last day of the month" + elif re.match(r"^last\s\D{3}$", exp, re.IGNORECASE): + parts = exp.split() + description = f", on the last {calendar.day_name[self._cron_days[parts[1].upper()]]} of the month" + + else: + description = str( + self.get_segment_description( + exp, + ", every day" if self.cron_week_day == "*" else "", + lambda s: _add_suffix(s), + lambda s: ", every day" if s == "1" else ", every {0}", + lambda s: ", between {0} and {1} day of the month", + lambda s: " on the {0} of the month", + lambda s: ", {0} through {1}", + ) + ) + + return description + + def get_year_description(self) -> Optional[str]: + """Generates a description for only the YEAR portion of the expression. + + Returns + ------- + The YEAR description + + """ + return self.get_segment_description( + self.cron_year, + "", + lambda s: s, + lambda s: f", every {s} years", + lambda s: ", year {0} through year {1}", + lambda s: ", only in {0}", + lambda s: ", year {0} through year {1}", + ) + + def get_segment_description( + self, + expression: str, + all_description: str, + get_single_item_description: Callable[[Any], str], + get_interval_description_format: Callable[[Any], str], + get_between_description_format: Callable[[Any], str], + get_description_format: Callable[[Any], str], + get_range_format: Callable[[Any], str], + ) -> Optional[str]: + """Returns segment description. + + Args: + ---- + expression: Segment to descript + all_description: if everything then description for it. + get_single_item_description: single item description such as Monday. + get_interval_description_format: description for an interval such as 1/2. + get_between_description_format: description for a between such as 1-2. + get_description_format: Format get_single_item_description. + get_range_format: Function that formats range expressions depending on cron parts. + + Returns: + ------- + segment description. + + """ + description = None + expression = expression.strip() + if expression is None or expression == "": + description = "" + elif expression == "*": + description = all_description + elif not any(ext in expression for ext in ["/", "-", ",", " "]): + description = get_description_format(expression).format( + get_single_item_description(expression) + ) + elif "," in expression: + segments = expression.split(",") + description_content = "" + for i, seg in enumerate(segments): + seg = seg.strip() + if i > 0 and len(segments) > 2: + description_content += ", " + + if i < len(segments) - 1: + description_content += " " + + if i > 0 and len(segments) > 1 and (i == len(segments) - 1 or len(segments) == 2): + description_content += " and " + description_content += str( + self.get_segment_description( + seg, + all_description, + get_single_item_description, + get_interval_description_format, + get_between_description_format, + get_single_item_description, + get_range_format, + ) + ) + # replace weirdness + description_content = description_content.replace("and ,", "and") + description_content = description_content.replace("of the month", "") + + description = get_description_format(expression).format(description_content) + elif " " in expression and not any(ext in expression for ext in ["/", "-", ","]): + daypart = expression.split() + if len(daypart) > 1 and daypart[1].lower() in map(str.lower, calendar.day_abbr): + expression = ( + f"{daypart[0]} {calendar.day_name[self._cron_days[daypart[1].upper()]]}" + ) + description = get_description_format(expression).format( + get_single_item_description(expression) + ) + elif "/" in expression: + segments = expression.split("/") + description = get_interval_description_format(segments[1]).format( + get_single_item_description(segments[1]) + ) + + # interval contains 'between' piece (i.e. 2-59/3 ) + if "-" in segments[0]: + between_segment_description = self.generate_between_segment_description( + segments[0], + get_between_description_format, + get_single_item_description, + ) + if not between_segment_description.startswith(", "): + description += ", " + + description += between_segment_description + elif not any(ext in segments[0] for ext in ["*", ","]): + range_item_description = get_description_format(segments[0]).format( + get_single_item_description(segments[0]) + ) + range_item_description = range_item_description.replace(", ", "") + + description += f", starting {range_item_description}" + elif "-" in expression: + description = self.generate_between_segment_description( + expression, get_between_description_format, get_single_item_description + ) + + return description + + def generate_between_segment_description( + self, + between_expression: str, + get_between_description_format: Callable[[Any], str], + get_single_item_description: Callable[[Any], str], + ) -> str: + """ + Generates the between segment description. + + :param between_expression: the expression that is passed in. + :param get_between_description_format: a format for how to describe the between expression. + :param get_single_item_description: if it is one item, then this is the expression. + + :return: The between segment description. + """ + description = "" + between_segments = between_expression.split("-") + between_segment_1_description = get_single_item_description(between_segments[0]) + between_segment_2_description = get_single_item_description(between_segments[1]) + between_segment_2_description = between_segment_2_description.replace(":00", ":59") + + between_description_format = get_between_description_format(between_expression) + description += between_description_format.format( + between_segment_1_description, between_segment_2_description + ) + + return description + + def format_time( + self, hour_expression: str, minute_expression: str, second_expression: str = "" + ) -> str: + """Given time parts, will construct a formatted time description. + + Args: + ---- + hour_expression: This is the Hours part of the time. + minute_expression: Minutes part of time. + second_expression: Seconds part of time. + + Returns: + ------- + Formatted time description. + + """ + hour = int(hour_expression) + + period = "" + + period = "PM" if (hour >= 12) else "AM" + if period: + # add preceding space + period = " " + period + + if hour > 12: + hour -= 12 + + if hour == 0: + hour = 12 + + minute = str(int(minute_expression)) # Removes leading zero if any + second = "" + if second_expression is not None and second_expression: + second = f":{str(int(second_expression)).zfill(2)}" + + return f"{str(hour).zfill(2)}:{minute.zfill(2)}{second}{period}" + + def __str__(self) -> str: + """Call the full description if this method is called.""" + return self.get_full_description() + + def __repr__(self) -> str: + """Call the full description if this method is called.""" + return self.get_full_description() diff --git a/scripts/cron_validator.py b/scripts/cron_validator.py new file mode 100644 index 00000000..9c8abe3d --- /dev/null +++ b/scripts/cron_validator.py @@ -0,0 +1,281 @@ +""" +Cron validation. + +Will validate that the values entered into the schedule are valid. +""" + +import calendar +import re +from typing import ClassVar, Optional + + +class CronValidator: + """Group of functions to make sure each cron field is correct.""" + + _cron_days: ClassVar[dict[str, int]] = { + v.upper(): k for (k, v) in enumerate(calendar.day_abbr) + } + _cron_months: ClassVar[dict[str, int]] = { + v.upper(): k for (k, v) in enumerate(calendar.month_abbr) if k != 0 + } + + def __init__( + self, + cron: int, + cron_year: Optional[str], + cron_month: Optional[str], + cron_week: Optional[str], + cron_day: Optional[str], + cron_week_day: Optional[str], + cron_hour: Optional[str], + cron_min: Optional[str], + cron_sec: Optional[str], + ) -> None: + """Initializes values with this class.""" + self.cron = cron + self.cron_year = str(cron_year) + self.cron_month = str(cron_month) + self.cron_week = str(cron_week) + self.cron_day = str(cron_day) + self.cron_week_day = str(cron_week_day) + self.cron_hour = str(cron_hour) + self.cron_min = str(cron_min) + self.cron_sec = str(cron_sec) + + def validate(self) -> None: + """Main method called to validate the cron values.""" + if self.cron == 1: + self._month(expr=self.cron_month, prefix="Month") + self._day_of_month(expr=self.cron_day, prefix="Day") + self._day_of_week(expr=self.cron_week_day, prefix="Week Day") + self._number_validate(expr=self.cron_year, prefix="Year", mi=1970, mx=2099, limit=84) + self._number_validate(expr=self.cron_week, prefix="Week", mi=1, mx=53, limit=53) + self._number_validate(expr=self.cron_hour, prefix="Hour", mi=0, mx=23, limit=24) + self._number_validate(expr=self.cron_min, prefix="Minute", mi=0, mx=59, limit=60) + self._number_validate(expr=self.cron_sec, prefix="Second", mi=0, mx=59, limit=60) + + def _number_validate(self, expr: str, prefix: str, mi: int, mx: int, limit: int) -> None: + """Validates any records that are number only. + + * + nn (mi-mx) + nn-nn + nn/nn + nn-nn/nn + */nn + nn,nn,nn. + """ + if expr is None or expr == "" or expr == "*": + pass + elif re.match(r"^\d*$", expr): + self.check_range(expr=expr, mi=mi, mx=mx, prefix=prefix) + + elif re.match(r"^\d*-\d*$", expr): + parts = expr.split("-") + self.check_range(expr=parts[0], mi=mi, mx=mx, prefix=prefix) + self.check_range(expr=parts[1], mi=mi, mx=mx, prefix=prefix) + self.compare_range(st=int(parts[0]), ed=int(parts[1]), mi=mi, mx=mx, prefix=prefix) + + elif re.match(r"^\d*/\d*$", expr): + parts = expr.split("/") + self.check_range(expr=parts[0], mi=mi, mx=mx, prefix=prefix) + self.check_range(type="interval", expr=parts[1], mi=1, mx=mx, prefix=prefix) + + elif re.match(r"^\d*-\d*/\d*$", expr): + parts = expr.split("/") + fst_parts = parts[0].split("-") + self.check_range(expr=fst_parts[0], mi=mi, mx=mx, prefix=prefix) + self.check_range(expr=fst_parts[1], mi=mi, mx=mx, prefix=prefix) + self.compare_range( + st=int(fst_parts[0]), ed=int(fst_parts[1]), mi=mi, mx=mx, prefix=prefix + ) + self.check_range(type="interval", expr=parts[1], mi=1, mx=mx, prefix=prefix) + + elif re.match(r"^\*/\d*$", expr): + parts = expr.split("/") + self.check_range(type="interval", expr=parts[1], mi=1, mx=mx, prefix=prefix) + + elif "," in expr: + expr_ls = expr.split(",") + if len(expr_ls) > limit: + msg = f"({prefix}) Exceeded maximum number({limit}) of specified value. '{len(expr_ls)}' is provided" + raise ValueError(msg) + else: + for n in expr_ls: + self._number_validate(expr=n.strip(), prefix=prefix, mi=mi, mx=mx, limit=limit) + else: + msg = f"({prefix}) Illegal Expression Format '{expr}'" + raise ValueError(msg) + + def _day_of_month(self, expr: str, prefix: str) -> None: + """DAY Of Month expressions (n : Number, s: String). + + * + nn (1~31) + nn-nn + nn/nn + nn-nn/nn + */nn + nn,nn,nn, nth sss, last sss, last (Maximum 31 elements) + last + nth sss + last sss. + """ + mi, mx = (1, 31) + if expr is None or expr == "" or expr == "*" or expr.lower() == "last": + pass + elif "," in expr: + limit = 31 + expr_ls = expr.split(",") + if len(expr_ls) > 31: + msg = f"({prefix}) Exceeded maximum number({limit}) of specified value. '{len(expr_ls)}' is provided" + raise ValueError(msg) + else: + for dayofmonth in expr_ls: + self._day_of_month(expr=dayofmonth.strip(), prefix=prefix) + # if it is number only then just use _number_validate function + elif re.match( + r"^(\*|(\d{1,2})-(\d{1,2})(/(\d{1,2}))?|\*/\d{1,2}|\d{1,2}(/\d{1,2})?)$", + expr, + ): + self._number_validate(expr=expr, prefix=prefix, mi=mi, mx=mx, limit=31) + elif re.match(r"^[1-5](nd|st|rd|th)\s\D{3}$", expr, re.IGNORECASE): + parts = expr.split() + parts[0] = re.sub("[nd|st|rd|th]", "", parts[0]) + try: + self._cron_days[parts[1].upper()] + except KeyError: + msg = f"({prefix}) Invalid value '{expr}'" + raise ValueError(msg) + self.check_range(expr=parts[0], mi=mi, mx=5, prefix=prefix) + elif re.match(r"^last\s\D{3}$", expr, re.IGNORECASE): + parts = expr.split() + try: + self._cron_days[parts[1].upper()] + except KeyError: + msg = f"({prefix}) Invalid value '{expr}'" + raise ValueError(msg) + else: + msg = f"({prefix}) Illegal Expression Format '{expr}'" + raise ValueError(msg) + + def _month(self, expr: str, prefix: str) -> None: + """Month expressions (n : Number, s: String). + + * + nn (1~12) + sss (JAN~DEC) + nn-nn + sss-sss + nn/nn + nn-nn/nn + */nn + nn,nn,nn,nn-nn,sss-sss (Maximum 12 elements). + """ + mi, mx = (1, 12) + if expr is None or expr == "" or expr == "*": + pass + elif "," in expr: + """ + get values with a comma and then run each part through months again. + """ + limit = 12 + expr_ls = expr.split(",") + if len(expr_ls) > limit: + msg = f"({prefix}) Exceeded maximum number({limit}) of specified value. '{len(expr_ls)}' is provided" + raise ValueError(msg) + else: + for mon in expr_ls: + self._month(expr=mon.strip(), prefix=prefix) + # if it is number only then just use _number_validate function + elif re.match( + r"^(\*|(\d{1,2})-(\d{1,2})(/(\d{1,2}))?|\*/\d{1,2}|\d{1,2}(/\d{1,2})?)$", + expr, + ): + self._number_validate(expr=expr, prefix=prefix, mi=mi, mx=mx, limit=12) + elif re.match(r"\D{3}$", expr): + try: + st_mon = int(self._cron_months[expr.upper()]) + except KeyError: + msg = f"Invalid Month value '{expr}'" + raise ValueError(msg) + elif re.match(r"\D{3}-\D{3}$", expr): + parts = expr.split("-") + try: + st_mon = int(self._cron_months[parts[0].upper()]) + ed_mon = int(self._cron_months[parts[1].upper()]) + except KeyError: + msg = f"Invalid Month value '{expr}'" + raise ValueError(msg) + self.compare_range( + st=st_mon, + ed=ed_mon, + mi=mi, + mx=mx, + prefix=prefix, + ) + else: + msg = f"({prefix}) Illegal Expression Format '{expr}'" + raise ValueError(msg) + + def _day_of_week(self, expr: str, prefix: str) -> None: + """DAYOfWeek expressions (n : Number, s: String). + + * + n (0~6) + sss (SUN~SAT) + n/n + n-n/n + */n + n-n + sss-sss + n-n,sss-sss (maximum 7 elements). + """ + mi, mx = (0, 6) + if expr is None or expr == "" or expr == "*" or expr.upper() in self._cron_days.keys(): + pass + elif "," in expr: + limit = 7 + expr_ls = expr.split(",") + + if len(expr_ls) > limit: + msg = f"({prefix}) Exceeded maximum number({limit}) of specified value. '{len(expr_ls)}' is provided" + raise ValueError(msg) + else: + for day in expr_ls: + self._day_of_week(expr=day.strip(), prefix=prefix) + # if it is number only then just use _number_validate function + elif re.match(r"^(\*|(\d{1})-(\d{1})(/(\d{1}))?|\*/\d{1}|\d{1}(/\d{1})?)$", expr): + self._number_validate(expr=expr, prefix=prefix, mi=mi, mx=mx, limit=7) + elif re.match(r"\D{3}-\D{3}$", expr): + parts = expr.split("-") + try: + st_day = self._cron_days[parts[0].upper()] + ed_day = self._cron_days[parts[1].upper()] + except KeyError: + msg = f"({prefix}) Invalid value '{expr}'" + raise ValueError(msg) + self.compare_range(st=st_day, ed=ed_day, mi=mi, mx=mx, prefix=prefix) + else: + msg = f"({prefix}) Illegal Expression Format '{expr}'" + raise ValueError(msg) + + def check_range( + self, expr: str, mi: int, mx: int, prefix: str, type: Optional[str] = None + ) -> None: + """Check if expression value within range of specified limit.""" + if int(expr) < mi or mx < int(expr): + if type is None: + msg = f"{prefix} values must be between {mi} and {mx} but '{expr}' is provided" + elif type == "interval": + msg = f"({prefix}) Accepted increment value range is {mi}~{mx} but '{expr}' is provided" + raise ValueError(msg) + + def compare_range(self, prefix: str, st: int, ed: int, mi: int, mx: int) -> None: + """Check 2 expression value's size. + + does not allow {st} value to be greater than {ed} value. + """ + if int(st) > int(ed): + msg = f"({prefix}) Invalid range '{st}-{ed}'. Accepted range is {mi}-{mx}" + raise ValueError(msg) diff --git a/scripts/crypto.py b/scripts/crypto.py index b97bb6ac..55b1d3e6 100644 --- a/scripts/crypto.py +++ b/scripts/crypto.py @@ -1,6 +1,5 @@ """Password encryption and decryption.""" - from base64 import b64decode, b64encode from cryptography.fernet import Fernet diff --git a/scripts/database.py b/scripts/database.py index efc0548a..96de43ea 100644 --- a/scripts/database.py +++ b/scripts/database.py @@ -1,3 +1,5 @@ +"""Initial creation and seed of the database.""" + from typing import Any from sqlalchemy.orm import Session as SqlSession @@ -43,9 +45,7 @@ def seed(session: SqlSession, model: Any) -> None: get_or_create(session, model.TaskSourceType, name="SSH Command") # task processing type - get_or_create( - session, model.TaskProcessingType, name="Network File (SMB Connection)" - ) + get_or_create(session, model.TaskProcessingType, name="Network File (SMB Connection)") get_or_create(session, model.TaskProcessingType, name="File (SFTP Connection)") get_or_create(session, model.TaskProcessingType, name="File (FTP Connection)") get_or_create(session, model.TaskProcessingType, name="Git URL") @@ -58,22 +58,19 @@ def seed(session: SqlSession, model: Any) -> None: get_or_create(session, model.TaskSourceQueryType, name="File Path (SMB Connection)") get_or_create(session, model.TaskSourceQueryType, name="Other URL (no auth)") get_or_create(session, model.TaskSourceQueryType, name="Source Code") - get_or_create( - session, model.TaskSourceQueryType, name="File Path (SFTP Connection)" - ) + get_or_create(session, model.TaskSourceQueryType, name="File Path (SFTP Connection)") get_or_create(session, model.TaskSourceQueryType, name="File Path (FTP Connection)") get_or_create(session, model.TaskSourceQueryType, name="Devops") # database type get_or_create(session, model.ConnectionDatabaseType, name="Postgres") get_or_create(session, model.ConnectionDatabaseType, name="SQL Sever") + get_or_create(session, model.ConnectionDatabaseType, name="Jdbc") # file types get_or_create(session, model.TaskDestinationFileType, name="CSV (.csv)", ext="csv") get_or_create(session, model.TaskDestinationFileType, name="Text (.txt)", ext="txt") - get_or_create( - session, model.TaskDestinationFileType, name="Excel (.csv)", ext="csv" - ) + get_or_create(session, model.TaskDestinationFileType, name="Excel (.csv)", ext="csv") get_or_create( session, model.TaskDestinationFileType, @@ -103,3 +100,4 @@ def seed(session: SqlSession, model: Any) -> None: get_or_create(session, model.TaskStatus, name="SSH") get_or_create(session, model.TaskStatus, name="SQL Server") get_or_create(session, model.TaskStatus, name="Postgres") + get_or_create(session, model.TaskStatus, name="Jdbc") diff --git a/scripts/error_print.py b/scripts/error_print.py index cb0e84cc..8d9c374a 100644 --- a/scripts/error_print.py +++ b/scripts/error_print.py @@ -2,19 +2,20 @@ import sys import traceback +from typing import Optional, Type -def full_stack(): +def full_stack() -> str: """Return full stack trace of an exception.""" - exc = sys.exc_info()[0] - if exc is not None: + exc_info: Optional[Type[BaseException]] = sys.exc_info()[0] + if exc_info is not None: frame = sys.exc_info()[-1].tb_frame.f_back stack = traceback.extract_stack(frame) else: stack = traceback.extract_stack()[:-1] # last one would be full_stack() trc = "Traceback (most recent call last):\n" stackstr = trc + "".join(traceback.format_list(stack)) - if exc is not None: + if exc_info is not None: # pylint: disable=bad-str-strip-call stackstr += " " + traceback.format_exc().lstrip(trc) return stackstr diff --git a/sonar-project.properties b/sonar-project.properties index 44154da0..7cc46555 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -1,2 +1,2 @@ sonar.exclusions = web/static/lib/**/*, migrations_dev/, migrations/, runner/tests/, web/tests/, scheduler/tests/, web/static/fonts/**/* -sonar.python.version = 3.9 +sonar.python.version = 3.10 diff --git a/tox.ini b/tox.ini index 962e712d..e31c3ba5 100644 --- a/tox.ini +++ b/tox.ini @@ -41,11 +41,9 @@ description = reformat code commands = black . isort . - djlint . -e html.j2 --reformat --quiet --warn allowlist_externals = isort black - djlint skip_install = true skip_gitignore = true @@ -54,10 +52,8 @@ description = check code style commands = isort . --check black . --fast --check - ruff scheduler/ web/ runner/ + ruff check scheduler/ web/ runner/ mypy scheduler web runner --show-traceback --show-error-codes - djlint . -e html.j2 --check --quiet - djlint . -e html.j2 --lint skip_install = true allowlist_externals = black diff --git a/web/cli.py b/web/cli.py index a30360da..dc7f1e23 100644 --- a/web/cli.py +++ b/web/cli.py @@ -1,4 +1,5 @@ """EM Web Custom CLI.""" + import sys from pathlib import Path diff --git a/web/extensions.py b/web/extensions.py index 090e1f3a..b52fcd8f 100644 --- a/web/extensions.py +++ b/web/extensions.py @@ -9,6 +9,8 @@ scripts after running :obj:`web.create_app` """ + +import datetime import logging from flask_assets import Environment @@ -21,16 +23,53 @@ from flask_redis import FlaskRedis from flask_session import Session from flask_sqlalchemy import SQLAlchemy +from sqlalchemy import String +from sqlalchemy.orm import DeclarativeBase, mapped_column, registry +from sqlalchemy.sql import functions +from typing_extensions import Annotated cache = Cache() compress = Compress() -db = SQLAlchemy() executor = Executor() htmlmin = HTMLMIN(remove_empty_space=True) migrate = Migrate(compare_type=True) redis_client = FlaskRedis() sess = Session() +str_5 = Annotated[str, 5] +str_10 = Annotated[str, 10] +str_30 = Annotated[str, 30] +str_120 = Annotated[str, 120] +str_200 = Annotated[str, 200] +str_400 = Annotated[str, 400] +str_500 = Annotated[str, 500] +str_1000 = Annotated[str, 1000] +str_8000 = Annotated[str, 8000] +intpk = Annotated[int, mapped_column(primary_key=True, index=True)] +timestamp = Annotated[ + datetime.datetime, + mapped_column(nullable=False, server_default=functions.now()), +] + + +class Base(DeclarativeBase): + """Declare base types.""" + + registry = registry( + type_annotation_map={ + str_120: String(120), + str_200: String(200), + str_500: String(500), + str_1000: String(1000), + str_8000: String(8000), + str_5: String(5), + str_30: String(30), + str_400: String(400), + } + ) + + +db = SQLAlchemy(model_class=Base) web_assets = Environment() login_manager = LoginManager() diff --git a/web/model.py b/web/model.py index 1ce36e25..603e7308 100644 --- a/web/model.py +++ b/web/model.py @@ -20,85 +20,78 @@ """ - import datetime -from dataclasses import dataclass -from typing import Optional +from typing import List, Optional -from sqlalchemy.orm import declarative_base +from sqlalchemy.orm import Mapped, mapped_column, relationship from sqlalchemy.sql import functions -from .extensions import db - -Base = declarative_base() +from .extensions import ( + db, + intpk, + str_5, + str_10, + str_30, + str_120, + str_200, + str_400, + str_500, + str_1000, + str_8000, + timestamp, +) -@dataclass class LoginType(db.Model): """Lookup table of user login types.""" __tablename__ = "login_type" - id: Optional[int] = None - name: Optional[str] = None - id = db.Column(db.Integer, primary_key=True, index=True) - name = db.Column(db.String(120), nullable=True) - login = db.relationship("Login", backref="login_type", lazy=True) + id: Mapped[intpk] + name: Mapped[Optional[str_120]] + login: Mapped[List["Login"]] = relationship(back_populates="login_type", lazy=True) -@dataclass class Login(db.Model): """Table should contain all login attempts.""" __tablename__ = "login" - id: Optional[int] = None - username: Optional[str] = None - login_date: Optional[datetime.datetime] = None - type_id: Optional[int] = None - id = db.Column(db.Integer, primary_key=True, index=True) - type_id = db.Column(db.Integer, db.ForeignKey(LoginType.id), nullable=True) - username = db.Column(db.String(120), nullable=True) - login_date = db.Column(db.DateTime, server_default=functions.now()) + id: Mapped[intpk] + type_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(LoginType.id)) + username: Mapped[Optional[str_120]] + login_date: Mapped[Optional[timestamp]] + login_type: Mapped["LoginType"] = relationship(back_populates="login") -@dataclass class User(db.Model): """Table containing any user-specific information.""" # pylint: disable=too-many-instance-attributes - id: Optional[int] = None - account_name: Optional[str] = None - email: Optional[str] = None - full_name: Optional[str] = None - first_name: Optional[str] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - account_name = db.Column(db.String(200), nullable=True, index=True) - email = db.Column(db.String(200), nullable=True, index=True) - full_name = db.Column(db.String(200), nullable=True) - first_name = db.Column(db.String(200), nullable=True) - project_owner = db.relationship( - "Project", backref="project_owner", lazy=True, foreign_keys="Project.owner_id" + id: Mapped[intpk] + account_name: Mapped[Optional[str_200]] = mapped_column(index=True) + email: Mapped[Optional[str_200]] = mapped_column(index=True) + full_name: Mapped[Optional[str_200]] + first_name: Mapped[Optional[str_200]] + project_owner: Mapped["Project"] = relationship( + backref="project_owner", lazy=True, foreign_keys="Project.owner_id" ) - project_creator = db.relationship( - "Project", + project_creator: Mapped["Project"] = relationship( backref="project_creator", lazy=True, foreign_keys="Project.creator_id", ) - project_updater = db.relationship( - "Project", + project_updater: Mapped["Project"] = relationship( backref="project_updater", lazy=True, foreign_keys="Project.updater_id", ) - task_creator = db.relationship( - "Task", backref="task_creator", lazy=True, foreign_keys="Task.creator_id" + task_creator: Mapped["Task"] = relationship( + backref="task_creator", lazy=True, foreign_keys="Task.creator_id" ) - task_updater = db.relationship( - "Task", backref="task_updater", lazy=True, foreign_keys="Task.updater_id" + task_updater: Mapped["Task"] = relationship( + backref="task_updater", lazy=True, foreign_keys="Task.updater_id" ) is_authenticated = True is_active = True @@ -113,78 +106,40 @@ def __str__(self) -> str: return self.full_name or f"User {self.id}" -@dataclass class Project(db.Model): """Table containing project details.""" # pylint: disable=too-many-instance-attributes - id: Optional[int] = None - name: Optional[str] = None - description: Optional[str] = None - owner_id: Optional[int] = None - cron: Optional[int] = None - cron_year: Optional[int] = None - cron_month: Optional[int] = None - cron_week: Optional[int] = None - cron_day: Optional[int] = None - cron_week_day: Optional[int] = None - cron_hour: Optional[int] = None - cron_min: Optional[int] = None - cron_sec: Optional[int] = None - cron_start_date: Optional[datetime.datetime] = None - cron_end_date: Optional[datetime.datetime] = None - - intv: Optional[int] = None - intv_type: Optional[str] = None - intv_value: Optional[int] = None - intv_start_date: Optional[datetime.datetime] = None - intv_end_date: Optional[datetime.datetime] = None - - ooff: Optional[int] = None - ooff_date: Optional[datetime.datetime] = None - - created: Optional[datetime.datetime] = None - creator_id: Optional[int] = None - updated: Optional[datetime.datetime] = None - updater_id: Optional[int] = None - - global_params: Optional[str] = None - - sequence_tasks: Optional[int] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - name = db.Column(db.String(120), nullable=True) - description = db.Column(db.String(8000), nullable=True) - owner_id = db.Column(db.Integer, db.ForeignKey(User.id), nullable=True, index=True) - - cron = db.Column(db.Integer, nullable=True) - cron_year = db.Column(db.Integer, nullable=True) - cron_month = db.Column(db.Integer, nullable=True) - cron_week = db.Column(db.Integer, nullable=True) - cron_day = db.Column(db.Integer, nullable=True) - cron_week_day = db.Column(db.Integer, nullable=True) - cron_hour = db.Column(db.Integer, nullable=True) - cron_min = db.Column(db.Integer, nullable=True) - cron_sec = db.Column(db.Integer, nullable=True) - cron_start_date = db.Column(db.DateTime, nullable=True) - cron_end_date = db.Column(db.DateTime, nullable=True) - - intv = db.Column(db.Integer, nullable=True) - intv_type = db.Column(db.String(5), nullable=True) - intv_value = db.Column(db.Integer, nullable=True) - intv_start_date = db.Column(db.DateTime, nullable=True) - intv_end_date = db.Column(db.DateTime, nullable=True) - - ooff = db.Column(db.Integer, nullable=True) - ooff_date = db.Column(db.DateTime, nullable=True) - - global_params = db.Column(db.String(8000), nullable=True) - - sequence_tasks = db.Column(db.Integer, nullable=True) - - task = db.relationship( - "Task", + id: Mapped[intpk] + name: Mapped[Optional[str_120]] + description: Mapped[Optional[str_8000]] + owner_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(User.id), index=True) + + cron: Mapped[Optional[int]] + cron_year: Mapped[Optional[str_120]] + cron_month: Mapped[Optional[str_120]] + cron_week: Mapped[Optional[str_120]] + cron_day: Mapped[Optional[str_120]] + cron_week_day: Mapped[Optional[str_120]] + cron_hour: Mapped[Optional[str_120]] + cron_min: Mapped[Optional[str_120]] + cron_sec: Mapped[Optional[str_120]] + cron_start_date: Mapped[Optional[datetime.datetime]] + cron_end_date: Mapped[Optional[datetime.datetime]] + + intv: Mapped[Optional[int]] + intv_type: Mapped[Optional[str_5]] + intv_value: Mapped[Optional[int]] + intv_start_date: Mapped[Optional[datetime.datetime]] + intv_end_date: Mapped[Optional[datetime.datetime]] + ooff: Mapped[Optional[int]] + ooff_date: Mapped[Optional[datetime.datetime]] + + global_params: Mapped[Optional[str_8000]] + sequence_tasks: Mapped[Optional[int]] + + task: Mapped[List["Task"]] = relationship( backref="project", lazy="dynamic", cascade="all, delete, delete-orphan", @@ -192,68 +147,53 @@ class Project(db.Model): ) # projectparams link - params = db.relationship( - "ProjectParam", + params: Mapped[List["ProjectParam"]] = relationship( backref="project", lazy=True, cascade="all, delete, delete-orphan", passive_deletes=True, ) - created = db.Column(db.DateTime, server_default=functions.now()) - creator_id = db.Column( - db.Integer, db.ForeignKey(User.id), nullable=True, index=True - ) - updated = db.Column(db.DateTime, onupdate=functions.now()) - updater_id = db.Column( - db.Integer, db.ForeignKey(User.id), nullable=True, index=True - ) + created: Mapped[Optional[timestamp]] + creator_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(User.id), index=True) + updated: Mapped[Optional[datetime.datetime]] = mapped_column(onupdate=functions.now()) + updater_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(User.id), index=True) def __str__(self) -> str: """Return default string.""" return str(self.name) -@dataclass class TaskSourceType(db.Model): """Lookup table of task source types.""" __tablename__ = "task_source_type" - id: Optional[int] = None - name: Optional[str] = None - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(120), nullable=True) - task = db.relationship("Task", backref="source_type", lazy=True) + id: Mapped[int] = mapped_column(primary_key=True) + name: Mapped[Optional[str_120]] + task: Mapped["Task"] = relationship(backref="source_type", lazy=True) -@dataclass class TaskSourceQueryType(db.Model): """Lookup table of task query source types.""" __tablename__ = "task_source_query_type" - id: Optional[int] = None - name: Optional[str] = None - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(120), nullable=True) - task = db.relationship("Task", backref="query_type", lazy=True) + id: Mapped[int] = mapped_column(primary_key=True) + name: Mapped[Optional[str_120]] + task: Mapped["Task"] = relationship(backref="query_type", lazy=True) -@dataclass class TaskProcessingType(db.Model): """Lookup table of task query source types.""" __tablename__ = "task_processing_type" - id: Optional[int] = None - name: Optional[str] = None - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(120), nullable=True) - task = db.relationship("Task", backref="processing_type", lazy=True) + id: Mapped[intpk] + name: Mapped[Optional[str_120]] + task: Mapped["Task"] = relationship(backref="processing_type", lazy=True) -@dataclass class TaskStatus(db.Model): """Lookup table of task status types. @@ -261,20 +201,16 @@ class TaskStatus(db.Model): """ __tablename__ = "task_status" - id: Optional[int] = None - name: Optional[str] = None - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(1000), nullable=True) - task = db.relationship( - "Task", + id: Mapped[intpk] + name: Mapped[Optional[str_1000]] + task: Mapped[List["Task"]] = relationship( backref="status", lazy="dynamic", cascade="all, delete, delete-orphan", passive_deletes=True, ) - task_log = db.relationship( - "TaskLog", + task_log: Mapped[List["TaskLog"]] = relationship( backref="status", lazy="dynamic", cascade="all, delete, delete-orphan", @@ -282,60 +218,45 @@ class TaskStatus(db.Model): ) -@dataclass class Connection(db.Model): """Table containing all destination information.""" # pylint: disable=too-many-instance-attributes __tablename__ = "connection" - id: Optional[int] = None - name: Optional[str] = None - description: Optional[str] = None - address: Optional[str] = None - primary_contact: Optional[str] = None - primary_contact_email: Optional[str] = None - primary_contact_phone: Optional[str] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - name = db.Column(db.String(120), nullable=True) - description = db.Column(db.String(120), nullable=True) - address = db.Column(db.String(120), nullable=True) - primary_contact = db.Column(db.String(400), nullable=True) - primary_contact_email = db.Column(db.String(120), nullable=True) - primary_contact_phone = db.Column(db.String(120), nullable=True) - ssh = db.relationship( - "ConnectionSsh", + + id: Mapped[intpk] + name: Mapped[Optional[str_120]] + description: Mapped[Optional[str_120]] + address: Mapped[Optional[str_120]] + primary_contact: Mapped[Optional[str_400]] + primary_contact_email: Mapped[Optional[str_120]] + primary_contact_phone: Mapped[Optional[str_120]] + ssh: Mapped[List["ConnectionSsh"]] = relationship( backref="connection", lazy=True, foreign_keys="ConnectionSsh.connection_id", ) - sftp = db.relationship( - "ConnectionSftp", + sftp: Mapped[List["ConnectionSftp"]] = relationship( backref="connection", lazy=True, foreign_keys="ConnectionSftp.connection_id", ) - ftp = db.relationship( - "ConnectionFtp", + ftp: Mapped[List["ConnectionFtp"]] = relationship( backref="connection", lazy=True, foreign_keys="ConnectionFtp.connection_id", ) - smb = db.relationship( - "ConnectionSmb", + smb: Mapped[List["ConnectionSmb"]] = relationship( backref="connection", lazy=True, foreign_keys="ConnectionSmb.connection_id", ) - database = db.relationship( - "ConnectionDatabase", - backref="connection", + database: Mapped[List["ConnectionDatabase"]] = relationship( + back_populates="connection", lazy=True, - foreign_keys="ConnectionDatabase.connection_id", ) - gpg = db.relationship( - "ConnectionGpg", + gpg: Mapped[List["ConnectionGpg"]] = relationship( backref="connection", lazy=True, foreign_keys="ConnectionGpg.connection_id", @@ -346,52 +267,37 @@ def __str__(self) -> str: return str(self.name) -@dataclass class ConnectionSftp(db.Model): """Table conntaining sftp connection strings.""" # pylint: disable=too-many-instance-attributes __tablename__ = "connection_sftp" - id: Optional[int] = None - connection_id: Optional[int] = None - name: Optional[str] = None - address: Optional[str] = None - port: Optional[int] = None - path: Optional[str] = None - username: Optional[str] = None - key: Optional[str] = None - password: Optional[str] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - connection_id = db.Column( - db.Integer, db.ForeignKey(Connection.id), nullable=True, index=True - ) - name = db.Column(db.String(500), nullable=True) - address = db.Column(db.String(500), nullable=True) - port = db.Column(db.Integer, nullable=True) - path = db.Column(db.String(500), nullable=True) - username = db.Column(db.String(120), nullable=True) - key = db.Column(db.String(8000), nullable=True) - password = db.Column(db.Text, nullable=True) - key_password = db.Column(db.Text, nullable=True) - task = db.relationship( - "Task", + + id: Mapped[intpk] + connection_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Connection.id), index=True) + name: Mapped[Optional[str_500]] + address: Mapped[Optional[str_500]] + port: Mapped[Optional[int]] + path: Mapped[Optional[str_500]] + username: Mapped[Optional[str_120]] + key: Mapped[Optional[str_8000]] + password: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + key_password: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + task: Mapped["Task"] = relationship( backref="destination_sftp_conn", lazy=True, foreign_keys="Task.destination_sftp_id", ) - task_source = db.relationship( - "Task", + task_source: Mapped["Task"] = relationship( backref="source_sftp_conn", lazy=True, foreign_keys="Task.source_sftp_id", ) - query_source = db.relationship( - "Task", backref="query_sftp_conn", lazy=True, foreign_keys="Task.query_sftp_id" + query_source: Mapped["Task"] = relationship( + backref="query_sftp_conn", lazy=True, foreign_keys="Task.query_sftp_id" ) - processing_source = db.relationship( - "Task", + processing_source: Mapped["Task"] = relationship( backref="processing_sftp_conn", lazy=True, foreign_keys="Task.processing_sftp_id", @@ -402,32 +308,21 @@ def __str__(self) -> str: return str(self.name) -@dataclass class ConnectionSsh(db.Model): - """Table conntaining sftp connection strings.""" + """Table conntaining ssh connection strings.""" # pylint: disable=too-many-instance-attributes __tablename__ = "connection_ssh" - id: Optional[int] = None - connection_id: Optional[int] = None - name: Optional[str] = None - address: Optional[str] = None - port: Optional[int] = None - username: Optional[str] = None - password: Optional[str] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - connection_id = db.Column( - db.Integer, db.ForeignKey(Connection.id), nullable=True, index=True - ) - name = db.Column(db.String(500), nullable=True) - address = db.Column(db.String(500), nullable=True) - port = db.Column(db.Integer, nullable=True) - username = db.Column(db.String(120), nullable=True) - password = db.Column(db.Text, nullable=True) - task_source = db.relationship( - "Task", + + id: Mapped[intpk] + connection_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Connection.id), index=True) + name: Mapped[Optional[str_500]] + address: Mapped[Optional[str_500]] + port: Mapped[Optional[int]] + username: Mapped[Optional[str_120]] + password: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + task_source: Mapped["Task"] = relationship( backref="source_ssh_conn", lazy=True, foreign_keys="Task.source_ssh_id", @@ -438,26 +333,18 @@ def __str__(self) -> str: return str(self.name) -@dataclass class ConnectionGpg(db.Model): """Table conntaining gpg keys.""" # pylint: disable=too-many-instance-attributes __tablename__ = "connection_gpg" - id: Optional[int] = None - connection_id: Optional[int] = None - name: Optional[str] = None - key: Optional[str] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - connection_id = db.Column( - db.Integer, db.ForeignKey(Connection.id), nullable=True, index=True - ) - name = db.Column(db.String(500), nullable=True) - key = db.Column(db.String(8000), nullable=True) - task_source = db.relationship( - "Task", + + id: Mapped[intpk] + connection_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Connection.id), index=True) + name: Mapped[Optional[str_500]] + key: Mapped[Optional[str_8000]] + task_source: Mapped["Task"] = relationship( backref="file_gpg_conn", lazy=True, foreign_keys="Task.file_gpg_id", @@ -468,44 +355,32 @@ def __str__(self) -> str: return str(self.name) -@dataclass class ConnectionFtp(db.Model): - """Table conntaining sftp connection strings.""" + """Table conntaining ftp connection strings.""" # pylint: disable=too-many-instance-attributes __tablename__ = "connection_ftp" - id: Optional[int] = None - connection_id: Optional[int] = None - name: Optional[str] = None - address: Optional[str] = None - path: Optional[str] = None - username: Optional[str] = None - password: Optional[str] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - connection_id = db.Column( - db.Integer, db.ForeignKey(Connection.id), nullable=True, index=True - ) - name = db.Column(db.String(500), nullable=True) - address = db.Column(db.String(500), nullable=True) - path = db.Column(db.String(500), nullable=True) - username = db.Column(db.String(500), nullable=True) - password = db.Column(db.Text, nullable=True) - task = db.relationship( - "Task", + + id: Mapped[intpk] + connection_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Connection.id), index=True) + name: Mapped[Optional[str_500]] + address: Mapped[Optional[str_500]] + path: Mapped[Optional[str_500]] + username: Mapped[Optional[str_500]] + password: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + task: Mapped["Task"] = relationship( backref="destination_ftp_conn", lazy=True, foreign_keys="Task.destination_ftp_id", ) - task_source = db.relationship( - "Task", backref="source_ftp_conn", lazy=True, foreign_keys="Task.source_ftp_id" + task_source: Mapped["Task"] = relationship( + backref="source_ftp_conn", lazy=True, foreign_keys="Task.source_ftp_id" ) - query_source = db.relationship( - "Task", backref="query_ftp_conn", lazy=True, foreign_keys="Task.query_ftp_id" + query_source: Mapped["Task"] = relationship( + backref="query_ftp_conn", lazy=True, foreign_keys="Task.query_ftp_id" ) - processing_source = db.relationship( - "Task", + processing_source: Mapped["Task"] = relationship( backref="processing_ftp_conn", lazy=True, foreign_keys="Task.processing_ftp_id", @@ -516,48 +391,34 @@ def __str__(self) -> str: return str(self.name) -@dataclass class ConnectionSmb(db.Model): - """Table conntaining sftp connection strings.""" + """Table conntaining smb connection strings.""" # pylint: disable=too-many-instance-attributes __tablename__ = "connection_smb" - id: Optional[int] = None - connection_id: Optional[int] = None - name: Optional[str] = None - share_name: Optional[str] = None - path: Optional[str] = None - username: Optional[str] = None - password: Optional[str] = None - server_ip: Optional[str] = None - server_name: Optional[str] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - connection_id = db.Column( - db.Integer, db.ForeignKey(Connection.id), nullable=True, index=True - ) - name = db.Column(db.String(120), nullable=True) - share_name = db.Column(db.String(500), nullable=True) - path = db.Column(db.String(1000), nullable=True) - username = db.Column(db.String(500), nullable=True) - password = db.Column(db.Text, nullable=True) - server_ip = db.Column(db.String(500), nullable=True) - server_name = db.Column(db.String(500), nullable=True) - task = db.relationship( - "Task", + + id: Mapped[intpk] + connection_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Connection.id), index=True) + name: Mapped[Optional[str_120]] + share_name: Mapped[Optional[str_500]] + path: Mapped[Optional[str_1000]] + username: Mapped[Optional[str_500]] + password: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + server_ip: Mapped[Optional[str_500]] + server_name: Mapped[Optional[str_500]] + task: Mapped["Task"] = relationship( backref="destination_smb_conn", lazy=True, foreign_keys="Task.destination_smb_id", ) - task_source = db.relationship( - "Task", backref="source_smb_conn", lazy=True, foreign_keys="Task.source_smb_id" + task_source: Mapped["Task"] = relationship( + backref="source_smb_conn", lazy=True, foreign_keys="Task.source_smb_id" ) - query_source = db.relationship( - "Task", backref="query_smb_conn", lazy=True, foreign_keys="Task.query_smb_id" + query_source: Mapped["Task"] = relationship( + backref="query_smb_conn", lazy=True, foreign_keys="Task.query_smb_id" ) - processing_source = db.relationship( - "Task", + processing_source: Mapped["Task"] = relationship( backref="processing_smb_conn", lazy=True, foreign_keys="Task.processing_smb_id", @@ -568,431 +429,273 @@ def __str__(self) -> str: return str(self.name) -@dataclass class ConnectionDatabaseType(db.Model): """Lookup table of task source database types.""" __tablename__ = "connection_database_type" - id: Optional[int] = None - name: Optional[str] = None - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(120), nullable=True) - database = db.relationship("ConnectionDatabase", backref="database_type", lazy=True) + id: Mapped[intpk] + name: Mapped[Optional[str_120]] + database: Mapped["ConnectionDatabase"] = relationship(backref="database_type", lazy=True) -@dataclass class ConnectionDatabase(db.Model): """List of task source databases and connection strings.""" __tablename__ = "connection_database" - id: Optional[int] = None - type_id: Optional[int] = None - name: Optional[str] = None - connection_string: Optional[str] = None - connection_id: Optional[int] = None - timeout: Optional[int] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - type_id = db.Column( - db.Integer, db.ForeignKey(ConnectionDatabaseType.id), nullable=True, index=True - ) - connection_id = db.Column( - db.Integer, db.ForeignKey(Connection.id), nullable=True, index=True - ) - name = db.Column(db.String(500), nullable=True) - connection_string = db.Column(db.Text, nullable=True) - timeout = db.Column(db.Integer, nullable=True) - task_source = db.relationship( - "Task", + + id: Mapped[intpk] + type_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(ConnectionDatabaseType.id)) + connection_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Connection.id), index=True) + name: Mapped[Optional[str_500]] + connection_string: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + timeout: Mapped[Optional[int]] + task_source: Mapped["Task"] = relationship( backref="source_database_conn", lazy=True, foreign_keys="Task.source_database_id", ) + connection: Mapped["Connection"] = relationship(back_populates="database") def __str__(self) -> str: """Get string of name.""" return str(self.name) -@dataclass class TaskDestinationFileType(db.Model): """Lookup table of task destination file types.""" __tablename__ = "task_destination_file_type" - id: Optional[int] = None - name: Optional[str] = None - ext: Optional[str] = None - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(120), nullable=True) - ext = db.Column(db.String(120), nullable=False) - task = db.relationship("Task", backref="file_type", lazy=True) + id: Mapped[intpk] + name: Mapped[Optional[str_120]] + ext: Mapped[Optional[str_120]] = mapped_column(nullable=False) + task: Mapped["Task"] = relationship(backref="file_type", lazy=True) -@dataclass class QuoteLevel(db.Model): """Lookup table for python quote levels.""" __tablename__ = "quote_level" - id: Optional[int] = None - name: Optional[str] = None - id = db.Column(db.Integer, primary_key=True, index=True) - name = db.Column(db.String(120), nullable=True) - task = db.relationship("Task", backref="destination_file_quote_level", lazy=True) + id: Mapped[intpk] + name: Mapped[Optional[str_120]] + task: Mapped["Task"] = relationship(backref="destination_file_quote_level", lazy=True) -@dataclass class ProjectParam(db.Model): """Task parameters.""" __tablename__ = "project_param" - id: Optional[int] = None - key: Optional[str] = None - value: Optional[str] = None - sensitive: Optional[int] = None - project_id: Optional[int] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - key = db.Column(db.String(500), nullable=True) - value = db.Column(db.String(8000), nullable=True) - project_id = db.Column( - db.Integer, db.ForeignKey(Project.id), nullable=True, index=True - ) - sensitive = db.Column(db.Integer, nullable=True, index=True) + + id: Mapped[intpk] + key: Mapped[Optional[str_500]] + value: Mapped[Optional[str_8000]] + project_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Project.id), index=True) + sensitive: Mapped[Optional[int]] = mapped_column(index=True) -@dataclass class Task(db.Model): """Table containing task details.""" # pylint: disable=too-many-instance-attributes __tablename__ = "task" - # general information - id: Optional[int] = None - name: Optional[str] = None - project_id: Optional[int] = None - status_id: Optional[int] = None - enabled: Optional[int] = None - order: Optional[int] = None - last_run: Optional[datetime.datetime] = None - next_run: Optional[datetime.datetime] = None - last_run_job_id: Optional[str] = None - created: Optional[datetime.datetime] = None - creator_id: Optional[int] = None - updated: Optional[datetime.datetime] = None - updater_id: Optional[int] = None - - # data source - source_type_id: Optional[int] = None - source_database_id: Optional[int] = None - - source_query_type_id: Optional[int] = None - source_query_include_header: Optional[int] = None - source_git: Optional[str] = None - source_devops: Optional[str] = None - source_url: Optional[str] = None - source_code: Optional[str] = None - - source_require_sql_output: Optional[int] = None - - query_smb_id: Optional[int] = None - query_smb_file: Optional[str] = None - query_sftp_id: Optional[int] = None - query_sftp_file: Optional[str] = None - query_ftp_id: Optional[int] = None - query_ftp_file: Optional[str] = None - query_params: Optional[str] = None - - source_smb_delimiter: Optional[str] = None - source_smb_ignore_delimiter: Optional[int] = None - source_smb_file: Optional[str] = None - source_smb_id: Optional[int] = None - - source_ftp_file: Optional[str] = None - source_ftp_delimiter: Optional[str] = None - source_ftp_ignore_delimiter: Optional[int] = None - source_ftp_id: Optional[int] = None - - source_sftp_file: Optional[str] = None - source_sftp_delimiter: Optional[str] = None - source_sftp_ignore_delimiter: Optional[int] = None - source_sftp_id: Optional[int] = None - - source_ssh_id: Optional[int] = None - - # caching - source_cache: Optional[str] = None - enable_source_cache: Optional[int] = None - - # processing - processing_type_id: Optional[int] = None - processing_smb_id: Optional[int] = None - processing_smb_file: Optional[str] = None - processing_sftp_id: Optional[int] = None - processing_sftp_file: Optional[str] = None - processing_ftp_id: Optional[int] = None - processing_ftp_file: Optional[str] = None - processing_code: Optional[str] = None - processing_url: Optional[str] = None - processing_git: Optional[str] = None - processing_devops: Optional[str] = None - processing_command: Optional[str] = None - - # destination - destination_file_delimiter: Optional[str] = None - destination_file_name: Optional[str] = None - destination_ignore_delimiter: Optional[int] = None - destination_file_line_terminator: Optional[str] = None - destination_quote_level_id: Optional[int] = None - - destination_create_zip: Optional[int] = None - destination_zip_name: Optional[str] = None - - destination_file_type_id: Optional[int] = None - - destination_sftp: Optional[int] = None - destination_sftp_overwrite: Optional[int] = None - destination_sftp_id: Optional[int] = None - destination_sftp_dont_send_empty_file: Optional[int] = None - - destination_ftp: Optional[int] = None - destination_ftp_overwrite: Optional[int] = None - destination_ftp_id: Optional[int] = None - destination_ftp_dont_send_empty_file: Optional[int] = None - - destination_smb: Optional[int] = None - destination_smb_overwrite: Optional[int] = None - destination_smb_id: Optional[int] = None - destination_smb_dont_send_empty_file: Optional[int] = None - - file_gpg: Optional[int] = None - file_gpg_id: Optional[int] = None - - email_completion: Optional[int] = None - email_completion_log: Optional[int] = None - email_completion_file: Optional[int] = None - email_completion_file_embed: Optional[int] = None - email_completion_dont_send_empty_file: Optional[int] = None - email_completion_recipients: Optional[str] = None - email_completion_message: Optional[str] = None - - email_error: Optional[int] = None - email_error_recipients: Optional[str] = None - email_error_message: Optional[str] = None - - max_retries: Optional[int] = None - - est_duration: Optional[int] = None # general information - id = db.Column(db.Integer, primary_key=True, index=True) - name = db.Column(db.String(1000), nullable=True) - project_id = db.Column( - db.Integer, db.ForeignKey(Project.id), nullable=True, index=True - ) - status_id = db.Column( - db.Integer, db.ForeignKey(TaskStatus.id), nullable=True, index=True - ) - enabled = db.Column(db.Integer, nullable=True, index=True) - order = db.Column(db.Integer, nullable=True, index=True) - last_run = db.Column(db.DateTime, nullable=True) - last_run_job_id = db.Column(db.String(30), nullable=True, index=True) - next_run = db.Column(db.DateTime, nullable=True, index=True) - created = db.Column(db.DateTime, server_default=functions.now(), index=True) - creator_id = db.Column( - db.Integer, db.ForeignKey(User.id), nullable=True, index=True - ) - updated = db.Column(db.DateTime, onupdate=functions.now(), index=True) - updater_id = db.Column( - db.Integer, db.ForeignKey(User.id), nullable=True, index=True - ) + id: Mapped[intpk] + name: Mapped[Optional[str_1000]] + project_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Project.id), index=True) + status_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(TaskStatus.id)) + enabled: Mapped[Optional[int]] = mapped_column(index=True) + order: Mapped[Optional[int]] = mapped_column(index=True) + last_run: Mapped[Optional[datetime.datetime]] + last_run_job_id: Mapped[Optional[str_30]] = mapped_column(index=True) + next_run: Mapped[Optional[datetime.datetime]] = mapped_column(index=True) + created: Mapped[Optional[timestamp]] = mapped_column(index=True) + creator_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(User.id), index=True) + updated: Mapped[Optional[datetime.datetime]] = mapped_column( + onupdate=functions.now(), index=True + ) + updater_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(User.id), index=True) """ data source """ # db/sftp/smb/ftp - source_type_id = db.Column( - db.Integer, db.ForeignKey(TaskSourceType.id), nullable=True, index=True + source_type_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(TaskSourceType.id), index=True ) # source locations # git/url/code/sftp/ftp/smb/devops - source_query_type_id = db.Column( - db.Integer, db.ForeignKey(TaskSourceQueryType.id), nullable=True, index=True + source_query_type_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(TaskSourceQueryType.id), index=True ) - source_query_include_header = db.Column(db.Integer, nullable=True) + source_query_include_header: Mapped[Optional[int]] - source_require_sql_output = db.Column(db.Integer, nullable=True) + source_require_sql_output: Mapped[Optional[int]] # source git - source_git = db.Column(db.String(1000), nullable=True) + source_git: Mapped[Optional[str_1000]] # source devops - source_devops = db.Column(db.String(1000), nullable=True) + source_devops: Mapped[Optional[str_1000]] # source web url - source_url = db.Column(db.String(1000), nullable=True) + source_url: Mapped[Optional[str_1000]] # source typed code - source_code = db.Column(db.Text, nullable=True) + source_code: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) # cached source query - source_cache = db.Column(db.Text, nullable=True) - enable_source_cache = db.Column(db.Integer, nullable=True, index=True) + source_cache: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + enable_source_cache: Mapped[Optional[int]] = mapped_column(index=True) - query_smb_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSmb.id), nullable=True, index=True + query_smb_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSmb.id), index=True ) - query_smb_file = db.Column(db.String(1000), nullable=True) + query_smb_file: Mapped[Optional[str_1000]] - query_sftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSftp.id), nullable=True, index=True + query_sftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSftp.id), index=True ) - query_sftp_file = db.Column(db.String(1000), nullable=True) + query_sftp_file: Mapped[Optional[str_1000]] - query_ftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionFtp.id), nullable=True, index=True + query_ftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionFtp.id), index=True ) - query_ftp_file = db.Column(db.String(1000), nullable=True) + query_ftp_file: Mapped[Optional[str_1000]] - query_params = db.Column(db.String(8000), nullable=True) + query_params: Mapped[Optional[str_8000]] # source smb sql file - source_smb_file = db.Column(db.String(1000), nullable=True) - source_smb_delimiter = db.Column(db.String(10), nullable=True) - source_smb_ignore_delimiter = db.Column(db.Integer, nullable=True) - source_smb_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSmb.id), nullable=True, index=True + source_smb_file: Mapped[Optional[str_1000]] + source_smb_delimiter: Mapped[Optional[str_10]] + source_smb_ignore_delimiter: Mapped[Optional[int]] + source_smb_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSmb.id), index=True ) # source ftp sql file - source_ftp_file = db.Column(db.String(1000), nullable=True) - source_ftp_delimiter = db.Column(db.String(10), nullable=True) - source_ftp_ignore_delimiter = db.Column(db.Integer, nullable=True) - source_ftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionFtp.id), nullable=True, index=True + source_ftp_file: Mapped[Optional[str_1000]] + source_ftp_delimiter: Mapped[Optional[str_10]] + source_ftp_ignore_delimiter: Mapped[Optional[int]] + source_ftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionFtp.id), index=True ) # source sftp sql file - source_sftp_file = db.Column(db.String(1000), nullable=True) - source_sftp_delimiter = db.Column(db.String(10), nullable=True) - source_sftp_ignore_delimiter = db.Column(db.Integer, nullable=True) - source_sftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSftp.id), nullable=True, index=True + source_sftp_file: Mapped[Optional[str_1000]] + source_sftp_delimiter: Mapped[Optional[str_10]] + source_sftp_ignore_delimiter: Mapped[Optional[int]] + source_sftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSftp.id), index=True ) # source database - source_database_id = db.Column( - db.Integer, db.ForeignKey(ConnectionDatabase.id), nullable=True, index=True + source_database_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionDatabase.id), index=True ) - source_ssh_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSsh.id), nullable=True, index=True + source_ssh_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSsh.id), index=True ) """ processing script source """ - processing_type_id = db.Column( - db.Integer, db.ForeignKey(TaskProcessingType.id), nullable=True, index=True - ) + processing_type_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(TaskProcessingType.id)) - processing_smb_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSmb.id), nullable=True, index=True + processing_smb_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSmb.id), index=True ) - processing_smb_file = db.Column(db.String(1000), nullable=True) + processing_smb_file: Mapped[Optional[str_1000]] - processing_sftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSftp.id), nullable=True, index=True + processing_sftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSftp.id), index=True ) - processing_sftp_file = db.Column(db.String(1000), nullable=True) + processing_sftp_file: Mapped[Optional[str_1000]] - processing_ftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionFtp.id), nullable=True, index=True + processing_ftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionFtp.id), index=True ) - processing_ftp_file = db.Column(db.String(1000), nullable=True) + processing_ftp_file: Mapped[Optional[str_1000]] - processing_code = db.Column(db.String(8000), nullable=True) - processing_url = db.Column(db.String(1000), nullable=True) - processing_git = db.Column(db.String(1000), nullable=True) - processing_devops = db.Column(db.String(1000), nullable=True) - processing_command = db.Column(db.String(1000), nullable=True) + processing_code: Mapped[Optional[str_8000]] + processing_url: Mapped[Optional[str_1000]] + processing_git: Mapped[Optional[str_1000]] + processing_devops: Mapped[Optional[str_1000]] + processing_command: Mapped[Optional[str_1000]] """ destination """ # destination file - destination_file_name = db.Column(db.String(1000), nullable=True) - destination_file_delimiter = db.Column(db.String(10), nullable=True) - destination_ignore_delimiter = db.Column(db.Integer, nullable=True) - destination_file_line_terminator = db.Column(db.String(10), nullable=True) + destination_file_name: Mapped[Optional[str_1000]] + destination_file_delimiter: Mapped[Optional[str_10]] + destination_ignore_delimiter: Mapped[Optional[int]] + destination_file_line_terminator: Mapped[Optional[str_10]] # destination zip archive - destination_create_zip = db.Column(db.Integer, nullable=True) - destination_zip_name = db.Column(db.String(1000), nullable=True) + destination_create_zip: Mapped[Optional[int]] + destination_zip_name: Mapped[Optional[str_1000]] # csv/txt/other - destination_file_type_id = db.Column( - db.Integer, db.ForeignKey(TaskDestinationFileType.id), nullable=True, index=True + destination_file_type_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(TaskDestinationFileType.id) ) # save to sftp server - destination_sftp = db.Column(db.Integer, nullable=True, index=True) - destination_sftp_overwrite = db.Column(db.Integer, nullable=True) - destination_sftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSftp.id), nullable=True, index=True + destination_sftp: Mapped[Optional[int]] = mapped_column(index=True) + destination_sftp_overwrite: Mapped[Optional[int]] + destination_sftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSftp.id), index=True ) - destination_sftp_dont_send_empty_file = db.Column(db.Integer, nullable=True) + destination_sftp_dont_send_empty_file: Mapped[Optional[int]] # save to ftp server - destination_ftp = db.Column(db.Integer, nullable=True, index=True) - destination_ftp_overwrite = db.Column(db.Integer, nullable=True) - destination_ftp_id = db.Column( - db.Integer, db.ForeignKey(ConnectionFtp.id), nullable=True, index=True + destination_ftp: Mapped[Optional[int]] = mapped_column(index=True) + destination_ftp_overwrite: Mapped[Optional[int]] + destination_ftp_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionFtp.id), index=True ) - destination_ftp_dont_send_empty_file = db.Column(db.Integer, nullable=True) - + destination_ftp_dont_send_empty_file: Mapped[Optional[int]] # save to smb server - destination_smb = db.Column(db.Integer, nullable=True, index=True) - destination_smb_overwrite = db.Column(db.Integer, nullable=True) - destination_smb_id = db.Column( - db.Integer, db.ForeignKey(ConnectionSmb.id), nullable=True, index=True + destination_smb: Mapped[Optional[int]] = mapped_column(index=True) + destination_smb_overwrite: Mapped[Optional[int]] + destination_smb_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(ConnectionSmb.id), index=True ) - destination_smb_dont_send_empty_file = db.Column(db.Integer, nullable=True) + destination_smb_dont_send_empty_file: Mapped[Optional[int]] - file_gpg = db.Column(db.Integer, nullable=True, index=True) - file_gpg_id = db.Column( - db.Integer, db.ForeignKey(ConnectionGpg.id), nullable=True, index=True - ) + file_gpg: Mapped[Optional[int]] = mapped_column(index=True) + file_gpg_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(ConnectionGpg.id), index=True) - destination_quote_level_id = db.Column( - db.Integer, db.ForeignKey(QuoteLevel.id), nullable=True, index=True + destination_quote_level_id: Mapped[Optional[int]] = mapped_column( + db.ForeignKey(QuoteLevel.id), index=True ) """ email """ # completion email - email_completion = db.Column(db.Integer, nullable=True, index=True) - email_completion_log = db.Column(db.Integer, nullable=True) - email_completion_file = db.Column(db.Integer, nullable=True) - email_completion_file_embed = db.Column(db.Integer, nullable=True) - email_completion_recipients = db.Column(db.String(1000), nullable=True) - email_completion_subject = db.Column(db.String(8000), nullable=True) - email_completion_message = db.Column(db.String(8000), nullable=True) - email_completion_dont_send_empty_file = db.Column(db.Integer, nullable=True) + email_completion: Mapped[Optional[int]] = mapped_column(index=True) + email_completion_log: Mapped[Optional[int]] + email_completion_file: Mapped[Optional[int]] + email_completion_file_embed: Mapped[Optional[int]] + email_completion_recipients: Mapped[Optional[str_1000]] + email_completion_subject: Mapped[Optional[str_8000]] + email_completion_message: Mapped[Optional[str_8000]] + email_completion_dont_send_empty_file: Mapped[Optional[int]] # error email - email_error = db.Column(db.Integer, nullable=True, index=True) - email_error_recipients = db.Column(db.String(1000), nullable=True) - email_error_subject = db.Column(db.String(8000), nullable=True) - email_error_message = db.Column(db.String(8000), nullable=True) + email_error: Mapped[Optional[int]] + email_error_recipients: Mapped[Optional[str_1000]] + email_error_subject: Mapped[Optional[str_8000]] + email_error_message: Mapped[Optional[str_8000]] # rerun on fail - max_retries = db.Column(db.Integer, nullable=True, index=True) + max_retries: Mapped[Optional[int]] = mapped_column(index=True) - est_duration = db.Column(db.Integer, nullable=True, index=True) + est_duration: Mapped[Optional[int]] = mapped_column(index=True) # tasklog link - task = db.relationship( - "TaskLog", + task: Mapped[List["TaskLog"]] = relationship( backref="task", lazy=True, cascade="all, delete, delete-orphan", @@ -1000,8 +703,7 @@ class Task(db.Model): ) # taskparams link - params = db.relationship( - "TaskParam", + params: Mapped[List["TaskParam"]] = relationship( backref="task", lazy=True, cascade="all, delete, delete-orphan", @@ -1009,8 +711,7 @@ class Task(db.Model): ) # taskfiles link - files = db.relationship( - "TaskFile", + files: Mapped[List["TaskFile"]] = relationship( backref="task", lazy=True, cascade="all, delete, delete-orphan", @@ -1028,70 +729,46 @@ class TaskLog(db.Model): # pylint: disable=too-many-instance-attributes __tablename__ = "task_log" - id: Optional[int] = None - task_id: Optional[int] = None - status_id: Optional[int] = None - job_id: Optional[str] = None - message: Optional[str] = None - error: Optional[int] = 0 - status_date: Optional[datetime.datetime] = None - - job_id = db.Column(db.String(1000), nullable=True, index=True) - id = db.Column(db.Integer, primary_key=True, index=True) - task_id = db.Column(db.Integer, db.ForeignKey(Task.id), nullable=True, index=True) - status_id = db.Column( - db.Integer, db.ForeignKey(TaskStatus.id), nullable=True, index=True - ) - message = db.Column(db.Text, nullable=True) - status_date = db.Column(db.DateTime, default=datetime.datetime.now, index=True) - error = db.Column(db.Integer, nullable=True, index=True) - __table_args__ = ( - db.Index("ix_task_log_status_date_error", "status_date", "error"), + job_id: Mapped[Optional[str_1000]] = mapped_column(index=True) + id: Mapped[intpk] + task_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Task.id), index=True) + status_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(TaskStatus.id), index=True) + message: Mapped[Optional[str]] = mapped_column(db.Text, nullable=True) + status_date: Mapped[Optional[datetime.datetime]] = mapped_column( + default=datetime.datetime.now, index=True ) + error: Mapped[Optional[int]] = mapped_column(index=True) + + __table_args__ = (db.Index("ix_task_log_status_date_error", "status_date", "error"),) -@dataclass class TaskFile(db.Model): """Table containing paths to task backup files.""" __tablename__ = "task_file" - id: Optional[int] = None - name: Optional[str] = None - task_id: Optional[int] = None - job_id: Optional[str] = None - size: Optional[str] = None - file_hash: Optional[str] = None - path: Optional[str] = None - created: Optional[datetime.datetime] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - name = db.Column(db.String(1000), nullable=True, index=True) - task_id = db.Column(db.Integer, db.ForeignKey(Task.id), nullable=True, index=True) - job_id = db.Column(db.String(1000), nullable=True, index=True) - size = db.Column(db.String(200), nullable=True, index=True) - path = db.Column(db.String(1000), nullable=True, index=True) - file_hash = db.Column(db.String(1000), nullable=True) - created = db.Column(db.DateTime, default=datetime.datetime.now, index=True) - - __table_args__ = ( - db.Index("ix_task_file_id_task_id_job_id", "id", "task_id", "job_id"), + + id: Mapped[intpk] + name: Mapped[Optional[str_1000]] = mapped_column(index=True) + task_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Task.id), index=True) + job_id: Mapped[Optional[str_1000]] = mapped_column(index=True) + size: Mapped[Optional[str_200]] = mapped_column(index=True) + path: Mapped[Optional[str_1000]] = mapped_column(index=True) + file_hash: Mapped[Optional[str_1000]] + created: Mapped[Optional[datetime.datetime]] = mapped_column( + default=datetime.datetime.now, index=True ) + __table_args__ = (db.Index("ix_task_file_id_task_id_job_id", "id", "task_id", "job_id"),) + -@dataclass class TaskParam(db.Model): """Task parameters.""" __tablename__ = "task_param" - id: Optional[int] = None - key: Optional[str] = None - value: Optional[str] = None - sensitive: Optional[int] = None - task_id: Optional[int] = None - - id = db.Column(db.Integer, primary_key=True, index=True) - key = db.Column(db.String(500), nullable=True) - value = db.Column(db.String(8000), nullable=True) - task_id = db.Column(db.Integer, db.ForeignKey(Task.id), nullable=True, index=True) - sensitive = db.Column(db.Integer, nullable=True, index=True) + + id: Mapped[intpk] + key: Mapped[Optional[str_500]] + value: Mapped[Optional[str_8000]] + task_id: Mapped[Optional[int]] = mapped_column(db.ForeignKey(Task.id), index=True) + sensitive: Mapped[Optional[int]] = mapped_column(index=True) diff --git a/web/seed.py b/web/seed.py index f63b57cf..91bed61b 100644 --- a/web/seed.py +++ b/web/seed.py @@ -14,6 +14,7 @@ flask seed_demo """ + # pylint: disable=C0301 import sys diff --git a/web/static/assets/base.scss b/web/static/assets/base.scss index 15e88861..cf25ee2f 100644 --- a/web/static/assets/base.scss +++ b/web/static/assets/base.scss @@ -1,5 +1,42 @@ +@use 'sass:math'; +@use 'sass:meta'; @use '../../../node_modules/@fontsource/inter/scss/mixins' as Inter; @use '../../../node_modules/@fontsource/rasa/scss/mixins' as Rasa; +@use '../../../node_modules/bulma/sass/utilities' + with( + $family-primary: + 'Inter, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Lucida Sans Unicode, Lucida Grande, Arial, sans-serif', + $cssvars-prefix: '' + ); +@use '../../../node_modules/bulma/sass/elements' with ( + $title-family: 'Rasa, Georgia, Times New Roman, serif' +); +@forward '../../../node_modules/bulma/sass/base'; +@use '../../../node_modules/bulma/sass/components' with ( + $breadcrumb-item-active-color: #363636 +); + +@forward '../../../node_modules/bulma/sass/layout'; +@forward '../../../node_modules/bulma/sass/form'; +@forward '../../../node_modules/bulma/sass/grid'; +@forward '../../../node_modules/bulma/sass/helpers'; + +// Import the themes so that all CSS variables have a value +@use '../../../node_modules/bulma/sass/themes'; + +@import 'bulma-switch'; +@import 'bulma-tooltip'; +@import 'bulma-checkradio'; +/* purgecss start ignore */ +@import '../fonts/fontawesome/stylesheet'; +@import '../lib/codemirror/codemirror'; +@import '../lib/codemirror/ttcn'; +@import '../lib/codemirror/simplescrollbars'; +@import '../lib/scroll/scroll'; +@import '../lib/prism/prism'; +@import '../lib/table/table'; +@import '../lib/prism/prism_line_numbers'; +@import '../lib/flatpickr/flatpickr'; @include Inter.faces( $family: 'Inter', @@ -23,41 +60,6 @@ $display: swap ); -$title-family: 'Rasa', 'Georgia', 'Times New Roman', serif; - -$family-sans-serif: - 'Inter', - -apple-system, - 'BlinkMacSystemFont', - 'Segoe UI', - 'Roboto', - 'Helvetica Neue', - 'Lucida Sans Unicode', - 'Lucida Grande', - 'Arial', - sans-serif, - 'Apple Color Emoji', - 'Segoe UI Emoji', - 'Segoe UI Symbol'; - -@import '../../../node_modules/bulma-checkradio/src/sass'; -@import '../../../node_modules/bulma/bulma'; - -@import '../../../node_modules/bulma-switch/src/sass'; -@import '../../../node_modules/bulma-tooltip/src/sass'; - -/* purgecss start ignore */ -@import '../fonts/fontawesome/stylesheet'; -@import '../lib/codemirror/codemirror'; -@import '../lib/codemirror/ttcn'; -@import '../lib/codemirror/simplescrollbars'; -@import '../lib/scroll/scroll'; -@import '../lib/prism/prism'; -@import '../lib/table/table'; -@import '../lib/prism/prism_line_numbers'; -@import '../lib/flatpickr/flatpickr'; -@import '../lib/table/table'; - .column { min-width: 0px; } @@ -79,25 +81,25 @@ $family-sans-serif: } a.navbar-item { &:hover { - color: $grey-darker; + color: utilities.$grey-darker; } } .has-dropdown { .navbar-link { &:hover { - color: $grey-darker; + color: utilities.$grey-darker; } } } } -@media screen and (min-width: $desktop) { +@media screen and (min-width: utilities.$desktop) { .atlas-navbar .navbar-start { padding-top: 0 !important; } } -@media screen and (min-width: $desktop) { +@media screen and (min-width: utilities.$desktop) { .hide-desktop { display: none !important; } @@ -116,13 +118,13 @@ $family-sans-serif: min-width: max(50vw, 100%); max-width: 800px; display: none; - border-radius: $radius; + border-radius: utilities.$radius; z-index: 999999; max-height: calc(100vh - 145px); overflow-y: auto; } -@media screen and (min-width: $desktop) { +@media screen and (min-width: utilities.$desktop) { #search-results { min-width: max(30vw, 100%); } @@ -135,8 +137,7 @@ $family-sans-serif: #search-results:active, #search-results.search-focus { display: block; - box-shadow: $shadow; - border: 1px solid $border; + border: 1px solid utilities.$border; } #search-results .panel-block:first-of-type { @@ -163,8 +164,8 @@ $family-sans-serif: } #search-results em { - background-color: $info-light; - color: $info; + background-color: rgb(239, 245, 251); + color: rgb(62, 142, 208); } /*** tabs ***/ @@ -279,7 +280,7 @@ input.transparent { content: attr(data-attr); position: absolute; bottom: -30px; - background: $white; + background: utilities.$white; right: 0; left: 0; } @@ -287,7 +288,7 @@ input.transparent { .em-ScaleBar { height: 1px; width: 100%; - background: $grey-light; + background: utilities.$grey-light; position: relative; margin-bottom: 50px; &::before { @@ -295,9 +296,9 @@ input.transparent { position: absolute; top: 50%; transform: translateY(-50%); - background: $white; + background: utilities.$white; padding-right: 10px; - color: $grey-dark; + color: utilities.$grey-dark; } &:last-of-type { background: transparent; diff --git a/web/static/assets/bulma-checkradio.sass b/web/static/assets/bulma-checkradio.sass new file mode 100644 index 00000000..10a1c2ea --- /dev/null +++ b/web/static/assets/bulma-checkradio.sass @@ -0,0 +1,370 @@ +@use "sass:math" +@use "../../../node_modules/bulma/sass/utilities" as ut + + +$checkbox-radius: ut.$radius !default +$checkbox-border: .1rem solid ut.$grey-lighter !default +$checkbox-block-background: ut.$white-ter !default +$checkbox-checked-width: .1rem !default +$checkradio-focus: 1px dotted ut.$grey-light !default +$checkradio-top-offset: 0rem !default + +=checkbox-size($size) + $newSize: $size * 1.5 + $height: math.div($newSize, 2.5) + $width: math.div($newSize, 4) + + + label + font-size: $size + padding-left: $size * 2 + &::before, + &:before + width: $newSize + height: $newSize + &::after, + &:after + width: $width + height: $height + top: ( ( math.div($newSize, 2) ) - ( math.div($height, 2) ) ) * 0.9 + left: $height + + &.is-block + + label + &::before, + &:before + width: 1.25 * $size + height: 1.25 * $size + left: .175rem + top: .175rem + &::after, + &:after + top: .2rem + $size * 0.125 + left: .2rem + $size * 0.45 + + &.is-rtl + + label + padding-left: 0 + padding-right: $size * 2 + &::after, + &:after + left: auto + right: $height + +// Use a mixin to define all ratios in the same spot +=radio-size($size) + $newSize: $size * 1.5 + $height: $newSize + $width: $newSize + + + label + font-size: $size + line-height: $newSize + padding-left: $size * 2 + &::before, + &:before, + &::after, + &:after + width: $width + height: $height + &.is-rtl + + label + padding-right: $size * 2 + +.is-checkradio[type="radio"], +.is-checkradio[type="checkbox"] + outline: 0 + user-select: none + display: none + position: absolute + opacity: 0 + + + label + position: relative + display: initial + cursor: pointer + vertical-align: middle + margin: .5em + padding: .2rem .5rem .2rem 0 + border-radius: $checkbox-radius + &:first-of-type + margin-left: 0 + + &:hover + &::before, + &:before + animation-duration: 0.4s + animation-fill-mode: both + animation-name: hover-color + + &::before, + &:before + position: absolute + left: 0 + top: $checkradio-top-offset + content: '' + border: $checkbox-border + + &::after, + &:after + position: absolute + display: none + content: '' + top: $checkradio-top-offset + + &.is-rtl + + label + margin-right: 0rem + margin-left: 0.5rem + &::before, + &:before + left: auto + right: 0 + + &:focus + + label + &::before, + &:before + outline: $checkradio-focus + + &:hover:not([disabled]) + + label + &::before, + &:before + border-color: ut.$primary !important + + &:checked + + label + &::before, + &:before + border: $checkbox-border + &[disabled] + cursor: not-allowed + + label + opacity: 0.5 + + label + &::before, + &:before + animation-name: none + &::after, + &:after + display: inline-block + + &[disabled] + cursor: not-allowed + + label + opacity: 0.5 + cursor: not-allowed + &:hover, + &:before, + &::before, + &::after, + &:after + cursor: not-allowed + + &:hover + cursor: not-allowed + &::before, + &:before + animation-name: none + + &::before, + &:before + cursor: not-allowed + + &::after, + &:after + cursor: not-allowed + + &.has-no-border + + label + &::before, + &:before + border: none !important + + &.is-block + display: none !important + + label + width: 100% !important + background: $checkbox-block-background + color: findColorInvert( $checkbox-block-background ) + padding-right: .75em + &:hover:not([disabled]) + + label + background: darken($checkbox-block-background, 5%) + +.is-checkradio[type="checkbox"] + + label + &::before, + &:before + border-radius: $checkbox-radius + + &::after, + &:after + box-sizing: border-box + transform: translateY($checkradio-top-offset) rotate(45deg) + border-width: $checkbox-checked-width + border-style: solid + border-color: ut.$primary + border-top: 0 + border-left: 0 + + &.is-circle + + label + &::before, + &:before + border-radius: 50% + + +checkbox-size(ut.$size-normal) + &.is-small + +checkbox-size(ut.$size-small) + &.is-medium + +checkbox-size(ut.$size-medium) + &.is-large + +checkbox-size(ut.$size-large) + + + @each $name, $pair in ut.$colors + @if length($name) > 1 + $color: nth($pair, 1) + $color-invert: nth($pair, 2) + &.is-#{$name} + &.has-background-color + + label + &::before, + &:before + border-color: transparent !important + background-color: $color !important + &:hover:not([disabled]) + + label + &::before, + &:before + border-color: $color !important + &:checked + + label + &::after, + &:after + border-color: $color !important + &.has-background-color + + label + &::before, + &:before + border-color: transparent !important + background-color: $color !important + &::after, + &:after + border-color: $color-invert !important + background-color: $color !important + &.is-block + &:hover:not([disabled]) + + label + &::after, + &:after, + &::before, + &:before + border-color: $color !important + &:checked + + label + color: $color-invert + border-color: $color !important + background: $color + &::after, + &:after + border-color: $color-invert !important + &:hover:not([disabled]) + + label + background: darken($color, 5%) + &::after, + &:after, + &::before, + &:before + border-color: darken($color-invert, 5%) !important + + &:indeterminate + + label + &::after, + &:after + display: inline-block + transform: rotate(90deg) + border-bottom: none + @each $name, $pair in ut.$colors + @if length($name) > 1 + $color: nth($pair, 1) + $color-invert: nth($pair, 2) + &.is-#{$name} + + label + &::after, + &:after + border-color: $color + +.is-checkradio[type="radio"] + + label + &::before, + &:before + border-radius: 50% + &::after, + &:after + border-radius: 50% + background: ut.$primary + left: 0 + transform: scale(0.5) + + &:checked + &.has-background-color + + label + &::before, + &:before + border-color: ut.$text !important + background-color: ut.$text !important + &::after, + &:after + border-color: ut.$text !important + background-color: ut.$text !important + + &.is-rtl + + label + padding-left: 0 + &::after, + &:after + left: auto + right: 0 + + +radio-size(ut.$size-normal) + &.is-small + +radio-size(ut.$size-small) + &.is-medium + +radio-size(ut.$size-medium) + &.is-large + +radio-size(ut.$size-large) + + @each $name, $pair in ut.$colors + @if length($name) > 1 + $color: nth($pair, 1) + $color-invert: nth($pair, 2) + &.is-#{$name} + &.has-background-color + + label + &::before, + &:before + border-color: $color !important + background-color: $color !important + &:hover:not([disabled]) + + label + &::before, + &:before + border-color: $color !important + &:checked + + label + &::after, + &:after + border-color: $color !important + background-color: $color !important + &.has-background-color + + label + &::before, + &:before + border-color: $color !important + background-color: $color !important + &::after, + &:after + border-color: $color-invert !important + background-color: $color-invert !important diff --git a/web/static/assets/bulma-switch.sass b/web/static/assets/bulma-switch.sass new file mode 100644 index 00000000..9a3b2e75 --- /dev/null +++ b/web/static/assets/bulma-switch.sass @@ -0,0 +1,247 @@ +@use "sass:list" +@use "../../../node_modules/bulma/sass/utilities/controls" +@use "../../../node_modules/bulma/sass/utilities/derived-variables" +@use "../../../node_modules/bulma/sass/utilities/initial-variables" + +$switch-background: initial-variables.$grey-light !default +$switch-border: .1rem solid transparent !default +$switch-background-active: derived-variables.$primary !default +$switch-radius: initial-variables.$radius !default +$switch-paddle-background: initial-variables.$white !default +$switch-paddle-background-active: derived-variables.$primary !default +$switch-paddle-offset: 0.25rem !default +$switch-paddle-transition: all 0.25s ease-out !default +$switch-focus: 1px dotted initial-variables.$grey-light !default + +=switch-size($size) + $switch-height: $size * 1.5 + $switch-width: $switch-height * 2 + $paddle-height: $switch-height - ($switch-paddle-offset * 2) + $paddle-width: $switch-height - ($switch-paddle-offset * 2) + $paddle-active-offest: $switch-width - $paddle-width - ($switch-paddle-offset * 1.5) + + + label + position: relative + display: inline-flex + align-items: center + justify-content: flex-start + font-size: $size + height: controls.$control-height + line-height: controls.$control-line-height + padding-left: $switch-width + .5 + padding-top: .2rem + cursor: pointer + + &::before, + &:before + position: absolute + display: block + top: calc( 50% - #{$switch-height} * 0.5 ) + left: 0 + width: $switch-width + height: $switch-height + border: $switch-border + border-radius: $switch-radius + background: $switch-background + content: '' + + &::after, + &:after + display: block + position: absolute + top: calc( 50% - #{$paddle-height} * 0.5 ) + left: $switch-paddle-offset + width: $paddle-width + height: $paddle-height + transform: translate3d(0, 0, 0) + border-radius: $switch-radius + background: $switch-paddle-background + transition: $switch-paddle-transition + content: '' + + .switch-active, .switch-inactive + font-size: $size - 0.1 + z-index: 1 + margin-top: -4px + &.has-text-inside + .switch-inactive + margin-left: -($paddle-active-offest + 0.3) + .switch-active + margin-left: -($paddle-active-offest * 2) + + + &.is-rtl + + label + padding-left: 0 + padding-right: $switch-width + .5 + &::before, + &:before + left: auto + right: 0 + &::after, + &:after + left: auto + right: $paddle-active-offest + + &:checked + + label + &::before, + &:before + background: $switch-background-active + &::after + left: $paddle-active-offest + &.is-rtl + + label + &::after, + &:after + left: auto + right: $switch-paddle-offset + + &.is-outlined + + label + &::before, + &:before + background-color: transparent + border-color: $switch-background + &::after, + &:after + background: $switch-background + &:checked + + label + &::before, + &:before + background-color: transparent + border-color: $switch-background-active + &::after, + &:after + background: $switch-paddle-background-active + + &.is-thin + + label + &::before, + &:before + top: divide($switch-height, 2.75) + height: divide($switch-height, 4) + &::after, + &:after + box-shadow: 0px 0px 3px initial-variables.$grey + + &.is-rounded + + label + &::before, + &:before + border-radius: initial-variables.$radius-large * 4 + &::after, + &:after + border-radius: 50% + + +.switch[type="checkbox"] + outline: 0 + user-select: none + display: inline-block + position: absolute + opacity: 0 + + &:focus + + label + &::before, + &:before, + &::after, + &:after + outline: $switch-focus + + &[disabled] + cursor: not-allowed + + label + opacity: 0.5 + &::before, + &:before + opacity: 0.5 + &::after, + &:after + opacity: 0.5 + &:hover + cursor: not-allowed + + +switch-size(derived-variables.$size-normal) + &.is-small + +switch-size(derived-variables.$size-small) + &.is-medium + +switch-size(derived-variables.$size-medium) + &.is-large + +switch-size(derived-variables.$size-large) + + @each $name, $pair in derived-variables.$colors + @if length($name) > 1 + $color: list.nth($pair, 1) + $color-invert: list.nth($pair, 2) + &.is-#{$name} + + label + .switch-active + display: none + .switch-inactive + display: inline-block + &:checked + + label + &::before, + &:before + background: $color + .switch-active + display: inline-block + .switch-inactive + display: none + &.is-outlined + &:checked + + label + &::before, + &:before + background-color: transparent + border-color: $color !important + &::after, + &:after + background: $color + &.is-thin + &.is-outlined + + label + &::after, + &:after + box-shadow: none + &.is-unchecked-#{$name} + + label + &::before, + &:before + background: $color + &.is-outlined + + label + &::before, + &:before + background-color: transparent + border-color: $color !important + &::after, + &:after + background: $color + +.field-body + .switch[type="checkbox"] + + label + margin-top: .375em + +@function divide($dividend, $divisor, $precision: 10) + $sign: if($dividend > 0 and $divisor > 0, 1, -1) + $dividend: abs($dividend) + $divisor: abs($divisor) + $quotient: 0 + $remainder: $dividend + @if $dividend == 0 + @return 0 + @if $divisor == 0 + @error "Cannot divide by 0" + @if $divisor == 1 + @return $dividend + @while $remainder >= $divisor + $quotient: $quotient + 1 + $remainder: $remainder - $divisor + @if $remainder > 0 and $precision > 0 + $remainder: divide($remainder * 10, $divisor, $precision - 1) * .1 + @return ($quotient + $remainder) * $sign diff --git a/web/static/assets/bulma-tooltip.sass b/web/static/assets/bulma-tooltip.sass new file mode 100644 index 00000000..36dabcff --- /dev/null +++ b/web/static/assets/bulma-tooltip.sass @@ -0,0 +1,273 @@ +@use '../../../node_modules/bulma/sass/utilities/initial-variables' as iv +@use '../../../node_modules/bulma/sass/utilities/derived-variables' as dv +@use '../../../node_modules/bulma/sass/utilities/mixins' as * +$tooltip-arrow-size: 6px !default +$tooltip-background-color: iv.$grey-dark !default +$tooltip-background-opacity: 0.9 !default +$tooltip-color: iv.$white !default +$tooltip-font-family: dv.$family-primary !default +$tooltip-font-size: iv.$size-7 +$tooltip-max-width: 15rem !default +$tooltip-padding: .5rem 1rem !default +$tooltip-radius: iv.$radius-small !default +$tooltip-z-index: 1020 !default + +=tooltip-hover + &:focus::before, + &:focus::after, + &:hover::before, + &:hover::after, + &.has-tooltip-active::before, + &.has-tooltip-active::after + @content + +=tooltip-arrow-top + &::after + top: 0 + right: auto + bottom: auto + left: 50% + margin-top: $tooltip-arrow-size * -1 + 1 + margin-right: auto + margin-bottom: auto + margin-left: $tooltip-arrow-size * -1 + 1 + border-color: rgba($tooltip-background-color, $tooltip-background-opacity) transparent transparent transparent + +=tooltip-box-top + &::before + top: 0 + right: auto + bottom: auto + left: 50% + top: 0 + margin-top: $tooltip-arrow-size * -1 + 1 + margin-bottom: auto + transform: translate(-50%, -100%) + +=tooltip-top + +tooltip-arrow-top + +tooltip-box-top + +=tooltip-arrow-bottom + &::after + top: auto + right: auto + bottom: 0 + left: 50% + margin-top: auto + margin-right: auto + margin-bottom: $tooltip-arrow-size * -1 + 1 + margin-left: $tooltip-arrow-size * -1 + 1 + border-color: transparent transparent rgba($tooltip-background-color, $tooltip-background-opacity) transparent + +=tooltip-box-bottom + &::before + top: auto + right: auto + bottom: 0 + left: 50% + margin-top: auto + margin-bottom: $tooltip-arrow-size * -1 + 1 + transform: translate(-50%, 100%) + +=tooltip-bottom + +tooltip-arrow-bottom + +tooltip-box-bottom + + +=tooltip-arrow-left + &::after + top: auto + right: auto + bottom: 50% + left: 0 + margin-top: auto + margin-right: auto + margin-bottom: $tooltip-arrow-size * -1 + margin-left: $tooltip-arrow-size * -2 + 1 + border-color: transparent transparent transparent rgba($tooltip-background-color, $tooltip-background-opacity) + +=tooltip-box-left + &::before + top: auto + right: auto + bottom: 50% + left: $tooltip-arrow-size * -2 + 1 + transform: translate(-100%, 50%) + +=tooltip-left + +tooltip-arrow-left + +tooltip-box-left + + +=tooltip-arrow-right + &::after + top: auto + right: 0 + bottom: 50% + left: auto + margin-top: auto + margin-right: $tooltip-arrow-size * -2 + 1 + margin-bottom: $tooltip-arrow-size * -1 + margin-left: auto + border-color: transparent rgba($tooltip-background-color, $tooltip-background-opacity) transparent transparent + +=tooltip-box-right + &::before + top: auto + right: $tooltip-arrow-size * -2 + 1 + bottom: 50% + left: auto + margin-top: auto + transform: translate(100%, 50%) + +=tooltip-right + +tooltip-arrow-right + +tooltip-box-right + + +=tooltip-direction($direction) + @if $direction == 'top' + @include tooltip-top + @else if $direction == 'right' + @include tooltip-right + @else if $direction == 'bottom' + @include tooltip-bottom + @else if $direction == 'left' + @include tooltip-left + +=tooltip-fade + &::before, + &::after + transition: opacity .3s linear, visibility .3s linear + +=tooltip-arrow + &::after + content: '' + border-style: solid + border-width: $tooltip-arrow-size + border-color: rgba($tooltip-background-color, $tooltip-background-opacity) transparent transparent transparent + margin-bottom: $tooltip-arrow-size * -1 + 1 + +tooltip-arrow-top + +=tooltip-box + &::before + background: rgba($tooltip-background-color, $tooltip-background-opacity) + border-radius: $tooltip-radius + content: attr(data-tooltip) + padding: $tooltip-padding + text-overflow: ellipsis + white-space: pre + +tooltip-box-top + +=tooltip-multiline + &::before + height: auto + width: $tooltip-max-width + max-width: $tooltip-max-width + text-overflow: clip + white-space: normal + word-break: keep-all + +[data-tooltip] + &:not(.is-loading), + &:not(.is-disabled), + &:not([disabled]) + cursor: pointer + overflow: visible + position: relative + + &::before, + &::after + box-sizing: border-box + color: $tooltip-color + display: inline-block + font-family: $tooltip-font-family + font-size: $tooltip-font-size + hyphens: auto + opacity: 0 + overflow: hidden + pointer-events: none + position: absolute + visibility: hidden + z-index: $tooltip-z-index + + +tooltip-arrow + +tooltip-box + + &.has-tooltip-bottom + +tooltip-direction('bottom') + + &.has-tooltip-left + +tooltip-direction('left') + + &.has-tooltip-right + +tooltip-direction('right') + + &.has-tooltip-multiline + +tooltip-multiline + + @each $name, $pair in dv.$colors + @if length($name) > 1 + $color: nth($pair, 1) + $color-invert: nth($pair, 2) + &.has-tooltip-#{$name} + &.has-tooltip-bottom + &::after + border-color: transparent transparent rgba($color, $tooltip-background-opacity) transparent + &.has-tooltip-left + &::after + border-color: transparent transparent transparent rgba($color, $tooltip-background-opacity) + &.has-tooltip-right + &::after + border-color: transparent rgba($color, $tooltip-background-opacity) transparent transparent + &:not(.has-tooltip-bottom), + &:not(.has-tooltip-left), + &:not(.has-tooltip-right) + &::after + border-color: rgba($color, $tooltip-background-opacity) transparent transparent transparent + &:before + background-color: rgba($color, $tooltip-background-opacity) + color: $color-invert + + +tooltip-hover + opacity: 1 + visibility: visible + + &.has-tooltip-fade + +tooltip-fade + +@each $direction in top, right, bottom, left + +mobile + .has-tooltip-#{$direction}-mobile + @include tooltip-direction(#{$direction}) + +tablet + .has-tooltip-#{$direction}-tablet + @include tooltip-direction(#{$direction}) + +tablet-only + .has-tooltip-#{$direction}-tablet-only + @include tooltip-direction(#{$direction}) + +touch + .has-tooltip-#{$direction}-touch + @include tooltip-direction(#{$direction}) + +desktop + .has-tooltip-#{$direction}-desktop + @include tooltip-direction(#{$direction}) + +desktop-only + .has-tooltip-#{$direction}-desktop-only + @include tooltip-direction(#{$direction}) + +until-widescreen + .has-tooltip-#{$direction}-until-widescreen + @include tooltip-direction(#{$direction}) + +widescreen + .has-tooltip-#{$direction}-widescreen + @include tooltip-direction(#{$direction}) + +widescreen-only + .has-tooltip-#{$direction}-widescreen-only + @include tooltip-direction(#{$direction}) + +until-fullhd + .has-tooltip-#{$direction}-until-fullhd + @include tooltip-direction(#{$direction}) + +fullhd + .has-tooltip-#{$direction}-fullhd + @include tooltip-direction(#{$direction}) diff --git a/web/static/css/base.css b/web/static/css/base.css index 6dce241b..1294d038 100644 --- a/web/static/css/base.css +++ b/web/static/css/base.css @@ -1,4 +1,125 @@ -@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:300;unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+2000-206f,u+2074,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd;src:url(/static/fonts/inter/files/inter-latin-300-normal.woff2) format("woff2"),url(/static/fonts/inter/files/inter-latin-300-normal.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+2000-206f,u+2074,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd;src:url(/static/fonts/inter/files/inter-latin-400-normal.woff2) format("woff2"),url(/static/fonts/inter/files/inter-latin-400-normal.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+2000-206f,u+2074,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd;src:url(/static/fonts/inter/files/inter-latin-500-normal.woff2) format("woff2"),url(/static/fonts/inter/files/inter-latin-500-normal.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+2000-206f,u+2074,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd;src:url(/static/fonts/inter/files/inter-latin-600-normal.woff2) format("woff2"),url(/static/fonts/inter/files/inter-latin-600-normal.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+2000-206f,u+2074,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd;src:url(/static/fonts/inter/files/inter-latin-700-normal.woff2) format("woff2"),url(/static/fonts/inter/files/inter-latin-700-normal.woff) format("woff")}@font-face{font-family:Rasa;font-style:normal;font-display:swap;font-weight:600;unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+2000-206f,u+2074,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd;src:url(/static/fonts/rasa/files/rasa-latin-600-normal.woff2) format("woff2"),url(/static/fonts/rasa/files/rasa-latin-600-normal.woff) format("woff")}.is-checkradio[type=checkbox]{outline:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:none;position:absolute;opacity:0}.is-checkradio[type=checkbox]+label{position:relative;display:initial;cursor:pointer;vertical-align:middle;margin:.5em;padding:.2rem .5rem .2rem 0;border-radius:4px}.is-checkradio[type=checkbox]+label:first-of-type{margin-left:0}.is-checkradio[type=checkbox]+label:hover:before{animation-duration:.4s;animation-fill-mode:both;animation-name:hover-color}.is-checkradio[type=checkbox]+label:before{position:absolute;left:0;top:0;content:"";border:.1rem solid #dbdbdb}.is-checkradio[type=checkbox]+label:after{position:absolute;display:none;content:"";top:0}.is-checkradio[type=checkbox]:focus+label:before{outline:1px dotted #b5b5b5}.is-checkradio[type=checkbox]:hover:not([disabled])+label:before{border-color:#00d1b2!important}.is-checkradio[type=checkbox]:checked+label:before{border:.1rem solid #dbdbdb}.is-checkradio[type=checkbox]:checked[disabled]{cursor:not-allowed}.is-checkradio[type=checkbox]:checked[disabled]+label{opacity:.5}.is-checkradio[type=checkbox]:checked+label:before{animation-name:none}.is-checkradio[type=checkbox]:checked+label:after{display:inline-block}.is-checkradio[type=checkbox][disabled]{cursor:not-allowed}.is-checkradio[type=checkbox][disabled]+label{opacity:.5;cursor:not-allowed}.is-checkradio[type=checkbox][disabled]+label:after,.is-checkradio[type=checkbox][disabled]+label:before,.is-checkradio[type=checkbox][disabled]+label:hover,.is-checkradio[type=checkbox][disabled]:hover{cursor:not-allowed}.is-checkradio[type=checkbox][disabled]:hover:before{animation-name:none}.is-checkradio[type=checkbox][disabled]:after,.is-checkradio[type=checkbox][disabled]:before{cursor:not-allowed}.is-checkradio[type=checkbox].is-block{display:none!important}.is-checkradio[type=checkbox].is-block+label{width:100%!important;background:#f5f5f5;color:rgba(0,0,0,.7);padding-right:.75em}.is-checkradio[type=checkbox].is-block:hover:not([disabled])+label{background:#e8e8e8}.is-checkradio[type=checkbox]+label:before{border-radius:4px}.is-checkradio[type=checkbox]+label:after{box-sizing:border-box;transform:translateY(0) rotate(45deg);border:.1rem solid #00d1b2;border-top:0;border-left:0}.is-checkradio[type=checkbox]+label{font-size:1rem;padding-left:2rem}.is-checkradio[type=checkbox]+label:before{width:1.5rem;height:1.5rem}.is-checkradio[type=checkbox]+label:after{width:.375rem;height:.6rem;top:.405rem;left:.6rem}.is-checkradio[type=checkbox].is-block+label:before{width:1.25rem;height:1.25rem;left:.175rem;top:.175rem}.is-checkradio[type=checkbox].is-block+label:after{top:.325rem;left:.65rem}.is-checkradio[type=checkbox].is-small+label{font-size:.75rem;padding-left:1.5rem}.is-checkradio[type=checkbox].is-small+label:before{width:1.125rem;height:1.125rem}.is-checkradio[type=checkbox].is-small+label:after{width:.28125rem;height:.45rem;top:.30375rem;left:.45rem}.is-checkradio[type=checkbox].is-small.is-block+label:before{width:.9375rem;height:.9375rem;left:.175rem;top:.175rem}.is-checkradio[type=checkbox].is-small.is-block+label:after{top:.29375rem;left:.5375rem}.is-checkradio[type=checkbox].is-medium+label{font-size:1.25rem;padding-left:2.5rem}.is-checkradio[type=checkbox].is-medium+label:before{width:1.875rem;height:1.875rem}.is-checkradio[type=checkbox].is-medium+label:after{width:.46875rem;height:.75rem;top:.50625rem;left:.75rem}.is-checkradio[type=checkbox].is-medium.is-block+label:before{width:1.5625rem;height:1.5625rem;left:.175rem;top:.175rem}.is-checkradio[type=checkbox].is-medium.is-block+label:after{top:.35625rem;left:.7625rem}.is-checkradio[type=checkbox].is-large+label{font-size:1.5rem;padding-left:3rem}.is-checkradio[type=checkbox].is-large+label:before{width:2.25rem;height:2.25rem}.is-checkradio[type=checkbox].is-large+label:after{width:.5625rem;height:.9rem;top:.6075rem;left:.9rem}.is-checkradio[type=checkbox].is-large.is-block+label:before{width:1.875rem;height:1.875rem;left:.175rem;top:.175rem}.is-checkradio[type=checkbox].is-large.is-block+label:after{top:.3875rem;left:.875rem}.is-checkradio[type=checkbox].is-light.is-block:hover:not([disabled])+label:after,.is-checkradio[type=checkbox].is-light.is-block:hover:not([disabled])+label:before,.is-checkradio[type=checkbox].is-light:checked+label:after,.is-checkradio[type=checkbox].is-light:hover:not([disabled])+label:before{border-color:#f5f5f5!important}.is-checkradio[type=checkbox].is-light.is-block:checked+label{color:rgba(0,0,0,.7);border-color:#f5f5f5!important;background:#f5f5f5}.is-checkradio[type=checkbox].is-light.is-block:checked+label:after{border-color:rgba(0,0,0,.7)!important}.is-checkradio[type=checkbox].is-light.is-block:checked:hover:not([disabled])+label{background:#e8e8e8}.is-checkradio[type=checkbox].is-light.is-block:checked:hover:not([disabled])+label:after,.is-checkradio[type=checkbox].is-light.is-block:checked:hover:not([disabled])+label:before{border-color:rgba(0,0,0,.7)!important}.is-checkradio[type=checkbox].is-primary.is-block:hover:not([disabled])+label:after,.is-checkradio[type=checkbox].is-primary.is-block:hover:not([disabled])+label:before,.is-checkradio[type=checkbox].is-primary:checked+label:after,.is-checkradio[type=checkbox].is-primary:hover:not([disabled])+label:before{border-color:#00d1b2!important}.is-checkradio[type=checkbox].is-primary.is-block:checked+label{color:#fff;border-color:#00d1b2!important;background:#00d1b2}.is-checkradio[type=checkbox].is-primary.is-block:checked+label:after{border-color:#fff!important}.is-checkradio[type=checkbox].is-primary.is-block:checked:hover:not([disabled])+label{background:#00b89c}.is-checkradio[type=checkbox].is-primary.is-block:checked:hover:not([disabled])+label:after,.is-checkradio[type=checkbox].is-primary.is-block:checked:hover:not([disabled])+label:before{border-color:#f2f2f2!important}.is-checkradio[type=checkbox].is-info.is-block:hover:not([disabled])+label:after,.is-checkradio[type=checkbox].is-info.is-block:hover:not([disabled])+label:before,.is-checkradio[type=checkbox].is-info:checked+label:after,.is-checkradio[type=checkbox].is-info:hover:not([disabled])+label:before{border-color:#3e8ed0!important}.is-checkradio[type=checkbox].is-info.is-block:checked+label{color:#fff;border-color:#3e8ed0!important;background:#3e8ed0}.is-checkradio[type=checkbox].is-info.is-block:checked+label:after{border-color:#fff!important}.is-checkradio[type=checkbox].is-info.is-block:checked:hover:not([disabled])+label{background:#3082c5}.is-checkradio[type=checkbox].is-info.is-block:checked:hover:not([disabled])+label:after,.is-checkradio[type=checkbox].is-info.is-block:checked:hover:not([disabled])+label:before{border-color:#f2f2f2!important}.is-checkradio[type=checkbox].is-success.is-block:hover:not([disabled])+label:after,.is-checkradio[type=checkbox].is-success.is-block:hover:not([disabled])+label:before,.is-checkradio[type=checkbox].is-success:checked+label:after,.is-checkradio[type=checkbox].is-success:hover:not([disabled])+label:before{border-color:#48c78e!important}.is-checkradio[type=checkbox].is-success.is-block:checked+label{color:#fff;border-color:#48c78e!important;background:#48c78e}.is-checkradio[type=checkbox].is-success.is-block:checked+label:after{border-color:#fff!important}.is-checkradio[type=checkbox].is-success.is-block:checked:hover:not([disabled])+label{background:#3abb81}.is-checkradio[type=checkbox].is-success.is-block:checked:hover:not([disabled])+label:after,.is-checkradio[type=checkbox].is-success.is-block:checked:hover:not([disabled])+label:before{border-color:#f2f2f2!important}.is-checkradio[type=checkbox].is-warning.is-block:hover:not([disabled])+label:after,.is-checkradio[type=checkbox].is-warning.is-block:hover:not([disabled])+label:before,.is-checkradio[type=checkbox].is-warning:checked+label:after,.is-checkradio[type=checkbox].is-warning:hover:not([disabled])+label:before{border-color:#ffe08a!important}.is-checkradio[type=checkbox].is-warning.is-block:checked+label{color:rgba(0,0,0,.7);border-color:#ffe08a!important;background:#ffe08a}.is-checkradio[type=checkbox].is-warning.is-block:checked+label:after{border-color:rgba(0,0,0,.7)!important}.is-checkradio[type=checkbox].is-warning.is-block:checked:hover:not([disabled])+label{background:#ffd970}.is-checkradio[type=checkbox].is-warning.is-block:checked:hover:not([disabled])+label:after,.is-checkradio[type=checkbox].is-warning.is-block:checked:hover:not([disabled])+label:before{border-color:rgba(0,0,0,.7)!important}.is-checkradio[type=checkbox].is-danger.is-block:hover:not([disabled])+label:after,.is-checkradio[type=checkbox].is-danger.is-block:hover:not([disabled])+label:before,.is-checkradio[type=checkbox].is-danger:checked+label:after,.is-checkradio[type=checkbox].is-danger:hover:not([disabled])+label:before{border-color:#f14668!important}.is-checkradio[type=checkbox].is-danger.is-block:checked+label{color:#fff;border-color:#f14668!important;background:#f14668}.is-checkradio[type=checkbox].is-danger.is-block:checked+label:after{border-color:#fff!important}.is-checkradio[type=checkbox].is-danger.is-block:checked:hover:not([disabled])+label{background:#ef2e55}.is-checkradio[type=checkbox].is-danger.is-block:checked:hover:not([disabled])+label:after,.is-checkradio[type=checkbox].is-danger.is-block:checked:hover:not([disabled])+label:before{border-color:#f2f2f2!important}.is-checkradio[type=checkbox]:indeterminate+label:after{display:inline-block;transform:rotate(90deg);border-bottom:none}.is-checkradio[type=checkbox]:indeterminate.is-light+label:after{border-color:#f5f5f5}.is-checkradio[type=checkbox]:indeterminate.is-primary+label:after{border-color:#00d1b2}.is-checkradio[type=checkbox]:indeterminate.is-info+label:after{border-color:#3e8ed0}.is-checkradio[type=checkbox]:indeterminate.is-success+label:after{border-color:#48c78e}.is-checkradio[type=checkbox]:indeterminate.is-warning+label:after{border-color:#ffe08a}.is-checkradio[type=checkbox]:indeterminate.is-danger+label:after{border-color:#f14668} +@charset "UTF-8"; +/* Bulma Utilities */ -/*! bulma.io v0.9.4 | MIT License | github.com/jgthms/bulma */.button,.input,.pagination-link,.select select,.textarea{-moz-appearance:none;-webkit-appearance:none;-ms-flex-align:center;align-items:center;border:1px solid transparent;border-radius:4px;box-shadow:none;display:-ms-inline-flexbox;display:inline-flex;font-size:1rem;height:2.5em;-ms-flex-pack:start;justify-content:flex-start;line-height:1.5;padding:calc(.5em - 1px) calc(.75em - 1px);position:relative;vertical-align:top}.button:active,.button:focus,.input:active,.input:focus,.is-active.button,.is-active.input,.is-active.pagination-link,.is-active.textarea,.pagination-link:active,.pagination-link:focus,.select select.is-active,.select select:active,.select select:focus,.textarea:active,.textarea:focus{outline:none}.select select[disabled],[disabled].button,[disabled].input,[disabled].pagination-link,[disabled].textarea{cursor:not-allowed}.breadcrumb,.button,.file,.pagination-link,.tabs{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.navbar-link:not(.is-arrowless):after,.select:not(.is-multiple):not(.is-loading):after{border:3px solid transparent;border-radius:2px;border-right:0;border-top:0;content:" ";display:block;height:.625em;margin-top:-.4375em;pointer-events:none;position:absolute;top:50%;transform:rotate(-45deg);transform-origin:center;width:.625em}.block:not(:last-child),.box:not(:last-child),.breadcrumb:not(:last-child),.content:not(:last-child),.level:not(:last-child),.message:not(:last-child),.notification:not(:last-child),.pagination:not(:last-child),.progress:not(:last-child),.subtitle:not(:last-child),.table-container:not(:last-child),.table:not(:last-child),.tabs:not(:last-child),.title:not(:last-child){margin-bottom:1.5rem}.delete{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-moz-appearance:none;-webkit-appearance:none;background-color:hsla(0,0%,4%,.2);border:none;border-radius:9999px;cursor:pointer;pointer-events:auto;display:inline-block;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;font-size:0;height:20px;max-height:20px;max-width:20px;min-height:20px;min-width:20px;outline:none;position:relative;vertical-align:top;width:20px}.delete:after,.delete:before{background-color:#fff;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.delete:before{height:2px;width:50%}.delete:after{height:50%;width:2px}.delete:focus,.delete:hover{background-color:hsla(0,0%,4%,.3)}.delete:active{background-color:hsla(0,0%,4%,.4)}.is-small.delete{height:16px;max-height:16px;max-width:16px;min-height:16px;min-width:16px;width:16px}.is-medium.delete{height:24px;max-height:24px;max-width:24px;min-height:24px;min-width:24px;width:24px}.is-large.delete{height:32px;max-height:32px;max-width:32px;min-height:32px;min-width:32px;width:32px}.loader{animation:a .5s infinite linear;border:2px solid #dbdbdb;border-radius:9999px;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:1em;position:relative;width:1em}.modal{bottom:0;left:0;position:absolute;right:0;top:0}.navbar-burger{color:currentColor;font-family:inherit;font-size:1em} -/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */.navbar-burger,blockquote,body,dd,figure,h1,h2,h3,h4,h5,hr,html,iframe,li,ol,p,pre,textarea,ul{margin:0;padding:0}h1,h2,h3,h4,h5{font-size:100%;font-weight:400}ul{list-style:none}button,input,select,textarea{margin:0}html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}iframe{border:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}td:not([align]),th:not([align]){text-align:inherit}html{background-color:#fff;font-size:16px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;min-width:300px;overflow-x:hidden;overflow-y:scroll;text-rendering:optimizeLegibility;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%}article,figure,footer,header,section{display:block}body,button,input,select,textarea{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Lucida Sans Unicode,Lucida Grande,Arial,sans-serif}code,pre{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto;font-family:monospace}body{color:#4a4a4a;font-size:1em;font-weight:400;line-height:1.5}a{color:#485fc7;cursor:pointer;text-decoration:none}a strong{color:currentColor}a:hover{color:#363636}code{color:#da1039;font-size:.875em;font-weight:400;padding:.25em .5em}code,hr{background-color:#f5f5f5}hr{border:none;display:block;height:2px;margin:1.5rem 0}img{height:auto;max-width:100%}input[type=checkbox]{vertical-align:baseline}small{font-size:.875em}span{font-style:inherit;font-weight:inherit}strong{color:#363636;font-weight:700}pre{-webkit-overflow-scrolling:touch;background-color:#f5f5f5;color:#4a4a4a;font-size:.875em;overflow-x:auto;padding:1.25rem 1.5rem;white-space:pre;word-wrap:normal}pre code{background-color:transparent;color:currentColor;font-size:1em;padding:0}table td,table th{vertical-align:top}table td:not([align]),table th:not([align]){text-align:inherit}table th{color:#363636}@keyframes a{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}.box{background-color:#fff;border-radius:6px;box-shadow:0 .5em 1em -.125em hsla(0,0%,4%,.1),0 0 0 1px hsla(0,0%,4%,.02);color:#4a4a4a;display:block;padding:1.25rem}a.box:focus,a.box:hover{box-shadow:0 .5em 1em -.125em hsla(0,0%,4%,.1),0 0 0 1px #485fc7}a.box:active{box-shadow:inset 0 1px 2px hsla(0,0%,4%,.2),0 0 0 1px #485fc7}.button{background-color:#fff;border-color:#dbdbdb;border-width:1px;color:#363636;cursor:pointer;-ms-flex-pack:center;justify-content:center;padding:calc(.5em - 1px) 1em;text-align:center;white-space:nowrap}.button strong{color:inherit}.button .icon,.button .icon.is-large,.button .icon.is-medium,.button .icon.is-small{height:1.5em;width:1.5em}.button .icon:first-child:not(:last-child){margin-left:calc(-.5em - 1px);margin-right:.25em}.button .icon:last-child:not(:first-child){margin-left:.25em;margin-right:calc(-.5em - 1px)}.button .icon:first-child:last-child{margin-left:calc(-.5em - 1px);margin-right:calc(-.5em - 1px)}.button:hover{border-color:#b5b5b5;color:#363636}.button:focus{border-color:#485fc7;color:#363636}.button:focus:not(:active){box-shadow:0 0 0 .125em rgba(72,95,199,.25)}.button.is-active,.button:active{border-color:#4a4a4a;color:#363636}.button.is-light{background-color:#f5f5f5}.button.is-light,.button.is-light:hover{border-color:transparent;color:rgba(0,0,0,.7)}.button.is-light:hover{background-color:#eee}.button.is-light:focus{border-color:transparent;color:rgba(0,0,0,.7)}.button.is-light:focus:not(:active){box-shadow:0 0 0 .125em hsla(0,0%,96%,.25)}.button.is-light.is-active,.button.is-light:active{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-light[disabled]{background-color:#f5f5f5;border-color:#f5f5f5;box-shadow:none}.button.is-primary{background-color:#00d1b2;border-color:transparent;color:#fff}.button.is-primary:hover{background-color:#00c4a7}.button.is-primary:focus,.button.is-primary:hover{border-color:transparent;color:#fff}.button.is-primary:focus:not(:active){box-shadow:0 0 0 .125em rgba(0,209,178,.25)}.button.is-primary.is-active,.button.is-primary:active{background-color:#00b89c;border-color:transparent;color:#fff}.button.is-primary[disabled]{background-color:#00d1b2;border-color:#00d1b2;box-shadow:none}.button.is-primary.is-light{background-color:#ebfffc;color:#00947e}.button.is-primary.is-light:hover{background-color:#defffa;border-color:transparent;color:#00947e}.button.is-primary.is-light.is-active,.button.is-primary.is-light:active{background-color:#d1fff8;border-color:transparent;color:#00947e}.button.is-info{background-color:#3e8ed0;border-color:transparent;color:#fff}.button.is-info:hover{background-color:#3488ce}.button.is-info:focus,.button.is-info:hover{border-color:transparent;color:#fff}.button.is-info:focus:not(:active){box-shadow:0 0 0 .125em rgba(62,142,208,.25)}.button.is-info.is-active,.button.is-info:active{background-color:#3082c5;border-color:transparent;color:#fff}.button.is-info[disabled]{background-color:#3e8ed0;border-color:#3e8ed0;box-shadow:none}.button.is-info.is-light{background-color:#eff5fb;color:#296fa8}.button.is-info.is-light:hover{background-color:#e4eff9;border-color:transparent;color:#296fa8}.button.is-info.is-light.is-active,.button.is-info.is-light:active{background-color:#dae9f6;border-color:transparent;color:#296fa8}.button.is-success{background-color:#48c78e;border-color:transparent;color:#fff}.button.is-success:hover{background-color:#3ec487}.button.is-success:focus,.button.is-success:hover{border-color:transparent;color:#fff}.button.is-success:focus:not(:active){box-shadow:0 0 0 .125em rgba(72,199,142,.25)}.button.is-success.is-active,.button.is-success:active{background-color:#3abb81;border-color:transparent;color:#fff}.button.is-success[disabled]{background-color:#48c78e;border-color:#48c78e;box-shadow:none}.button.is-success.is-light{background-color:#effaf5;color:#257953}.button.is-success.is-light:hover{background-color:#e6f7ef;border-color:transparent;color:#257953}.button.is-success.is-light.is-active,.button.is-success.is-light:active{background-color:#dcf4e9;border-color:transparent;color:#257953}.button.is-warning{background-color:#ffe08a}.button.is-warning,.button.is-warning:hover{border-color:transparent;color:rgba(0,0,0,.7)}.button.is-warning:hover{background-color:#ffdc7d}.button.is-warning:focus{border-color:transparent;color:rgba(0,0,0,.7)}.button.is-warning:focus:not(:active){box-shadow:0 0 0 .125em rgba(255,224,138,.25)}.button.is-warning.is-active,.button.is-warning:active{background-color:#ffd970;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-warning[disabled]{background-color:#ffe08a;border-color:#ffe08a;box-shadow:none}.button.is-warning.is-light{background-color:#fffaeb;color:#946c00}.button.is-warning.is-light:hover{background-color:#fff6de;border-color:transparent;color:#946c00}.button.is-warning.is-light.is-active,.button.is-warning.is-light:active{background-color:#fff3d1;border-color:transparent;color:#946c00}.button.is-danger{background-color:#f14668;border-color:transparent;color:#fff}.button.is-danger:hover{background-color:#f03a5f}.button.is-danger:focus,.button.is-danger:hover{border-color:transparent;color:#fff}.button.is-danger:focus:not(:active){box-shadow:0 0 0 .125em rgba(241,70,104,.25)}.button.is-danger.is-active,.button.is-danger:active{background-color:#ef2e55;border-color:transparent;color:#fff}.button.is-danger[disabled]{background-color:#f14668;border-color:#f14668;box-shadow:none}.button.is-danger.is-light{background-color:#feecf0;color:#cc0f35}.button.is-danger.is-light:hover{background-color:#fde0e6;border-color:transparent;color:#cc0f35}.button.is-danger.is-light.is-active,.button.is-danger.is-light:active{background-color:#fcd4dc;border-color:transparent;color:#cc0f35}.button.is-small{font-size:.75rem}.button.is-small:not(.is-rounded){border-radius:2px}.button.is-medium{font-size:1.25rem}.button.is-large{font-size:1.5rem}.button[disabled]{background-color:#fff;border-color:#dbdbdb;box-shadow:none;opacity:.5}.button.is-fullwidth{display:-ms-flexbox;display:flex;width:100%}.button.is-rounded{border-radius:9999px;padding-left:1.25em;padding-right:1.25em}.buttons{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.buttons .button{margin-bottom:.5rem}.buttons .button:not(:last-child):not(.is-fullwidth){margin-right:.5rem}.buttons:last-child{margin-bottom:-.5rem}.buttons:not(:last-child){margin-bottom:1rem}.buttons.has-addons .button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.buttons.has-addons .button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}.buttons.has-addons .button:last-child{margin-right:0}.buttons.has-addons .button:hover{z-index:2}.buttons.has-addons .button.is-active,.buttons.has-addons .button:active,.buttons.has-addons .button:focus{z-index:3}.buttons.has-addons .button.is-active:hover,.buttons.has-addons .button:active:hover,.buttons.has-addons .button:focus:hover{z-index:4}.buttons.has-addons .button.is-expanded{-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1}.buttons.is-centered{-ms-flex-pack:center;justify-content:center}.buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth){margin-left:.25rem;margin-right:.25rem}.container{-ms-flex-positive:1;flex-grow:1;margin:0 auto;position:relative;width:auto}@media screen and (min-width:1024px){.container{max-width:960px}}@media screen and (min-width:1216px){.container:not(.is-max-desktop){max-width:1152px}}@media screen and (min-width:1408px){.container:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}.content li+li{margin-top:.25em}.content blockquote:not(:last-child),.content ol:not(:last-child),.content p:not(:last-child),.content pre:not(:last-child),.content table:not(:last-child),.content ul:not(:last-child){margin-bottom:1em}.content h1,.content h2,.content h3,.content h4,.content h5{color:#363636;font-weight:600;line-height:1.125}.content h1{font-size:2em;margin-bottom:.5em}.content h1:not(:first-child){margin-top:1em}.content h2{font-size:1.75em;margin-bottom:.5714em}.content h2:not(:first-child){margin-top:1.1428em}.content h3{font-size:1.5em;margin-bottom:.6666em}.content h3:not(:first-child){margin-top:1.3333em}.content h4{font-size:1.25em;margin-bottom:.8em}.content h5{font-size:1.125em;margin-bottom:.8888em}.content blockquote{background-color:#f5f5f5;border-left:5px solid #dbdbdb;padding:1.25em 1.5em}.content ol{list-style-position:outside;margin-left:2em;margin-top:1em}.content ol:not([type]){list-style-type:decimal}.content ul{list-style:disc outside;margin-left:2em;margin-top:1em}.content ul ul{list-style-type:circle;margin-top:.5em}.content ul ul ul{list-style-type:square}.content dd{margin-left:2em}.content figure{margin-left:2em;margin-right:2em;text-align:center}.content figure:not(:first-child){margin-top:2em}.content figure:not(:last-child){margin-bottom:2em}.content figure img{display:inline-block}.content pre{-webkit-overflow-scrolling:touch;overflow-x:auto;padding:1.25em 1.5em;white-space:pre;word-wrap:normal}.content sub{font-size:75%}.content table{width:100%}.content table td,.content table th{border:1px solid #dbdbdb;border-width:0 0 1px;padding:.5em .75em;vertical-align:top}.content table th{color:#363636}.content table th:not([align]){text-align:inherit}.content table thead td,.content table thead th{border-width:0 0 2px;color:#363636}.content table tbody tr:last-child td,.content table tbody tr:last-child th{border-bottom-width:0}.content .tabs li+li{margin-top:0}.content.is-small{font-size:.75rem}.content.is-medium{font-size:1.25rem}.content.is-large{font-size:1.5rem}.icon{-ms-flex-align:center;align-items:center;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;height:1.5rem;width:1.5rem}.icon.is-small{height:1rem;width:1rem}.icon.is-medium{height:2rem;width:2rem}.icon.is-large{height:3rem;width:3rem}.icon-text{-ms-flex-align:start;align-items:flex-start;color:inherit;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-wrap:wrap;flex-wrap:wrap;line-height:1.5rem;vertical-align:top}.icon-text .icon{-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0}.icon-text .icon:not(:last-child){margin-right:.25em}.icon-text .icon:not(:first-child){margin-left:.25em}div.icon-text{display:-ms-flexbox;display:flex}.image{display:block;position:relative}.image img{display:block;height:auto;width:100%}.image img.is-rounded{border-radius:9999px}.image.is-fullwidth{width:100%}.notification{background-color:#f5f5f5;border-radius:4px;position:relative;padding:1.25rem 2.5rem 1.25rem 1.5rem}.notification a:not(.button):not(.dropdown-item){color:currentColor;text-decoration:underline}.notification strong{color:currentColor}.notification code,.notification pre{background:#fff}.notification pre code{background:transparent}.notification>.delete{right:.5rem;position:absolute;top:.5rem}.notification .content,.notification .subtitle,.notification .title{color:currentColor}.notification.is-light{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.notification.is-primary{background-color:#00d1b2;color:#fff}.notification.is-primary.is-light{background-color:#ebfffc;color:#00947e}.notification.is-info{background-color:#3e8ed0;color:#fff}.notification.is-info.is-light{background-color:#eff5fb;color:#296fa8}.notification.is-success{background-color:#48c78e;color:#fff}.notification.is-success.is-light{background-color:#effaf5;color:#257953}.notification.is-warning{background-color:#ffe08a;color:rgba(0,0,0,.7)}.notification.is-warning.is-light{background-color:#fffaeb;color:#946c00}.notification.is-danger{background-color:#f14668;color:#fff}.notification.is-danger.is-light{background-color:#feecf0;color:#cc0f35}.progress{-moz-appearance:none;-webkit-appearance:none;border:none;border-radius:9999px;display:block;height:1rem;overflow:hidden;padding:0;width:100%}.progress::-webkit-progress-bar{background-color:#ededed}.progress::-webkit-progress-value{background-color:#4a4a4a}.progress::-moz-progress-bar{background-color:#4a4a4a}.progress::-ms-fill{background-color:#4a4a4a;border:none}.progress.is-light::-webkit-progress-value{background-color:#f5f5f5}.progress.is-light::-moz-progress-bar{background-color:#f5f5f5}.progress.is-light::-ms-fill{background-color:#f5f5f5}.progress.is-light:indeterminate{background-image:linear-gradient(90deg,#f5f5f5 30%,#ededed 0)}.progress.is-primary::-webkit-progress-value{background-color:#00d1b2}.progress.is-primary::-moz-progress-bar{background-color:#00d1b2}.progress.is-primary::-ms-fill{background-color:#00d1b2}.progress.is-primary:indeterminate{background-image:linear-gradient(90deg,#00d1b2 30%,#ededed 0)}.progress.is-info::-webkit-progress-value{background-color:#3e8ed0}.progress.is-info::-moz-progress-bar{background-color:#3e8ed0}.progress.is-info::-ms-fill{background-color:#3e8ed0}.progress.is-info:indeterminate{background-image:linear-gradient(90deg,#3e8ed0 30%,#ededed 0)}.progress.is-success::-webkit-progress-value{background-color:#48c78e}.progress.is-success::-moz-progress-bar{background-color:#48c78e}.progress.is-success::-ms-fill{background-color:#48c78e}.progress.is-success:indeterminate{background-image:linear-gradient(90deg,#48c78e 30%,#ededed 0)}.progress.is-warning::-webkit-progress-value{background-color:#ffe08a}.progress.is-warning::-moz-progress-bar{background-color:#ffe08a}.progress.is-warning::-ms-fill{background-color:#ffe08a}.progress.is-warning:indeterminate{background-image:linear-gradient(90deg,#ffe08a 30%,#ededed 0)}.progress.is-danger::-webkit-progress-value{background-color:#f14668}.progress.is-danger::-moz-progress-bar{background-color:#f14668}.progress.is-danger::-ms-fill{background-color:#f14668}.progress.is-danger:indeterminate{background-image:linear-gradient(90deg,#f14668 30%,#ededed 0)}.progress:indeterminate{animation-duration:1.5s;animation-iteration-count:infinite;animation-name:b;animation-timing-function:linear;background-color:#ededed;background-image:linear-gradient(90deg,#4a4a4a 30%,#ededed 0);background-position:0 0;background-repeat:no-repeat;background-size:150% 150%}.progress:indeterminate::-webkit-progress-bar{background-color:transparent}.progress:indeterminate::-moz-progress-bar{background-color:transparent}.progress:indeterminate::-ms-fill{animation-name:none}.progress.is-small{height:.75rem}.progress.is-medium{height:1.25rem}.progress.is-large{height:1.5rem}@keyframes b{0%{background-position:200% 0}to{background-position:-200% 0}}.table{background-color:#fff;color:#363636}.table td,.table th{border:1px solid #dbdbdb;border-width:0 0 1px;padding:.5em .75em;vertical-align:top}.table td.is-light,.table th.is-light{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,.7)}.table td.is-primary,.table th.is-primary{background-color:#00d1b2;border-color:#00d1b2;color:#fff}.table td.is-info,.table th.is-info{background-color:#3e8ed0;border-color:#3e8ed0;color:#fff}.table td.is-success,.table th.is-success{background-color:#48c78e;border-color:#48c78e;color:#fff}.table td.is-warning,.table th.is-warning{background-color:#ffe08a;border-color:#ffe08a;color:rgba(0,0,0,.7)}.table td.is-danger,.table th.is-danger{background-color:#f14668;border-color:#f14668;color:#fff}.table td.is-narrow,.table th.is-narrow{white-space:nowrap;width:1%}.table th{color:#363636}.table th:not([align]){text-align:left}.table thead{background-color:transparent}.table thead td,.table thead th{border-width:0 0 2px;color:#363636}.table tbody{background-color:transparent}.table tbody tr:last-child td,.table tbody tr:last-child th{border-bottom-width:0}.table.is-fullwidth{width:100%}.table.is-hoverable tbody tr:not(.is-selected):hover{background-color:#fafafa}.table.is-narrow td,.table.is-narrow th{padding:.25em .5em}.table-container{-webkit-overflow-scrolling:touch;overflow:auto;overflow-y:hidden;max-width:100%}.tags{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.tags .tag{margin-bottom:.5rem}.tags .tag:not(:last-child){margin-right:.5rem}.tags:last-child{margin-bottom:-.5rem}.tags:not(:last-child){margin-bottom:1rem}.tags.is-centered{-ms-flex-pack:center;justify-content:center}.tags.is-centered .tag{margin-right:.25rem;margin-left:.25rem}.tags.has-addons .tag{margin-right:0}.tags.has-addons .tag:not(:first-child){margin-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.tags.has-addons .tag:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.tag:not(body){-ms-flex-align:center;align-items:center;background-color:#f5f5f5;border-radius:4px;color:#4a4a4a;display:-ms-inline-flexbox;display:inline-flex;font-size:.75rem;height:2em;-ms-flex-pack:center;justify-content:center;line-height:1.5;padding-left:.75em;padding-right:.75em;white-space:nowrap}.tag:not(body) .delete{margin-left:.25rem;margin-right:-.375rem}.tag:not(body).is-light{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.tag:not(body).is-primary{background-color:#00d1b2;color:#fff}.tag:not(body).is-primary.is-light{background-color:#ebfffc;color:#00947e}.tag:not(body).is-info{background-color:#3e8ed0;color:#fff}.tag:not(body).is-info.is-light{background-color:#eff5fb;color:#296fa8}.tag:not(body).is-success{background-color:#48c78e;color:#fff}.tag:not(body).is-success.is-light{background-color:#effaf5;color:#257953}.tag:not(body).is-warning{background-color:#ffe08a;color:rgba(0,0,0,.7)}.tag:not(body).is-warning.is-light{background-color:#fffaeb;color:#946c00}.tag:not(body).is-danger{background-color:#f14668;color:#fff}.tag:not(body).is-danger.is-light{background-color:#feecf0;color:#cc0f35}.tag:not(body).is-medium{font-size:1rem}.tag:not(body).is-large{font-size:1.25rem}.tag:not(body) .icon:first-child:not(:last-child){margin-left:-.375em;margin-right:.1875em}.tag:not(body) .icon:last-child:not(:first-child){margin-left:.1875em;margin-right:-.375em}.tag:not(body) .icon:first-child:last-child{margin-left:-.375em;margin-right:-.375em}.tag:not(body).is-rounded{border-radius:9999px}a.tag:hover{text-decoration:underline}.subtitle,.title{word-break:break-word}.subtitle em,.subtitle span,.title em,.title span{font-weight:inherit}.subtitle sub,.title sub{font-size:.75em}.subtitle .tag,.title .tag{vertical-align:middle}.title{color:#363636;font-family:Rasa,Georgia,Times New Roman,serif;font-size:2rem;font-weight:600;line-height:1.125}.title strong{color:inherit;font-weight:inherit}.title:not(.is-spaced)+.subtitle{margin-top:-1.25rem}.title.is-1{font-size:3rem}.title.is-2{font-size:2.5rem}.title.is-3{font-size:2rem}.title.is-4{font-size:1.5rem}.title.is-5{font-size:1.25rem}.title.is-6{font-size:1rem}.subtitle{color:#4a4a4a;font-size:1.25rem;font-weight:400;line-height:1.25}.subtitle strong{color:#363636;font-weight:600}.subtitle:not(.is-spaced)+.title{margin-top:-1.25rem}.subtitle.is-1{font-size:3rem}.subtitle.is-2{font-size:2.5rem}.subtitle.is-3{font-size:2rem}.subtitle.is-4{font-size:1.5rem}.subtitle.is-5{font-size:1.25rem}.subtitle.is-6{font-size:1rem}.heading{display:block;font-size:11px;letter-spacing:1px;margin-bottom:5px;text-transform:uppercase}.number{-ms-flex-align:center;align-items:center;background-color:#f5f5f5;border-radius:9999px;display:-ms-inline-flexbox;display:inline-flex;font-size:1.25rem;height:2em;-ms-flex-pack:center;justify-content:center;margin-right:1.5rem;min-width:2.5em;padding:.25rem .5rem;text-align:center;vertical-align:top}.input,.select select,.textarea{background-color:#fff;border-color:#dbdbdb;border-radius:4px;color:#363636}.input::-moz-placeholder,.select select::-moz-placeholder,.textarea::-moz-placeholder{color:rgba(54,54,54,.3)}.input::-webkit-input-placeholder,.select select::-webkit-input-placeholder,.textarea::-webkit-input-placeholder{color:rgba(54,54,54,.3)}.input:-moz-placeholder,.select select:-moz-placeholder,.textarea:-moz-placeholder{color:rgba(54,54,54,.3)}.input:-ms-input-placeholder,.select select:-ms-input-placeholder,.textarea:-ms-input-placeholder{color:rgba(54,54,54,.3)}.input:hover,.select select:hover,.textarea:hover{border-color:#b5b5b5}.input:active,.input:focus,.is-active.input,.is-active.textarea,.select select.is-active,.select select:active,.select select:focus,.textarea:active,.textarea:focus{border-color:#485fc7;box-shadow:0 0 0 .125em rgba(72,95,199,.25)}.select select[disabled],[disabled].input,[disabled].textarea{background-color:#f5f5f5;border-color:#f5f5f5;box-shadow:none;color:#7a7a7a}.select select[disabled]::-moz-placeholder,[disabled].input::-moz-placeholder,[disabled].textarea::-moz-placeholder{color:hsla(0,0%,48%,.3)}.select select[disabled]::-webkit-input-placeholder,[disabled].input::-webkit-input-placeholder,[disabled].textarea::-webkit-input-placeholder{color:hsla(0,0%,48%,.3)}.select select[disabled]:-moz-placeholder,[disabled].input:-moz-placeholder,[disabled].textarea:-moz-placeholder{color:hsla(0,0%,48%,.3)}.select select[disabled]:-ms-input-placeholder,[disabled].input:-ms-input-placeholder,[disabled].textarea:-ms-input-placeholder{color:hsla(0,0%,48%,.3)}.input,.textarea{box-shadow:inset 0 .0625em .125em hsla(0,0%,4%,.05);max-width:100%;width:100%}[readonly].input,[readonly].textarea{box-shadow:none}.is-light.input,.is-light.textarea{border-color:#f5f5f5}.is-light.input:active,.is-light.input:focus,.is-light.is-active.input,.is-light.is-active.textarea,.is-light.textarea:active,.is-light.textarea:focus{box-shadow:0 0 0 .125em hsla(0,0%,96%,.25)}.is-primary.input,.is-primary.textarea{border-color:#00d1b2}.is-primary.input:active,.is-primary.input:focus,.is-primary.is-active.input,.is-primary.is-active.textarea,.is-primary.textarea:active,.is-primary.textarea:focus{box-shadow:0 0 0 .125em rgba(0,209,178,.25)}.is-info.input,.is-info.textarea{border-color:#3e8ed0}.is-info.input:active,.is-info.input:focus,.is-info.is-active.input,.is-info.is-active.textarea,.is-info.textarea:active,.is-info.textarea:focus{box-shadow:0 0 0 .125em rgba(62,142,208,.25)}.is-success.input,.is-success.textarea{border-color:#48c78e}.is-success.input:active,.is-success.input:focus,.is-success.is-active.input,.is-success.is-active.textarea,.is-success.textarea:active,.is-success.textarea:focus{box-shadow:0 0 0 .125em rgba(72,199,142,.25)}.is-warning.input,.is-warning.textarea{border-color:#ffe08a}.is-warning.input:active,.is-warning.input:focus,.is-warning.is-active.input,.is-warning.is-active.textarea,.is-warning.textarea:active,.is-warning.textarea:focus{box-shadow:0 0 0 .125em rgba(255,224,138,.25)}.is-danger.input,.is-danger.textarea{border-color:#f14668}.is-danger.input:active,.is-danger.input:focus,.is-danger.is-active.input,.is-danger.is-active.textarea,.is-danger.textarea:active,.is-danger.textarea:focus{box-shadow:0 0 0 .125em rgba(241,70,104,.25)}.is-small.input,.is-small.textarea{border-radius:2px;font-size:.75rem}.is-medium.input,.is-medium.textarea{font-size:1.25rem}.is-large.input,.is-large.textarea{font-size:1.5rem}.is-fullwidth.input,.is-fullwidth.textarea{display:block;width:100%}.is-inline.input,.is-inline.textarea{display:inline;width:auto}.input.is-rounded{border-radius:9999px;padding-left:calc((.75em - 1px) + .375em);padding-right:calc((.75em - 1px) + .375em)}.textarea{display:block;max-width:100%;min-width:100%;padding:calc(.75em - 1px);resize:vertical}.textarea:not([rows]){max-height:40em;min-height:8em}.textarea[rows]{height:auto}.checkbox{display:inline-block;line-height:1.25;position:relative}.checkbox,.checkbox input{cursor:pointer}.checkbox:hover{color:#363636}.checkbox input[disabled],[disabled].checkbox{color:#7a7a7a;cursor:not-allowed}.select{display:inline-block;max-width:100%;position:relative;vertical-align:top}.select:not(.is-multiple){height:2.5em}.select:not(.is-multiple):not(.is-loading):after{border-color:#485fc7;right:1.125em;z-index:4}.select.is-rounded select{border-radius:9999px;padding-left:1em}.select select{cursor:pointer;display:block;font-size:1em;max-width:100%;outline:none}.select select::-ms-expand{display:none}.select select[disabled]:hover{border-color:#f5f5f5}.select select:not([multiple]){padding-right:2.5em}.select select[multiple]{height:auto;padding:0}.select select[multiple] option{padding:.5em 1em}.select:not(.is-multiple):not(.is-loading):hover:after{border-color:#363636}.select.is-light:not(:hover):after,.select.is-light select{border-color:#f5f5f5}.select.is-light select:hover{border-color:#e8e8e8}.select.is-light select.is-active,.select.is-light select:active,.select.is-light select:focus{box-shadow:0 0 0 .125em hsla(0,0%,96%,.25)}.select.is-primary:not(:hover):after,.select.is-primary select{border-color:#00d1b2}.select.is-primary select:hover{border-color:#00b89c}.select.is-primary select.is-active,.select.is-primary select:active,.select.is-primary select:focus{box-shadow:0 0 0 .125em rgba(0,209,178,.25)}.select.is-info:not(:hover):after,.select.is-info select{border-color:#3e8ed0}.select.is-info select:hover{border-color:#3082c5}.select.is-info select.is-active,.select.is-info select:active,.select.is-info select:focus{box-shadow:0 0 0 .125em rgba(62,142,208,.25)}.select.is-success:not(:hover):after,.select.is-success select{border-color:#48c78e}.select.is-success select:hover{border-color:#3abb81}.select.is-success select.is-active,.select.is-success select:active,.select.is-success select:focus{box-shadow:0 0 0 .125em rgba(72,199,142,.25)}.select.is-warning:not(:hover):after,.select.is-warning select{border-color:#ffe08a}.select.is-warning select:hover{border-color:#ffd970}.select.is-warning select.is-active,.select.is-warning select:active,.select.is-warning select:focus{box-shadow:0 0 0 .125em rgba(255,224,138,.25)}.select.is-danger:not(:hover):after,.select.is-danger select{border-color:#f14668}.select.is-danger select:hover{border-color:#ef2e55}.select.is-danger select.is-active,.select.is-danger select:active,.select.is-danger select:focus{box-shadow:0 0 0 .125em rgba(241,70,104,.25)}.select.is-small{border-radius:2px;font-size:.75rem}.select.is-medium{font-size:1.25rem}.select.is-large{font-size:1.5rem}.select.is-disabled:after{border-color:#7a7a7a!important;opacity:.5}.select.is-fullwidth,.select.is-fullwidth select{width:100%}.file{-ms-flex-align:stretch;align-items:stretch;display:-ms-flexbox;display:flex;-ms-flex-pack:start;justify-content:flex-start;position:relative}.file.is-small{font-size:.75rem}.file.is-medium{font-size:1.25rem}.file.is-large{font-size:1.5rem}.file.is-centered{-ms-flex-pack:center;justify-content:center}.label{color:#363636;display:block;font-size:1rem;font-weight:700}.label:not(:last-child){margin-bottom:.5em}.label.is-small{font-size:.75rem}.label.is-medium{font-size:1.25rem}.label.is-large{font-size:1.5rem}.help{display:block;font-size:.75rem;margin-top:.25rem}.help.is-light{color:#f5f5f5}.help.is-primary{color:#00d1b2}.help.is-info{color:#3e8ed0}.help.is-success{color:#48c78e}.help.is-warning{color:#ffe08a}.help.is-danger{color:#f14668}.field:not(:last-child){margin-bottom:.75rem}.field.has-addons{display:-ms-flexbox;display:flex;-ms-flex-pack:start;justify-content:flex-start}.field.has-addons .control:not(:last-child){margin-right:-1px}.field.has-addons .control:not(:first-child):not(:last-child) .button,.field.has-addons .control:not(:first-child):not(:last-child) .input,.field.has-addons .control:not(:first-child):not(:last-child) .select select{border-radius:0}.field.has-addons .control:first-child:not(:only-child) .button,.field.has-addons .control:first-child:not(:only-child) .input,.field.has-addons .control:first-child:not(:only-child) .select select{border-bottom-right-radius:0;border-top-right-radius:0}.field.has-addons .control:last-child:not(:only-child) .button,.field.has-addons .control:last-child:not(:only-child) .input,.field.has-addons .control:last-child:not(:only-child) .select select{border-bottom-left-radius:0;border-top-left-radius:0}.field.has-addons .control .button:not([disabled]):hover,.field.has-addons .control .input:not([disabled]):hover,.field.has-addons .control .select select:not([disabled]):hover{z-index:2}.field.has-addons .control .button:not([disabled]).is-active,.field.has-addons .control .button:not([disabled]):active,.field.has-addons .control .button:not([disabled]):focus,.field.has-addons .control .input:not([disabled]).is-active,.field.has-addons .control .input:not([disabled]):active,.field.has-addons .control .input:not([disabled]):focus,.field.has-addons .control .select select:not([disabled]).is-active,.field.has-addons .control .select select:not([disabled]):active,.field.has-addons .control .select select:not([disabled]):focus{z-index:3}.field.has-addons .control .button:not([disabled]).is-active:hover,.field.has-addons .control .button:not([disabled]):active:hover,.field.has-addons .control .button:not([disabled]):focus:hover,.field.has-addons .control .input:not([disabled]).is-active:hover,.field.has-addons .control .input:not([disabled]):active:hover,.field.has-addons .control .input:not([disabled]):focus:hover,.field.has-addons .control .select select:not([disabled]).is-active:hover,.field.has-addons .control .select select:not([disabled]):active:hover,.field.has-addons .control .select select:not([disabled]):focus:hover{z-index:4}.field.has-addons .control.is-expanded{-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1}.field.is-grouped{display:-ms-flexbox;display:flex;-ms-flex-pack:start;justify-content:flex-start}.field.is-grouped>.control{-ms-flex-negative:0;flex-shrink:0}.field.is-grouped>.control:not(:last-child){margin-bottom:0;margin-right:.75rem}.field.is-grouped>.control.is-expanded{-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1}@media print,screen and (min-width:769px){.field.is-horizontal{display:-ms-flexbox;display:flex}}.field-body .field .field{margin-bottom:0}@media print,screen and (min-width:769px){.field-body{display:-ms-flexbox;display:flex;-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:5;flex-grow:5;-ms-flex-negative:1;flex-shrink:1}.field-body .field{margin-bottom:0}.field-body>.field{-ms-flex-negative:1;flex-shrink:1}.field-body>.field:not(.is-narrow){-ms-flex-positive:1;flex-grow:1}.field-body>.field:not(:last-child){margin-right:.75rem}}.control{box-sizing:border-box;clear:both;font-size:1rem;position:relative;text-align:inherit}.control.has-icons-left .input:focus~.icon,.control.has-icons-left .select:focus~.icon{color:#4a4a4a}.control.has-icons-left .input.is-small~.icon,.control.has-icons-left .select.is-small~.icon{font-size:.75rem}.control.has-icons-left .input.is-medium~.icon,.control.has-icons-left .select.is-medium~.icon{font-size:1.25rem}.control.has-icons-left .input.is-large~.icon,.control.has-icons-left .select.is-large~.icon{font-size:1.5rem}.control.has-icons-left .icon{color:#dbdbdb;height:2.5em;pointer-events:none;position:absolute;top:0;width:2.5em;z-index:4}.control.has-icons-left .input,.control.has-icons-left .select select{padding-left:2.5em}.control.has-icons-left .icon.is-left{left:0}.breadcrumb{font-size:1rem;white-space:nowrap}.breadcrumb a{-ms-flex-align:center;align-items:center;color:#485fc7;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding:0 .75em}.breadcrumb a:hover{color:#363636}.breadcrumb li{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex}.breadcrumb li:first-child a{padding-left:0}.breadcrumb li.is-active a{color:#363636;cursor:default;pointer-events:none}.breadcrumb li+li:before{color:#b5b5b5;content:"/"}.breadcrumb ol,.breadcrumb ul{-ms-flex-align:start;align-items:flex-start;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.breadcrumb .icon:first-child{margin-right:.5em}.breadcrumb .icon:last-child{margin-left:.5em}.breadcrumb.is-centered ol,.breadcrumb.is-centered ul{-ms-flex-pack:center;justify-content:center}.breadcrumb.is-small{font-size:.75rem}.breadcrumb.is-medium{font-size:1.25rem}.breadcrumb.is-large{font-size:1.5rem}.dropdown{display:-ms-inline-flexbox;display:inline-flex;position:relative;vertical-align:top}.dropdown-divider{background-color:#ededed;border:none;display:block;height:1px;margin:.5rem 0}.level{-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.level code{border-radius:4px}.level img{display:inline-block;vertical-align:top}@media print,screen and (min-width:769px){.level{display:-ms-flexbox;display:flex}.level>.level-item:not(.is-narrow){-ms-flex-positive:1;flex-grow:1}}.level-item{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-preferred-size:auto;flex-basis:auto;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;-ms-flex-pack:center;justify-content:center}.level-item .subtitle,.level-item .title{margin-bottom:0}@media screen and (max-width:768px){.level-item:not(:last-child){margin-bottom:.75rem}}.level-left,.level-right{-ms-flex-preferred-size:auto;flex-basis:auto;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0}@media print,screen and (min-width:769px){.level-left .level-item:not(:last-child),.level-right .level-item:not(:last-child){margin-right:.75rem}}.level-left{-ms-flex-align:center;align-items:center;-ms-flex-pack:start;justify-content:flex-start}@media screen and (max-width:768px){.level-left+.level-right{margin-top:1.5rem}}@media print,screen and (min-width:769px){.level-left{display:-ms-flexbox;display:flex}}.level-right{-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end}@media print,screen and (min-width:769px){.level-right{display:-ms-flexbox;display:flex}}.menu{font-size:1rem}.menu.is-small{font-size:.75rem}.menu.is-medium{font-size:1.25rem}.menu.is-large{font-size:1.5rem}.message{background-color:#f5f5f5;border-radius:4px;font-size:1rem}.message strong{color:currentColor}.message a:not(.button):not(.tag):not(.dropdown-item){color:currentColor;text-decoration:underline}.message.is-small{font-size:.75rem}.message.is-medium{font-size:1.25rem}.message.is-large{font-size:1.5rem}.message.is-light{background-color:#fafafa}.message.is-light .message-header{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.message.is-light .message-body{border-color:#f5f5f5}.message.is-primary{background-color:#ebfffc}.message.is-primary .message-header{background-color:#00d1b2;color:#fff}.message.is-primary .message-body{border-color:#00d1b2;color:#00947e}.message.is-info{background-color:#eff5fb}.message.is-info .message-header{background-color:#3e8ed0;color:#fff}.message.is-info .message-body{border-color:#3e8ed0;color:#296fa8}.message.is-success{background-color:#effaf5}.message.is-success .message-header{background-color:#48c78e;color:#fff}.message.is-success .message-body{border-color:#48c78e;color:#257953}.message.is-warning{background-color:#fffaeb}.message.is-warning .message-header{background-color:#ffe08a;color:rgba(0,0,0,.7)}.message.is-warning .message-body{border-color:#ffe08a;color:#946c00}.message.is-danger{background-color:#feecf0}.message.is-danger .message-header{background-color:#f14668;color:#fff}.message.is-danger .message-body{border-color:#f14668;color:#cc0f35}.message-header{-ms-flex-align:center;align-items:center;background-color:#4a4a4a;border-radius:4px 4px 0 0;color:#fff;display:-ms-flexbox;display:flex;font-weight:700;-ms-flex-pack:justify;justify-content:space-between;line-height:1.25;padding:.75em 1em;position:relative}.message-header .delete{-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;margin-left:.75em}.message-header+.message-body{border-width:0;border-top-left-radius:0;border-top-right-radius:0}.message-body{border-color:#dbdbdb;border-radius:4px;border-style:solid;border-width:0 0 0 4px;color:#4a4a4a;padding:1.25em 1.5em}.message-body code,.message-body pre{background-color:#fff}.message-body pre code{background-color:transparent}.modal{-ms-flex-align:center;align-items:center;display:none;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;overflow:hidden;position:fixed;z-index:10}.modal.is-active{display:-ms-flexbox;display:flex}.navbar{background-color:#fff;min-height:3.25rem;position:relative;z-index:9}.navbar.is-light{background-color:#f5f5f5}.navbar.is-light,.navbar.is-light .navbar-brand .navbar-link,.navbar.is-light .navbar-brand>.navbar-item{color:rgba(0,0,0,.7)}.navbar.is-light .navbar-brand .navbar-link.is-active,.navbar.is-light .navbar-brand .navbar-link:focus,.navbar.is-light .navbar-brand .navbar-link:hover,.navbar.is-light .navbar-brand>a.navbar-item.is-active,.navbar.is-light .navbar-brand>a.navbar-item:focus,.navbar.is-light .navbar-brand>a.navbar-item:hover{background-color:#e8e8e8;color:rgba(0,0,0,.7)}.navbar.is-light .navbar-brand .navbar-link:after{border-color:rgba(0,0,0,.7)}.navbar.is-light .navbar-burger{color:rgba(0,0,0,.7)}@media screen and (min-width:1024px){.navbar.is-light .navbar-end .navbar-link,.navbar.is-light .navbar-end>.navbar-item,.navbar.is-light .navbar-start .navbar-link,.navbar.is-light .navbar-start>.navbar-item{color:rgba(0,0,0,.7)}.navbar.is-light .navbar-end .navbar-link.is-active,.navbar.is-light .navbar-end .navbar-link:focus,.navbar.is-light .navbar-end .navbar-link:hover,.navbar.is-light .navbar-end>a.navbar-item.is-active,.navbar.is-light .navbar-end>a.navbar-item:focus,.navbar.is-light .navbar-end>a.navbar-item:hover,.navbar.is-light .navbar-start .navbar-link.is-active,.navbar.is-light .navbar-start .navbar-link:focus,.navbar.is-light .navbar-start .navbar-link:hover,.navbar.is-light .navbar-start>a.navbar-item.is-active,.navbar.is-light .navbar-start>a.navbar-item:focus,.navbar.is-light .navbar-start>a.navbar-item:hover{background-color:#e8e8e8;color:rgba(0,0,0,.7)}.navbar.is-light .navbar-end .navbar-link:after,.navbar.is-light .navbar-start .navbar-link:after{border-color:rgba(0,0,0,.7)}.navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-light .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-light .navbar-item.has-dropdown:hover .navbar-link{background-color:#e8e8e8;color:rgba(0,0,0,.7)}.navbar.is-light .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:rgba(0,0,0,.7)}}.navbar.is-primary{background-color:#00d1b2;color:#fff}.navbar.is-primary .navbar-brand .navbar-link,.navbar.is-primary .navbar-brand>.navbar-item{color:#fff}.navbar.is-primary .navbar-brand .navbar-link.is-active,.navbar.is-primary .navbar-brand .navbar-link:focus,.navbar.is-primary .navbar-brand .navbar-link:hover,.navbar.is-primary .navbar-brand>a.navbar-item.is-active,.navbar.is-primary .navbar-brand>a.navbar-item:focus,.navbar.is-primary .navbar-brand>a.navbar-item:hover{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-brand .navbar-link:after{border-color:#fff}.navbar.is-primary .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-primary .navbar-end .navbar-link,.navbar.is-primary .navbar-end>.navbar-item,.navbar.is-primary .navbar-start .navbar-link,.navbar.is-primary .navbar-start>.navbar-item{color:#fff}.navbar.is-primary .navbar-end .navbar-link.is-active,.navbar.is-primary .navbar-end .navbar-link:focus,.navbar.is-primary .navbar-end .navbar-link:hover,.navbar.is-primary .navbar-end>a.navbar-item.is-active,.navbar.is-primary .navbar-end>a.navbar-item:focus,.navbar.is-primary .navbar-end>a.navbar-item:hover,.navbar.is-primary .navbar-start .navbar-link.is-active,.navbar.is-primary .navbar-start .navbar-link:focus,.navbar.is-primary .navbar-start .navbar-link:hover,.navbar.is-primary .navbar-start>a.navbar-item.is-active,.navbar.is-primary .navbar-start>a.navbar-item:focus,.navbar.is-primary .navbar-start>a.navbar-item:hover{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-end .navbar-link:after,.navbar.is-primary .navbar-start .navbar-link:after{border-color:#fff}.navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-dropdown a.navbar-item.is-active{background-color:#00d1b2;color:#fff}}.navbar.is-info{background-color:#3e8ed0;color:#fff}.navbar.is-info .navbar-brand .navbar-link,.navbar.is-info .navbar-brand>.navbar-item{color:#fff}.navbar.is-info .navbar-brand .navbar-link.is-active,.navbar.is-info .navbar-brand .navbar-link:focus,.navbar.is-info .navbar-brand .navbar-link:hover,.navbar.is-info .navbar-brand>a.navbar-item.is-active,.navbar.is-info .navbar-brand>a.navbar-item:focus,.navbar.is-info .navbar-brand>a.navbar-item:hover{background-color:#3082c5;color:#fff}.navbar.is-info .navbar-brand .navbar-link:after{border-color:#fff}.navbar.is-info .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-info .navbar-end .navbar-link,.navbar.is-info .navbar-end>.navbar-item,.navbar.is-info .navbar-start .navbar-link,.navbar.is-info .navbar-start>.navbar-item{color:#fff}.navbar.is-info .navbar-end .navbar-link.is-active,.navbar.is-info .navbar-end .navbar-link:focus,.navbar.is-info .navbar-end .navbar-link:hover,.navbar.is-info .navbar-end>a.navbar-item.is-active,.navbar.is-info .navbar-end>a.navbar-item:focus,.navbar.is-info .navbar-end>a.navbar-item:hover,.navbar.is-info .navbar-start .navbar-link.is-active,.navbar.is-info .navbar-start .navbar-link:focus,.navbar.is-info .navbar-start .navbar-link:hover,.navbar.is-info .navbar-start>a.navbar-item.is-active,.navbar.is-info .navbar-start>a.navbar-item:focus,.navbar.is-info .navbar-start>a.navbar-item:hover{background-color:#3082c5;color:#fff}.navbar.is-info .navbar-end .navbar-link:after,.navbar.is-info .navbar-start .navbar-link:after{border-color:#fff}.navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-info .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-info .navbar-item.has-dropdown:hover .navbar-link{background-color:#3082c5;color:#fff}.navbar.is-info .navbar-dropdown a.navbar-item.is-active{background-color:#3e8ed0;color:#fff}}.navbar.is-success{background-color:#48c78e;color:#fff}.navbar.is-success .navbar-brand .navbar-link,.navbar.is-success .navbar-brand>.navbar-item{color:#fff}.navbar.is-success .navbar-brand .navbar-link.is-active,.navbar.is-success .navbar-brand .navbar-link:focus,.navbar.is-success .navbar-brand .navbar-link:hover,.navbar.is-success .navbar-brand>a.navbar-item.is-active,.navbar.is-success .navbar-brand>a.navbar-item:focus,.navbar.is-success .navbar-brand>a.navbar-item:hover{background-color:#3abb81;color:#fff}.navbar.is-success .navbar-brand .navbar-link:after{border-color:#fff}.navbar.is-success .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-success .navbar-end .navbar-link,.navbar.is-success .navbar-end>.navbar-item,.navbar.is-success .navbar-start .navbar-link,.navbar.is-success .navbar-start>.navbar-item{color:#fff}.navbar.is-success .navbar-end .navbar-link.is-active,.navbar.is-success .navbar-end .navbar-link:focus,.navbar.is-success .navbar-end .navbar-link:hover,.navbar.is-success .navbar-end>a.navbar-item.is-active,.navbar.is-success .navbar-end>a.navbar-item:focus,.navbar.is-success .navbar-end>a.navbar-item:hover,.navbar.is-success .navbar-start .navbar-link.is-active,.navbar.is-success .navbar-start .navbar-link:focus,.navbar.is-success .navbar-start .navbar-link:hover,.navbar.is-success .navbar-start>a.navbar-item.is-active,.navbar.is-success .navbar-start>a.navbar-item:focus,.navbar.is-success .navbar-start>a.navbar-item:hover{background-color:#3abb81;color:#fff}.navbar.is-success .navbar-end .navbar-link:after,.navbar.is-success .navbar-start .navbar-link:after{border-color:#fff}.navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-success .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-success .navbar-item.has-dropdown:hover .navbar-link{background-color:#3abb81;color:#fff}.navbar.is-success .navbar-dropdown a.navbar-item.is-active{background-color:#48c78e;color:#fff}}.navbar.is-warning{background-color:#ffe08a}.navbar.is-warning,.navbar.is-warning .navbar-brand .navbar-link,.navbar.is-warning .navbar-brand>.navbar-item{color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-brand .navbar-link.is-active,.navbar.is-warning .navbar-brand .navbar-link:focus,.navbar.is-warning .navbar-brand .navbar-link:hover,.navbar.is-warning .navbar-brand>a.navbar-item.is-active,.navbar.is-warning .navbar-brand>a.navbar-item:focus,.navbar.is-warning .navbar-brand>a.navbar-item:hover{background-color:#ffd970;color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-brand .navbar-link:after{border-color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-burger{color:rgba(0,0,0,.7)}@media screen and (min-width:1024px){.navbar.is-warning .navbar-end .navbar-link,.navbar.is-warning .navbar-end>.navbar-item,.navbar.is-warning .navbar-start .navbar-link,.navbar.is-warning .navbar-start>.navbar-item{color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-end .navbar-link.is-active,.navbar.is-warning .navbar-end .navbar-link:focus,.navbar.is-warning .navbar-end .navbar-link:hover,.navbar.is-warning .navbar-end>a.navbar-item.is-active,.navbar.is-warning .navbar-end>a.navbar-item:focus,.navbar.is-warning .navbar-end>a.navbar-item:hover,.navbar.is-warning .navbar-start .navbar-link.is-active,.navbar.is-warning .navbar-start .navbar-link:focus,.navbar.is-warning .navbar-start .navbar-link:hover,.navbar.is-warning .navbar-start>a.navbar-item.is-active,.navbar.is-warning .navbar-start>a.navbar-item:focus,.navbar.is-warning .navbar-start>a.navbar-item:hover{background-color:#ffd970;color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-end .navbar-link:after,.navbar.is-warning .navbar-start .navbar-link:after{border-color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link{background-color:#ffd970;color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-dropdown a.navbar-item.is-active{background-color:#ffe08a;color:rgba(0,0,0,.7)}}.navbar.is-danger{background-color:#f14668;color:#fff}.navbar.is-danger .navbar-brand .navbar-link,.navbar.is-danger .navbar-brand>.navbar-item{color:#fff}.navbar.is-danger .navbar-brand .navbar-link.is-active,.navbar.is-danger .navbar-brand .navbar-link:focus,.navbar.is-danger .navbar-brand .navbar-link:hover,.navbar.is-danger .navbar-brand>a.navbar-item.is-active,.navbar.is-danger .navbar-brand>a.navbar-item:focus,.navbar.is-danger .navbar-brand>a.navbar-item:hover{background-color:#ef2e55;color:#fff}.navbar.is-danger .navbar-brand .navbar-link:after{border-color:#fff}.navbar.is-danger .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-danger .navbar-end .navbar-link,.navbar.is-danger .navbar-end>.navbar-item,.navbar.is-danger .navbar-start .navbar-link,.navbar.is-danger .navbar-start>.navbar-item{color:#fff}.navbar.is-danger .navbar-end .navbar-link.is-active,.navbar.is-danger .navbar-end .navbar-link:focus,.navbar.is-danger .navbar-end .navbar-link:hover,.navbar.is-danger .navbar-end>a.navbar-item.is-active,.navbar.is-danger .navbar-end>a.navbar-item:focus,.navbar.is-danger .navbar-end>a.navbar-item:hover,.navbar.is-danger .navbar-start .navbar-link.is-active,.navbar.is-danger .navbar-start .navbar-link:focus,.navbar.is-danger .navbar-start .navbar-link:hover,.navbar.is-danger .navbar-start>a.navbar-item.is-active,.navbar.is-danger .navbar-start>a.navbar-item:focus,.navbar.is-danger .navbar-start>a.navbar-item:hover{background-color:#ef2e55;color:#fff}.navbar.is-danger .navbar-end .navbar-link:after,.navbar.is-danger .navbar-start .navbar-link:after{border-color:#fff}.navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link{background-color:#ef2e55;color:#fff}.navbar.is-danger .navbar-dropdown a.navbar-item.is-active{background-color:#f14668;color:#fff}}.navbar>.container{-ms-flex-align:stretch;align-items:stretch;display:-ms-flexbox;display:flex;min-height:3.25rem;width:100%}.navbar.has-shadow{box-shadow:0 2px 0 0 #f5f5f5}.navbar-brand{-ms-flex-align:stretch;align-items:stretch;display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0;min-height:3.25rem}.navbar-brand a.navbar-item:focus,.navbar-brand a.navbar-item:hover{background-color:transparent}.navbar-burger{color:#4a4a4a;-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;cursor:pointer;display:block;height:3.25rem;position:relative;width:3.25rem;margin-left:auto}.navbar-burger span{background-color:currentColor;display:block;height:1px;left:calc(50% - 8px);position:absolute;transform-origin:center;transition-duration:86ms;transition-property:background-color,opacity,transform;transition-timing-function:ease-out;width:16px}.navbar-burger span:first-child{top:calc(50% - 6px)}.navbar-burger span:nth-child(2){top:calc(50% - 1px)}.navbar-burger span:nth-child(3){top:calc(50% + 4px)}.navbar-burger:hover{background-color:rgba(0,0,0,.05)}.navbar-burger.is-active span:first-child{transform:translateY(5px) rotate(45deg)}.navbar-burger.is-active span:nth-child(2){opacity:0}.navbar-burger.is-active span:nth-child(3){transform:translateY(-5px) rotate(-45deg)}.navbar-menu{display:none}.navbar-item,.navbar-link{color:#4a4a4a;display:block;line-height:1.5;padding:.5rem .75rem;position:relative}.navbar-item .icon:only-child,.navbar-link .icon:only-child{margin-left:-.25rem;margin-right:-.25rem}.navbar-link,a.navbar-item{cursor:pointer}.navbar-link.is-active,.navbar-link:focus,.navbar-link:focus-within,.navbar-link:hover,a.navbar-item.is-active,a.navbar-item:focus,a.navbar-item:focus-within,a.navbar-item:hover{background-color:#fafafa;color:#485fc7}.navbar-item{-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0}.navbar-item img{max-height:1.75rem}.navbar-item.has-dropdown{padding:0}.navbar-item.is-expanded{-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1}.navbar-link:not(.is-arrowless){padding-right:2.5em}.navbar-link:not(.is-arrowless):after{border-color:#485fc7;margin-top:-.375em;right:1.125em}.navbar-dropdown{font-size:.875rem;padding-bottom:.5rem;padding-top:.5rem}.navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}@media screen and (max-width:1023px){.navbar>.container{display:block}.navbar-brand .navbar-item{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex}.navbar-link:after{display:none}.navbar-menu{background-color:#fff;box-shadow:0 8px 16px hsla(0,0%,4%,.1);padding:.5rem 0}.navbar-menu.is-active{display:block}}@media screen and (min-width:1024px){.navbar,.navbar-end,.navbar-menu,.navbar-start{-ms-flex-align:stretch;align-items:stretch;display:-ms-flexbox;display:flex}.navbar{min-height:3.25rem}.navbar.is-transparent .navbar-link.is-active,.navbar.is-transparent .navbar-link:focus,.navbar.is-transparent .navbar-link:hover,.navbar.is-transparent a.navbar-item.is-active,.navbar.is-transparent a.navbar-item:focus,.navbar.is-transparent a.navbar-item:hover{background-color:transparent!important}.navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link{background-color:transparent!important}.navbar.is-transparent .navbar-dropdown a.navbar-item:focus,.navbar.is-transparent .navbar-dropdown a.navbar-item:hover{background-color:#f5f5f5;color:#0a0a0a}.navbar.is-transparent .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#485fc7}.navbar-burger{display:none}.navbar-item,.navbar-link{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex}.navbar-item.has-dropdown{-ms-flex-align:stretch;align-items:stretch}.navbar-item.is-active .navbar-dropdown,.navbar-item.is-hoverable:focus-within .navbar-dropdown,.navbar-item.is-hoverable:focus .navbar-dropdown,.navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar-item.is-active .navbar-dropdown.is-boxed,.navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed,.navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed,.navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed{opacity:1;pointer-events:auto;transform:translateY(0)}.navbar-menu{-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:0;flex-shrink:0}.navbar-start{-ms-flex-pack:start;justify-content:flex-start;margin-right:auto}.navbar-end{-ms-flex-pack:end;justify-content:flex-end;margin-left:auto}.navbar-dropdown{background-color:#fff;border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-top:2px solid #dbdbdb;box-shadow:0 8px 8px hsla(0,0%,4%,.1);display:none;font-size:.875rem;left:0;min-width:100%;position:absolute;top:100%;z-index:8}.navbar-dropdown .navbar-item{padding:.375rem 1rem;white-space:nowrap}.navbar-dropdown a.navbar-item{padding-right:3rem}.navbar-dropdown a.navbar-item:focus,.navbar-dropdown a.navbar-item:hover{background-color:#f5f5f5;color:#0a0a0a}.navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#485fc7}.navbar-dropdown.is-boxed{border-radius:6px;border-top:none;box-shadow:0 8px 8px hsla(0,0%,4%,.1),0 0 0 1px hsla(0,0%,4%,.1);display:block;opacity:0;pointer-events:none;top:calc(100% + -4px);transform:translateY(-5px);transition-duration:86ms;transition-property:opacity,transform}.container>.navbar .navbar-brand,.navbar>.container .navbar-brand{margin-left:-.75rem}.container>.navbar .navbar-menu,.navbar>.container .navbar-menu{margin-right:-.75rem}.navbar-link.is-active,a.navbar-item.is-active{color:#0a0a0a}.navbar-link.is-active:not(:focus):not(:hover),a.navbar-item.is-active:not(:focus):not(:hover){background-color:transparent}.navbar-item.has-dropdown.is-active .navbar-link,.navbar-item.has-dropdown:focus .navbar-link,.navbar-item.has-dropdown:hover .navbar-link{background-color:#fafafa}}.pagination{font-size:1rem;margin:-.25rem}.pagination.is-small{font-size:.75rem}.pagination.is-medium{font-size:1.25rem}.pagination.is-large{font-size:1.5rem}.pagination.is-rounded .pagination-link{border-radius:9999px}.pagination,.pagination-list{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex}.pagination,.pagination-link,.pagination-list{-ms-flex-pack:center;justify-content:center;text-align:center}.pagination-link{font-size:1em;margin:.25rem;padding-left:.5em;padding-right:.5em;border-color:#dbdbdb;color:#363636;min-width:2.5em}.pagination-link:hover{border-color:#b5b5b5;color:#363636}.pagination-link:focus{border-color:#485fc7}.pagination-link:active{box-shadow:inset 0 1px 2px hsla(0,0%,4%,.2)}.pagination-link.is-disabled,.pagination-link[disabled]{background-color:#dbdbdb;border-color:#dbdbdb;box-shadow:none;color:#7a7a7a;opacity:.5}.pagination-link.is-current{background-color:#485fc7;border-color:#485fc7;color:#fff}.pagination-list{-ms-flex-wrap:wrap;flex-wrap:wrap}.pagination-list li{list-style:none}@media screen and (max-width:768px){.pagination{-ms-flex-wrap:wrap;flex-wrap:wrap}.pagination-list li{-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1}}@media print,screen and (min-width:769px){.pagination-list{-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1;-ms-flex-pack:start;justify-content:flex-start;-ms-flex-order:1;order:1}.pagination,.pagination-link{margin-bottom:0;margin-top:0}.pagination{-ms-flex-pack:justify;justify-content:space-between}.pagination.is-centered .pagination-list{-ms-flex-pack:center;justify-content:center;-ms-flex-order:2;order:2}}.panel{border-radius:6px;box-shadow:0 .5em 1em -.125em hsla(0,0%,4%,.1),0 0 0 1px hsla(0,0%,4%,.02);font-size:1rem}.panel:not(:last-child){margin-bottom:1.5rem}.panel-block:not(:last-child){border-bottom:1px solid #ededed}.panel-block{-ms-flex-align:center;align-items:center;color:#363636;display:-ms-flexbox;display:flex;-ms-flex-pack:start;justify-content:flex-start;padding:.5em .75em}.panel-block input[type=checkbox]{margin-right:.75em}.panel-block>.control{-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1;width:100%}.panel-block.is-active{border-left-color:#485fc7;color:#363636}.panel-block:last-child{border-bottom-left-radius:6px;border-bottom-right-radius:6px}a.panel-block,label.panel-block{cursor:pointer}a.panel-block:hover,label.panel-block:hover{background-color:#f5f5f5}.tabs{-webkit-overflow-scrolling:touch;-ms-flex-align:stretch;align-items:stretch;font-size:1rem;-ms-flex-pack:justify;justify-content:space-between;overflow:hidden;overflow-x:auto;white-space:nowrap}.tabs,.tabs a{display:-ms-flexbox;display:flex}.tabs a{-ms-flex-align:center;align-items:center;border-bottom-color:#dbdbdb;border-bottom-style:solid;border-bottom-width:1px;color:#4a4a4a;-ms-flex-pack:center;justify-content:center;margin-bottom:-1px;padding:.5em 1em;vertical-align:top}.tabs a:hover{border-bottom-color:#363636;color:#363636}.tabs li{display:block}.tabs li.is-active a{border-bottom-color:#485fc7;color:#485fc7}.tabs ul{-ms-flex-align:center;align-items:center;border-bottom-color:#dbdbdb;border-bottom-style:solid;border-bottom-width:1px;display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:0;flex-shrink:0;-ms-flex-pack:start;justify-content:flex-start}.tabs ul.is-left{padding-right:.75em}.tabs .icon:first-child{margin-right:.5em}.tabs .icon:last-child{margin-left:.5em}.tabs.is-centered ul{-ms-flex-pack:center;justify-content:center}.tabs.is-boxed a{border:1px solid transparent;border-radius:4px 4px 0 0}.tabs.is-boxed a:hover{background-color:#f5f5f5;border-bottom-color:#dbdbdb}.tabs.is-boxed li.is-active a{background-color:#fff;border-color:#dbdbdb;border-bottom-color:transparent!important}.tabs.is-fullwidth li{-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:0;flex-shrink:0}.tabs.is-small{font-size:.75rem}.tabs.is-medium{font-size:1.25rem}.tabs.is-large{font-size:1.5rem}.column{display:block;-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1;padding:.75rem}@media print,screen and (min-width:769px){.column.is-narrow{-ms-flex:none;flex:none;width:unset}.column.is-1{-ms-flex:none;flex:none;width:8.33333337%}.column.is-2{-ms-flex:none;flex:none;width:16.66666674%}.column.is-3{-ms-flex:none;flex:none;width:25%}.column.is-4{-ms-flex:none;flex:none;width:33.33333337%}.column.is-5{-ms-flex:none;flex:none;width:41.66666674%}.column.is-6{-ms-flex:none;flex:none;width:50%}}.columns{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}.columns:last-child{margin-bottom:-.75rem}.columns:not(:last-child){margin-bottom:0.75rem}.columns.is-centered{-ms-flex-pack:center;justify-content:center}@media print,screen and (min-width:769px){.columns:not(.is-desktop){display:-ms-flexbox;display:flex}}.tile{-ms-flex-align:stretch;align-items:stretch;display:block;-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1;min-height:-moz-min-content;min-height:min-content}.tile.is-ancestor{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}.tile.is-ancestor:last-child{margin-bottom:-.75rem}.tile.is-ancestor:not(:last-child){margin-bottom:.75rem}.tile.is-child{margin:0!important}.tile.is-parent{padding:.75rem}@media print,screen and (min-width:769px){.tile:not(.is-child){display:-ms-flexbox;display:flex}.tile.is-1{width:8.33333337%}.tile.is-1,.tile.is-2{-ms-flex:none;flex:none}.tile.is-2{width:16.66666674%}.tile.is-3{width:25%}.tile.is-3,.tile.is-4{-ms-flex:none;flex:none}.tile.is-4{width:33.33333337%}.tile.is-5{width:41.66666674%}.tile.is-5,.tile.is-6{-ms-flex:none;flex:none}.tile.is-6{width:50%}}.has-background-white{background-color:#fff!important}.has-text-light{color:#f5f5f5!important}a.has-text-light:focus,a.has-text-light:hover{color:#dbdbdb!important}.has-text-dark{color:#363636!important}a.has-text-dark:focus,a.has-text-dark:hover{color:#1c1c1c!important}.has-text-link{color:#485fc7!important}a.has-text-link:focus,a.has-text-link:hover{color:#3449a8!important}.has-text-info{color:#3e8ed0!important}a.has-text-info:focus,a.has-text-info:hover{color:#2b74b1!important}.has-background-info{background-color:#3e8ed0!important}.has-text-success{color:#48c78e!important}a.has-text-success:focus,a.has-text-success:hover{color:#34a873!important}.has-text-warning{color:#ffe08a!important}a.has-text-warning:focus,a.has-text-warning:hover{color:#ffd257!important}.has-text-danger{color:#f14668!important}a.has-text-danger:focus,a.has-text-danger:hover{color:#ee1742!important}.has-background-grey-dark{background-color:#4a4a4a!important}.has-text-grey{color:#7a7a7a!important}.has-text-grey-light{color:#b5b5b5!important}.has-background-white-ter{background-color:#f5f5f5!important}.is-flex-direction-column{-ms-flex-direction:column!important;flex-direction:column!important}.is-justify-content-space-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.is-justify-content-start{-ms-flex-pack:start!important;justify-content:start!important}.is-justify-content-left{-ms-flex-pack:left!important;justify-content:left!important}.is-align-items-center{-ms-flex-align:center!important;align-items:center!important}.is-align-items-start{-ms-flex-align:start!important;align-items:start!important}.is-flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.is-flex-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.is-flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.is-pulled-right{float:right!important}.is-relative{position:relative!important}.mr-0{margin-right:0!important}.mb-0{margin-bottom:0!important}.mt-1{margin-top:.25rem!important}.mr-1{margin-right:.25rem!important}.mb-1{margin-bottom:.25rem!important}.mt-2{margin-top:.5rem!important}.mb-2{margin-bottom:.5rem!important}.ml-2{margin-left:.5rem!important}.m-3{margin:.75rem!important}.mt-3{margin-top:.75rem!important}.mr-3{margin-right:.75rem!important}.mb-3{margin-bottom:.75rem!important}.ml-3,.mx-3{margin-left:.75rem!important}.mx-3{margin-right:.75rem!important}.my-3{margin-top:.75rem!important;margin-bottom:.75rem!important}.mt-4{margin-top:1rem!important}.mb-4{margin-bottom:1rem!important}.m-5{margin:1.5rem!important}.mt-5{margin-top:1.5rem!important}.mr-5{margin-right:1.5rem!important}.mb-5{margin-bottom:1.5rem!important}.ml-5,.mx-5{margin-left:1.5rem!important}.mx-5{margin-right:1.5rem!important}.my-5{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.p-0{padding:0!important}.px-0{padding-left:0!important;padding-right:0!important}.px-1{padding-left:.25rem!important;padding-right:.25rem!important}.p-3{padding:.75rem!important}.pb-3{padding-bottom:.75rem!important}.px-3{padding-left:.75rem!important;padding-right:.75rem!important}.pt-5{padding-top:1.5rem!important}.pb-5{padding-bottom:1.5rem!important}.has-text-centered{text-align:center!important}.has-text-right{text-align:right!important}.is-italic{font-style:italic!important}.has-text-weight-light{font-weight:300!important}.has-text-weight-normal{font-weight:400!important}.is-family-code{font-family:monospace!important}.is-block{display:block!important}.is-flex{display:-ms-flexbox!important;display:flex!important}.is-inline{display:inline!important}.is-inline-block{display:inline-block!important}.is-hidden{display:none!important}.section{padding:3rem 1.5rem}@media screen and (min-width:1024px){.section{padding:3rem}.section.is-medium{padding:9rem 4.5rem}.section.is-large{padding:18rem 6rem}}.footer{background-color:#fafafa;padding:3rem 1.5rem 6rem}.switch[type=checkbox]{outline:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:inline-block;position:absolute;opacity:0}.switch[type=checkbox]:focus+label:after,.switch[type=checkbox]:focus+label:before{outline:1px dotted #b5b5b5}.switch[type=checkbox][disabled]{cursor:not-allowed}.switch[type=checkbox][disabled]+label,.switch[type=checkbox][disabled]+label:after,.switch[type=checkbox][disabled]+label:before{opacity:.5}.switch[type=checkbox][disabled]+label:hover{cursor:not-allowed}.switch[type=checkbox]+label{position:relative;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:start;justify-content:flex-start;font-size:1rem;height:2.5em;line-height:1.5;padding-left:3.5rem;padding-top:.2rem;cursor:pointer}.switch[type=checkbox]+label:before{position:absolute;display:block;top:calc(50% - 1.5rem * .5);left:0;width:3rem;height:1.5rem;border:.1rem solid transparent;border-radius:4px;background:#b5b5b5;content:""}.switch[type=checkbox]+label:after{display:block;position:absolute;top:calc(50% - 1rem * .5);left:.25rem;width:1rem;height:1rem;transform:translateZ(0);border-radius:4px;background:#fff;transition:all .25s ease-out;content:""}.switch[type=checkbox]:checked+label:before{background:#00d1b2}.switch[type=checkbox]:checked+label:after{left:1.625rem}.switch[type=checkbox].is-rounded+label:before{border-radius:24px}.switch[type=checkbox].is-rounded+label:after{border-radius:50%}.switch[type=checkbox].is-small+label{position:relative;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:start;justify-content:flex-start;font-size:.75rem;height:2.5em;line-height:1.5;padding-left:2.75rem;padding-top:.2rem;cursor:pointer}.switch[type=checkbox].is-small+label:before{position:absolute;display:block;top:calc(50% - 1.125rem * .5);left:0;width:2.25rem;height:1.125rem;border:.1rem solid transparent;border-radius:4px;background:#b5b5b5;content:""}.switch[type=checkbox].is-small+label:after{display:block;position:absolute;top:calc(50% - .625rem * .5);left:.25rem;width:.625rem;height:.625rem;transform:translateZ(0);border-radius:4px;background:#fff;transition:all .25s ease-out;content:""}.switch[type=checkbox].is-small:checked+label:before{background:#00d1b2}.switch[type=checkbox].is-small:checked+label:after{left:1.25rem}.switch[type=checkbox].is-small.is-rounded+label:before{border-radius:24px}.switch[type=checkbox].is-small.is-rounded+label:after{border-radius:50%}.switch[type=checkbox].is-medium+label{position:relative;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:start;justify-content:flex-start;font-size:1.25rem;height:2.5em;line-height:1.5;padding-left:4.25rem;padding-top:.2rem;cursor:pointer}.switch[type=checkbox].is-medium+label:before{position:absolute;display:block;top:calc(50% - 1.875rem * .5);left:0;width:3.75rem;height:1.875rem;border:.1rem solid transparent;border-radius:4px;background:#b5b5b5;content:""}.switch[type=checkbox].is-medium+label:after{display:block;position:absolute;top:calc(50% - 1.375rem * .5);left:.25rem;width:1.375rem;height:1.375rem;transform:translateZ(0);border-radius:4px;background:#fff;transition:all .25s ease-out;content:""}.switch[type=checkbox].is-medium:checked+label:before{background:#00d1b2}.switch[type=checkbox].is-medium:checked+label:after{left:2rem}.switch[type=checkbox].is-medium.is-rounded+label:before{border-radius:24px}.switch[type=checkbox].is-medium.is-rounded+label:after{border-radius:50%}.switch[type=checkbox].is-large+label{position:relative;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:start;justify-content:flex-start;font-size:1.5rem;height:2.5em;line-height:1.5;padding-left:5rem;padding-top:.2rem;cursor:pointer}.switch[type=checkbox].is-large+label:before{position:absolute;display:block;top:calc(50% - 2.25rem * .5);left:0;width:4.5rem;height:2.25rem;border:.1rem solid transparent;border-radius:4px;background:#b5b5b5;content:""}.switch[type=checkbox].is-large+label:after{display:block;position:absolute;top:calc(50% - 1.75rem * .5);left:.25rem;width:1.75rem;height:1.75rem;transform:translateZ(0);border-radius:4px;background:#fff;transition:all .25s ease-out;content:""}.switch[type=checkbox].is-large:checked+label:before{background:#00d1b2}.switch[type=checkbox].is-large:checked+label:after{left:2.375rem}.switch[type=checkbox].is-large.is-rounded+label:before{border-radius:24px}.switch[type=checkbox].is-large.is-rounded+label:after{border-radius:50%}.switch[type=checkbox].is-light:checked+label:before{background:#f5f5f5}.switch[type=checkbox].is-primary:checked+label:before{background:#00d1b2}.switch[type=checkbox].is-info:checked+label:before{background:#3e8ed0}.switch[type=checkbox].is-success:checked+label:before{background:#48c78e}.switch[type=checkbox].is-warning:checked+label:before{background:#ffe08a}.switch[type=checkbox].is-danger:checked+label:before{background:#f14668}.field-body .switch[type=checkbox]+label{margin-top:.375em}[data-tooltip]:not(.is-disabled),[data-tooltip]:not(.is-loading),[data-tooltip]:not([disabled]){cursor:pointer;overflow:visible;position:relative}[data-tooltip]:not(.is-disabled):after,[data-tooltip]:not(.is-disabled):before,[data-tooltip]:not(.is-loading):after,[data-tooltip]:not(.is-loading):before,[data-tooltip]:not([disabled]):after,[data-tooltip]:not([disabled]):before{box-sizing:border-box;color:#fff;display:inline-block;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Lucida Sans Unicode,Lucida Grande,Arial,sans-serif;font-size:.75rem;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;opacity:0;overflow:hidden;pointer-events:none;position:absolute;visibility:hidden;z-index:12}[data-tooltip]:not(.is-disabled):after,[data-tooltip]:not(.is-loading):after,[data-tooltip]:not([disabled]):after{content:"";border-style:solid;border-width:6px;margin-bottom:-5px;top:0;right:auto;bottom:auto;left:50%;margin:-5px auto auto -5px;border-color:rgba(74,74,74,.9) transparent transparent}[data-tooltip]:not(.is-disabled):before,[data-tooltip]:not(.is-loading):before,[data-tooltip]:not([disabled]):before{background:rgba(74,74,74,.9);border-radius:2px;content:attr(data-tooltip);padding:.5rem 1rem;text-overflow:ellipsis;white-space:pre;right:auto;bottom:auto;left:50%;top:0;margin-top:-5px;margin-bottom:auto;transform:translate(-50%,-100%)}[data-tooltip]:not(.is-disabled).has-tooltip-multiline:before,[data-tooltip]:not(.is-loading).has-tooltip-multiline:before,[data-tooltip]:not([disabled]).has-tooltip-multiline:before{height:auto;width:15rem;max-width:15rem;text-overflow:clip;white-space:normal;word-break:keep-all}[data-tooltip]:not(.is-disabled):focus:after,[data-tooltip]:not(.is-disabled):focus:before,[data-tooltip]:not(.is-disabled):hover:after,[data-tooltip]:not(.is-disabled):hover:before,[data-tooltip]:not(.is-loading):focus:after,[data-tooltip]:not(.is-loading):focus:before,[data-tooltip]:not(.is-loading):hover:after,[data-tooltip]:not(.is-loading):hover:before,[data-tooltip]:not([disabled]):focus:after,[data-tooltip]:not([disabled]):focus:before,[data-tooltip]:not([disabled]):hover:after,[data-tooltip]:not([disabled]):hover:before{opacity:1;visibility:visible}.fa{font-family:var(--fa-style-family,"Font Awesome 6 Free");font-weight:var(--fa-style,900)}.fa,.fa-brands,.fa-classic,.fa-regular,.fa-sharp,.fa-solid,.fab,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display,inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fa-classic,.fa-regular,.fa-solid,.far,.fas{font-family:Font Awesome\ 6 Free}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.0833333337em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.0714285718em;vertical-align:.0535714295em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.0416666682em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}@font-face{font-family:Font Awesome\ 6 Brands;font-style:normal;font-weight:400;font-display:block;src:url(/static/fonts/fontawesome/webfonts/fa-brands-400.woff2) format("woff2"),url(/static/fonts/fontawesome/webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:Font Awesome\ 6 Free;font-style:normal;font-weight:900;font-display:block;src:url(/static/fonts/fontawesome/webfonts/fa-solid-900.woff2) format("woff2"),url(/static/fonts/fontawesome/webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:Font Awesome\ 6 Free;font-style:normal;font-weight:400;font-display:block;src:url(/static/fonts/fontawesome/webfonts/fa-regular-400.woff2) format("woff2"),url(/static/fonts/fontawesome/webfonts/fa-regular-400.ttf) format("truetype")}.fa-regular,.far{font-weight:400}.fa-regular,.fa-solid,.far,.fas{font-family:Font Awesome\ 6 Free}.fa-solid,.fas{font-weight:900}.fa-brands,.fab{font-family:Font Awesome\ 6 Brands;font-weight:400}.fa-2_3x{font-size:2.3em}.fa-magnifying-glass:before{content:"\f002"}.fa-pen-to-square:before{content:"\f044"}.fa-trash:before{content:"\f1f8"}.fa-delete-left:before{content:"\f55a"}.fa-sort:before{content:"\f0dc"}.fa-terminal:before{content:"\f120"}.fa-list:before{content:"\f03a"}.fa-ban:before{content:"\f05e"}.fa-toggle-on:before{content:"\f205"}.fa-toggle-off:before{content:"\f204"}.fa-circle-play:before{content:"\f144"}.fa-plus:before{content:"\+"}.fa-rotate:before{content:"\f2f1"}.fa-copy:before{content:"\f0c5"}.fa-download:before{content:"\f019"}.fa-check:before{content:"\f00c"}.fa-circle-info:before{content:"\f05a"}.fa-file-arrow-down:before{content:"\f56d"}.fa-angle-right:before{content:"\f105"}.fa-circle-check:before{content:"\f058"}.fa-circle-xmark:before{content:"\f057"}.fa-circle-notch:before{content:"\f1ce"}.fa-circle-stop:before{content:"\f28d"}.fa-circle-pause:before{content:"\f28b"}.fa-circle-question:before{content:"\f059"}.fa-calendar:before{content:"\f133"}.fa-arrow-up-right-from-square:before{content:"\f08e"}.fa-eye-slash:before{content:"\f070"}.fa-eye:before{content:"\f06e"}.fa-users:before{content:"\f0c0"}.fa-right-to-bracket:before{content:"\f2f6"}.fa-angle-down:before{content:"\f107"}.fa-triangle-exclamation:before{content:"\f071"}.CodeMirror{font-family:monospace;height:300px;color:#000;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor-mark{background-color:rgba(20,255,20,.5);animation:c 1.06s steps(1) infinite}.cm-animate-fat-cursor{width:auto;border:0;animation:c 1.06s steps(1) infinite;background-color:#7e7}@keyframes c{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:0;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:blue}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-type,.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-invalidchar,.cm-s-default .cm-error{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-30px;margin-right:-30px;padding-bottom:30px;height:100%;outline:none;position:relative}.CodeMirror-sizer{position:relative;border-right:30px solid transparent}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{position:absolute;z-index:5;display:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-30px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:none!important;border:none!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{border-radius:0;border-width:0;background:transparent;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;font-variant-ligatures:contextual}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:none}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}.CodeMirror-focused div.CodeMirror-cursors,div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:rgba(255,255,0,.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:""}span.CodeMirror-selectedtext{background:none}.cm-s-ttcn.CodeMirror{background:#f5f2f0;color:#000}.cm-s-ttcn .CodeMirror-overlayscroll-vertical{width:8px;transition:width .15s linear}.cm-s-ttcn .CodeMirror-overlayscroll-vertical>div{background:rgba(0,0,0,.4)}.cm-s-ttcn .CodeMirror-overlayscroll-vertical:hover{width:12px}.cm-s-ttcn .CodeMirror-overlayscroll-vertical:hover>div{border-radius:6px}.cm-s-ttcn .CodeMirror-gutters{border-right:1px solid #999}.cm-s-ttcn .CodeMirror-gutter,.cm-s-ttcn .CodeMirror-linenumbers{width:1.4em;background:#f5f2f0;padding-right:.8em}.cm-s-ttcn pre.CodeMirror-line,.cm-s-ttcn pre.CodeMirror-line-like{padding:0 .8em}.cm-s-ttcn .cm-quote{color:#090}.cm-s-ttcn .cm-header,.cm-strong{font-weight:700}.cm-s-ttcn .cm-header{color:#00f;font-weight:700}.cm-s-ttcn .cm-atom{color:#905}.cm-s-ttcn .cm-attribute{color:#690}.cm-s-ttcn .cm-bracket{color:#997}.cm-s-ttcn .cm-comment{color:#333}.cm-s-ttcn .cm-def{color:#00f}.cm-s-ttcn .cm-em{font-style:italic}.cm-s-ttcn .cm-error{color:red}.cm-s-ttcn .cm-hr{color:#999}.cm-s-ttcn .cm-keyword{color:#07a}.cm-s-ttcn .cm-link{color:#00c;text-decoration:underline}.cm-s-ttcn .cm-meta{color:#555}.cm-s-ttcn .cm-negative{color:#d44}.cm-s-ttcn .cm-positive{color:#292}.cm-s-ttcn .cm-qualifier{color:#555}.cm-s-ttcn .cm-strikethrough{text-decoration:line-through}.cm-s-ttcn .cm-string{color:#690}.cm-s-ttcn .cm-string-2{color:#f50}.cm-s-ttcn .cm-strong{font-weight:700}.cm-s-ttcn .cm-tag{color:#170}.cm-s-ttcn .cm-variable{color:#8b2252}.cm-s-ttcn .cm-variable-2{color:#05a}.cm-s-ttcn .cm-type,.cm-s-ttcn .cm-variable-3{color:#085}.cm-s-ttcn .cm-invalidchar{color:red}.cm-s-ttcn .cm-operator{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.cm-s-ttcn .cm-accessTypes,.cm-s-ttcn .cm-compareTypes{color:#27408b}.cm-s-ttcn .cm-cmipVerbs{color:#8b2252}.cm-s-ttcn .cm-modifier{color:#d2691e}.cm-s-ttcn .cm-status{color:#8b4545}.cm-s-ttcn .cm-storage{color:#a020f0}.cm-s-ttcn .cm-tags{color:#006400}.cm-s-ttcn .cm-externalCommands{color:#8b4545;font-weight:700}.cm-s-ttcn .cm-fileNCtrlMaskOptions,.cm-s-ttcn .cm-sectionTitle{color:#2e8b57;font-weight:700}.cm-s-ttcn .cm-booleanConsts,.cm-s-ttcn .cm-otherConsts,.cm-s-ttcn .cm-verdictConsts{color:#006400}.cm-s-ttcn .cm-configOps,.cm-s-ttcn .cm-functionOps,.cm-s-ttcn .cm-portOps,.cm-s-ttcn .cm-sutOps,.cm-s-ttcn .cm-timerOps,.cm-s-ttcn .cm-verdictOps{color:#00f}.cm-s-ttcn .cm-preprocessor,.cm-s-ttcn .cm-templateMatch,.cm-s-ttcn .cm-ttcn3Macros{color:#27408b}.cm-s-ttcn .cm-types{color:brown;font-weight:700}.cm-s-ttcn .cm-visibilityModifiers{font-weight:700}.CodeMirror-simplescroll-horizontal div,.CodeMirror-simplescroll-vertical div{position:absolute;background:#ccc;box-sizing:border-box;border:1px solid #bbb;border-radius:2px}.CodeMirror-simplescroll-horizontal,.CodeMirror-simplescroll-vertical{position:absolute;z-index:5;background:#eee}.CodeMirror-simplescroll-horizontal{bottom:0;left:0;height:8px}.CodeMirror-simplescroll-horizontal div{bottom:0;height:100%}.CodeMirror-simplescroll-vertical{right:0;top:0;width:8px}.CodeMirror-simplescroll-vertical div{right:0;width:100%}.CodeMirror-overlayscroll .CodeMirror-gutter-filler,.CodeMirror-overlayscroll .CodeMirror-scrollbar-filler{display:none}.CodeMirror-overlayscroll-horizontal div,.CodeMirror-overlayscroll-vertical div{position:absolute;background:#bcd;border-radius:3px}.CodeMirror-overlayscroll-horizontal,.CodeMirror-overlayscroll-vertical{position:absolute;z-index:5}.CodeMirror-overlayscroll-horizontal{bottom:0;left:0;height:6px}.CodeMirror-overlayscroll-horizontal div{bottom:0;height:100%}.CodeMirror-overlayscroll-vertical{right:0;top:0;width:6px}.CodeMirror-overlayscroll-vertical div{right:0;width:100%}.ss-wrapper{overflow:hidden;width:100%;height:100%;position:relative;z-index:1;float:left}.ss-content{height:calc(22px + 100%);width:calc(18px + 100%);padding:0;position:relative;overflow-x:scroll;overflow-y:scroll;box-sizing:border-box}.ss-scroll{top:0;right:0;padding-top:2px}.ss-hscroll,.ss-scroll{position:absolute;padding-right:2px;z-index:2;cursor:pointer;opacity:0;transition:opacity .25s linear .5s;padding-bottom:2px}.ss-hscroll{padding-left:2px;left:0;bottom:0}.ss-liner{background:rgba(0,0,0,.4);transition:background .25s linear;border-radius:4px;height:100%;width:100%}.ss-scroll .ss-liner{width:8px;transition:width .15s linear}.ss-hscroll .ss-liner{height:8px;transition:height .15s linear}.ss-grabbed .ss-liner,.ss-hscroll:hover .ss-liner,.ss-scroll:hover .ss-liner{background:rgba(0,0,0,.5);border-radius:6px}.ss-scroll.ss-grabbed .ss-liner,.ss-scroll:hover .ss-liner{width:12px}.ss-hscroll.ss-grabbed .ss-liner,.ss-hscroll:hover .ss-liner{height:12px}.ss-container.light .ss-liner{background:hsla(0,0%,100%,.4)}.ss-container.light .ss-grabbed .ss-liner,.ss-container.light .ss-hscroll:hover .ss-liner,.ss-container.light .ss-scroll:hover .ss-liner{background:hsla(0,0%,100%,.8)}.ss-hidden{display:none}.ss-container.ss-grabbed>.ss-wrapper>.ss-hscroll,.ss-container.ss-grabbed>.ss-wrapper>.ss-scroll,.ss-container:active>.ss-wrapper>.ss-hscroll,.ss-container:active>.ss-wrapper>.ss-scroll,.ss-container:hover>.ss-wrapper>.ss-hscroll,.ss-container:hover>.ss-wrapper>.ss-scroll{opacity:1;transition:opacity .25s linear 0s}.ss-grabbed{-o-user-select:none}.sp-wrapper,.ss-grabbed{-ms-user-select:none;-moz-user-select:none;-webkit-user-select:none;user-select:none}.sp-wrapper{position:absolute;top:0;right:0;height:100%;width:0;opacity:0;transition:opacity .25s linear .5s}.sp-container:hover .sp-wrapper,.sp-wrapper>.sp-grabbed,.ss-grabbed~.sp-wrapper{opacity:1;transition:opacity .25s linear 0s}.sp-content{transform-origin:0 0}.sp-scroll{position:absolute;width:100%;background-image:linear-gradient(270deg,hsla(0,0%,100%,0),hsla(0,0%,100%,.2));opacity:0;left:-2px;transition:opacity .25s linear .5s;border-left:2px solid #e7db74}.sp-wrapper.sp-hover .sp-scroll,.sp-wrapper .sp-scroll.sp-grabbed,.sp-wrapper:hover .sp-scroll,.ss-scroll.ss-grabbed~.sp-wrapper .sp-scroll,.ss-scroll:hover~.sp-wrapper .sp-scroll{opacity:1;transition:opacity .25s linear 0s}.ss-content::-webkit-scrollbar{background-color:#fff;width:16px}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-]::-moz-selection,code[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}pre[class*=language-].line-numbers{position:relative;padding-left:3.8em;counter-reset:a}pre[class*=language-].line-numbers>code{position:relative;white-space:inherit}.line-numbers .line-numbers-rows{position:absolute;pointer-events:none;top:0;font-size:100%;left:-3.8em;width:3em;letter-spacing:-1px;border-right:1px solid #999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.line-numbers-rows>span{display:block;counter-increment:a}.line-numbers-rows>span:before{content:counter(a);color:#999;display:block;padding-right:.8em;text-align:right}.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,.08)}.flatpickr-calendar.inline,.flatpickr-calendar.open{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:13}.flatpickr-calendar.animate.open{animation:d .3s cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:11;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){box-shadow:none!important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasTime .dayContainer,.flatpickr-calendar .hasWeeks .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:after,.flatpickr-calendar:before{position:absolute;display:block;pointer-events:none;border:solid transparent;content:"";height:0;width:0;left:22px}.flatpickr-calendar.rightMost:after,.flatpickr-calendar.rightMost:before{left:auto;right:22px}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:after,.flatpickr-calendar.arrowTop:before{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:after,.flatpickr-calendar.arrowBottom:before{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,.9);fill:rgba(0,0,0,.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-next-month,.flatpickr-months .flatpickr-prev-month{text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,.9);fill:rgba(0,0,0,.9)}.flatpickr-months .flatpickr-next-month.flatpickr-disabled,.flatpickr-months .flatpickr-prev-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-next-month i,.flatpickr-months .flatpickr-prev-month i{position:relative}.flatpickr-months .flatpickr-next-month.flatpickr-prev-month,.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month{left:0}.flatpickr-months .flatpickr-next-month.flatpickr-next-month,.flatpickr-months .flatpickr-prev-month.flatpickr-next-month{right:0}.flatpickr-months .flatpickr-next-month:hover,.flatpickr-months .flatpickr-prev-month:hover{color:#959ea9}.flatpickr-months .flatpickr-next-month:hover svg,.flatpickr-months .flatpickr-prev-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-next-month svg,.flatpickr-months .flatpickr-prev-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-next-month svg path,.flatpickr-months .flatpickr-prev-month svg path{transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-inner-spin-button,.numInputWrapper input::-webkit-outer-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,.15);box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,.1)}.numInputWrapper span:active{background:rgba(0,0,0,.2)}.numInputWrapper span:after{display:block;content:"";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,.5)}.numInputWrapper:hover{background:rgba(0,0,0,.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0;line-height:1;height:34px;display:inline-block;text-align:center;transform:translateZ(0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,.9)}.flatpickr-current-month input.cur-year{background:transparent;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:active,.flatpickr-current-month .flatpickr-monthDropdown-months:focus{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-ms-flexbox;display:flex;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,.54);line-height:1;margin:0;text-align:center;display:block;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:flex;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;justify-content:space-around;transform:translateZ(0);opacity:1}.dayContainer+.dayContainer{box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day.nextMonthDay:focus,.flatpickr-day.nextMonthDay:hover,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.today.inRange,.flatpickr-day:focus,.flatpickr-day:hover{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:focus,.flatpickr-day.today:hover{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.endRange,.flatpickr-day.endRange.inRange,.flatpickr-day.endRange.nextMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.endRange:focus,.flatpickr-day.endRange:hover,.flatpickr-day.selected,.flatpickr-day.selected.inRange,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.selected:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange,.flatpickr-day.startRange.inRange,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.startRange:focus,.flatpickr-day.startRange:hover{background:#569ff7;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.endRange.startRange,.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.endRange.endRange,.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.endRange.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.selected.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange+.endRange:not(:nth-child(7n+1)){box-shadow:-10px 0 0 #569ff7}.flatpickr-day.endRange.startRange.endRange,.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.nextMonthDay,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.prevMonthDay{color:rgba(57,57,57,.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,.1)}.flatpickr-day.week.selected{border-radius:0;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-ms-flexbox;display:flex;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;box-sizing:border-box;overflow:hidden;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:"";display:table;clear:both}.flatpickr-time .numInputWrapper{-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:700}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-am-pm,.flatpickr-time .flatpickr-time-separator{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:700;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time .flatpickr-am-pm:focus,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time input:hover{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@keyframes d{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}.table.sort tr>th{cursor:pointer}.column{min-width:0}.atlas-navbar{padding:16px 0}.atlas-navbar .navbar-brand{margin-left:0!important}.atlas-navbar .navbar-brand a{padding-top:0;padding-bottom:0}.atlas-navbar .navbar-brand a img{max-height:50px;height:50px}.atlas-navbar .has-dropdown .navbar-link:hover,.atlas-navbar a.navbar-item:hover{color:#363636}@media screen and (min-width:1024px){.atlas-navbar .navbar-start{padding-top:0!important}}@media screen and (min-width:1024px){.hide-desktop{display:none!important}}#search-form{position:relative}#search-results{position:absolute;top:50px;left:0;min-width:100%;min-width:max(50vw,100%);max-width:800px;display:none;border-radius:4px;z-index:14;max-height:calc(100vh - 145px);overflow-y:auto}@media screen and (min-width:1024px){#search-results{min-width:max(30vw,100%)}}#search-results:empty{display:none!important}#search-results.search-focus,#search-results:active{display:block;box-shadow:0 .5em 1em -.125em hsla(0,0%,4%,.1),0 0 0 1px hsla(0,0%,4%,.02);border:1px solid #dbdbdb}#search-results .panel-block:first-of-type{border-top-left-radius:inherit;border-top-right-radius:inherit}#search-background{position:fixed;top:0;bottom:0;left:0;right:0;background:transparent;z-index:6;display:none}#search-background.search-focus-background{display:block}#search-background+div{z-index:7}#search-results em{background-color:#eff5fb;color:#3e8ed0}.tab-cnt>.tab-dta:not(.is-active){display:none}.tag:empty{background:transparent}[data-tooltip].has-tooltip-multiline:before{white-space:pre-line!important}[data-tooltip]:before{max-width:21rem!important;width:21rem!important}.is-size-6-5{font-size:.85rem!important}input.transparent{border:transparent!important;background:transparent!important}.pagination.is-close ul li:not(:first-of-type) .pagination-link{margin-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.pagination.is-close ul li:not(:last-child) .pagination-link{margin-right:-1px;border-top-right-radius:0;border-bottom-right-radius:0}.pagination.is-close ul li:not(:last-child) .pagination-link:hover{margin-right:0;z-index:4}.pagination.is-close ul li:not(:last-child):hover+li .pagination-link{margin-left:-1px}.log-group div[log_id].is-collapsed{height:20px;overflow:hidden;-ms-flex-align:baseline;align-items:baseline}.log-group.first-of-type{margin-top:15px}.em-codeBox{max-height:500px;overflow:hidden}.em-codeBox pre{display:inline-block;min-width:100%;min-height:calc(100% - 1px);padding:1em 0 0 1em;margin:0!important;overflow:hidden!important}.em-codeBox code{padding-right:130px}.em-timelineScale{position:absolute;width:100%;bottom:0;top:0}.em-timelineLiner{padding-left:50px;position:relative}.em-timelineLiner:before{content:"runs/\a time";position:absolute;left:0;bottom:-20px;white-space:pre-wrap}.em-el{height:200px}.em-elBar{position:relative;height:0}.em-elBar:before{content:attr(data-attr);position:absolute;bottom:-30px;background:#fff;right:0;left:0}.em-ScaleBar{height:1px;width:100%;background:#b5b5b5;position:relative;margin-bottom:50px}.em-ScaleBar:before{content:attr(data-attr);position:absolute;top:50%;transform:translateY(-50%);background:#fff;padding-right:10px;color:#4a4a4a}.em-ScaleBar:last-of-type{background:transparent}code .number{all:unset}.is-inlineblock{display:inline-block!important}article.message a{text-decoration:none!important}.em-ajaxContent.is-inline div{display:inline-block} \ No newline at end of file +/* Bulma Elements */.navbar-link:not(.is-arrowless):after,.select:not(.is-multiple):not(.is-loading):after{border:.125em solid var(--arrow-color);border-right:0;border-top:0;content:" ";display:block;height:.625em;margin-top:-.4375em;pointer-events:none;position:absolute;top:50%;transform:rotate(-45deg);transform-origin:center;transition-duration:var(--duration);transition-property:border-color;width:.625em}.block:not(:last-child),.box:not(:last-child),.breadcrumb:not(:last-child),.buttons:not(:last-child),.content:not(:last-child),.field:not(:last-child),.file:not(:last-child),.level:not(:last-child),.message:not(:last-child),.notification:not(:last-child),.pagination:not(:last-child),.progress:not(:last-child),.subtitle:not(:last-child),.table-container:not(:last-child),.table:not(:last-child),.tabs:not(:last-child),.tags:not(:last-child),.title:not(:last-child){margin-bottom:var(--block-spacing)}.button,.input,.pagination-link,.select select,.textarea{align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-color:transparent;border-radius:var(--control-radius);border-style:solid;border-width:var(--control-border-width);box-shadow:none;display:inline-flex;font-size:var(--control-size);height:var(--control-height);justify-content:flex-start;line-height:var(--control-line-height);padding:var(--control-padding-vertical) var(--control-padding-horizontal);position:relative;transition-duration:var(--duration);transition-property:background-color,border-color,box-shadow,color;vertical-align:top}.button:active,.button:focus,.button:focus-visible,.button:focus-within,.input:active,.input:focus,.input:focus-visible,.input:focus-within,.is-active.button,.is-active.input,.is-active.pagination-link,.is-active.textarea,.pagination-link:active,.pagination-link:focus,.pagination-link:focus-visible,.pagination-link:focus-within,.select select.is-active,.select select:active,.select select:focus,.select select:focus-visible,.select select:focus-within,.textarea:active,.textarea:focus,.textarea:focus-visible,.textarea:focus-within{outline:none}.select select[disabled],[disabled].button,[disabled].input,[disabled].pagination-link,[disabled].textarea{cursor:not-allowed}.modal{bottom:0;left:0;position:absolute;right:0;top:0}.navbar-burger{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;color:inherit;font-family:inherit;font-size:1em;margin:0;padding:0}.breadcrumb,.button,.file,.pagination-link,.tabs{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.box{--box-background-color:var(--scheme-main);--box-color:var(--text);--box-radius:var(--radius-large);--box-shadow:var(--shadow);--box-padding:1.25rem;--box-link-hover-shadow:0 0.5em 1em -0.125em hsla(var(--scheme-h),var(--scheme-s),var(--scheme-invert-l),0.1),0 0 0 1px var(--link);--box-link-active-shadow:inset 0 1px 2px hsla(var(--scheme-h),var(--scheme-s),var(--scheme-invert-l),0.2),0 0 0 1px var(--link);background-color:var(--box-background-color);border-radius:var(--box-radius);box-shadow:var(--box-shadow);color:var(--box-color);display:block;padding:var(--box-padding)}a.box:focus,a.box:hover{box-shadow:var(--box-link-hover-shadow)}a.box:active{box-shadow:var(--box-link-active-shadow)}.button{--button-family:false;--button-weight:var(--weight-medium);--button-border-color:var(--border);--button-border-style:solid;--button-border-width:var(--control-border-width);--button-padding-vertical:0.5em;--button-padding-horizontal:1em;--button-focus-border-color:var(--link-focus-border);--button-focus-box-shadow-size:0 0 0 0.125em;--button-focus-box-shadow-color:hsla(var(--link-h),var(--link-s),var(--link-on-scheme-l),0.25);--button-active-color:var(--link-active);--button-active-border-color:var(--link-active-border);--button-text-color:var(--text);--button-text-decoration:underline;--button-text-hover-background-color:var(--background);--button-text-hover-color:var(--text-strong);--button-ghost-background:none;--button-ghost-border-color:transparent;--button-ghost-color:var(--link-text);--button-ghost-decoration:none;--button-ghost-hover-color:var(--link);--button-ghost-hover-decoration:underline;--button-disabled-background-color:var(--scheme-main);--button-disabled-border-color:var(--border);--button-disabled-shadow:none;--button-disabled-opacity:0.5;--button-static-color:var(--text-weak);--button-static-background-color:var(--scheme-main-ter);--button-static-border-color:var(--border);--button-h:var(--scheme-h);--button-s:var(--scheme-s);--button-l:var(--scheme-main-l);--button-background-l:var(--scheme-main-l);--button-background-l-delta:0%;--button-hover-background-l-delta:var(--hover-background-l-delta);--button-active-background-l-delta:var(--active-background-l-delta);--button-color-l:var(--text-strong-l);--button-border-l:var(--border-l);--button-border-l-delta:0%;--button-hover-border-l-delta:var(--hover-border-l-delta);--button-active-border-l-delta:var(--active-border-l-delta);--button-focus-border-l-delta:var(--focus-border-l-delta);--button-outer-shadow-h:0;--button-outer-shadow-s:0%;--button-outer-shadow-l:20%;--button-outer-shadow-a:0.05;--loading-color:hsl(var(--button-h),var(--button-s),var(--button-color-l));background-color:hsl(var(--button-h),var(--button-s),calc(var(--button-background-l) + var(--button-background-l-delta)));border-color:hsl(var(--button-h),var(--button-s),calc(var(--button-border-l) + var(--button-border-l-delta)));border-style:var(--button-border-style);border-width:var(--button-border-width);box-shadow:0 .0625em .125em hsla(var(--button-outer-shadow-h),var(--button-outer-shadow-s),var(--button-outer-shadow-l),var(--button-outer-shadow-a)),0 .125em .25em hsla(var(--button-outer-shadow-h),var(--button-outer-shadow-s),var(--button-outer-shadow-l),var(--button-outer-shadow-a));color:hsl(var(--button-h),var(--button-s),var(--button-color-l));cursor:pointer;font-weight:var(--button-weight);height:auto;justify-content:center;padding:calc(var(--button-padding-vertical) - var(--button-border-width)) calc(var(--button-padding-horizontal) - var(--button-border-width));text-align:center;white-space:nowrap}.button strong{color:inherit}.button .icon,.button .icon.is-large,.button .icon.is-medium,.button .icon.is-small{height:1.5em;width:1.5em}.button .icon:first-child:not(:last-child){margin-inline-end:calc(var(--button-padding-horizontal)*.25);margin-inline-start:calc(var(--button-padding-horizontal)*-.5)}.button .icon:last-child:not(:first-child){margin-inline-end:calc(var(--button-padding-horizontal)*-.5);margin-inline-start:calc(var(--button-padding-horizontal)*.25)}.button .icon:first-child:last-child{margin-inline-end:calc(var(--button-padding-horizontal)*-.5);margin-inline-start:calc(var(--button-padding-horizontal)*-.5)}.button:hover{--button-background-l-delta:var(--button-hover-background-l-delta);--button-border-l-delta:var(--button-hover-border-l-delta)}.button:focus-visible{--button-border-width:1px;border-color:hsl(var(--focus-h),var(--focus-s),var(--focus-l));box-shadow:var(--focus-shadow-size) hsla(var(--focus-h),var(--focus-s),var(--focus-l),var(--focus-shadow-alpha))}.button.is-active,.button:active{--button-background-l-delta:var(--button-active-background-l-delta);--button-border-l-delta:var(--button-active-border-l-delta);--button-outer-shadow-a:0}.button[disabled]{background-color:var(--button-disabled-background-color);border-color:var(--button-disabled-border-color);box-shadow:var(--button-disabled-shadow);opacity:var(--button-disabled-opacity)}.button.is-light{--button-h:var(--light-h);--button-s:var(--light-s);--button-l:var(--light-l);--button-background-l:var(--light-l);--button-border-l:var(--light-l);--button-border-width:0px;--button-color-l:var(--light-invert-l);--button-outer-shadow-a:0}.button.is-light:focus-visible{--button-border-width:1px}.button.is-light[disabled]{background-color:var(--light);border-color:var(--light);box-shadow:none}.button.is-primary{--button-h:var(--primary-h);--button-s:var(--primary-s);--button-l:var(--primary-l);--button-background-l:var(--primary-l);--button-border-l:var(--primary-l);--button-border-width:0px;--button-color-l:var(--primary-invert-l);--button-outer-shadow-a:0}.button.is-primary:focus-visible{--button-border-width:1px}.button.is-primary.is-light{--button-background-l:var(--light-l);--button-color-l:var(--primary-light-invert-l)}.button.is-primary[disabled]{background-color:var(--primary);border-color:var(--primary);box-shadow:none}.button.is-info{--button-h:var(--info-h);--button-s:var(--info-s);--button-l:var(--info-l);--button-background-l:var(--info-l);--button-border-l:var(--info-l);--button-border-width:0px;--button-color-l:var(--info-invert-l);--button-outer-shadow-a:0}.button.is-info:focus-visible{--button-border-width:1px}.button.is-info.is-light{--button-background-l:var(--light-l);--button-color-l:var(--info-light-invert-l)}.button.is-info[disabled]{background-color:var(--info);border-color:var(--info);box-shadow:none}.button.is-success{--button-h:var(--success-h);--button-s:var(--success-s);--button-l:var(--success-l);--button-background-l:var(--success-l);--button-border-l:var(--success-l);--button-border-width:0px;--button-color-l:var(--success-invert-l);--button-outer-shadow-a:0}.button.is-success:focus-visible{--button-border-width:1px}.button.is-success.is-light{--button-background-l:var(--light-l);--button-color-l:var(--success-light-invert-l)}.button.is-success[disabled]{background-color:var(--success);border-color:var(--success);box-shadow:none}.button.is-warning{--button-h:var(--warning-h);--button-s:var(--warning-s);--button-l:var(--warning-l);--button-background-l:var(--warning-l);--button-border-l:var(--warning-l);--button-border-width:0px;--button-color-l:var(--warning-invert-l);--button-outer-shadow-a:0}.button.is-warning:focus-visible{--button-border-width:1px}.button.is-warning.is-light{--button-background-l:var(--light-l);--button-color-l:var(--warning-light-invert-l)}.button.is-warning[disabled]{background-color:var(--warning);border-color:var(--warning);box-shadow:none}.button.is-danger{--button-h:var(--danger-h);--button-s:var(--danger-s);--button-l:var(--danger-l);--button-background-l:var(--danger-l);--button-border-l:var(--danger-l);--button-border-width:0px;--button-color-l:var(--danger-invert-l);--button-outer-shadow-a:0}.button.is-danger:focus-visible{--button-border-width:1px}.button.is-danger.is-light{--button-background-l:var(--light-l);--button-color-l:var(--danger-light-invert-l)}.button.is-danger[disabled]{background-color:var(--danger);border-color:var(--danger);box-shadow:none}.button.is-small{--control-size:var(--size-small);--control-radius:var(--radius-small)}.button.is-medium{--control-size:var(--size-medium);--control-radius:var(--radius-medium)}.button.is-large{--control-size:var(--size-large);--control-radius:var(--radius-medium)}.button.is-fullwidth{display:flex;width:100%}.button.is-rounded{border-radius:var(--radius-rounded);padding-left:calc(var(--button-padding-horizontal) + .25em - var(--button-border-width));padding-right:calc(var(--button-padding-horizontal) + .25em - var(--button-border-width))}.buttons{align-items:center;display:flex;flex-wrap:wrap;gap:.75rem;justify-content:flex-start}.buttons.has-addons{gap:0}.buttons.has-addons .button:not(:first-child){border-end-start-radius:0;border-start-start-radius:0}.buttons.has-addons .button:not(:last-child){border-end-end-radius:0;border-start-end-radius:0;margin-inline-end:-1px}.buttons.has-addons .button:hover{z-index:2}.buttons.has-addons .button.is-active,.buttons.has-addons .button:active,.buttons.has-addons .button:focus{z-index:3}.buttons.has-addons .button.is-active:hover,.buttons.has-addons .button:active:hover,.buttons.has-addons .button:focus:hover{z-index:4}.buttons.has-addons .button.is-expanded{flex-grow:1;flex-shrink:1}.buttons.is-centered{justify-content:center}.content{--content-heading-color:var(--text-strong);--content-heading-weight:var(--weight-extrabold);--content-heading-line-height:1.125;--content-block-margin-bottom:1em;--content-blockquote-background-color:var(--background);--content-blockquote-border-left:5px solid var(--border);--content-blockquote-padding:1.25em 1.5em;--content-pre-padding:1.25em 1.5em;--content-table-cell-border:1px solid var(--border);--content-table-cell-border-width:0 0 1px;--content-table-cell-padding:0.5em 0.75em;--content-table-cell-heading-color:var(--text-strong);--content-table-head-cell-border-width:0 0 2px;--content-table-head-cell-color:var(--text-strong);--content-table-body-last-row-cell-border-bottom-width:0;--content-table-foot-cell-border-width:2px 0 0;--content-table-foot-cell-color:var(--text-strong)}.content li+li{margin-top:.25em}.content blockquote:not(:last-child),.content ol:not(:last-child),.content p:not(:last-child),.content pre:not(:last-child),.content table:not(:last-child),.content ul:not(:last-child){margin-bottom:var(--content-block-margin-bottom)}.content h1,.content h2,.content h3,.content h4,.content h5{color:var(--content-heading-color);font-weight:var(--content-heading-weight);line-height:var(--content-heading-line-height)}.content h1{font-size:2em;margin-bottom:.5em}.content h1:not(:first-child){margin-top:1em}.content h2{font-size:1.75em;margin-bottom:.5714em}.content h2:not(:first-child){margin-top:1.1428em}.content h3{font-size:1.5em;margin-bottom:.6666em}.content h3:not(:first-child){margin-top:1.3333em}.content h4{font-size:1.25em;margin-bottom:.8em}.content h5{font-size:1.125em;margin-bottom:.8888em}.content blockquote{background-color:var(--content-blockquote-background-color);border-inline-start:var(--content-blockquote-border-left);padding:var(--content-blockquote-padding)}.content ol{list-style-position:outside;margin-inline-start:2em}.content ol:not(:first-child){margin-top:1em}.content ol:not([type]){list-style-type:decimal}.content ul{list-style:disc outside;margin-inline-start:2em}.content ul:not(:first-child){margin-top:1em}.content ul ul{list-style-type:circle;margin-bottom:.25em;margin-top:.25em}.content ul ul ul{list-style-type:square}.content figure:not([class]){margin-left:2em;margin-right:2em;text-align:center}.content figure:not([class]):not(:first-child){margin-top:2em}.content figure:not([class]):not(:last-child){margin-bottom:2em}.content figure:not([class]) img{display:inline-block}.content pre{-webkit-overflow-scrolling:touch;overflow-x:auto;padding:var(--content-pre-padding);white-space:pre;word-wrap:normal}.content sub{font-size:75%}.content table td,.content table th{border:var(--content-table-cell-border);border-width:var(--content-table-cell-border-width);padding:var(--content-table-cell-padding);vertical-align:top}.content table th{color:var(--content-table-cell-heading-color)}.content table th:not([align]){text-align:inherit}.content table thead td,.content table thead th{border-width:var(--content-table-head-cell-border-width);color:var(--content-table-head-cell-color)}.content table tbody tr:last-child td,.content table tbody tr:last-child th{border-bottom-width:var(--content-table-body-last-row-cell-border-bottom-width)}.content .tabs li+li{margin-top:0}.content.is-small{font-size:var(--size-small)}.content.is-medium{font-size:var(--size-medium)}.content.is-large{font-size:var(--size-large)}.delete{--delete-dimensions:1.25rem;--delete-background-l:0%;--delete-background-alpha:0.5;--delete-color:var(--white);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:hsla(var(--scheme-h),var(--scheme-s),var(--delete-background-l),var(--delete-background-alpha));border:none;border-radius:var(--radius-rounded);cursor:pointer;display:inline-flex;flex-grow:0;flex-shrink:0;font-size:1em;height:var(--delete-dimensions);max-height:var(--delete-dimensions);max-width:var(--delete-dimensions);min-height:var(--delete-dimensions);min-width:var(--delete-dimensions);outline:none;pointer-events:auto;position:relative;vertical-align:top;width:var(--delete-dimensions)}.delete:after,.delete:before{background-color:var(--delete-color);content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.delete:before{height:2px;width:50%}.delete:after{height:50%;width:2px}.delete:focus,.delete:hover{--delete-background-alpha:0.4}.delete:active{--delete-background-alpha:0.5}.delete.is-small{--delete-dimensions:1rem}.delete.is-medium{--delete-dimensions:1.5rem}.delete.is-large{--delete-dimensions:2rem}.icon,.icon-text{--icon-dimensions:1.5rem;--icon-dimensions-small:1rem;--icon-dimensions-medium:2rem;--icon-dimensions-large:3rem;--icon-text-spacing:0.25em}.icon{align-items:center;display:inline-flex;flex-shrink:0;height:var(--icon-dimensions);justify-content:center;transition-duration:var(--duration);transition-property:color;width:var(--icon-dimensions)}.icon.is-small{height:var(--icon-dimensions-small);width:var(--icon-dimensions-small)}.icon.is-medium{height:var(--icon-dimensions-medium);width:var(--icon-dimensions-medium)}.icon.is-large{height:var(--icon-dimensions-large);width:var(--icon-dimensions-large)}.icon-text{align-items:flex-start;color:inherit;display:inline-flex;flex-wrap:wrap;gap:var(--icon-text-spacing);line-height:var(--icon-dimensions);vertical-align:top}.icon-text .icon{flex-grow:0;flex-shrink:0}div.icon-text{display:flex}.image{display:block;position:relative}.image img{display:block;height:auto;width:100%}.image img.is-rounded{border-radius:var(--radius-rounded)}.image.is-fullwidth{width:100%}.loader{animation:spinAround .5s linear infinite;border-bottom:2px solid var(--border);border-left:2px solid var(--border);border-radius:var(--radius-rounded);border-right:2px solid transparent;border-top:2px solid transparent;content:"";display:block;height:1em;position:relative;width:1em}.notification{--notification-h:var(--scheme-h);--notification-s:var(--scheme-s);--notification-background-l:var(--background-l);--notification-color-l:var(--text-strong-l);--notification-code-background-color:var(--scheme-main);--notification-radius:var(--radius);--notification-padding:1.375em 1.5em;background-color:hsl(var(--notification-h),var(--notification-s),var(--notification-background-l));border-radius:var(--notification-radius);color:hsl(var(--notification-h),var(--notification-s),var(--notification-color-l));padding:var(--notification-padding);position:relative}.notification a:not(.button):not(.dropdown-item){color:currentColor;text-decoration:underline}.notification strong{color:currentColor}.notification code,.notification pre{background:var(--notification-code-background-color)}.notification pre code{background:transparent}.notification>.delete{inset-inline-end:1rem;position:absolute;top:1rem}.notification .content,.notification .subtitle,.notification .title{color:currentColor}.notification.is-light{--notification-h:var(--light-h);--notification-s:var(--light-s);--notification-background-l:var(--light-l);--notification-color-l:var(--light-invert-l)}.notification.is-light.is-light{--notification-background-l:90%;--notification-color-l:var(--light-light-invert-l)}.notification.is-primary{--notification-h:var(--primary-h);--notification-s:var(--primary-s);--notification-background-l:var(--primary-l);--notification-color-l:var(--primary-invert-l)}.notification.is-primary.is-light{--notification-background-l:90%;--notification-color-l:var(--primary-light-invert-l)}.notification.is-info{--notification-h:var(--info-h);--notification-s:var(--info-s);--notification-background-l:var(--info-l);--notification-color-l:var(--info-invert-l)}.notification.is-info.is-light{--notification-background-l:90%;--notification-color-l:var(--info-light-invert-l)}.notification.is-success{--notification-h:var(--success-h);--notification-s:var(--success-s);--notification-background-l:var(--success-l);--notification-color-l:var(--success-invert-l)}.notification.is-success.is-light{--notification-background-l:90%;--notification-color-l:var(--success-light-invert-l)}.notification.is-warning{--notification-h:var(--warning-h);--notification-s:var(--warning-s);--notification-background-l:var(--warning-l);--notification-color-l:var(--warning-invert-l)}.notification.is-warning.is-light{--notification-background-l:90%;--notification-color-l:var(--warning-light-invert-l)}.notification.is-danger{--notification-h:var(--danger-h);--notification-s:var(--danger-s);--notification-background-l:var(--danger-l);--notification-color-l:var(--danger-invert-l)}.notification.is-danger.is-light{--notification-background-l:90%;--notification-color-l:var(--danger-light-invert-l)}.progress{--progress-border-radius:var(--radius-rounded);--progress-bar-background-color:var(--border-weak);--progress-value-background-color:var(--text);--progress-indeterminate-duration:1.5s;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;border-radius:var(--progress-border-radius);display:block;height:var(--size-normal);overflow:hidden;padding:0;width:100%}.progress::-webkit-progress-bar{background-color:var(--progress-bar-background-color)}.progress::-webkit-progress-value{background-color:var(--progress-value-background-color)}.progress::-moz-progress-bar{background-color:var(--progress-value-background-color)}.progress::-ms-fill{background-color:var(--progress-value-background-color);border:none}.progress.is-light{--progress-value-background-color:var(--light)}.progress.is-primary{--progress-value-background-color:var(--primary)}.progress.is-info{--progress-value-background-color:var(--info)}.progress.is-success{--progress-value-background-color:var(--success)}.progress.is-warning{--progress-value-background-color:var(--warning)}.progress.is-danger{--progress-value-background-color:var(--danger)}.progress:indeterminate{animation-duration:var(--progress-indeterminate-duration);animation-iteration-count:infinite;animation-name:moveIndeterminate;animation-timing-function:linear;background-color:var(--progress-bar-background-color);background-image:linear-gradient(to right,var(--progress-value-background-color) 30%,var(--progress-bar-background-color) 30%);background-position:0 0;background-repeat:no-repeat;background-size:150% 150%}.progress:indeterminate::-webkit-progress-bar{background-color:transparent}.progress:indeterminate::-moz-progress-bar{background-color:transparent}.progress:indeterminate::-ms-fill{animation-name:none}.progress.is-small{height:var(--size-small)}.progress.is-medium{height:var(--size-medium)}.progress.is-large{height:var(--size-large)}@keyframes moveIndeterminate{0%{background-position:200% 0}to{background-position:-200% 0}}.table{--table-color:var(--text-strong);--table-background-color:var(--scheme-main);--table-cell-border-color:var(--border);--table-cell-border-style:solid;--table-cell-border-width:0 0 1px;--table-cell-padding:0.5em 0.75em;--table-cell-heading-color:var(--text-strong);--table-cell-text-align:left;--table-head-cell-border-width:0 0 2px;--table-head-cell-color:var(--text-strong);--table-foot-cell-border-width:2px 0 0;--table-foot-cell-color:var(--text-strong);--table-head-background-color:transparent;--table-body-background-color:transparent;--table-foot-background-color:transparent;--table-row-hover-background-color:var(--scheme-main-bis);--table-row-active-background-color:var(--primary);--table-row-active-color:var(--primary-invert);--table-striped-row-even-background-color:var(--scheme-main-bis);--table-striped-row-even-hover-background-color:var(--scheme-main-ter);background-color:var(--table-background-color);color:var(--table-color)}.table td,.table th{background-color:var(--table-cell-background-color);border-color:var(--table-cell-border-color);border-style:var(--table-cell-border-style);border-width:var(--table-cell-border-width);color:var(--table-color);padding:var(--table-cell-padding);vertical-align:top}.table td.is-light,.table th.is-light{--table-color:var(--light-invert);--table-cell-heading-color:var(--light-invert);--table-cell-background-color:var(--light);--table-cell-border-color:var(--light)}.table td.is-primary,.table th.is-primary{--table-color:var(--primary-invert);--table-cell-heading-color:var(--primary-invert);--table-cell-background-color:var(--primary);--table-cell-border-color:var(--primary)}.table td.is-info,.table th.is-info{--table-color:var(--info-invert);--table-cell-heading-color:var(--info-invert);--table-cell-background-color:var(--info);--table-cell-border-color:var(--info)}.table td.is-success,.table th.is-success{--table-color:var(--success-invert);--table-cell-heading-color:var(--success-invert);--table-cell-background-color:var(--success);--table-cell-border-color:var(--success)}.table td.is-warning,.table th.is-warning{--table-color:var(--warning-invert);--table-cell-heading-color:var(--warning-invert);--table-cell-background-color:var(--warning);--table-cell-border-color:var(--warning)}.table td.is-danger,.table th.is-danger{--table-color:var(--danger-invert);--table-cell-heading-color:var(--danger-invert);--table-cell-background-color:var(--danger);--table-cell-border-color:var(--danger)}.table td.is-narrow,.table th.is-narrow{white-space:nowrap;width:1%}.table th{color:var(--table-cell-heading-color)}.table th:not([align]){text-align:var(--table-cell-text-align)}.table tr.is-light{--table-color:var(--light-invert);--table-cell-heading-color:var(--light-invert);--table-cell-background-color:var(--light);--table-cell-border-color:var(--light)}.table tr.is-primary{--table-color:var(--primary-invert);--table-cell-heading-color:var(--primary-invert);--table-cell-background-color:var(--primary);--table-cell-border-color:var(--primary)}.table tr.is-info{--table-color:var(--info-invert);--table-cell-heading-color:var(--info-invert);--table-cell-background-color:var(--info);--table-cell-border-color:var(--info)}.table tr.is-success{--table-color:var(--success-invert);--table-cell-heading-color:var(--success-invert);--table-cell-background-color:var(--success);--table-cell-border-color:var(--success)}.table tr.is-warning{--table-color:var(--warning-invert);--table-cell-heading-color:var(--warning-invert);--table-cell-background-color:var(--warning);--table-cell-border-color:var(--warning)}.table tr.is-danger{--table-color:var(--danger-invert);--table-cell-heading-color:var(--danger-invert);--table-cell-background-color:var(--danger);--table-cell-border-color:var(--danger)}.table thead{background-color:var(--table-head-background-color)}.table thead td,.table thead th{border-width:var(--table-head-cell-border-width);color:var(--table-head-cell-color)}.table tbody{background-color:var(--table-body-background-color)}.table tbody tr:last-child td,.table tbody tr:last-child th{border-bottom-width:0}.table.is-fullwidth{width:100%}.table.is-hoverable tbody tr:not(.is-selected):hover{background-color:var(--table-row-hover-background-color)}.table.is-narrow td,.table.is-narrow th{padding:.25em .5em}.table-container{-webkit-overflow-scrolling:touch;max-width:100%;overflow:auto;overflow-y:hidden}.tags{align-items:center;color:hsl(var(--tag-h),var(--tag-s),var(--tag-color-l));display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-start}.tags.is-centered{gap:.25rem;justify-content:center}.tags.has-addons{gap:0}.tags.has-addons .tag:not(:first-child){border-end-start-radius:0;border-start-start-radius:0}.tags.has-addons .tag:not(:last-child){border-end-end-radius:0;border-start-end-radius:0}.tag{--tag-h:var(--scheme-h);--tag-s:var(--scheme-s);--tag-background-l:var(--background-l);--tag-background-l-delta:0%;--tag-hover-background-l-delta:var(--hover-background-l-delta);--tag-active-background-l-delta:var(--active-background-l-delta);--tag-color-l:var(--text-l);--tag-radius:var(--radius);--tag-delete-margin:1px;align-items:center;background-color:hsl(var(--tag-h),var(--tag-s),calc(var(--tag-background-l) + var(--tag-background-l-delta)));border-radius:var(--radius);color:hsl(var(--tag-h),var(--tag-s),var(--tag-color-l));display:inline-flex;font-size:var(--size-small);height:2em;justify-content:center;line-height:1.5;padding-left:.75em;padding-right:.75em;white-space:nowrap}.tag .delete{margin-inline-end:-.375rem;margin-inline-start:.25rem}.tag.is-light{--tag-h:var(--light-h);--tag-s:var(--light-s);--tag-background-l:var(--light-l);--tag-color-l:var(--light-invert-l)}.tag.is-light.is-light{--tag-background-l:var(--light-l);--tag-color-l:var(--light-light-invert-l)}.tag.is-primary{--tag-h:var(--primary-h);--tag-s:var(--primary-s);--tag-background-l:var(--primary-l);--tag-color-l:var(--primary-invert-l)}.tag.is-primary.is-light{--tag-background-l:var(--light-l);--tag-color-l:var(--primary-light-invert-l)}.tag.is-info{--tag-h:var(--info-h);--tag-s:var(--info-s);--tag-background-l:var(--info-l);--tag-color-l:var(--info-invert-l)}.tag.is-info.is-light{--tag-background-l:var(--light-l);--tag-color-l:var(--info-light-invert-l)}.tag.is-success{--tag-h:var(--success-h);--tag-s:var(--success-s);--tag-background-l:var(--success-l);--tag-color-l:var(--success-invert-l)}.tag.is-success.is-light{--tag-background-l:var(--light-l);--tag-color-l:var(--success-light-invert-l)}.tag.is-warning{--tag-h:var(--warning-h);--tag-s:var(--warning-s);--tag-background-l:var(--warning-l);--tag-color-l:var(--warning-invert-l)}.tag.is-warning.is-light{--tag-background-l:var(--light-l);--tag-color-l:var(--warning-light-invert-l)}.tag.is-danger{--tag-h:var(--danger-h);--tag-s:var(--danger-s);--tag-background-l:var(--danger-l);--tag-color-l:var(--danger-invert-l)}.tag.is-danger.is-light{--tag-background-l:var(--light-l);--tag-color-l:var(--danger-light-invert-l)}.tag.is-medium{font-size:var(--size-normal)}.tag.is-large{font-size:var(--size-medium)}.tag .icon:first-child:not(:last-child){margin-inline-end:.1875em;margin-inline-start:-.375em}.tag .icon:last-child:not(:first-child){margin-inline-end:-.375em;margin-inline-start:.1875em}.tag .icon:first-child:last-child{margin-inline-end:-.375em;margin-inline-start:-.375em}.tag.is-rounded{border-radius:var(--radius-rounded)}.tag.is-hoverable,a.tag,button.tag{cursor:pointer}.tag.is-hoverable:hover,a.tag:hover,button.tag:hover{--tag-background-l-delta:var(--tag-hover-background-l-delta)}.tag.is-hoverable:active,a.tag:active,button.tag:active{--tag-background-l-delta:var(--tag-active-background-l-delta)}.subtitle,.title{--title-color:var(--text-strong);--title-family:Rasa,Georgia,Times New Roman,serif;--title-size:var(--size-3);--title-weight:var(--weight-extrabold);--title-line-height:1.125;--title-strong-color:inherit;--title-strong-weight:inherit;--title-sub-size:0.75em;--title-sup-size:0.75em;--subtitle-color:var(--text);--subtitle-family:false;--subtitle-size:var(--size-5);--subtitle-weight:var(--weight-normal);--subtitle-line-height:1.25;--subtitle-strong-color:var(--text-strong);--subtitle-strong-weight:var(--weight-semibold);word-break:break-word}.subtitle em,.subtitle span,.title em,.title span{font-weight:inherit}.subtitle sub,.title sub{font-size:var(--title-sub-size)}.subtitle .tag,.title .tag{vertical-align:middle}.title{color:var(--title-color);font-family:var(--title-family);font-size:var(--title-size);font-weight:var(--title-weight);line-height:var(--title-line-height)}.title strong{color:var(--title-strong-color);font-weight:var(--title-strong-weight)}.title:not(.is-spaced):has(+.subtitle){margin-bottom:0}.title.is-1{font-size:3rem}.title.is-2{font-size:2.5rem}.title.is-3{font-size:2rem}.title.is-4{font-size:1.5rem}.title.is-5{font-size:1.25rem}.title.is-6{font-size:1rem}.subtitle{color:var(--subtitle-color);font-size:var(--subtitle-size);font-weight:var(--subtitle-weight);line-height:var(--subtitle-line-height)}.subtitle strong{color:var(--subtitle-strong-color);font-weight:var(--subtitle-strong-weight)}.subtitle:not(.is-spaced):has(+.title){margin-bottom:0}.subtitle.is-1{font-size:3rem}.subtitle.is-2{font-size:2.5rem}.subtitle.is-3{font-size:2rem}.subtitle.is-4{font-size:1.5rem}.subtitle.is-5{font-size:1.25rem}.subtitle.is-6{font-size:1rem} + +/* Bulma Base */ +/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */blockquote,body,figure,h1,h2,h3,h4,h5,hr,html,iframe,li,ol,p,pre,textarea,ul{margin:0;padding:0}h1,h2,h3,h4,h5{font-size:100%;font-weight:400}ul{list-style:none}button,input,select,textarea{margin:0}html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}img{height:auto;max-width:100%}iframe{border:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}td:not([align]),th:not([align]){text-align:inherit}:root{--body-background-color:var(--scheme-main);--body-size:1em;--body-min-width:300px;--body-rendering:optimizeLegibility;--body-family:var(--family-primary);--body-overflow-x:hidden;--body-overflow-y:scroll;--body-color:var(--text);--body-font-size:1em;--body-weight:var(--weight-normal);--body-line-height:1.5;--code-family:var(--family-code);--code-padding:0.25em 0.5em 0.25em;--code-weight:normal;--code-size:0.875em;--small-font-size:0.875em;--hr-background-color:var(--background);--hr-height:2px;--hr-margin:1.5rem 0;--strong-color:var(--text-strong);--strong-weight:var(--weight-semibold);--pre-font-size:0.875em;--pre-padding:1.25rem 1.5rem;--pre-code-font-size:1em}html{background-color:var(--body-background-color);font-size:var(--body-size);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;min-width:var(--body-min-width);overflow-x:var(--body-overflow-x);overflow-y:var(--body-overflow-y);text-rendering:var(--body-rendering);-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}article,figure,footer,header,section{display:block}body,button,input,select,textarea{font-family:var(--body-family)}code,pre{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto;font-family:var(--code-family)}body{color:var(--body-color);font-size:var(--body-font-size);font-weight:var(--body-weight);line-height:var(--body-line-height)}a,button{cursor:pointer}a:focus-visible,button:focus-visible{outline-color:hsl(var(--focus-h),var(--focus-s),var(--focus-l));outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}a:focus-visible:active,button:focus-visible:active{outline-width:1px}a:active,button:active{outline-width:1px}a{color:var(--link-text);cursor:pointer;text-decoration:none;transition-duration:var(--duration);transition-property:background-color,border-color,color}a strong{color:currentColor}button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;color:inherit;font-family:inherit;font-size:1em;margin:0;padding:0;transition-duration:var(--duration);transition-property:background-color,border-color,color}code{background-color:var(--code-background);border-radius:.5em;color:var(--code);font-size:var(--code-size);font-weight:var(--code-weight);padding:var(--code-padding)}hr{background-color:var(--hr-background-color);border:none;display:block;height:var(--hr-height);margin:var(--hr-margin)}img{height:auto;max-width:100%}input[type=checkbox]{vertical-align:baseline}small{font-size:var(--small-font-size)}span{font-style:inherit;font-weight:inherit}strong{color:var(--strong-color);font-weight:var(--strong-weight)}svg{height:auto;width:auto}pre{-webkit-overflow-scrolling:touch;background-color:var(--pre-background);color:var(--pre);font-size:var(--pre-font-size);overflow-x:auto;padding:var(--pre-padding);white-space:pre;word-wrap:normal}pre code{background-color:transparent;color:currentColor;font-size:var(--pre-code-font-size);padding:0}table td,table th{vertical-align:top}table td:not([align]),table th:not([align]){text-align:inherit}table th{color:var(--text-strong)}@keyframes spinAround{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}@keyframes pulsate{50%{opacity:.5}} +/* Bulma Components */.breadcrumb{--breadcrumb-item-color:var(--link-text);--breadcrumb-item-hover-color:var(--link-text-hover);--breadcrumb-item-active-color:#363636;--breadcrumb-item-padding-vertical:0;--breadcrumb-item-padding-horizontal:0.75em;--breadcrumb-item-separator-color:var(--border);font-size:var(--size-normal);white-space:nowrap}.breadcrumb a{align-items:center;color:var(--breadcrumb-item-color);display:flex;justify-content:center;padding:var(--breadcrumb-item-padding-vertical) var(--breadcrumb-item-padding-horizontal)}.breadcrumb a:hover{color:var(--breadcrumb-item-hover-color)}.breadcrumb li{align-items:center;display:flex}.breadcrumb li:first-child a{padding-inline-start:0}.breadcrumb li.is-active a{color:var(--breadcrumb-item-active-color);cursor:default;pointer-events:none}.breadcrumb li+li:before{color:var(--breadcrumb-item-separator-color);content:"/"}.breadcrumb ol,.breadcrumb ul{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-start}.breadcrumb .icon:first-child{margin-inline-end:.5em}.breadcrumb .icon:last-child{margin-inline-start:.5em}.breadcrumb.is-centered ol,.breadcrumb.is-centered ul{justify-content:center}.breadcrumb.is-small{font-size:var(--size-small)}.breadcrumb.is-medium{font-size:var(--size-medium)}.breadcrumb.is-large{font-size:var(--size-large)}.dropdown{--dropdown-menu-min-width:12rem;--dropdown-content-background-color:var(--scheme-main);--dropdown-content-offset:0.25rem;--dropdown-content-padding-bottom:0.5rem;--dropdown-content-padding-top:0.5rem;--dropdown-content-radius:var(--radius);--dropdown-content-shadow:var(--shadow);--dropdown-content-z:20;--dropdown-item-h:var(--scheme-h);--dropdown-item-s:var(--scheme-s);--dropdown-item-l:var(--scheme-main-l);--dropdown-item-background-l:var(--scheme-main-l);--dropdown-item-background-l-delta:0%;--dropdown-item-hover-background-l-delta:var(--hover-background-l-delta);--dropdown-item-active-background-l-delta:var(--active-background-l-delta);--dropdown-item-color-l:var(--text-strong-l);--dropdown-item-selected-h:var(--link-h);--dropdown-item-selected-s:var(--link-s);--dropdown-item-selected-l:var(--link-l);--dropdown-item-selected-background-l:var(--link-l);--dropdown-item-selected-color-l:var(--link-invert-l);--dropdown-divider-background-color:var(--border-weak);display:inline-flex;position:relative;vertical-align:top}.dropdown-divider{background-color:var(--dropdown-divider-background-color);border:none;display:block;height:1px;margin:.5rem 0}.menu{--menu-item-h:var(--scheme-h);--menu-item-s:var(--scheme-s);--menu-item-l:var(--scheme-main-l);--menu-item-background-l:var(--scheme-main-l);--menu-item-background-l-delta:0%;--menu-item-hover-background-l-delta:var(--hover-background-l-delta);--menu-item-active-background-l-delta:var(--active-background-l-delta);--menu-item-color-l:var(--text-l);--menu-item-radius:var(--radius-small);--menu-item-selected-h:var(--link-h);--menu-item-selected-s:var(--link-s);--menu-item-selected-l:var(--link-l);--menu-item-selected-background-l:var(--link-l);--menu-item-selected-color-l:var(--link-invert-l);--menu-list-border-left:1px solid var(--border);--menu-list-line-height:1.25;--menu-list-link-padding:0.5em 0.75em;--menu-nested-list-margin:0.75em;--menu-nested-list-padding-left:0.75em;--menu-label-color:var(--text-weak);--menu-label-font-size:0.75em;--menu-label-letter-spacing:0.1em;--menu-label-spacing:1em;font-size:var(--size-normal)}.menu.is-small{font-size:var(--size-small)}.menu.is-medium{font-size:var(--size-medium)}.menu.is-large{font-size:var(--size-large)}.message{--message-border-l-delta:-20%;--message-radius:var(--radius);--message-header-weight:var(--weight-semibold);--message-header-padding:1em 1.25em;--message-header-radius:var(--radius);--message-body-border-width:0 0 0 4px;--message-body-color:var(--text);--message-body-padding:1.25em 1.5em;--message-body-radius:var(--radius-small);--message-body-pre-code-background-color:transparent;--message-header-body-border-width:0;--message-h:var(--scheme-h);--message-s:var(--scheme-s);--message-background-l:var(--background-l);--message-border-l:var(--border-l);--message-border-style:solid;--message-border-width:0.25em;--message-color-l:var(--text-l);--message-header-background-l:var(--dark-l);--message-header-color-l:var(--text-dark-invert-l);border-radius:var(--message-radius);color:hsl(var(--message-h),var(--message-s),var(--message-color-l));font-size:var(--size-normal)}.message strong{color:currentColor}.message a:not(.button):not(.tag):not(.dropdown-item){color:currentColor;text-decoration:underline}.message.is-small{font-size:var(--size-small)}.message.is-medium{font-size:var(--size-medium)}.message.is-large{font-size:var(--size-large)}.message.is-light{--message-h:var(--light-h);--message-s:var(--light-s);--message-border-l:calc(var(--light-l) + var(--message-border-l-delta));--message-color-l:var(--light-on-scheme-l);--message-header-background-l:var(--light-l);--message-header-color-l:var(--light-invert-l)}.message.is-primary{--message-h:var(--primary-h);--message-s:var(--primary-s);--message-border-l:calc(var(--primary-l) + var(--message-border-l-delta));--message-color-l:var(--primary-on-scheme-l);--message-header-background-l:var(--primary-l);--message-header-color-l:var(--primary-invert-l)}.message.is-info{--message-h:var(--info-h);--message-s:var(--info-s);--message-border-l:calc(var(--info-l) + var(--message-border-l-delta));--message-color-l:var(--info-on-scheme-l);--message-header-background-l:var(--info-l);--message-header-color-l:var(--info-invert-l)}.message.is-success{--message-h:var(--success-h);--message-s:var(--success-s);--message-border-l:calc(var(--success-l) + var(--message-border-l-delta));--message-color-l:var(--success-on-scheme-l);--message-header-background-l:var(--success-l);--message-header-color-l:var(--success-invert-l)}.message.is-warning{--message-h:var(--warning-h);--message-s:var(--warning-s);--message-border-l:calc(var(--warning-l) + var(--message-border-l-delta));--message-color-l:var(--warning-on-scheme-l);--message-header-background-l:var(--warning-l);--message-header-color-l:var(--warning-invert-l)}.message.is-danger{--message-h:var(--danger-h);--message-s:var(--danger-s);--message-border-l:calc(var(--danger-l) + var(--message-border-l-delta));--message-color-l:var(--danger-on-scheme-l);--message-header-background-l:var(--danger-l);--message-header-color-l:var(--danger-invert-l)}.message-header{align-items:center;background-color:hsl(var(--message-h),var(--message-s),var(--message-header-background-l));border-start-end-radius:var(--message-header-radius);border-start-start-radius:var(--message-header-radius);color:hsl(var(--message-h),var(--message-s),var(--message-header-color-l));display:flex;font-weight:var(--message-header-weight);justify-content:space-between;line-height:1.25;padding:var(--message-header-padding);position:relative}.message-header .delete{flex-grow:0;flex-shrink:0;margin-inline-start:.75em}.message-header+.message-body{border-start-end-radius:0;border-start-start-radius:0;border-width:var(--message-header-body-border-width)}.message-body{background-color:hsl(var(--message-h),var(--message-s),var(--message-background-l));border-inline-start-color:hsl(var(--message-h),var(--message-s),var(--message-border-l));border-inline-start-style:var(--message-border-style);border-inline-start-width:var(--message-border-width);border-radius:var(--message-body-radius);padding:var(--message-body-padding)}.message-body code,.message-body pre{background-color:hsl(var(--message-h),var(--message-s),var(--message-header-color-l));color:hsl(var(--message-h),var(--message-s),var(--message-header-background-l))}.message-body pre code{background-color:var(--message-body-pre-code-background-color)}.modal{--modal-z:40;--modal-background-background-color:hsla(var(--scheme-h),var(--scheme-s),var(--scheme-invert-l),0.86);--modal-content-width:40rem;--modal-content-margin-mobile:1.25rem;--modal-content-spacing-mobile:10rem;--modal-content-spacing-tablet:2.5rem;--modal-close-dimensions:2.5rem;--modal-close-right:1.25rem;--modal-close-top:1.25rem;--modal-card-spacing:2.5rem;--modal-card-head-background-color:var(--scheme-main);--modal-card-head-padding:2rem;--modal-card-head-radius:var(--radius-large);--modal-card-title-color:var(--text-strong);--modal-card-title-line-height:1;--modal-card-title-size:var(--size-4);--modal-card-foot-background-color:var(--scheme-main-bis);--modal-card-foot-radius:var(--radius-large);--modal-card-body-background-color:var(--scheme-main);--modal-card-body-padding:2rem;align-items:center;display:none;flex-direction:column;justify-content:center;overflow:hidden;position:fixed;z-index:var(--modal-z)}.modal.is-active{display:flex}:root{--navbar-height:3.25rem}.navbar{--navbar-h:var(--scheme-h);--navbar-s:var(--scheme-s);--navbar-l:var(--scheme-main-l);--navbar-background-color:var(--scheme-main);--navbar-box-shadow-size:0 0.125em 0 0;--navbar-box-shadow-color:var(--background);--navbar-padding-vertical:1rem;--navbar-padding-horizontal:2rem;--navbar-z:30;--navbar-fixed-z:30;--navbar-item-background-a:0;--navbar-item-background-l:var(--scheme-main-l);--navbar-item-background-l-delta:0%;--navbar-item-hover-background-l-delta:var(--hover-background-l-delta);--navbar-item-active-background-l-delta:var(--active-background-l-delta);--navbar-item-color-l:var(--text-l);--navbar-item-color:hsl(var(--navbar-h),var(--navbar-s),var(--navbar-item-color-l));--navbar-item-selected-h:var(--link-h);--navbar-item-selected-s:var(--link-s);--navbar-item-selected-l:var(--link-l);--navbar-item-selected-background-l:var(--link-l);--navbar-item-selected-color-l:var(--link-invert-l);--navbar-item-img-max-height:1.75rem;--navbar-burger-color:var(--link);--navbar-tab-hover-background-color:transparent;--navbar-tab-hover-border-bottom-color:var(--link);--navbar-tab-active-color:var(--link);--navbar-tab-active-background-color:transparent;--navbar-tab-active-border-bottom-color:var(--link);--navbar-tab-active-border-bottom-style:solid;--navbar-tab-active-border-bottom-width:0.1875em;--navbar-dropdown-background-color:var(--scheme-main);--navbar-dropdown-border-l:var(--border-l);--navbar-dropdown-border-color:hsl(var(--navbar-h),var(--navbar-s),var(--navbar-dropdown-border-l));--navbar-dropdown-border-style:solid;--navbar-dropdown-border-width:0.125em;--navbar-dropdown-offset:-0.25em;--navbar-dropdown-arrow:var(--link);--navbar-dropdown-radius:var(--radius-large);--navbar-dropdown-z:20;--navbar-dropdown-boxed-radius:var(--radius-large);--navbar-dropdown-boxed-shadow:0 0.5em 0.5em hsla(var(--scheme-h),var(--scheme-s),var(--scheme-invert-l),0.1),0 0 0 1px hsla(var(--scheme-h),var(--scheme-s),var(--scheme-invert-l),0.1);--navbar-dropdown-item-h:var(--scheme-h);--navbar-dropdown-item-s:var(--scheme-s);--navbar-dropdown-item-l:var(--scheme-main-l);--navbar-dropdown-item-background-l:var(--scheme-main-l);--navbar-dropdown-item-color-l:var(--text-l);--navbar-divider-background-l:var(--background-l);--navbar-divider-height:0.125em;--navbar-bottom-box-shadow-size:0 -0.125em 0 0;background-color:var(--navbar-background-color);min-height:var(--navbar-height);position:relative;z-index:var(--navbar-z)}.navbar.is-light{--navbar-h:var(--light-h);--navbar-s:var(--light-s);--navbar-l:var(--light-l);--burger-h:var(--light-h);--burger-s:var(--light-s);--burger-l:var(--light-invert-l);--navbar-background-color:var(--light);--navbar-item-background-l:var(--light-l);--navbar-item-color-l:var(--light-invert-l);--navbar-item-selected-h:var(--light-h);--navbar-item-selected-s:var(--light-s);--navbar-item-selected-l:var(--light-l);--navbar-item-selected-background-l:var(--light-l);--navbar-item-selected-color-l:var(--light-invert-l);--navbar-dropdown-arrow:var(--light-invert-l);--navbar-dropdown-background-color:hsl(var(--light-h),var(--light-s),var(--navbar-dropdown-item-background-l));--navbar-dropdown-item-h:var(--light-h);--navbar-dropdown-item-s:var(--light-s)}.navbar.is-primary{--navbar-h:var(--primary-h);--navbar-s:var(--primary-s);--navbar-l:var(--primary-l);--burger-h:var(--primary-h);--burger-s:var(--primary-s);--burger-l:var(--primary-invert-l);--navbar-background-color:var(--primary);--navbar-item-background-l:var(--primary-l);--navbar-item-color-l:var(--primary-invert-l);--navbar-item-selected-h:var(--primary-h);--navbar-item-selected-s:var(--primary-s);--navbar-item-selected-l:var(--primary-l);--navbar-item-selected-background-l:var(--primary-l);--navbar-item-selected-color-l:var(--primary-invert-l);--navbar-dropdown-arrow:var(--primary-invert-l);--navbar-dropdown-background-color:hsl(var(--primary-h),var(--primary-s),var(--navbar-dropdown-item-background-l));--navbar-dropdown-item-h:var(--primary-h);--navbar-dropdown-item-s:var(--primary-s)}.navbar.is-info{--navbar-h:var(--info-h);--navbar-s:var(--info-s);--navbar-l:var(--info-l);--burger-h:var(--info-h);--burger-s:var(--info-s);--burger-l:var(--info-invert-l);--navbar-background-color:var(--info);--navbar-item-background-l:var(--info-l);--navbar-item-color-l:var(--info-invert-l);--navbar-item-selected-h:var(--info-h);--navbar-item-selected-s:var(--info-s);--navbar-item-selected-l:var(--info-l);--navbar-item-selected-background-l:var(--info-l);--navbar-item-selected-color-l:var(--info-invert-l);--navbar-dropdown-arrow:var(--info-invert-l);--navbar-dropdown-background-color:hsl(var(--info-h),var(--info-s),var(--navbar-dropdown-item-background-l));--navbar-dropdown-item-h:var(--info-h);--navbar-dropdown-item-s:var(--info-s)}.navbar.is-success{--navbar-h:var(--success-h);--navbar-s:var(--success-s);--navbar-l:var(--success-l);--burger-h:var(--success-h);--burger-s:var(--success-s);--burger-l:var(--success-invert-l);--navbar-background-color:var(--success);--navbar-item-background-l:var(--success-l);--navbar-item-color-l:var(--success-invert-l);--navbar-item-selected-h:var(--success-h);--navbar-item-selected-s:var(--success-s);--navbar-item-selected-l:var(--success-l);--navbar-item-selected-background-l:var(--success-l);--navbar-item-selected-color-l:var(--success-invert-l);--navbar-dropdown-arrow:var(--success-invert-l);--navbar-dropdown-background-color:hsl(var(--success-h),var(--success-s),var(--navbar-dropdown-item-background-l));--navbar-dropdown-item-h:var(--success-h);--navbar-dropdown-item-s:var(--success-s)}.navbar.is-warning{--navbar-h:var(--warning-h);--navbar-s:var(--warning-s);--navbar-l:var(--warning-l);--burger-h:var(--warning-h);--burger-s:var(--warning-s);--burger-l:var(--warning-invert-l);--navbar-background-color:var(--warning);--navbar-item-background-l:var(--warning-l);--navbar-item-color-l:var(--warning-invert-l);--navbar-item-selected-h:var(--warning-h);--navbar-item-selected-s:var(--warning-s);--navbar-item-selected-l:var(--warning-l);--navbar-item-selected-background-l:var(--warning-l);--navbar-item-selected-color-l:var(--warning-invert-l);--navbar-dropdown-arrow:var(--warning-invert-l);--navbar-dropdown-background-color:hsl(var(--warning-h),var(--warning-s),var(--navbar-dropdown-item-background-l));--navbar-dropdown-item-h:var(--warning-h);--navbar-dropdown-item-s:var(--warning-s)}.navbar.is-danger{--navbar-h:var(--danger-h);--navbar-s:var(--danger-s);--navbar-l:var(--danger-l);--burger-h:var(--danger-h);--burger-s:var(--danger-s);--burger-l:var(--danger-invert-l);--navbar-background-color:var(--danger);--navbar-item-background-l:var(--danger-l);--navbar-item-color-l:var(--danger-invert-l);--navbar-item-selected-h:var(--danger-h);--navbar-item-selected-s:var(--danger-s);--navbar-item-selected-l:var(--danger-l);--navbar-item-selected-background-l:var(--danger-l);--navbar-item-selected-color-l:var(--danger-invert-l);--navbar-dropdown-arrow:var(--danger-invert-l);--navbar-dropdown-background-color:hsl(var(--danger-h),var(--danger-s),var(--navbar-dropdown-item-background-l));--navbar-dropdown-item-h:var(--danger-h);--navbar-dropdown-item-s:var(--danger-s)}.navbar>.container{align-items:stretch;display:flex;min-height:var(--navbar-height);width:100%}.navbar.has-shadow{box-shadow:var(--navbar-box-shadow-size) var(--navbar-box-shadow-color)}.navbar-brand{align-items:stretch;display:flex;flex-shrink:0;min-height:var(--navbar-height)}.navbar-burger{align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;border-radius:var(--burger-border-radius);color:hsl(var(--burger-h),var(--burger-s),var(--burger-l));cursor:pointer;display:inline-flex;flex-direction:column;flex-shrink:0;height:2.5rem;justify-content:center;position:relative;vertical-align:top;width:2.5rem}.navbar-burger span{background-color:currentColor;display:block;height:var(--burger-item-height);left:calc(50% - (var(--burger-item-width))/2);position:absolute;transform-origin:center;transition-duration:var(--duration);transition-property:background-color,color,opacity,transform;transition-timing-function:var(--easing);width:var(--burger-item-width)}.navbar-burger span:first-child,.navbar-burger span:nth-child(2){top:calc(50% - (var(--burger-item-height))/2)}.navbar-burger span:nth-child(3){bottom:calc(50% + var(--burger-gap))}.navbar-burger span:nth-child(4){top:calc(50% + var(--burger-gap))}.navbar-burger:hover{background-color:hsla(var(--burger-h),var(--burger-s),var(--burger-l),.1)}.navbar-burger:active{background-color:hsla(var(--burger-h),var(--burger-s),var(--burger-l),.2)}.navbar-burger.is-active span:first-child{transform:rotate(-45deg)}.navbar-burger.is-active span:nth-child(2){transform:rotate(45deg)}.navbar-burger.is-active span:nth-child(3),.navbar-burger.is-active span:nth-child(4){opacity:0}.navbar-burger{align-self:center;color:var(--navbar-burger-color);margin-inline-end:.375rem;margin-inline-start:auto}.navbar-menu{display:none}.navbar-item,.navbar-link{color:var(--navbar-item-color);display:block;gap:.75rem;line-height:1.5;padding:.5rem .75rem;position:relative}.navbar-item .icon:only-child,.navbar-link .icon:only-child{margin-left:-.25rem;margin-right:-.25rem}.navbar-link,a.navbar-item{background-color:hsla(var(--navbar-h),var(--navbar-s),calc(var(--navbar-item-background-l) + var(--navbar-item-background-l-delta)),var(--navbar-item-background-a));cursor:pointer}.navbar-link:focus,.navbar-link:focus-within,.navbar-link:hover,a.navbar-item:focus,a.navbar-item:focus-within,a.navbar-item:hover{--navbar-item-background-l-delta:var(--navbar-item-hover-background-l-delta);--navbar-item-background-a:1}.navbar-link:active,a.navbar-item:active{--navbar-item-background-l-delta:var(--navbar-item-active-background-l-delta);--navbar-item-background-a:1}.navbar-link.is-active,a.navbar-item.is-active{--navbar-h:var(--navbar-item-selected-h);--navbar-s:var(--navbar-item-selected-s);--navbar-l:var(--navbar-item-selected-l);--navbar-item-background-l:var(--navbar-item-selected-background-l);--navbar-item-background-a:1;--navbar-item-color-l:var(--navbar-item-selected-color-l)}.navbar-item{flex-grow:0;flex-shrink:0}.navbar-item img,.navbar-item svg{max-height:var(--navbar-item-img-max-height)}.navbar-item.has-dropdown{padding:0}.navbar-item.is-expanded{flex-grow:1;flex-shrink:1}.navbar-link:not(.is-arrowless){padding-inline-end:2.5em}.navbar-link:not(.is-arrowless):after{border-color:var(--navbar-dropdown-arrow);inset-inline-end:1.125em;margin-top:-.375em}.navbar-dropdown{font-size:.875rem;padding-bottom:.75rem;padding-top:.5rem}.navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}.navbar-dropdown .navbar-item:not(.is-active,.is-selected){background-color:hsl(var(--navbar-dropdown-item-h),var(--navbar-dropdown-item-s),calc(var(--navbar-dropdown-item-background-l) + var(--navbar-item-background-l-delta)));color:hsl(var(--navbar-dropdown-item-h),var(--navbar-dropdown-item-s),var(--navbar-dropdown-item-color-l))}@media screen and (max-width:1023px){.navbar>.container{display:block}.navbar-brand .navbar-item{align-items:center;display:flex}.navbar-link:after{display:none}.navbar-menu{background-color:var(--navbar-background-color);box-shadow:0 .5em 1em hsla(var(--scheme-h),var(--scheme-s),var(--scheme-invert-l),.1);padding:.5rem 0}.navbar-menu.is-active{display:block}}@media screen and (min-width:1024px){.navbar,.navbar-end,.navbar-menu,.navbar-start{align-items:stretch;display:flex}.navbar{min-height:var(--navbar-height)}.navbar.is-transparent{--navbar-item-background-a:0}.navbar.is-transparent .navbar-dropdown a.navbar-item{background-color:hsl(var(--navbar-h),var(--navbar-s),calc(var(--navbar-item-background-l) + var(--navbar-item-background-l-delta)))}.navbar.is-transparent .navbar-dropdown a.navbar-item.is-active{--navbar-h:var(--navbar-item-selected-h);--navbar-s:var(--navbar-item-selected-s);--navbar-l:var(--navbar-item-selected-l);--navbar-item-background-l:var(--navbar-item-selected-background-l);--navbar-item-color-l:var(--navbar-item-selected-color-l)}.navbar-burger{display:none}.navbar-item,.navbar-link{align-items:center;display:flex}.navbar-item.has-dropdown{align-items:stretch}.navbar-item.is-active .navbar-dropdown,.navbar-item.is-hoverable:focus .navbar-dropdown,.navbar-item.is-hoverable:focus-within .navbar-dropdown,.navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar-item.is-active .navbar-dropdown.is-boxed,.navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed,.navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed,.navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed{opacity:1;pointer-events:auto;transform:translateY(0)}.navbar-menu{flex-grow:1;flex-shrink:0}.navbar-start{justify-content:flex-start;margin-inline-end:auto}.navbar-end{justify-content:flex-end;margin-inline-start:auto}.navbar-dropdown{background-color:var(--navbar-dropdown-background-color);border-end-end-radius:var(--navbar-dropdown-radius);border-end-start-radius:var(--navbar-dropdown-radius);border-top:var(--navbar-dropdown-border-width) var(--navbar-dropdown-border-style) var(--navbar-dropdown-border-color);box-shadow:0 .5em .5em hsla(var(--scheme-h),var(--scheme-s),var(--scheme-invert-l),.1);display:none;font-size:.875rem;inset-inline-start:0;min-width:100%;position:absolute;top:100%;z-index:var(--navbar-dropdown-z)}.navbar-dropdown .navbar-item{padding:.375rem 1rem;white-space:nowrap}.navbar-dropdown a.navbar-item{padding-inline-end:3rem}.navbar-dropdown a.navbar-item:not(.is-active,.is-selected){background-color:hsl(var(--navbar-dropdown-item-h),var(--navbar-dropdown-item-s),calc(var(--navbar-dropdown-item-background-l) + var(--navbar-item-background-l-delta)));color:hsl(var(--navbar-dropdown-item-h),var(--navbar-dropdown-item-s),var(--navbar-dropdown-item-color-l))}.navbar-dropdown.is-boxed{border-radius:var(--navbar-dropdown-boxed-radius);border-top:none;box-shadow:var(--navbar-dropdown-boxed-shadow);display:block;opacity:0;pointer-events:none;top:calc(100% + var(--navbar-dropdown-offset));transform:translateY(-5px);transition-duration:var(--duration);transition-property:opacity,transform}.container>.navbar .navbar-brand,.navbar>.container .navbar-brand{margin-inline-start:-.75rem}.container>.navbar .navbar-menu,.navbar>.container .navbar-menu{margin-inline-end:-.75rem}}.pagination{--pagination-margin:-0.25rem;--pagination-min-width:var(--control-height);--pagination-item-h:var(--scheme-h);--pagination-item-s:var(--scheme-s);--pagination-item-l:var(--scheme-main-l);--pagination-item-background-l-delta:0%;--pagination-item-hover-background-l-delta:var(--hover-background-l-delta);--pagination-item-active-background-l-delta:var(--active-background-l-delta);--pagination-item-border-style:solid;--pagination-item-border-width:var(--control-border-width);--pagination-item-border-l:var(--border-l);--pagination-item-border-l-delta:0%;--pagination-item-hover-border-l-delta:var(--hover-border-l-delta);--pagination-item-active-border-l-delta:var(--active-border-l-delta);--pagination-item-focus-border-l-delta:var(--focus-border-l-delta);--pagination-item-color-l:var(--text-strong-l);--pagination-item-font-size:1em;--pagination-item-margin:0.25rem;--pagination-item-padding-left:0.5em;--pagination-item-padding-right:0.5em;--pagination-item-outer-shadow-h:0;--pagination-item-outer-shadow-s:0%;--pagination-item-outer-shadow-l:20%;--pagination-item-outer-shadow-a:0.05;--pagination-nav-padding-left:0.75em;--pagination-nav-padding-right:0.75em;--pagination-disabled-color:var(--text-weak);--pagination-disabled-background-color:var(--border);--pagination-disabled-border-color:var(--border);--pagination-current-color:var(--link-invert);--pagination-current-background-color:var(--link);--pagination-current-border-color:var(--link);--pagination-ellipsis-color:var(--text-weak);--pagination-shadow-inset:inset 0 0.0625em 0.125em hsla(var(--scheme-h),var(--scheme-s),var(--scheme-invert-l),0.2);--pagination-selected-item-h:var(--link-h);--pagination-selected-item-s:var(--link-s);--pagination-selected-item-l:var(--link-l);--pagination-selected-item-background-l:var(--link-l);--pagination-selected-item-border-l:var(--link-l);--pagination-selected-item-color-l:var(--link-invert-l);font-size:var(--size-normal);margin:var(--pagination-margin)}.pagination.is-small{font-size:var(--size-small)}.pagination.is-medium{font-size:var(--size-medium)}.pagination.is-large{font-size:var(--size-large)}.pagination.is-rounded .pagination-link{border-radius:var(--radius-rounded)}.pagination,.pagination-list{align-items:center;display:flex;justify-content:center;text-align:center}.pagination-link{color:hsl(var(--pagination-item-h),var(--pagination-item-s),var(--pagination-item-color-l));font-size:var(--pagination-item-font-size);justify-content:center;margin:var(--pagination-item-margin);padding-left:var(--pagination-item-padding-left);padding-right:var(--pagination-item-padding-right);text-align:center}.pagination-link{background-color:hsl(var(--pagination-item-h),var(--pagination-item-s),calc(var(--pagination-item-background-l) + var(--pagination-item-background-l-delta)));border-color:hsl(var(--pagination-item-h),var(--pagination-item-s),calc(var(--pagination-item-border-l) + var(--pagination-item-border-l-delta)));border-style:var(--pagination-item-border-style);border-width:var(--pagination-item-border-width);box-shadow:0 .0625em .125em hsla(var(--pagination-item-outer-shadow-h),var(--pagination-item-outer-shadow-s),var(--pagination-item-outer-shadow-l),var(--pagination-item-outer-shadow-a)),0 .125em .25em hsla(var(--pagination-item-outer-shadow-h),var(--pagination-item-outer-shadow-s),var(--pagination-item-outer-shadow-l),var(--pagination-item-outer-shadow-a));color:hsl(var(--pagination-item-h),var(--pagination-item-s),var(--pagination-item-color-l));min-width:var(--pagination-min-width);transition-duration:var(--duration);transition-property:background-color,border-color,box-shadow,color}.pagination-link:focus,.pagination-link:hover{--pagination-item-background-l-delta:var(--pagination-item-hover-background-l-delta);--pagination-item-border-l-delta:var(--pagination-item-hover-border-l-delta)}.pagination-link:active{box-shadow:var(--pagination-shadow-inset)}.pagination-link.is-disabled,.pagination-link[disabled]{background-color:var(--pagination-disabled-background-color);border-color:var(--pagination-disabled-border-color);box-shadow:none;color:var(--pagination-disabled-color);opacity:.5}.pagination-link.is-current{--pagination-item-h:var(--pagination-selected-item-h);--pagination-item-s:var(--pagination-selected-item-s);--pagination-item-l:var(--pagination-selected-item-l);--pagination-item-background-l:var(--pagination-selected-item-background-l);--pagination-item-border-l:var(--pagination-selected-item-border-l);--pagination-item-color-l:var(--pagination-selected-item-color-l)}.pagination-list{flex-wrap:wrap}.pagination-list li{list-style:none}@media screen and (max-width:768px){.pagination{flex-wrap:wrap}.pagination-list li{flex-grow:1;flex-shrink:1}}@media print,screen and (min-width:769px){.pagination-list{flex-grow:1;flex-shrink:1;justify-content:flex-start;order:1}.pagination-link{margin-bottom:0;margin-top:0}.pagination{justify-content:space-between;margin-bottom:0;margin-top:0}.pagination.is-centered .pagination-list{justify-content:center;order:2}}.panel{--panel-margin:var(--block-spacing);--panel-item-border:1px solid var(--border-weak);--panel-radius:var(--radius-large);--panel-shadow:var(--shadow);--panel-heading-line-height:1.25;--panel-heading-padding:1em 1.25em;--panel-heading-radius:var(--radius);--panel-heading-size:1.25em;--panel-heading-weight:var(--weight-bold);--panel-tabs-font-size:1em;--panel-tab-border-bottom-color:var(--border);--panel-tab-border-bottom-style:solid;--panel-tab-border-bottom-width:1px;--panel-tab-active-color:var(--link-active);--panel-list-item-color:var(--text);--panel-list-item-hover-color:var(--link);--panel-block-color:var(--text-strong);--panel-block-hover-background-color:var(--background);--panel-block-active-border-left-color:var(--link);--panel-block-active-color:var(--link-active);--panel-block-active-icon-color:var(--link);--panel-icon-color:var(--text-weak);--panel-h:var(--scheme-h);--panel-s:var(--scheme-s);--panel-color-l:var(--text-l);--panel-heading-background-l:var(--text-l);--panel-heading-color-l:var(--text-invert-l);border-radius:var(--panel-radius);box-shadow:var(--panel-shadow);font-size:var(--size-normal)}.panel:not(:last-child){margin-bottom:var(--panel-margin)}.panel.is-light{--panel-h:var(--light-h);--panel-s:var(--light-s);--panel-color-l:var(--light-l);--panel-heading-background-l:var(--light-l);--panel-heading-color-l:var(--light-invert-l)}.panel.is-primary{--panel-h:var(--primary-h);--panel-s:var(--primary-s);--panel-color-l:var(--primary-l);--panel-heading-background-l:var(--primary-l);--panel-heading-color-l:var(--primary-invert-l)}.panel.is-info{--panel-h:var(--info-h);--panel-s:var(--info-s);--panel-color-l:var(--info-l);--panel-heading-background-l:var(--info-l);--panel-heading-color-l:var(--info-invert-l)}.panel.is-success{--panel-h:var(--success-h);--panel-s:var(--success-s);--panel-color-l:var(--success-l);--panel-heading-background-l:var(--success-l);--panel-heading-color-l:var(--success-invert-l)}.panel.is-warning{--panel-h:var(--warning-h);--panel-s:var(--warning-s);--panel-color-l:var(--warning-l);--panel-heading-background-l:var(--warning-l);--panel-heading-color-l:var(--warning-invert-l)}.panel.is-danger{--panel-h:var(--danger-h);--panel-s:var(--danger-s);--panel-color-l:var(--danger-l);--panel-heading-background-l:var(--danger-l);--panel-heading-color-l:var(--danger-invert-l)}.panel-block:not(:last-child){border-bottom:var(--panel-item-border)}.panel-block{align-items:center;color:var(--panel-block-color);display:flex;justify-content:flex-start;padding:.75em 1em}.panel-block input[type=checkbox]{margin-inline-end:.75em}.panel-block>.control{flex-grow:1;flex-shrink:1;width:100%}.panel-block.is-active{border-left-color:var(--panel-block-active-border-left-color);color:var(--panel-block-active-color)}.panel-block:last-child{border-end-end-radius:var(--panel-radius);border-end-start-radius:var(--panel-radius)}a.panel-block,label.panel-block{cursor:pointer}a.panel-block:hover,label.panel-block:hover{background-color:var(--panel-block-hover-background-color)}.tabs{--tabs-border-bottom-color:var(--border);--tabs-border-bottom-style:solid;--tabs-border-bottom-width:1px;--tabs-link-color:var(--text);--tabs-link-hover-border-bottom-color:var(--text-strong);--tabs-link-hover-color:var(--text-strong);--tabs-link-active-border-bottom-color:var(--link-text);--tabs-link-active-color:var(--link-text);--tabs-link-padding:0.5em 1em;--tabs-boxed-link-radius:var(--radius);--tabs-boxed-link-hover-background-color:var(--background);--tabs-boxed-link-hover-border-bottom-color:var(--border);--tabs-boxed-link-active-background-color:var(--scheme-main);--tabs-boxed-link-active-border-color:var(--border);--tabs-boxed-link-active-border-bottom-color:transparent;--tabs-toggle-link-border-color:var(--border);--tabs-toggle-link-border-style:solid;--tabs-toggle-link-border-width:1px;--tabs-toggle-link-hover-background-color:var(--background);--tabs-toggle-link-hover-border-color:var(--border-hover);--tabs-toggle-link-radius:var(--radius);--tabs-toggle-link-active-background-color:var(--link);--tabs-toggle-link-active-border-color:var(--link);--tabs-toggle-link-active-color:var(--link-invert);-webkit-overflow-scrolling:touch;align-items:stretch;display:flex;font-size:var(--size-normal);justify-content:space-between;overflow:hidden;overflow-x:auto;white-space:nowrap}.tabs a{align-items:center;border-bottom:var(--tabs-border-bottom-width) var(--tabs-border-bottom-style) var(--tabs-border-bottom-color);color:var(--tabs-link-color);display:flex;justify-content:center;margin-bottom:calc(var(--tabs-border-bottom-width)*-1);padding:var(--tabs-link-padding);transition-duration:var(--duration);transition-property:background-color,border-color,color;vertical-align:top}.tabs a:hover{border-bottom-color:var(--tabs-link-hover-border-bottom-color);color:var(--tabs-link-hover-color)}.tabs li{display:block}.tabs li.is-active a{border-bottom-color:var(--tabs-link-active-border-bottom-color);color:var(--tabs-link-active-color)}.tabs ul{align-items:center;border-bottom:var(--tabs-border-bottom-width) var(--tabs-border-bottom-style) var(--tabs-border-bottom-color);display:flex;flex-grow:1;flex-shrink:0;justify-content:flex-start}.tabs ul.is-left{padding-right:.75em}.tabs .icon:first-child{margin-inline-end:.5em}.tabs .icon:last-child{margin-inline-start:.5em}.tabs.is-centered ul{justify-content:center}.tabs.is-boxed a{border:1px solid transparent;border-start-end-radius:var(--tabs-boxed-link-radius);border-start-start-radius:var(--tabs-boxed-link-radius)}.tabs.is-boxed a:hover{background-color:var(--tabs-boxed-link-hover-background-color);border-bottom-color:var(--tabs-boxed-link-hover-border-bottom-color)}.tabs.is-boxed li.is-active a{background-color:var(--tabs-boxed-link-active-background-color);border-color:var(--tabs-boxed-link-active-border-color);border-bottom-color:var(--tabs-boxed-link-active-border-bottom-color)!important}.tabs.is-fullwidth li{flex-grow:1;flex-shrink:0}.tabs.is-small{font-size:var(--size-small)}.tabs.is-medium{font-size:var(--size-medium)}.tabs.is-large{font-size:var(--size-large)} + +/* Bulma Components */.container{flex-grow:1;margin:0 auto;position:relative;width:100%}@media screen and (min-width:1024px){.container{max-width:960px}}@media screen and (min-width:1216px){.container:not(.is-max-tablet):not(.is-max-desktop){max-width:1152px}}@media screen and (min-width:1408px){.container:not(.is-max-tablet):not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}.footer{--footer-background-color:var(--scheme-main-bis);--footer-color:false;--footer-padding:3rem 1.5rem 6rem;background-color:var(--footer-background-color);padding:var(--footer-padding)}.level{--level-item-spacing:calc(var(--block-spacing)*0.5);align-items:center;display:flex;flex-direction:column;gap:var(--level-item-spacing);justify-content:space-between}.level code{border-radius:var(--radius)}.level img{display:inline-block;vertical-align:top}@media print,screen and (min-width:769px){.level{display:flex;flex-direction:row}.level>.level-item:not(.is-narrow){flex-grow:1}}.level-item{align-items:center;display:flex;flex-basis:auto;flex-grow:0;flex-shrink:0;justify-content:center}.level-item .subtitle,.level-item .title{margin-bottom:0}.level-left,.level-right{flex-basis:auto;flex-grow:0;flex-shrink:0;gap:calc(var(--block-spacing)*.5)}.level-left{align-items:center;display:flex;flex-direction:column;justify-content:flex-start}@media print,screen and (min-width:769px){.level-left{flex-direction:row}}.level-right{align-items:center;display:flex;flex-direction:column;justify-content:flex-end}@media print,screen and (min-width:769px){.level-right{flex-direction:row}}.section{--section-padding:3rem 1.5rem;--section-padding-desktop:3rem 3rem;--section-padding-medium:9rem 4.5rem;--section-padding-large:18rem 6rem;padding:var(--section-padding)}@media screen and (min-width:1024px){.section{padding:var(--section-padding-desktop)}.section.is-medium{padding:var(--section-padding-medium)}.section.is-large{padding:var(--section-padding-large)}} + +/* Bulma Form */.control,.input,.select,.textarea{--input-h:var(--scheme-h);--input-s:var(--scheme-s);--input-l:var(--scheme-main-l);--input-border-style:solid;--input-border-width:var(--control-border-width);--input-border-l:var(--border-l);--input-border-l-delta:0%;--input-hover-border-l-delta:var(--hover-border-l-delta);--input-active-border-l-delta:var(--active-border-l-delta);--input-focus-h:var(--focus-h);--input-focus-s:var(--focus-s);--input-focus-l:var(--focus-l);--input-focus-shadow-size:var(--focus-shadow-size);--input-focus-shadow-alpha:var(--focus-shadow-alpha);--input-color-l:var(--text-strong-l);--input-background-l:var(--scheme-main-l);--input-background-l-delta:0%;--input-height:var(--control-height);--input-shadow:inset 0 0.0625em 0.125em hsla(var(--scheme-h),var(--scheme-s),var(--scheme-invert-l),0.05);--input-placeholder-color:hsla(var(--text-h),var(--text-s),var(--text-strong-l),0.3);--input-disabled-color:var(--text-weak);--input-disabled-background-color:var(--background);--input-disabled-border-color:var(--background);--input-disabled-placeholder-color:hsla(var(--text-h),var(--text-s),var(--text-weak-l),0.3);--input-arrow:var(--link);--input-icon-color:var(--text-light);--input-icon-hover-color:var(--text-weak);--input-icon-focus-color:var(--link);--input-radius:var(--radius)}.input,.select select,.textarea{background-color:hsl(var(--input-h),var(--input-s),calc(var(--input-background-l) + var(--input-background-l-delta)));border-color:hsl(var(--input-h),var(--input-s),calc(var(--input-border-l) + var(--input-border-l-delta)));border-radius:var(--input-radius);color:hsl(var(--input-h),var(--input-s),var(--input-color-l))}.input::-moz-placeholder,.select select::-moz-placeholder,.textarea::-moz-placeholder{color:var(--input-placeholder-color)}.input::-webkit-input-placeholder,.select select::-webkit-input-placeholder,.textarea::-webkit-input-placeholder{color:var(--input-placeholder-color)}.input:-moz-placeholder,.select select:-moz-placeholder,.textarea:-moz-placeholder{color:var(--input-placeholder-color)}.input:-ms-input-placeholder,.select select:-ms-input-placeholder,.textarea:-ms-input-placeholder{color:var(--input-placeholder-color)}.input:hover,.select select:hover,.textarea:hover{--input-border-l-delta:var(--input-hover-border-l-delta)}.input:active,.is-active.input,.is-active.textarea,.select select.is-active,.select select:active,.textarea:active{--input-border-l-delta:var(--input-active-border-l-delta)}.input:focus,.input:focus-within,.select select:focus,.select select:focus-within,.textarea:focus,.textarea:focus-within{border-color:hsl(var(--input-focus-h),var(--input-focus-s),var(--input-focus-l));box-shadow:var(--input-focus-shadow-size) hsla(var(--input-focus-h),var(--input-focus-s),var(--input-focus-l),var(--input-focus-shadow-alpha))}.select select[disabled],[disabled].input,[disabled].textarea{background-color:var(--input-disabled-background-color);border-color:var(--input-disabled-border-color);box-shadow:none;color:var(--input-disabled-color)}.select select[disabled]::-moz-placeholder,[disabled].input::-moz-placeholder,[disabled].textarea::-moz-placeholder{color:var(--input-disabled-placeholder-color)}.select select[disabled]::-webkit-input-placeholder,[disabled].input::-webkit-input-placeholder,[disabled].textarea::-webkit-input-placeholder{color:var(--input-disabled-placeholder-color)}.select select[disabled]:-moz-placeholder,[disabled].input:-moz-placeholder,[disabled].textarea:-moz-placeholder{color:var(--input-disabled-placeholder-color)}.select select[disabled]:-ms-input-placeholder,[disabled].input:-ms-input-placeholder,[disabled].textarea:-ms-input-placeholder{color:var(--input-disabled-placeholder-color)} + +/* Bulma Form */.input,.textarea{box-shadow:inset 0 .0625em .125em hsla(var(--scheme-h),var(--scheme-s),var(--scheme-invert-l),.05);max-width:100%;width:100%}[readonly].input,[readonly].textarea{box-shadow:none}.is-light.input,.is-light.textarea{--input-h:var(--light-h);--input-s:var(--light-s);--input-l:var(--light-l);--input-focus-h:var(--light-h);--input-focus-s:var(--light-s);--input-focus-l:var(--light-l);--input-border-l:var(--light-l)}.is-primary.input,.is-primary.textarea{--input-h:var(--primary-h);--input-s:var(--primary-s);--input-l:var(--primary-l);--input-focus-h:var(--primary-h);--input-focus-s:var(--primary-s);--input-focus-l:var(--primary-l);--input-border-l:var(--primary-l)}.is-info.input,.is-info.textarea{--input-h:var(--info-h);--input-s:var(--info-s);--input-l:var(--info-l);--input-focus-h:var(--info-h);--input-focus-s:var(--info-s);--input-focus-l:var(--info-l);--input-border-l:var(--info-l)}.is-success.input,.is-success.textarea{--input-h:var(--success-h);--input-s:var(--success-s);--input-l:var(--success-l);--input-focus-h:var(--success-h);--input-focus-s:var(--success-s);--input-focus-l:var(--success-l);--input-border-l:var(--success-l)}.is-warning.input,.is-warning.textarea{--input-h:var(--warning-h);--input-s:var(--warning-s);--input-l:var(--warning-l);--input-focus-h:var(--warning-h);--input-focus-s:var(--warning-s);--input-focus-l:var(--warning-l);--input-border-l:var(--warning-l)}.is-danger.input,.is-danger.textarea{--input-h:var(--danger-h);--input-s:var(--danger-s);--input-l:var(--danger-l);--input-focus-h:var(--danger-h);--input-focus-s:var(--danger-s);--input-focus-l:var(--danger-l);--input-border-l:var(--danger-l)}.is-small.input,.is-small.textarea{border-radius:var(--radius-small);font-size:var(--size-small)}.is-medium.input,.is-medium.textarea{font-size:var(--size-medium)}.is-large.input,.is-large.textarea{font-size:var(--size-large)}.is-fullwidth.input,.is-fullwidth.textarea{display:block;width:100%}.is-inline.input,.is-inline.textarea{display:inline;width:auto}.input.is-rounded{border-radius:var(--radius-rounded);padding-left:calc(1.125em - 1px);padding-right:calc(1.125em - 1px)}.textarea{--textarea-padding:var(--control-padding-horizontal);--textarea-max-height:40em;--textarea-min-height:8em;display:block;max-width:100%;min-width:100%;padding:var(--textarea-padding);resize:vertical}.textarea:not([rows]){max-height:var(--textarea-max-height);min-height:var(--textarea-min-height)}.textarea[rows]{height:auto} + +/* Bulma Form */.checkbox{cursor:pointer;display:inline-block;line-height:1.25;position:relative}.checkbox input{cursor:pointer}.checkbox input[disabled],[disabled].checkbox{color:var(--text-weak);cursor:not-allowed} + +/* Bulma Form */.select{--input-h:var(--scheme-h);--input-s:var(--scheme-s);--input-border-style:solid;--input-border-width:1px;--input-border-l:var(--border-l);display:inline-block;max-width:100%;position:relative;vertical-align:top}.select:not(.is-multiple){height:var(--control-height)}.select:not(.is-multiple):not(.is-loading):after{inset-inline-end:1.125em;z-index:4}.select.is-rounded select{border-radius:var(--radius-rounded);padding-inline-start:1em}.select select{cursor:pointer;display:block;font-size:1em;max-width:100%;outline:none}.select select::-ms-expand{display:none}.select select[disabled]:hover{border-color:var(--background)}.select select:not([multiple]){padding-inline-end:2.5em}.select select[multiple]{height:auto;padding:0}.select select[multiple] option{padding:.5em 1em}.select.is-light{--input-h:var(--light-h);--input-s:var(--light-s);--input-l:var(--light-l);--input-focus-h:var(--light-h);--input-focus-s:var(--light-s);--input-focus-l:var(--light-l);--input-border-l:var(--light-l);--arrow-color:var(--light)}.select.is-primary{--input-h:var(--primary-h);--input-s:var(--primary-s);--input-l:var(--primary-l);--input-focus-h:var(--primary-h);--input-focus-s:var(--primary-s);--input-focus-l:var(--primary-l);--input-border-l:var(--primary-l);--arrow-color:var(--primary)}.select.is-info{--input-h:var(--info-h);--input-s:var(--info-s);--input-l:var(--info-l);--input-focus-h:var(--info-h);--input-focus-s:var(--info-s);--input-focus-l:var(--info-l);--input-border-l:var(--info-l);--arrow-color:var(--info)}.select.is-success{--input-h:var(--success-h);--input-s:var(--success-s);--input-l:var(--success-l);--input-focus-h:var(--success-h);--input-focus-s:var(--success-s);--input-focus-l:var(--success-l);--input-border-l:var(--success-l);--arrow-color:var(--success)}.select.is-warning{--input-h:var(--warning-h);--input-s:var(--warning-s);--input-l:var(--warning-l);--input-focus-h:var(--warning-h);--input-focus-s:var(--warning-s);--input-focus-l:var(--warning-l);--input-border-l:var(--warning-l);--arrow-color:var(--warning)}.select.is-danger{--input-h:var(--danger-h);--input-s:var(--danger-s);--input-l:var(--danger-l);--input-focus-h:var(--danger-h);--input-focus-s:var(--danger-s);--input-focus-l:var(--danger-l);--input-border-l:var(--danger-l);--arrow-color:var(--danger)}.select.is-small{border-radius:var(--radius-small);font-size:var(--size-small)}.select.is-medium{font-size:var(--size-medium)}.select.is-large{font-size:var(--size-large)}.select.is-disabled:after{border-color:var(--text-weak)!important;opacity:.5}.select.is-fullwidth,.select.is-fullwidth select{width:100%} + +/* Bulma Form */.file{--file-radius:var(--radius);--file-name-border-color:var(--border);--file-name-border-style:solid;--file-name-border-width:1px 1px 1px 0;--file-name-max-width:16em;--file-h:var(--scheme-h);--file-s:var(--scheme-s);--file-background-l:var(--scheme-main-ter-l);--file-background-l-delta:0%;--file-hover-background-l-delta:-5%;--file-active-background-l-delta:-10%;--file-border-l:var(--border-l);--file-border-l-delta:0%;--file-hover-border-l-delta:-10%;--file-active-border-l-delta:-20%;--file-cta-color-l:var(--text-strong-l);--file-name-color-l:var(--text-strong-l);--file-color-l-delta:0%;--file-hover-color-l-delta:-5%;--file-active-color-l-delta:-10%;align-items:stretch;display:flex;justify-content:flex-start;position:relative}.file.is-light{--file-h:var(--light-h);--file-s:var(--light-s);--file-background-l:var(--light-l);--file-border-l:var(--light-l);--file-cta-color-l:var(--light-invert-l);--file-name-color-l:var(--light-on-scheme-l)}.file.is-primary{--file-h:var(--primary-h);--file-s:var(--primary-s);--file-background-l:var(--primary-l);--file-border-l:var(--primary-l);--file-cta-color-l:var(--primary-invert-l);--file-name-color-l:var(--primary-on-scheme-l)}.file.is-info{--file-h:var(--info-h);--file-s:var(--info-s);--file-background-l:var(--info-l);--file-border-l:var(--info-l);--file-cta-color-l:var(--info-invert-l);--file-name-color-l:var(--info-on-scheme-l)}.file.is-success{--file-h:var(--success-h);--file-s:var(--success-s);--file-background-l:var(--success-l);--file-border-l:var(--success-l);--file-cta-color-l:var(--success-invert-l);--file-name-color-l:var(--success-on-scheme-l)}.file.is-warning{--file-h:var(--warning-h);--file-s:var(--warning-s);--file-background-l:var(--warning-l);--file-border-l:var(--warning-l);--file-cta-color-l:var(--warning-invert-l);--file-name-color-l:var(--warning-on-scheme-l)}.file.is-danger{--file-h:var(--danger-h);--file-s:var(--danger-s);--file-background-l:var(--danger-l);--file-border-l:var(--danger-l);--file-cta-color-l:var(--danger-invert-l);--file-name-color-l:var(--danger-on-scheme-l)}.file.is-small{font-size:var(--size-small)}.file.is-medium{font-size:var(--size-medium)}.file.is-large{font-size:var(--size-large)}.file.is-centered{justify-content:center} + +/* Bulma Form */:root{--label-color:var(--text-strong);--label-spacing:0.5em;--label-weight:var(--weight-semibold);--help-size:var(--size-small);--field-block-spacing:0.75rem}.label{color:var(--label-color);display:block;font-size:var(--size-normal);font-weight:var(--weight-semibold)}.label:not(:last-child){margin-bottom:var(--label-spacing)}.label.is-small{font-size:var(--size-small)}.label.is-medium{font-size:var(--size-medium)}.label.is-large{font-size:var(--size-large)}.help{display:block;font-size:var(--help-size);margin-top:.25rem}.help.is-light{color:hsl(var(--light-h),var(--light-s),var(--light-on-scheme-l))}.help.is-primary{color:hsl(var(--primary-h),var(--primary-s),var(--primary-on-scheme-l))}.help.is-info{color:hsl(var(--info-h),var(--info-s),var(--info-on-scheme-l))}.help.is-success{color:hsl(var(--success-h),var(--success-s),var(--success-on-scheme-l))}.help.is-warning{color:hsl(var(--warning-h),var(--warning-s),var(--warning-on-scheme-l))}.help.is-danger{color:hsl(var(--danger-h),var(--danger-s),var(--danger-on-scheme-l))}.field{--block-spacing:var(--field-block-spacing)}.field.has-addons{display:flex;justify-content:flex-start}.field.has-addons .control:not(:last-child){margin-inline-end:-1px}.field.has-addons .control:not(:first-child):not(:last-child) .button,.field.has-addons .control:not(:first-child):not(:last-child) .input,.field.has-addons .control:not(:first-child):not(:last-child) .select select{border-radius:0}.field.has-addons .control:first-child:not(:only-child) .button,.field.has-addons .control:first-child:not(:only-child) .input,.field.has-addons .control:first-child:not(:only-child) .select select{border-end-end-radius:0;border-start-end-radius:0}.field.has-addons .control:last-child:not(:only-child) .button,.field.has-addons .control:last-child:not(:only-child) .input,.field.has-addons .control:last-child:not(:only-child) .select select{border-end-start-radius:0;border-start-start-radius:0}.field.has-addons .control .button:not([disabled]):hover,.field.has-addons .control .input:not([disabled]):hover,.field.has-addons .control .select select:not([disabled]):hover{z-index:2}.field.has-addons .control .button:not([disabled]).is-active,.field.has-addons .control .button:not([disabled]):active,.field.has-addons .control .button:not([disabled]):focus,.field.has-addons .control .input:not([disabled]).is-active,.field.has-addons .control .input:not([disabled]):active,.field.has-addons .control .input:not([disabled]):focus,.field.has-addons .control .select select:not([disabled]).is-active,.field.has-addons .control .select select:not([disabled]):active,.field.has-addons .control .select select:not([disabled]):focus{z-index:3}.field.has-addons .control .button:not([disabled]).is-active:hover,.field.has-addons .control .button:not([disabled]):active:hover,.field.has-addons .control .button:not([disabled]):focus:hover,.field.has-addons .control .input:not([disabled]).is-active:hover,.field.has-addons .control .input:not([disabled]):active:hover,.field.has-addons .control .input:not([disabled]):focus:hover,.field.has-addons .control .select select:not([disabled]).is-active:hover,.field.has-addons .control .select select:not([disabled]):active:hover,.field.has-addons .control .select select:not([disabled]):focus:hover{z-index:4}.field.has-addons .control.is-expanded{flex-grow:1;flex-shrink:1}.field.is-grouped{display:flex;gap:.75rem;justify-content:flex-start}.field.is-grouped>.control{flex-shrink:0}.field.is-grouped>.control.is-expanded{flex-grow:1;flex-shrink:1}@media print,screen and (min-width:769px){.field.is-horizontal{display:flex}}.field-body .field .field{margin-bottom:0}@media print,screen and (min-width:769px){.field-body{display:flex;flex-basis:0;flex-grow:5;flex-shrink:1}.field-body .field{margin-bottom:0}.field-body>.field{flex-shrink:1}.field-body>.field:not(.is-narrow){flex-grow:1}.field-body>.field:not(:last-child){margin-inline-end:.75rem}}.control{box-sizing:border-box;clear:both;font-size:var(--size-normal);position:relative;text-align:inherit}.control.has-icons-left .input:hover~.icon,.control.has-icons-left .select:hover~.icon{color:var(--input-icon-hover-color)}.control.has-icons-left .input:focus~.icon,.control.has-icons-left .select:focus~.icon{color:var(--input-icon-focus-color)}.control.has-icons-left .input.is-small~.icon,.control.has-icons-left .select.is-small~.icon{font-size:var(--size-small)}.control.has-icons-left .input.is-medium~.icon,.control.has-icons-left .select.is-medium~.icon{font-size:var(--size-medium)}.control.has-icons-left .input.is-large~.icon,.control.has-icons-left .select.is-large~.icon{font-size:var(--size-large)}.control.has-icons-left .icon{color:var(--input-icon-color);height:var(--input-height);pointer-events:none;position:absolute;top:0;width:var(--input-height);z-index:4}.control.has-icons-left .input,.control.has-icons-left .select select{padding-left:var(--input-height)}.control.has-icons-left .icon.is-left{left:0} + +/* Bulma Grid */:root{--column-gap:0.75rem}.column{display:block;flex-basis:0;flex-grow:1;flex-shrink:1;padding:var(--column-gap)}@media print,screen and (min-width:769px){.column.is-narrow{flex:none;width:unset}.column.is-1{flex:none;width:8.3333333333%}.column.is-2{flex:none;width:16.6666666667%}.column.is-3{flex:none;width:25%}.column.is-4{flex:none;width:33.3333333333%}.column.is-5{flex:none;width:41.6666666667%}.column.is-6{flex:none;width:50%}}.columns{margin-inline-end:calc(var(--column-gap)*-1);margin-inline-start:calc(var(--column-gap)*-1);margin-top:calc(var(--column-gap)*-1)}.columns:last-child{margin-bottom:calc(var(--column-gap)*-1)}.columns:not(:last-child){margin-bottom:calc(var(--block-spacing) - var(--column-gap))}.columns.is-centered{justify-content:center}@media print,screen and (min-width:769px){.columns:not(.is-desktop){display:flex}}.columns.is-1{--column-gap:0.25rem}.columns.is-2{--column-gap:0.5rem}.columns.is-3{--column-gap:0.75rem}.columns.is-4{--column-gap:1rem}.columns.is-5{--column-gap:1.25rem}.columns.is-6{--column-gap:1.5rem}.cell{grid-column-end:span var(--grid-cell-column-span);grid-column-start:var(--grid-cell-column-start);grid-row-end:span var(--grid-cell-row-span);grid-row-start:var(--grid-cell-row-start)} + +/* Bulma Helpers */.has-background-white{background-color:hsl(var(--white-h),var(--white-s),var(--white-l))!important}a.has-background-white:focus-visible,a.has-background-white:hover,button.has-background-white:focus-visible,button.has-background-white:hover,has-background-white.is-hoverable:focus-visible,has-background-white.is-hoverable:hover{background-color:hsl(var(--white-h),var(--white-s),calc(var(--white-l) + var(--hover-background-l-delta)))!important}a.has-background-white:active,button.has-background-white:active,has-background-white.is-hoverable:active{background-color:hsl(var(--white-h),var(--white-s),calc(var(--white-l) + var(--active-background-l-delta)))!important}.has-text-light{color:hsl(var(--light-h),var(--light-s),var(--light-l))!important}a.has-text-light:focus-visible,a.has-text-light:hover,button.has-text-light:focus-visible,button.has-text-light:hover,has-text-light.is-hoverable:focus-visible,has-text-light.is-hoverable:hover{color:hsl(var(--light-h),var(--light-s),calc(var(--light-l) + var(--hover-color-l-delta)))!important}a.has-text-light:active,button.has-text-light:active,has-text-light.is-hoverable:active{color:hsl(var(--light-h),var(--light-s),calc(var(--light-l) + var(--active-color-l-delta)))!important}.has-text-dark{color:hsl(var(--dark-h),var(--dark-s),var(--dark-l))!important}a.has-text-dark:focus-visible,a.has-text-dark:hover,button.has-text-dark:focus-visible,button.has-text-dark:hover,has-text-dark.is-hoverable:focus-visible,has-text-dark.is-hoverable:hover{color:hsl(var(--dark-h),var(--dark-s),calc(var(--dark-l) + var(--hover-color-l-delta)))!important}a.has-text-dark:active,button.has-text-dark:active,has-text-dark.is-hoverable:active{color:hsl(var(--dark-h),var(--dark-s),calc(var(--dark-l) + var(--active-color-l-delta)))!important}.has-text-link{color:hsl(var(--link-h),var(--link-s),var(--link-l))!important}a.has-text-link:focus-visible,a.has-text-link:hover,button.has-text-link:focus-visible,button.has-text-link:hover,has-text-link.is-hoverable:focus-visible,has-text-link.is-hoverable:hover{color:hsl(var(--link-h),var(--link-s),calc(var(--link-l) + var(--hover-color-l-delta)))!important}a.has-text-link:active,button.has-text-link:active,has-text-link.is-hoverable:active{color:hsl(var(--link-h),var(--link-s),calc(var(--link-l) + var(--active-color-l-delta)))!important}.has-text-info{color:hsl(var(--info-h),var(--info-s),var(--info-l))!important}.has-background-info{background-color:hsl(var(--info-h),var(--info-s),var(--info-l))!important}a.has-text-info:focus-visible,a.has-text-info:hover,button.has-text-info:focus-visible,button.has-text-info:hover,has-text-info.is-hoverable:focus-visible,has-text-info.is-hoverable:hover{color:hsl(var(--info-h),var(--info-s),calc(var(--info-l) + var(--hover-color-l-delta)))!important}a.has-text-info:active,button.has-text-info:active,has-text-info.is-hoverable:active{color:hsl(var(--info-h),var(--info-s),calc(var(--info-l) + var(--active-color-l-delta)))!important}a.has-background-info:focus-visible,a.has-background-info:hover,button.has-background-info:focus-visible,button.has-background-info:hover,has-background-info.is-hoverable:focus-visible,has-background-info.is-hoverable:hover{background-color:hsl(var(--info-h),var(--info-s),calc(var(--info-l) + var(--hover-background-l-delta)))!important}a.has-background-info:active,button.has-background-info:active,has-background-info.is-hoverable:active{background-color:hsl(var(--info-h),var(--info-s),calc(var(--info-l) + var(--active-background-l-delta)))!important}.has-text-success{color:hsl(var(--success-h),var(--success-s),var(--success-l))!important}a.has-text-success:focus-visible,a.has-text-success:hover,button.has-text-success:focus-visible,button.has-text-success:hover,has-text-success.is-hoverable:focus-visible,has-text-success.is-hoverable:hover{color:hsl(var(--success-h),var(--success-s),calc(var(--success-l) + var(--hover-color-l-delta)))!important}a.has-text-success:active,button.has-text-success:active,has-text-success.is-hoverable:active{color:hsl(var(--success-h),var(--success-s),calc(var(--success-l) + var(--active-color-l-delta)))!important}.has-text-warning{color:hsl(var(--warning-h),var(--warning-s),var(--warning-l))!important}a.has-text-warning:focus-visible,a.has-text-warning:hover,button.has-text-warning:focus-visible,button.has-text-warning:hover,has-text-warning.is-hoverable:focus-visible,has-text-warning.is-hoverable:hover{color:hsl(var(--warning-h),var(--warning-s),calc(var(--warning-l) + var(--hover-color-l-delta)))!important}a.has-text-warning:active,button.has-text-warning:active,has-text-warning.is-hoverable:active{color:hsl(var(--warning-h),var(--warning-s),calc(var(--warning-l) + var(--active-color-l-delta)))!important}.has-text-danger{color:hsl(var(--danger-h),var(--danger-s),var(--danger-l))!important}a.has-text-danger:focus-visible,a.has-text-danger:hover,button.has-text-danger:focus-visible,button.has-text-danger:hover,has-text-danger.is-hoverable:focus-visible,has-text-danger.is-hoverable:hover{color:hsl(var(--danger-h),var(--danger-s),calc(var(--danger-l) + var(--hover-color-l-delta)))!important}a.has-text-danger:active,button.has-text-danger:active,has-text-danger.is-hoverable:active{color:hsl(var(--danger-h),var(--danger-s),calc(var(--danger-l) + var(--active-color-l-delta)))!important}.has-background-grey-dark{background-color:#404654!important}.has-text-grey{color:#69748c!important}.has-text-grey-light{color:#abb1bf!important}.has-background-white-ter{background-color:#f3f4f6!important}.is-flex-direction-column{flex-direction:column!important}.is-justify-content-space-between{justify-content:space-between!important}.is-justify-content-start{justify-content:start!important}.is-justify-content-left{justify-content:left!important}.is-align-items-center{align-items:center!important}.is-align-items-start{align-items:start!important}.is-flex-grow-0{flex-grow:0!important}.is-flex-grow-1{flex-grow:1!important}.is-flex-shrink-1{flex-shrink:1!important}.is-pulled-right{float:right!important}.is-relative{position:relative!important}.mr-0{margin-right:0!important}.mb-0{margin-bottom:0!important}.ml-0{margin-left:0!important}.mt-1{margin-top:.25rem!important}.mr-1{margin-right:.25rem!important}.mb-1{margin-bottom:.25rem!important}.mt-2{margin-top:.5rem!important}.mb-2{margin-bottom:.5rem!important}.ml-2{margin-left:.5rem!important}.m-3{margin:.75rem!important}.mt-3{margin-top:.75rem!important}.mr-3{margin-right:.75rem!important}.mb-3{margin-bottom:.75rem!important}.ml-3,.mx-3{margin-left:.75rem!important}.mx-3{margin-right:.75rem!important}.my-3{margin-bottom:.75rem!important;margin-top:.75rem!important}.mt-4{margin-top:1rem!important}.mb-4{margin-bottom:1rem!important}.m-5{margin:1.5rem!important}.mt-5{margin-top:1.5rem!important}.mr-5{margin-right:1.5rem!important}.mb-5{margin-bottom:1.5rem!important}.ml-5,.mx-5{margin-left:1.5rem!important}.mx-5{margin-right:1.5rem!important}.my-5{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.p-0{padding:0!important}.px-0{padding-left:0!important}.px-0{padding-right:0!important}.px-1{padding-left:.25rem!important}.px-1{padding-right:.25rem!important}.p-3{padding:.75rem!important}.pb-3{padding-bottom:.75rem!important}.px-3{padding-left:.75rem!important}.px-3{padding-right:.75rem!important}.pt-5{padding-top:1.5rem!important}.pb-5{padding-bottom:1.5rem!important}.has-text-centered{text-align:center!important}.has-text-right{text-align:right!important}.is-italic{font-style:italic!important}.has-text-weight-light{font-weight:300!important}.has-text-weight-normal{font-weight:400!important}.is-family-code{font-family:Inconsolata,Hack,SF Mono,Roboto Mono,Source Code Pro,Ubuntu Mono,monospace!important}.is-hidden{display:none!important}.is-block{display:block!important}.is-flex{display:flex!important}.is-inline{display:inline!important}.is-inline-block{display:inline-block!important} + +/* Bulma Themes */:root{--scheme-h:221;--scheme-s:14%;--light-l:90%;--light-invert-l:20%;--dark-l:20%;--dark-invert-l:90%;--soft-l:90%;--bold-l:20%;--soft-invert-l:20%;--bold-invert-l:90%;--hover-background-l-delta:-5%;--active-background-l-delta:-10%;--hover-border-l-delta:-10%;--active-border-l-delta:-20%;--hover-color-l-delta:-5%;--active-color-l-delta:-10%;--hover-shadow-a-delta:-0.05;--active-shadow-a-delta:-0.1;--scheme-brightness:light;--scheme-main-l:100%;--scheme-main-bis-l:98%;--scheme-main-ter-l:96%;--background-l:96%;--border-weak-l:93%;--border-l:86%;--text-weak-l:48%;--text-strong-l:21%;--text-title-l:14%;--scheme-invert-ter-l:14%;--scheme-invert-bis-l:7%;--scheme-invert-l:4%;--family-primary:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Lucida Sans Unicode,Lucida Grande,Arial,sans-serif;--family-secondary:Inter,SF Pro,Segoe UI,Roboto,Oxygen,Ubuntu,Helvetica Neue,Helvetica,Arial,sans-serif;--family-code:Inconsolata,Hack,SF Mono,Roboto Mono,Source Code Pro,Ubuntu Mono,monospace;--size-small:0.75rem;--size-normal:1rem;--size-medium:1.25rem;--size-large:1.5rem;--weight-light:300;--weight-normal:400;--weight-medium:500;--weight-semibold:600;--weight-bold:700;--weight-extrabold:800;--block-spacing:1.5rem;--duration:294ms;--easing:ease-out;--radius-small:0.25rem;--radius:0.375rem;--radius-medium:0.5em;--radius-large:0.75rem;--radius-rounded:9999px;--speed:86ms;--arrow-color:var(--link);--loading-color:var(--border);--burger-h:var(--link-h);--burger-s:var(--link-s);--burger-l:var(--link-l);--burger-border-radius:0.5em;--burger-gap:5px;--burger-item-height:2px;--burger-item-width:20px;--white:hsla(var(--white-h),var(--white-s),var(--white-l),1);--white-base:hsla(var(--white-h),var(--white-s),var(--white-l),1);--white-rgb:255,255,255;--white-h:221deg;--white-s:14%;--white-l:100%;--white-invert-l:4%;--white-invert:#090a0c;--white-on-scheme-l:35%;--white-on-scheme:hsla(var(--white-h),var(--white-s),var(--white-on-scheme-l),1);--black:hsla(var(--black-h),var(--black-s),var(--black-l),1);--black-base:hsla(var(--black-h),var(--black-s),var(--black-l),1);--black-rgb:9,10,12;--black-h:221deg;--black-s:14%;--black-l:4%;--black-invert-l:100%;--black-invert:#fff;--black-on-scheme-l:4%;--black-on-scheme:hsla(var(--black-h),var(--black-s),var(--black-on-scheme-l),1);--light:hsla(var(--light-h),var(--light-s),var(--light-l),1);--light-base:hsla(var(--light-h),var(--light-s),var(--light-l),1);--light-rgb:243,244,246;--light-h:221deg;--light-s:14%;--light-l:96%;--light-invert-l:21%;--light-invert:#2e333d;--light-on-scheme-l:36%;--light-on-scheme:hsla(var(--light-h),var(--light-s),var(--light-on-scheme-l),1);--dark:hsla(var(--dark-h),var(--dark-s),var(--dark-l),1);--dark-base:hsla(var(--dark-h),var(--dark-s),var(--dark-l),1);--dark-rgb:46,51,61;--dark-h:221deg;--dark-s:14%;--dark-l:21%;--dark-invert-l:96%;--dark-invert:#f3f4f6;--dark-on-scheme-l:21%;--dark-on-scheme:hsla(var(--dark-h),var(--dark-s),var(--dark-on-scheme-l),1);--text:hsla(var(--text-h),var(--text-s),var(--text-l),1);--text-base:hsla(var(--text-h),var(--text-s),var(--text-l),1);--text-rgb:64,70,84;--text-h:221deg;--text-s:14%;--text-l:29%;--text-00-l:0%;--text-05-l:4%;--text-10-l:9%;--text-15-l:14%;--text-20-l:19%;--text-25-l:24%;--text-30-l:29%;--text-35-l:34%;--text-40-l:39%;--text-45-l:44%;--text-50-l:49%;--text-55-l:54%;--text-60-l:59%;--text-65-l:64%;--text-70-l:69%;--text-75-l:74%;--text-80-l:79%;--text-85-l:84%;--text-90-l:89%;--text-95-l:94%;--text-100-l:99%;--text-00:hsla(var(--text-h),var(--text-s),var(--text-00-l),1);--text-00-invert-l:var(--text-60-l);--text-00-invert:hsla(var(--text-h),var(--text-s),var(--text-00-invert-l),1);--text-05:hsla(var(--text-h),var(--text-s),var(--text-05-l),1);--text-05-invert-l:var(--text-60-l);--text-05-invert:hsla(var(--text-h),var(--text-s),var(--text-05-invert-l),1);--text-10:hsla(var(--text-h),var(--text-s),var(--text-10-l),1);--text-10-invert-l:var(--text-70-l);--text-10-invert:hsla(var(--text-h),var(--text-s),var(--text-10-invert-l),1);--text-15:hsla(var(--text-h),var(--text-s),var(--text-15-l),1);--text-15-invert-l:var(--text-75-l);--text-15-invert:hsla(var(--text-h),var(--text-s),var(--text-15-invert-l),1);--text-20:hsla(var(--text-h),var(--text-s),var(--text-20-l),1);--text-20-invert-l:var(--text-85-l);--text-20-invert:hsla(var(--text-h),var(--text-s),var(--text-20-invert-l),1);--text-25:hsla(var(--text-h),var(--text-s),var(--text-25-l),1);--text-25-invert-l:var(--text-95-l);--text-25-invert:hsla(var(--text-h),var(--text-s),var(--text-25-invert-l),1);--text-30:hsla(var(--text-h),var(--text-s),var(--text-30-l),1);--text-30-invert-l:var(--text-100-l);--text-30-invert:hsla(var(--text-h),var(--text-s),var(--text-30-invert-l),1);--text-35:hsla(var(--text-h),var(--text-s),var(--text-35-l),1);--text-35-invert-l:var(--text-100-l);--text-35-invert:hsla(var(--text-h),var(--text-s),var(--text-35-invert-l),1);--text-40:hsla(var(--text-h),var(--text-s),var(--text-40-l),1);--text-40-invert-l:var(--text-100-l);--text-40-invert:hsla(var(--text-h),var(--text-s),var(--text-40-invert-l),1);--text-45:hsla(var(--text-h),var(--text-s),var(--text-45-l),1);--text-45-invert-l:var(--text-100-l);--text-45-invert:hsla(var(--text-h),var(--text-s),var(--text-45-invert-l),1);--text-50:hsla(var(--text-h),var(--text-s),var(--text-50-l),1);--text-50-invert-l:var(--text-100-l);--text-50-invert:hsla(var(--text-h),var(--text-s),var(--text-50-invert-l),1);--text-55:hsla(var(--text-h),var(--text-s),var(--text-55-l),1);--text-55-invert-l:var(--text-100-l);--text-55-invert:hsla(var(--text-h),var(--text-s),var(--text-55-invert-l),1);--text-60:hsla(var(--text-h),var(--text-s),var(--text-60-l),1);--text-60-invert-l:var(--text-05-l);--text-60-invert:hsla(var(--text-h),var(--text-s),var(--text-60-invert-l),1);--text-65:hsla(var(--text-h),var(--text-s),var(--text-65-l),1);--text-65-invert-l:var(--text-05-l);--text-65-invert:hsla(var(--text-h),var(--text-s),var(--text-65-invert-l),1);--text-70:hsla(var(--text-h),var(--text-s),var(--text-70-l),1);--text-70-invert-l:var(--text-10-l);--text-70-invert:hsla(var(--text-h),var(--text-s),var(--text-70-invert-l),1);--text-75:hsla(var(--text-h),var(--text-s),var(--text-75-l),1);--text-75-invert-l:var(--text-15-l);--text-75-invert:hsla(var(--text-h),var(--text-s),var(--text-75-invert-l),1);--text-80:hsla(var(--text-h),var(--text-s),var(--text-80-l),1);--text-80-invert-l:var(--text-15-l);--text-80-invert:hsla(var(--text-h),var(--text-s),var(--text-80-invert-l),1);--text-85:hsla(var(--text-h),var(--text-s),var(--text-85-l),1);--text-85-invert-l:var(--text-20-l);--text-85-invert:hsla(var(--text-h),var(--text-s),var(--text-85-invert-l),1);--text-90:hsla(var(--text-h),var(--text-s),var(--text-90-l),1);--text-90-invert-l:var(--text-20-l);--text-90-invert:hsla(var(--text-h),var(--text-s),var(--text-90-invert-l),1);--text-95:hsla(var(--text-h),var(--text-s),var(--text-95-l),1);--text-95-invert-l:var(--text-25-l);--text-95-invert:hsla(var(--text-h),var(--text-s),var(--text-95-invert-l),1);--text-100:hsla(var(--text-h),var(--text-s),var(--text-100-l),1);--text-100-invert-l:var(--text-25-l);--text-100-invert:hsla(var(--text-h),var(--text-s),var(--text-100-invert-l),1);--text-invert-l:var(--text-100-l);--text-invert:hsla(var(--text-h),var(--text-s),var(--text-invert-l),1);--text-light-l:var(--text-90-l);--text-light:hsla(var(--text-h),var(--text-s),var(--text-light-l),1);--text-light-invert-l:var(--text-20-l);--text-light-invert:hsla(var(--text-h),var(--text-s),var(--text-light-invert-l),1);--text-dark-l:var(--text-10-l);--text-dark:hsla(var(--text-h),var(--text-s),var(--text-dark-l),1);--text-dark-invert-l:var(--text-70-l);--text-dark-invert:hsla(var(--text-h),var(--text-s),var(--text-dark-invert-l),1);--text-soft:hsla(var(--text-h),var(--text-s),var(--soft-l),1);--text-bold:hsla(var(--text-h),var(--text-s),var(--bold-l),1);--text-soft-invert:hsla(var(--text-h),var(--text-s),var(--soft-invert-l),1);--text-bold-invert:hsla(var(--text-h),var(--text-s),var(--bold-invert-l),1);--text-on-scheme-l:29%;--text-on-scheme:hsla(var(--text-h),var(--text-s),var(--text-on-scheme-l),1);--primary:hsla(var(--primary-h),var(--primary-s),var(--primary-l),1);--primary-base:hsla(var(--primary-h),var(--primary-s),var(--primary-l),1);--primary-rgb:0,209,178;--primary-h:171deg;--primary-s:100%;--primary-l:41%;--primary-00-l:1%;--primary-05-l:6%;--primary-10-l:11%;--primary-15-l:16%;--primary-20-l:21%;--primary-25-l:26%;--primary-30-l:31%;--primary-35-l:36%;--primary-40-l:41%;--primary-45-l:46%;--primary-50-l:51%;--primary-55-l:56%;--primary-60-l:61%;--primary-65-l:66%;--primary-70-l:71%;--primary-75-l:76%;--primary-80-l:81%;--primary-85-l:86%;--primary-90-l:91%;--primary-95-l:96%;--primary-100-l:100%;--primary-00:hsla(var(--primary-h),var(--primary-s),var(--primary-00-l),1);--primary-00-invert-l:var(--primary-30-l);--primary-00-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-00-invert-l),1);--primary-05:hsla(var(--primary-h),var(--primary-s),var(--primary-05-l),1);--primary-05-invert-l:var(--primary-40-l);--primary-05-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-05-invert-l),1);--primary-10:hsla(var(--primary-h),var(--primary-s),var(--primary-10-l),1);--primary-10-invert-l:var(--primary-50-l);--primary-10-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-10-invert-l),1);--primary-15:hsla(var(--primary-h),var(--primary-s),var(--primary-15-l),1);--primary-15-invert-l:var(--primary-100-l);--primary-15-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-15-invert-l),1);--primary-20:hsla(var(--primary-h),var(--primary-s),var(--primary-20-l),1);--primary-20-invert-l:var(--primary-100-l);--primary-20-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-20-invert-l),1);--primary-25:hsla(var(--primary-h),var(--primary-s),var(--primary-25-l),1);--primary-25-invert-l:var(--primary-100-l);--primary-25-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-25-invert-l),1);--primary-30:hsla(var(--primary-h),var(--primary-s),var(--primary-30-l),1);--primary-30-invert-l:var(--primary-00-l);--primary-30-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-30-invert-l),1);--primary-35:hsla(var(--primary-h),var(--primary-s),var(--primary-35-l),1);--primary-35-invert-l:var(--primary-00-l);--primary-35-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-35-invert-l),1);--primary-40:hsla(var(--primary-h),var(--primary-s),var(--primary-40-l),1);--primary-40-invert-l:var(--primary-05-l);--primary-40-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-40-invert-l),1);--primary-45:hsla(var(--primary-h),var(--primary-s),var(--primary-45-l),1);--primary-45-invert-l:var(--primary-05-l);--primary-45-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-45-invert-l),1);--primary-50:hsla(var(--primary-h),var(--primary-s),var(--primary-50-l),1);--primary-50-invert-l:var(--primary-10-l);--primary-50-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-50-invert-l),1);--primary-55:hsla(var(--primary-h),var(--primary-s),var(--primary-55-l),1);--primary-55-invert-l:var(--primary-10-l);--primary-55-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-55-invert-l),1);--primary-60:hsla(var(--primary-h),var(--primary-s),var(--primary-60-l),1);--primary-60-invert-l:var(--primary-10-l);--primary-60-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-60-invert-l),1);--primary-65:hsla(var(--primary-h),var(--primary-s),var(--primary-65-l),1);--primary-65-invert-l:var(--primary-10-l);--primary-65-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-65-invert-l),1);--primary-70:hsla(var(--primary-h),var(--primary-s),var(--primary-70-l),1);--primary-70-invert-l:var(--primary-10-l);--primary-70-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-70-invert-l),1);--primary-75:hsla(var(--primary-h),var(--primary-s),var(--primary-75-l),1);--primary-75-invert-l:var(--primary-10-l);--primary-75-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-75-invert-l),1);--primary-80:hsla(var(--primary-h),var(--primary-s),var(--primary-80-l),1);--primary-80-invert-l:var(--primary-10-l);--primary-80-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-80-invert-l),1);--primary-85:hsla(var(--primary-h),var(--primary-s),var(--primary-85-l),1);--primary-85-invert-l:var(--primary-10-l);--primary-85-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-85-invert-l),1);--primary-90:hsla(var(--primary-h),var(--primary-s),var(--primary-90-l),1);--primary-90-invert-l:var(--primary-10-l);--primary-90-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-90-invert-l),1);--primary-95:hsla(var(--primary-h),var(--primary-s),var(--primary-95-l),1);--primary-95-invert-l:var(--primary-10-l);--primary-95-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-95-invert-l),1);--primary-100:hsla(var(--primary-h),var(--primary-s),var(--primary-100-l),1);--primary-100-invert-l:var(--primary-15-l);--primary-100-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-100-invert-l),1);--primary-invert-l:var(--primary-05-l);--primary-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-invert-l),1);--primary-light-l:var(--primary-90-l);--primary-light:hsla(var(--primary-h),var(--primary-s),var(--primary-light-l),1);--primary-light-invert-l:var(--primary-10-l);--primary-light-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-light-invert-l),1);--primary-dark-l:var(--primary-10-l);--primary-dark:hsla(var(--primary-h),var(--primary-s),var(--primary-dark-l),1);--primary-dark-invert-l:var(--primary-50-l);--primary-dark-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-dark-invert-l),1);--primary-soft:hsla(var(--primary-h),var(--primary-s),var(--soft-l),1);--primary-bold:hsla(var(--primary-h),var(--primary-s),var(--bold-l),1);--primary-soft-invert:hsla(var(--primary-h),var(--primary-s),var(--soft-invert-l),1);--primary-bold-invert:hsla(var(--primary-h),var(--primary-s),var(--bold-invert-l),1);--primary-on-scheme-l:21%;--primary-on-scheme:hsla(var(--primary-h),var(--primary-s),var(--primary-on-scheme-l),1);--link:hsla(var(--link-h),var(--link-s),var(--link-l),1);--link-base:hsla(var(--link-h),var(--link-s),var(--link-l),1);--link-rgb:66,88,255;--link-h:233deg;--link-s:100%;--link-l:63%;--link-00-l:0%;--link-05-l:3%;--link-10-l:8%;--link-15-l:13%;--link-20-l:18%;--link-25-l:23%;--link-30-l:28%;--link-35-l:33%;--link-40-l:38%;--link-45-l:43%;--link-50-l:48%;--link-55-l:53%;--link-60-l:58%;--link-65-l:63%;--link-70-l:68%;--link-75-l:73%;--link-80-l:78%;--link-85-l:83%;--link-90-l:88%;--link-95-l:93%;--link-100-l:98%;--link-00:hsla(var(--link-h),var(--link-s),var(--link-00-l),1);--link-00-invert-l:var(--link-75-l);--link-00-invert:hsla(var(--link-h),var(--link-s),var(--link-00-invert-l),1);--link-05:hsla(var(--link-h),var(--link-s),var(--link-05-l),1);--link-05-invert-l:var(--link-75-l);--link-05-invert:hsla(var(--link-h),var(--link-s),var(--link-05-invert-l),1);--link-10:hsla(var(--link-h),var(--link-s),var(--link-10-l),1);--link-10-invert-l:var(--link-75-l);--link-10-invert:hsla(var(--link-h),var(--link-s),var(--link-10-invert-l),1);--link-15:hsla(var(--link-h),var(--link-s),var(--link-15-l),1);--link-15-invert-l:var(--link-80-l);--link-15-invert:hsla(var(--link-h),var(--link-s),var(--link-15-invert-l),1);--link-20:hsla(var(--link-h),var(--link-s),var(--link-20-l),1);--link-20-invert-l:var(--link-80-l);--link-20-invert:hsla(var(--link-h),var(--link-s),var(--link-20-invert-l),1);--link-25:hsla(var(--link-h),var(--link-s),var(--link-25-l),1);--link-25-invert-l:var(--link-85-l);--link-25-invert:hsla(var(--link-h),var(--link-s),var(--link-25-invert-l),1);--link-30:hsla(var(--link-h),var(--link-s),var(--link-30-l),1);--link-30-invert-l:var(--link-90-l);--link-30-invert:hsla(var(--link-h),var(--link-s),var(--link-30-invert-l),1);--link-35:hsla(var(--link-h),var(--link-s),var(--link-35-l),1);--link-35-invert-l:var(--link-90-l);--link-35-invert:hsla(var(--link-h),var(--link-s),var(--link-35-invert-l),1);--link-40:hsla(var(--link-h),var(--link-s),var(--link-40-l),1);--link-40-invert-l:var(--link-95-l);--link-40-invert:hsla(var(--link-h),var(--link-s),var(--link-40-invert-l),1);--link-45:hsla(var(--link-h),var(--link-s),var(--link-45-l),1);--link-45-invert-l:var(--link-100-l);--link-45-invert:hsla(var(--link-h),var(--link-s),var(--link-45-invert-l),1);--link-50:hsla(var(--link-h),var(--link-s),var(--link-50-l),1);--link-50-invert-l:var(--link-100-l);--link-50-invert:hsla(var(--link-h),var(--link-s),var(--link-50-invert-l),1);--link-55:hsla(var(--link-h),var(--link-s),var(--link-55-l),1);--link-55-invert-l:var(--link-100-l);--link-55-invert:hsla(var(--link-h),var(--link-s),var(--link-55-invert-l),1);--link-60:hsla(var(--link-h),var(--link-s),var(--link-60-l),1);--link-60-invert-l:var(--link-100-l);--link-60-invert:hsla(var(--link-h),var(--link-s),var(--link-60-invert-l),1);--link-65:hsla(var(--link-h),var(--link-s),var(--link-65-l),1);--link-65-invert-l:var(--link-100-l);--link-65-invert:hsla(var(--link-h),var(--link-s),var(--link-65-invert-l),1);--link-70:hsla(var(--link-h),var(--link-s),var(--link-70-l),1);--link-70-invert-l:var(--link-100-l);--link-70-invert:hsla(var(--link-h),var(--link-s),var(--link-70-invert-l),1);--link-75:hsla(var(--link-h),var(--link-s),var(--link-75-l),1);--link-75-invert-l:var(--link-10-l);--link-75-invert:hsla(var(--link-h),var(--link-s),var(--link-75-invert-l),1);--link-80:hsla(var(--link-h),var(--link-s),var(--link-80-l),1);--link-80-invert-l:var(--link-20-l);--link-80-invert:hsla(var(--link-h),var(--link-s),var(--link-80-invert-l),1);--link-85:hsla(var(--link-h),var(--link-s),var(--link-85-l),1);--link-85-invert-l:var(--link-25-l);--link-85-invert:hsla(var(--link-h),var(--link-s),var(--link-85-invert-l),1);--link-90:hsla(var(--link-h),var(--link-s),var(--link-90-l),1);--link-90-invert-l:var(--link-35-l);--link-90-invert:hsla(var(--link-h),var(--link-s),var(--link-90-invert-l),1);--link-95:hsla(var(--link-h),var(--link-s),var(--link-95-l),1);--link-95-invert-l:var(--link-40-l);--link-95-invert:hsla(var(--link-h),var(--link-s),var(--link-95-invert-l),1);--link-100:hsla(var(--link-h),var(--link-s),var(--link-100-l),1);--link-100-invert-l:var(--link-50-l);--link-100-invert:hsla(var(--link-h),var(--link-s),var(--link-100-invert-l),1);--link-invert-l:var(--link-100-l);--link-invert:hsla(var(--link-h),var(--link-s),var(--link-invert-l),1);--link-light-l:var(--link-90-l);--link-light:hsla(var(--link-h),var(--link-s),var(--link-light-l),1);--link-light-invert-l:var(--link-35-l);--link-light-invert:hsla(var(--link-h),var(--link-s),var(--link-light-invert-l),1);--link-dark-l:var(--link-10-l);--link-dark:hsla(var(--link-h),var(--link-s),var(--link-dark-l),1);--link-dark-invert-l:var(--link-75-l);--link-dark-invert:hsla(var(--link-h),var(--link-s),var(--link-dark-invert-l),1);--link-soft:hsla(var(--link-h),var(--link-s),var(--soft-l),1);--link-bold:hsla(var(--link-h),var(--link-s),var(--bold-l),1);--link-soft-invert:hsla(var(--link-h),var(--link-s),var(--soft-invert-l),1);--link-bold-invert:hsla(var(--link-h),var(--link-s),var(--bold-invert-l),1);--link-on-scheme-l:58%;--link-on-scheme:hsla(var(--link-h),var(--link-s),var(--link-on-scheme-l),1);--info:hsla(var(--info-h),var(--info-s),var(--info-l),1);--info-base:hsla(var(--info-h),var(--info-s),var(--info-l),1);--info-rgb:102,209,255;--info-h:198deg;--info-s:100%;--info-l:70%;--info-00-l:0%;--info-05-l:5%;--info-10-l:10%;--info-15-l:15%;--info-20-l:20%;--info-25-l:25%;--info-30-l:30%;--info-35-l:35%;--info-40-l:40%;--info-45-l:45%;--info-50-l:50%;--info-55-l:55%;--info-60-l:60%;--info-65-l:65%;--info-70-l:70%;--info-75-l:75%;--info-80-l:80%;--info-85-l:85%;--info-90-l:90%;--info-95-l:95%;--info-100-l:100%;--info-00:hsla(var(--info-h),var(--info-s),var(--info-00-l),1);--info-00-invert-l:var(--info-45-l);--info-00-invert:hsla(var(--info-h),var(--info-s),var(--info-00-invert-l),1);--info-05:hsla(var(--info-h),var(--info-s),var(--info-05-l),1);--info-05-invert-l:var(--info-50-l);--info-05-invert:hsla(var(--info-h),var(--info-s),var(--info-05-invert-l),1);--info-10:hsla(var(--info-h),var(--info-s),var(--info-10-l),1);--info-10-invert-l:var(--info-60-l);--info-10-invert:hsla(var(--info-h),var(--info-s),var(--info-10-invert-l),1);--info-15:hsla(var(--info-h),var(--info-s),var(--info-15-l),1);--info-15-invert-l:var(--info-80-l);--info-15-invert:hsla(var(--info-h),var(--info-s),var(--info-15-invert-l),1);--info-20:hsla(var(--info-h),var(--info-s),var(--info-20-l),1);--info-20-invert-l:var(--info-95-l);--info-20-invert:hsla(var(--info-h),var(--info-s),var(--info-20-invert-l),1);--info-25:hsla(var(--info-h),var(--info-s),var(--info-25-l),1);--info-25-invert-l:var(--info-100-l);--info-25-invert:hsla(var(--info-h),var(--info-s),var(--info-25-invert-l),1);--info-30:hsla(var(--info-h),var(--info-s),var(--info-30-l),1);--info-30-invert-l:var(--info-100-l);--info-30-invert:hsla(var(--info-h),var(--info-s),var(--info-30-invert-l),1);--info-35:hsla(var(--info-h),var(--info-s),var(--info-35-l),1);--info-35-invert-l:var(--info-100-l);--info-35-invert:hsla(var(--info-h),var(--info-s),var(--info-35-invert-l),1);--info-40:hsla(var(--info-h),var(--info-s),var(--info-40-l),1);--info-40-invert-l:var(--info-100-l);--info-40-invert:hsla(var(--info-h),var(--info-s),var(--info-40-invert-l),1);--info-45:hsla(var(--info-h),var(--info-s),var(--info-45-l),1);--info-45-invert-l:var(--info-00-l);--info-45-invert:hsla(var(--info-h),var(--info-s),var(--info-45-invert-l),1);--info-50:hsla(var(--info-h),var(--info-s),var(--info-50-l),1);--info-50-invert-l:var(--info-05-l);--info-50-invert:hsla(var(--info-h),var(--info-s),var(--info-50-invert-l),1);--info-55:hsla(var(--info-h),var(--info-s),var(--info-55-l),1);--info-55-invert-l:var(--info-05-l);--info-55-invert:hsla(var(--info-h),var(--info-s),var(--info-55-invert-l),1);--info-60:hsla(var(--info-h),var(--info-s),var(--info-60-l),1);--info-60-invert-l:var(--info-10-l);--info-60-invert:hsla(var(--info-h),var(--info-s),var(--info-60-invert-l),1);--info-65:hsla(var(--info-h),var(--info-s),var(--info-65-l),1);--info-65-invert-l:var(--info-10-l);--info-65-invert:hsla(var(--info-h),var(--info-s),var(--info-65-invert-l),1);--info-70:hsla(var(--info-h),var(--info-s),var(--info-70-l),1);--info-70-invert-l:var(--info-10-l);--info-70-invert:hsla(var(--info-h),var(--info-s),var(--info-70-invert-l),1);--info-75:hsla(var(--info-h),var(--info-s),var(--info-75-l),1);--info-75-invert-l:var(--info-10-l);--info-75-invert:hsla(var(--info-h),var(--info-s),var(--info-75-invert-l),1);--info-80:hsla(var(--info-h),var(--info-s),var(--info-80-l),1);--info-80-invert-l:var(--info-15-l);--info-80-invert:hsla(var(--info-h),var(--info-s),var(--info-80-invert-l),1);--info-85:hsla(var(--info-h),var(--info-s),var(--info-85-l),1);--info-85-invert-l:var(--info-15-l);--info-85-invert:hsla(var(--info-h),var(--info-s),var(--info-85-invert-l),1);--info-90:hsla(var(--info-h),var(--info-s),var(--info-90-l),1);--info-90-invert-l:var(--info-15-l);--info-90-invert:hsla(var(--info-h),var(--info-s),var(--info-90-invert-l),1);--info-95:hsla(var(--info-h),var(--info-s),var(--info-95-l),1);--info-95-invert-l:var(--info-20-l);--info-95-invert:hsla(var(--info-h),var(--info-s),var(--info-95-invert-l),1);--info-100:hsla(var(--info-h),var(--info-s),var(--info-100-l),1);--info-100-invert-l:var(--info-20-l);--info-100-invert:hsla(var(--info-h),var(--info-s),var(--info-100-invert-l),1);--info-invert-l:var(--info-10-l);--info-invert:hsla(var(--info-h),var(--info-s),var(--info-invert-l),1);--info-light-l:var(--info-90-l);--info-light:hsla(var(--info-h),var(--info-s),var(--info-light-l),1);--info-light-invert-l:var(--info-15-l);--info-light-invert:hsla(var(--info-h),var(--info-s),var(--info-light-invert-l),1);--info-dark-l:var(--info-10-l);--info-dark:hsla(var(--info-h),var(--info-s),var(--info-dark-l),1);--info-dark-invert-l:var(--info-60-l);--info-dark-invert:hsla(var(--info-h),var(--info-s),var(--info-dark-invert-l),1);--info-soft:hsla(var(--info-h),var(--info-s),var(--soft-l),1);--info-bold:hsla(var(--info-h),var(--info-s),var(--bold-l),1);--info-soft-invert:hsla(var(--info-h),var(--info-s),var(--soft-invert-l),1);--info-bold-invert:hsla(var(--info-h),var(--info-s),var(--bold-invert-l),1);--info-on-scheme-l:25%;--info-on-scheme:hsla(var(--info-h),var(--info-s),var(--info-on-scheme-l),1);--success:hsla(var(--success-h),var(--success-s),var(--success-l),1);--success-base:hsla(var(--success-h),var(--success-s),var(--success-l),1);--success-rgb:72,199,142;--success-h:153deg;--success-s:53%;--success-l:53%;--success-00-l:0%;--success-05-l:3%;--success-10-l:8%;--success-15-l:13%;--success-20-l:18%;--success-25-l:23%;--success-30-l:28%;--success-35-l:33%;--success-40-l:38%;--success-45-l:43%;--success-50-l:48%;--success-55-l:53%;--success-60-l:58%;--success-65-l:63%;--success-70-l:68%;--success-75-l:73%;--success-80-l:78%;--success-85-l:83%;--success-90-l:88%;--success-95-l:93%;--success-100-l:98%;--success-00:hsla(var(--success-h),var(--success-s),var(--success-00-l),1);--success-00-invert-l:var(--success-45-l);--success-00-invert:hsla(var(--success-h),var(--success-s),var(--success-00-invert-l),1);--success-05:hsla(var(--success-h),var(--success-s),var(--success-05-l),1);--success-05-invert-l:var(--success-45-l);--success-05-invert:hsla(var(--success-h),var(--success-s),var(--success-05-invert-l),1);--success-10:hsla(var(--success-h),var(--success-s),var(--success-10-l),1);--success-10-invert-l:var(--success-55-l);--success-10-invert:hsla(var(--success-h),var(--success-s),var(--success-10-invert-l),1);--success-15:hsla(var(--success-h),var(--success-s),var(--success-15-l),1);--success-15-invert-l:var(--success-75-l);--success-15-invert:hsla(var(--success-h),var(--success-s),var(--success-15-invert-l),1);--success-20:hsla(var(--success-h),var(--success-s),var(--success-20-l),1);--success-20-invert-l:var(--success-90-l);--success-20-invert:hsla(var(--success-h),var(--success-s),var(--success-20-invert-l),1);--success-25:hsla(var(--success-h),var(--success-s),var(--success-25-l),1);--success-25-invert-l:var(--success-100-l);--success-25-invert:hsla(var(--success-h),var(--success-s),var(--success-25-invert-l),1);--success-30:hsla(var(--success-h),var(--success-s),var(--success-30-l),1);--success-30-invert-l:var(--success-100-l);--success-30-invert:hsla(var(--success-h),var(--success-s),var(--success-30-invert-l),1);--success-35:hsla(var(--success-h),var(--success-s),var(--success-35-l),1);--success-35-invert-l:var(--success-100-l);--success-35-invert:hsla(var(--success-h),var(--success-s),var(--success-35-invert-l),1);--success-40:hsla(var(--success-h),var(--success-s),var(--success-40-l),1);--success-40-invert-l:var(--success-100-l);--success-40-invert:hsla(var(--success-h),var(--success-s),var(--success-40-invert-l),1);--success-45:hsla(var(--success-h),var(--success-s),var(--success-45-l),1);--success-45-invert-l:var(--success-05-l);--success-45-invert:hsla(var(--success-h),var(--success-s),var(--success-45-invert-l),1);--success-50:hsla(var(--success-h),var(--success-s),var(--success-50-l),1);--success-50-invert-l:var(--success-05-l);--success-50-invert:hsla(var(--success-h),var(--success-s),var(--success-50-invert-l),1);--success-55:hsla(var(--success-h),var(--success-s),var(--success-55-l),1);--success-55-invert-l:var(--success-10-l);--success-55-invert:hsla(var(--success-h),var(--success-s),var(--success-55-invert-l),1);--success-60:hsla(var(--success-h),var(--success-s),var(--success-60-l),1);--success-60-invert-l:var(--success-10-l);--success-60-invert:hsla(var(--success-h),var(--success-s),var(--success-60-invert-l),1);--success-65:hsla(var(--success-h),var(--success-s),var(--success-65-l),1);--success-65-invert-l:var(--success-10-l);--success-65-invert:hsla(var(--success-h),var(--success-s),var(--success-65-invert-l),1);--success-70:hsla(var(--success-h),var(--success-s),var(--success-70-l),1);--success-70-invert-l:var(--success-10-l);--success-70-invert:hsla(var(--success-h),var(--success-s),var(--success-70-invert-l),1);--success-75:hsla(var(--success-h),var(--success-s),var(--success-75-l),1);--success-75-invert-l:var(--success-15-l);--success-75-invert:hsla(var(--success-h),var(--success-s),var(--success-75-invert-l),1);--success-80:hsla(var(--success-h),var(--success-s),var(--success-80-l),1);--success-80-invert-l:var(--success-15-l);--success-80-invert:hsla(var(--success-h),var(--success-s),var(--success-80-invert-l),1);--success-85:hsla(var(--success-h),var(--success-s),var(--success-85-l),1);--success-85-invert-l:var(--success-15-l);--success-85-invert:hsla(var(--success-h),var(--success-s),var(--success-85-invert-l),1);--success-90:hsla(var(--success-h),var(--success-s),var(--success-90-l),1);--success-90-invert-l:var(--success-20-l);--success-90-invert:hsla(var(--success-h),var(--success-s),var(--success-90-invert-l),1);--success-95:hsla(var(--success-h),var(--success-s),var(--success-95-l),1);--success-95-invert-l:var(--success-20-l);--success-95-invert:hsla(var(--success-h),var(--success-s),var(--success-95-invert-l),1);--success-100:hsla(var(--success-h),var(--success-s),var(--success-100-l),1);--success-100-invert-l:var(--success-20-l);--success-100-invert:hsla(var(--success-h),var(--success-s),var(--success-100-invert-l),1);--success-invert-l:var(--success-10-l);--success-invert:hsla(var(--success-h),var(--success-s),var(--success-invert-l),1);--success-light-l:var(--success-90-l);--success-light:hsla(var(--success-h),var(--success-s),var(--success-light-l),1);--success-light-invert-l:var(--success-20-l);--success-light-invert:hsla(var(--success-h),var(--success-s),var(--success-light-invert-l),1);--success-dark-l:var(--success-10-l);--success-dark:hsla(var(--success-h),var(--success-s),var(--success-dark-l),1);--success-dark-invert-l:var(--success-55-l);--success-dark-invert:hsla(var(--success-h),var(--success-s),var(--success-dark-invert-l),1);--success-soft:hsla(var(--success-h),var(--success-s),var(--soft-l),1);--success-bold:hsla(var(--success-h),var(--success-s),var(--bold-l),1);--success-soft-invert:hsla(var(--success-h),var(--success-s),var(--soft-invert-l),1);--success-bold-invert:hsla(var(--success-h),var(--success-s),var(--bold-invert-l),1);--success-on-scheme-l:23%;--success-on-scheme:hsla(var(--success-h),var(--success-s),var(--success-on-scheme-l),1);--warning:hsla(var(--warning-h),var(--warning-s),var(--warning-l),1);--warning-base:hsla(var(--warning-h),var(--warning-s),var(--warning-l),1);--warning-rgb:255,183,15;--warning-h:42deg;--warning-s:100%;--warning-l:53%;--warning-00-l:0%;--warning-05-l:3%;--warning-10-l:8%;--warning-15-l:13%;--warning-20-l:18%;--warning-25-l:23%;--warning-30-l:28%;--warning-35-l:33%;--warning-40-l:38%;--warning-45-l:43%;--warning-50-l:48%;--warning-55-l:53%;--warning-60-l:58%;--warning-65-l:63%;--warning-70-l:68%;--warning-75-l:73%;--warning-80-l:78%;--warning-85-l:83%;--warning-90-l:88%;--warning-95-l:93%;--warning-100-l:98%;--warning-00:hsla(var(--warning-h),var(--warning-s),var(--warning-00-l),1);--warning-00-invert-l:var(--warning-40-l);--warning-00-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-00-invert-l),1);--warning-05:hsla(var(--warning-h),var(--warning-s),var(--warning-05-l),1);--warning-05-invert-l:var(--warning-45-l);--warning-05-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-05-invert-l),1);--warning-10:hsla(var(--warning-h),var(--warning-s),var(--warning-10-l),1);--warning-10-invert-l:var(--warning-50-l);--warning-10-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-10-invert-l),1);--warning-15:hsla(var(--warning-h),var(--warning-s),var(--warning-15-l),1);--warning-15-invert-l:var(--warning-70-l);--warning-15-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-15-invert-l),1);--warning-20:hsla(var(--warning-h),var(--warning-s),var(--warning-20-l),1);--warning-20-invert-l:var(--warning-100-l);--warning-20-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-20-invert-l),1);--warning-25:hsla(var(--warning-h),var(--warning-s),var(--warning-25-l),1);--warning-25-invert-l:var(--warning-100-l);--warning-25-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-25-invert-l),1);--warning-30:hsla(var(--warning-h),var(--warning-s),var(--warning-30-l),1);--warning-30-invert-l:var(--warning-100-l);--warning-30-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-30-invert-l),1);--warning-35:hsla(var(--warning-h),var(--warning-s),var(--warning-35-l),1);--warning-35-invert-l:var(--warning-100-l);--warning-35-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-35-invert-l),1);--warning-40:hsla(var(--warning-h),var(--warning-s),var(--warning-40-l),1);--warning-40-invert-l:var(--warning-00-l);--warning-40-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-40-invert-l),1);--warning-45:hsla(var(--warning-h),var(--warning-s),var(--warning-45-l),1);--warning-45-invert-l:var(--warning-05-l);--warning-45-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-45-invert-l),1);--warning-50:hsla(var(--warning-h),var(--warning-s),var(--warning-50-l),1);--warning-50-invert-l:var(--warning-10-l);--warning-50-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-50-invert-l),1);--warning-55:hsla(var(--warning-h),var(--warning-s),var(--warning-55-l),1);--warning-55-invert-l:var(--warning-10-l);--warning-55-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-55-invert-l),1);--warning-60:hsla(var(--warning-h),var(--warning-s),var(--warning-60-l),1);--warning-60-invert-l:var(--warning-10-l);--warning-60-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-60-invert-l),1);--warning-65:hsla(var(--warning-h),var(--warning-s),var(--warning-65-l),1);--warning-65-invert-l:var(--warning-10-l);--warning-65-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-65-invert-l),1);--warning-70:hsla(var(--warning-h),var(--warning-s),var(--warning-70-l),1);--warning-70-invert-l:var(--warning-15-l);--warning-70-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-70-invert-l),1);--warning-75:hsla(var(--warning-h),var(--warning-s),var(--warning-75-l),1);--warning-75-invert-l:var(--warning-15-l);--warning-75-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-75-invert-l),1);--warning-80:hsla(var(--warning-h),var(--warning-s),var(--warning-80-l),1);--warning-80-invert-l:var(--warning-15-l);--warning-80-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-80-invert-l),1);--warning-85:hsla(var(--warning-h),var(--warning-s),var(--warning-85-l),1);--warning-85-invert-l:var(--warning-15-l);--warning-85-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-85-invert-l),1);--warning-90:hsla(var(--warning-h),var(--warning-s),var(--warning-90-l),1);--warning-90-invert-l:var(--warning-15-l);--warning-90-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-90-invert-l),1);--warning-95:hsla(var(--warning-h),var(--warning-s),var(--warning-95-l),1);--warning-95-invert-l:var(--warning-15-l);--warning-95-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-95-invert-l),1);--warning-100:hsla(var(--warning-h),var(--warning-s),var(--warning-100-l),1);--warning-100-invert-l:var(--warning-20-l);--warning-100-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-100-invert-l),1);--warning-invert-l:var(--warning-10-l);--warning-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-invert-l),1);--warning-light-l:var(--warning-90-l);--warning-light:hsla(var(--warning-h),var(--warning-s),var(--warning-light-l),1);--warning-light-invert-l:var(--warning-15-l);--warning-light-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-light-invert-l),1);--warning-dark-l:var(--warning-10-l);--warning-dark:hsla(var(--warning-h),var(--warning-s),var(--warning-dark-l),1);--warning-dark-invert-l:var(--warning-50-l);--warning-dark-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-dark-invert-l),1);--warning-soft:hsla(var(--warning-h),var(--warning-s),var(--soft-l),1);--warning-bold:hsla(var(--warning-h),var(--warning-s),var(--bold-l),1);--warning-soft-invert:hsla(var(--warning-h),var(--warning-s),var(--soft-invert-l),1);--warning-bold-invert:hsla(var(--warning-h),var(--warning-s),var(--bold-invert-l),1);--warning-on-scheme-l:23%;--warning-on-scheme:hsla(var(--warning-h),var(--warning-s),var(--warning-on-scheme-l),1);--danger:hsla(var(--danger-h),var(--danger-s),var(--danger-l),1);--danger-base:hsla(var(--danger-h),var(--danger-s),var(--danger-l),1);--danger-rgb:255,102,133;--danger-h:348deg;--danger-s:100%;--danger-l:70%;--danger-00-l:0%;--danger-05-l:5%;--danger-10-l:10%;--danger-15-l:15%;--danger-20-l:20%;--danger-25-l:25%;--danger-30-l:30%;--danger-35-l:35%;--danger-40-l:40%;--danger-45-l:45%;--danger-50-l:50%;--danger-55-l:55%;--danger-60-l:60%;--danger-65-l:65%;--danger-70-l:70%;--danger-75-l:75%;--danger-80-l:80%;--danger-85-l:85%;--danger-90-l:90%;--danger-95-l:95%;--danger-100-l:100%;--danger-00:hsla(var(--danger-h),var(--danger-s),var(--danger-00-l),1);--danger-00-invert-l:var(--danger-65-l);--danger-00-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-00-invert-l),1);--danger-05:hsla(var(--danger-h),var(--danger-s),var(--danger-05-l),1);--danger-05-invert-l:var(--danger-70-l);--danger-05-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-05-invert-l),1);--danger-10:hsla(var(--danger-h),var(--danger-s),var(--danger-10-l),1);--danger-10-invert-l:var(--danger-75-l);--danger-10-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-10-invert-l),1);--danger-15:hsla(var(--danger-h),var(--danger-s),var(--danger-15-l),1);--danger-15-invert-l:var(--danger-80-l);--danger-15-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-15-invert-l),1);--danger-20:hsla(var(--danger-h),var(--danger-s),var(--danger-20-l),1);--danger-20-invert-l:var(--danger-85-l);--danger-20-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-20-invert-l),1);--danger-25:hsla(var(--danger-h),var(--danger-s),var(--danger-25-l),1);--danger-25-invert-l:var(--danger-90-l);--danger-25-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-25-invert-l),1);--danger-30:hsla(var(--danger-h),var(--danger-s),var(--danger-30-l),1);--danger-30-invert-l:var(--danger-100-l);--danger-30-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-30-invert-l),1);--danger-35:hsla(var(--danger-h),var(--danger-s),var(--danger-35-l),1);--danger-35-invert-l:var(--danger-100-l);--danger-35-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-35-invert-l),1);--danger-40:hsla(var(--danger-h),var(--danger-s),var(--danger-40-l),1);--danger-40-invert-l:var(--danger-100-l);--danger-40-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-40-invert-l),1);--danger-45:hsla(var(--danger-h),var(--danger-s),var(--danger-45-l),1);--danger-45-invert-l:var(--danger-100-l);--danger-45-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-45-invert-l),1);--danger-50:hsla(var(--danger-h),var(--danger-s),var(--danger-50-l),1);--danger-50-invert-l:var(--danger-100-l);--danger-50-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-50-invert-l),1);--danger-55:hsla(var(--danger-h),var(--danger-s),var(--danger-55-l),1);--danger-55-invert-l:var(--danger-100-l);--danger-55-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-55-invert-l),1);--danger-60:hsla(var(--danger-h),var(--danger-s),var(--danger-60-l),1);--danger-60-invert-l:var(--danger-100-l);--danger-60-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-60-invert-l),1);--danger-65:hsla(var(--danger-h),var(--danger-s),var(--danger-65-l),1);--danger-65-invert-l:var(--danger-00-l);--danger-65-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-65-invert-l),1);--danger-70:hsla(var(--danger-h),var(--danger-s),var(--danger-70-l),1);--danger-70-invert-l:var(--danger-05-l);--danger-70-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-70-invert-l),1);--danger-75:hsla(var(--danger-h),var(--danger-s),var(--danger-75-l),1);--danger-75-invert-l:var(--danger-10-l);--danger-75-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-75-invert-l),1);--danger-80:hsla(var(--danger-h),var(--danger-s),var(--danger-80-l),1);--danger-80-invert-l:var(--danger-15-l);--danger-80-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-80-invert-l),1);--danger-85:hsla(var(--danger-h),var(--danger-s),var(--danger-85-l),1);--danger-85-invert-l:var(--danger-20-l);--danger-85-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-85-invert-l),1);--danger-90:hsla(var(--danger-h),var(--danger-s),var(--danger-90-l),1);--danger-90-invert-l:var(--danger-25-l);--danger-90-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-90-invert-l),1);--danger-95:hsla(var(--danger-h),var(--danger-s),var(--danger-95-l),1);--danger-95-invert-l:var(--danger-25-l);--danger-95-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-95-invert-l),1);--danger-100:hsla(var(--danger-h),var(--danger-s),var(--danger-100-l),1);--danger-100-invert-l:var(--danger-30-l);--danger-100-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-100-invert-l),1);--danger-invert-l:var(--danger-05-l);--danger-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-invert-l),1);--danger-light-l:var(--danger-90-l);--danger-light:hsla(var(--danger-h),var(--danger-s),var(--danger-light-l),1);--danger-light-invert-l:var(--danger-25-l);--danger-light-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-light-invert-l),1);--danger-dark-l:var(--danger-10-l);--danger-dark:hsla(var(--danger-h),var(--danger-s),var(--danger-dark-l),1);--danger-dark-invert-l:var(--danger-75-l);--danger-dark-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-dark-invert-l),1);--danger-soft:hsla(var(--danger-h),var(--danger-s),var(--soft-l),1);--danger-bold:hsla(var(--danger-h),var(--danger-s),var(--bold-l),1);--danger-soft-invert:hsla(var(--danger-h),var(--danger-s),var(--soft-invert-l),1);--danger-bold-invert:hsla(var(--danger-h),var(--danger-s),var(--bold-invert-l),1);--danger-on-scheme-l:40%;--danger-on-scheme:hsla(var(--danger-h),var(--danger-s),var(--danger-on-scheme-l),1);--black-bis:#14161a;--black-ter:#1f2229;--grey-darker:#2e333d;--grey-dark:#404654;--grey:#69748c;--grey-light:#abb1bf;--grey-lighter:#d6d9e0;--white-ter:#f3f4f6;--white-bis:#f9fafb;--shadow-h:221deg;--shadow-s:14%;--shadow-l:4%;--size-1:3rem;--size-2:2.5rem;--size-3:2rem;--size-4:1.5rem;--size-5:1.25rem;--size-6:1rem;--size-7:0.75rem;--scheme-main:hsl(var(--scheme-h),var(--scheme-s),var(--scheme-main-l));--scheme-main-bis:hsl(var(--scheme-h),var(--scheme-s),var(--scheme-main-bis-l));--scheme-main-ter:hsl(var(--scheme-h),var(--scheme-s),var(--scheme-main-ter-l));--background:hsl(var(--scheme-h),var(--scheme-s),var(--background-l));--background-hover:hsl(var(--scheme-h),var(--scheme-s),calc(var(--background-l) + var(--hover-background-l-delta)));--background-active:hsl(var(--scheme-h),var(--scheme-s),calc(var(--background-l) + var(--active-background-l-delta)));--border-weak:hsl(var(--scheme-h),var(--scheme-s),var(--border-weak-l));--border:hsl(var(--scheme-h),var(--scheme-s),var(--border-l));--border-hover:hsl(var(--scheme-h),var(--scheme-s),calc(var(--border-l) + var(--hover-border-l-delta)));--border-active:hsl(var(--scheme-h),var(--scheme-s),calc(var(--border-l) + var(--active-border-l-delta)));--text-weak:hsl(var(--text-h),var(--text-s),var(--text-weak-l));--text:hsl(var(--text-h),var(--text-s),var(--text-l));--text-strong:hsl(var(--text-h),var(--text-s),var(--text-strong-l));--scheme-invert-ter:hsl(var(--scheme-h),var(--scheme-s),var(--scheme-invert-ter-l));--scheme-invert-bis:hsl(var(--scheme-h),var(--scheme-s),var(--scheme-invert-bis-l));--scheme-invert:hsl(var(--scheme-h),var(--scheme-s),var(--scheme-invert-l));--link:hsl(var(--link-h),var(--link-s),var(--link-l));--link-text:hsl(var(--link-h),var(--link-s),var(--link-on-scheme-l));--link-text-hover:hsl(var(--link-h),var(--link-s),calc(var(--link-on-scheme-l) + var(--hover-color-l-delta)));--link-text-active:hsl(var(--link-h),var(--link-s),calc(var(--link-on-scheme-l) + var(--active-color-l-delta)));--focus-h:var(--link-h);--focus-s:var(--link-s);--focus-l:var(--link-l);--focus-offset:1px;--focus-style:solid;--focus-width:2px;--focus-shadow-size:0 0 0 0.1875em;--focus-shadow-alpha:0.25;--code:hsl(var(--danger-h),var(--danger-s),var(--danger-on-scheme-l));--code-background:var(--background);--pre:var(--text);--pre-background:var(--background);--shadow:0 0.5em 1em -0.125em hsla(var(--shadow-h),var(--shadow-s),var(--shadow-l),0.1),0 0px 0 1px hsla(var(--shadow-h),var(--shadow-s),var(--shadow-l),0.02)}@media (prefers-color-scheme:light){:root{--scheme-h:221;--scheme-s:14%;--light-l:90%;--light-invert-l:20%;--dark-l:20%;--dark-invert-l:90%;--soft-l:90%;--bold-l:20%;--soft-invert-l:20%;--bold-invert-l:90%;--hover-background-l-delta:-5%;--active-background-l-delta:-10%;--hover-border-l-delta:-10%;--active-border-l-delta:-20%;--hover-color-l-delta:-5%;--active-color-l-delta:-10%;--hover-shadow-a-delta:-0.05;--active-shadow-a-delta:-0.1;--scheme-brightness:light;--scheme-main-l:100%;--scheme-main-bis-l:98%;--scheme-main-ter-l:96%;--background-l:96%;--border-weak-l:93%;--border-l:86%;--text-weak-l:48%;--text-strong-l:21%;--text-title-l:14%;--scheme-invert-ter-l:14%;--scheme-invert-bis-l:7%;--scheme-invert-l:4%;--family-primary:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Lucida Sans Unicode,Lucida Grande,Arial,sans-serif;--family-secondary:Inter,SF Pro,Segoe UI,Roboto,Oxygen,Ubuntu,Helvetica Neue,Helvetica,Arial,sans-serif;--family-code:Inconsolata,Hack,SF Mono,Roboto Mono,Source Code Pro,Ubuntu Mono,monospace;--size-small:0.75rem;--size-normal:1rem;--size-medium:1.25rem;--size-large:1.5rem;--weight-light:300;--weight-normal:400;--weight-medium:500;--weight-semibold:600;--weight-bold:700;--weight-extrabold:800;--block-spacing:1.5rem;--duration:294ms;--easing:ease-out;--radius-small:0.25rem;--radius:0.375rem;--radius-medium:0.5em;--radius-large:0.75rem;--radius-rounded:9999px;--speed:86ms;--arrow-color:var(--link);--loading-color:var(--border);--burger-h:var(--link-h);--burger-s:var(--link-s);--burger-l:var(--link-l);--burger-border-radius:0.5em;--burger-gap:5px;--burger-item-height:2px;--burger-item-width:20px;--white:hsla(var(--white-h),var(--white-s),var(--white-l),1);--white-base:hsla(var(--white-h),var(--white-s),var(--white-l),1);--white-rgb:255,255,255;--white-h:221deg;--white-s:14%;--white-l:100%;--white-invert-l:4%;--white-invert:#090a0c;--white-on-scheme-l:35%;--white-on-scheme:hsla(var(--white-h),var(--white-s),var(--white-on-scheme-l),1);--black:hsla(var(--black-h),var(--black-s),var(--black-l),1);--black-base:hsla(var(--black-h),var(--black-s),var(--black-l),1);--black-rgb:9,10,12;--black-h:221deg;--black-s:14%;--black-l:4%;--black-invert-l:100%;--black-invert:#fff;--black-on-scheme-l:4%;--black-on-scheme:hsla(var(--black-h),var(--black-s),var(--black-on-scheme-l),1);--light:hsla(var(--light-h),var(--light-s),var(--light-l),1);--light-base:hsla(var(--light-h),var(--light-s),var(--light-l),1);--light-rgb:243,244,246;--light-h:221deg;--light-s:14%;--light-l:96%;--light-invert-l:21%;--light-invert:#2e333d;--light-on-scheme-l:36%;--light-on-scheme:hsla(var(--light-h),var(--light-s),var(--light-on-scheme-l),1);--dark:hsla(var(--dark-h),var(--dark-s),var(--dark-l),1);--dark-base:hsla(var(--dark-h),var(--dark-s),var(--dark-l),1);--dark-rgb:46,51,61;--dark-h:221deg;--dark-s:14%;--dark-l:21%;--dark-invert-l:96%;--dark-invert:#f3f4f6;--dark-on-scheme-l:21%;--dark-on-scheme:hsla(var(--dark-h),var(--dark-s),var(--dark-on-scheme-l),1);--text:hsla(var(--text-h),var(--text-s),var(--text-l),1);--text-base:hsla(var(--text-h),var(--text-s),var(--text-l),1);--text-rgb:64,70,84;--text-h:221deg;--text-s:14%;--text-l:29%;--text-00-l:0%;--text-05-l:4%;--text-10-l:9%;--text-15-l:14%;--text-20-l:19%;--text-25-l:24%;--text-30-l:29%;--text-35-l:34%;--text-40-l:39%;--text-45-l:44%;--text-50-l:49%;--text-55-l:54%;--text-60-l:59%;--text-65-l:64%;--text-70-l:69%;--text-75-l:74%;--text-80-l:79%;--text-85-l:84%;--text-90-l:89%;--text-95-l:94%;--text-100-l:99%;--text-00:hsla(var(--text-h),var(--text-s),var(--text-00-l),1);--text-00-invert-l:var(--text-60-l);--text-00-invert:hsla(var(--text-h),var(--text-s),var(--text-00-invert-l),1);--text-05:hsla(var(--text-h),var(--text-s),var(--text-05-l),1);--text-05-invert-l:var(--text-60-l);--text-05-invert:hsla(var(--text-h),var(--text-s),var(--text-05-invert-l),1);--text-10:hsla(var(--text-h),var(--text-s),var(--text-10-l),1);--text-10-invert-l:var(--text-70-l);--text-10-invert:hsla(var(--text-h),var(--text-s),var(--text-10-invert-l),1);--text-15:hsla(var(--text-h),var(--text-s),var(--text-15-l),1);--text-15-invert-l:var(--text-75-l);--text-15-invert:hsla(var(--text-h),var(--text-s),var(--text-15-invert-l),1);--text-20:hsla(var(--text-h),var(--text-s),var(--text-20-l),1);--text-20-invert-l:var(--text-85-l);--text-20-invert:hsla(var(--text-h),var(--text-s),var(--text-20-invert-l),1);--text-25:hsla(var(--text-h),var(--text-s),var(--text-25-l),1);--text-25-invert-l:var(--text-95-l);--text-25-invert:hsla(var(--text-h),var(--text-s),var(--text-25-invert-l),1);--text-30:hsla(var(--text-h),var(--text-s),var(--text-30-l),1);--text-30-invert-l:var(--text-100-l);--text-30-invert:hsla(var(--text-h),var(--text-s),var(--text-30-invert-l),1);--text-35:hsla(var(--text-h),var(--text-s),var(--text-35-l),1);--text-35-invert-l:var(--text-100-l);--text-35-invert:hsla(var(--text-h),var(--text-s),var(--text-35-invert-l),1);--text-40:hsla(var(--text-h),var(--text-s),var(--text-40-l),1);--text-40-invert-l:var(--text-100-l);--text-40-invert:hsla(var(--text-h),var(--text-s),var(--text-40-invert-l),1);--text-45:hsla(var(--text-h),var(--text-s),var(--text-45-l),1);--text-45-invert-l:var(--text-100-l);--text-45-invert:hsla(var(--text-h),var(--text-s),var(--text-45-invert-l),1);--text-50:hsla(var(--text-h),var(--text-s),var(--text-50-l),1);--text-50-invert-l:var(--text-100-l);--text-50-invert:hsla(var(--text-h),var(--text-s),var(--text-50-invert-l),1);--text-55:hsla(var(--text-h),var(--text-s),var(--text-55-l),1);--text-55-invert-l:var(--text-100-l);--text-55-invert:hsla(var(--text-h),var(--text-s),var(--text-55-invert-l),1);--text-60:hsla(var(--text-h),var(--text-s),var(--text-60-l),1);--text-60-invert-l:var(--text-05-l);--text-60-invert:hsla(var(--text-h),var(--text-s),var(--text-60-invert-l),1);--text-65:hsla(var(--text-h),var(--text-s),var(--text-65-l),1);--text-65-invert-l:var(--text-05-l);--text-65-invert:hsla(var(--text-h),var(--text-s),var(--text-65-invert-l),1);--text-70:hsla(var(--text-h),var(--text-s),var(--text-70-l),1);--text-70-invert-l:var(--text-10-l);--text-70-invert:hsla(var(--text-h),var(--text-s),var(--text-70-invert-l),1);--text-75:hsla(var(--text-h),var(--text-s),var(--text-75-l),1);--text-75-invert-l:var(--text-15-l);--text-75-invert:hsla(var(--text-h),var(--text-s),var(--text-75-invert-l),1);--text-80:hsla(var(--text-h),var(--text-s),var(--text-80-l),1);--text-80-invert-l:var(--text-15-l);--text-80-invert:hsla(var(--text-h),var(--text-s),var(--text-80-invert-l),1);--text-85:hsla(var(--text-h),var(--text-s),var(--text-85-l),1);--text-85-invert-l:var(--text-20-l);--text-85-invert:hsla(var(--text-h),var(--text-s),var(--text-85-invert-l),1);--text-90:hsla(var(--text-h),var(--text-s),var(--text-90-l),1);--text-90-invert-l:var(--text-20-l);--text-90-invert:hsla(var(--text-h),var(--text-s),var(--text-90-invert-l),1);--text-95:hsla(var(--text-h),var(--text-s),var(--text-95-l),1);--text-95-invert-l:var(--text-25-l);--text-95-invert:hsla(var(--text-h),var(--text-s),var(--text-95-invert-l),1);--text-100:hsla(var(--text-h),var(--text-s),var(--text-100-l),1);--text-100-invert-l:var(--text-25-l);--text-100-invert:hsla(var(--text-h),var(--text-s),var(--text-100-invert-l),1);--text-invert-l:var(--text-100-l);--text-invert:hsla(var(--text-h),var(--text-s),var(--text-invert-l),1);--text-light-l:var(--text-90-l);--text-light:hsla(var(--text-h),var(--text-s),var(--text-light-l),1);--text-light-invert-l:var(--text-20-l);--text-light-invert:hsla(var(--text-h),var(--text-s),var(--text-light-invert-l),1);--text-dark-l:var(--text-10-l);--text-dark:hsla(var(--text-h),var(--text-s),var(--text-dark-l),1);--text-dark-invert-l:var(--text-70-l);--text-dark-invert:hsla(var(--text-h),var(--text-s),var(--text-dark-invert-l),1);--text-soft:hsla(var(--text-h),var(--text-s),var(--soft-l),1);--text-bold:hsla(var(--text-h),var(--text-s),var(--bold-l),1);--text-soft-invert:hsla(var(--text-h),var(--text-s),var(--soft-invert-l),1);--text-bold-invert:hsla(var(--text-h),var(--text-s),var(--bold-invert-l),1);--text-on-scheme-l:29%;--text-on-scheme:hsla(var(--text-h),var(--text-s),var(--text-on-scheme-l),1);--primary:hsla(var(--primary-h),var(--primary-s),var(--primary-l),1);--primary-base:hsla(var(--primary-h),var(--primary-s),var(--primary-l),1);--primary-rgb:0,209,178;--primary-h:171deg;--primary-s:100%;--primary-l:41%;--primary-00-l:1%;--primary-05-l:6%;--primary-10-l:11%;--primary-15-l:16%;--primary-20-l:21%;--primary-25-l:26%;--primary-30-l:31%;--primary-35-l:36%;--primary-40-l:41%;--primary-45-l:46%;--primary-50-l:51%;--primary-55-l:56%;--primary-60-l:61%;--primary-65-l:66%;--primary-70-l:71%;--primary-75-l:76%;--primary-80-l:81%;--primary-85-l:86%;--primary-90-l:91%;--primary-95-l:96%;--primary-100-l:100%;--primary-00:hsla(var(--primary-h),var(--primary-s),var(--primary-00-l),1);--primary-00-invert-l:var(--primary-30-l);--primary-00-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-00-invert-l),1);--primary-05:hsla(var(--primary-h),var(--primary-s),var(--primary-05-l),1);--primary-05-invert-l:var(--primary-40-l);--primary-05-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-05-invert-l),1);--primary-10:hsla(var(--primary-h),var(--primary-s),var(--primary-10-l),1);--primary-10-invert-l:var(--primary-50-l);--primary-10-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-10-invert-l),1);--primary-15:hsla(var(--primary-h),var(--primary-s),var(--primary-15-l),1);--primary-15-invert-l:var(--primary-100-l);--primary-15-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-15-invert-l),1);--primary-20:hsla(var(--primary-h),var(--primary-s),var(--primary-20-l),1);--primary-20-invert-l:var(--primary-100-l);--primary-20-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-20-invert-l),1);--primary-25:hsla(var(--primary-h),var(--primary-s),var(--primary-25-l),1);--primary-25-invert-l:var(--primary-100-l);--primary-25-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-25-invert-l),1);--primary-30:hsla(var(--primary-h),var(--primary-s),var(--primary-30-l),1);--primary-30-invert-l:var(--primary-00-l);--primary-30-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-30-invert-l),1);--primary-35:hsla(var(--primary-h),var(--primary-s),var(--primary-35-l),1);--primary-35-invert-l:var(--primary-00-l);--primary-35-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-35-invert-l),1);--primary-40:hsla(var(--primary-h),var(--primary-s),var(--primary-40-l),1);--primary-40-invert-l:var(--primary-05-l);--primary-40-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-40-invert-l),1);--primary-45:hsla(var(--primary-h),var(--primary-s),var(--primary-45-l),1);--primary-45-invert-l:var(--primary-05-l);--primary-45-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-45-invert-l),1);--primary-50:hsla(var(--primary-h),var(--primary-s),var(--primary-50-l),1);--primary-50-invert-l:var(--primary-10-l);--primary-50-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-50-invert-l),1);--primary-55:hsla(var(--primary-h),var(--primary-s),var(--primary-55-l),1);--primary-55-invert-l:var(--primary-10-l);--primary-55-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-55-invert-l),1);--primary-60:hsla(var(--primary-h),var(--primary-s),var(--primary-60-l),1);--primary-60-invert-l:var(--primary-10-l);--primary-60-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-60-invert-l),1);--primary-65:hsla(var(--primary-h),var(--primary-s),var(--primary-65-l),1);--primary-65-invert-l:var(--primary-10-l);--primary-65-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-65-invert-l),1);--primary-70:hsla(var(--primary-h),var(--primary-s),var(--primary-70-l),1);--primary-70-invert-l:var(--primary-10-l);--primary-70-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-70-invert-l),1);--primary-75:hsla(var(--primary-h),var(--primary-s),var(--primary-75-l),1);--primary-75-invert-l:var(--primary-10-l);--primary-75-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-75-invert-l),1);--primary-80:hsla(var(--primary-h),var(--primary-s),var(--primary-80-l),1);--primary-80-invert-l:var(--primary-10-l);--primary-80-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-80-invert-l),1);--primary-85:hsla(var(--primary-h),var(--primary-s),var(--primary-85-l),1);--primary-85-invert-l:var(--primary-10-l);--primary-85-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-85-invert-l),1);--primary-90:hsla(var(--primary-h),var(--primary-s),var(--primary-90-l),1);--primary-90-invert-l:var(--primary-10-l);--primary-90-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-90-invert-l),1);--primary-95:hsla(var(--primary-h),var(--primary-s),var(--primary-95-l),1);--primary-95-invert-l:var(--primary-10-l);--primary-95-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-95-invert-l),1);--primary-100:hsla(var(--primary-h),var(--primary-s),var(--primary-100-l),1);--primary-100-invert-l:var(--primary-15-l);--primary-100-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-100-invert-l),1);--primary-invert-l:var(--primary-05-l);--primary-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-invert-l),1);--primary-light-l:var(--primary-90-l);--primary-light:hsla(var(--primary-h),var(--primary-s),var(--primary-light-l),1);--primary-light-invert-l:var(--primary-10-l);--primary-light-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-light-invert-l),1);--primary-dark-l:var(--primary-10-l);--primary-dark:hsla(var(--primary-h),var(--primary-s),var(--primary-dark-l),1);--primary-dark-invert-l:var(--primary-50-l);--primary-dark-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-dark-invert-l),1);--primary-soft:hsla(var(--primary-h),var(--primary-s),var(--soft-l),1);--primary-bold:hsla(var(--primary-h),var(--primary-s),var(--bold-l),1);--primary-soft-invert:hsla(var(--primary-h),var(--primary-s),var(--soft-invert-l),1);--primary-bold-invert:hsla(var(--primary-h),var(--primary-s),var(--bold-invert-l),1);--primary-on-scheme-l:21%;--primary-on-scheme:hsla(var(--primary-h),var(--primary-s),var(--primary-on-scheme-l),1);--link:hsla(var(--link-h),var(--link-s),var(--link-l),1);--link-base:hsla(var(--link-h),var(--link-s),var(--link-l),1);--link-rgb:66,88,255;--link-h:233deg;--link-s:100%;--link-l:63%;--link-00-l:0%;--link-05-l:3%;--link-10-l:8%;--link-15-l:13%;--link-20-l:18%;--link-25-l:23%;--link-30-l:28%;--link-35-l:33%;--link-40-l:38%;--link-45-l:43%;--link-50-l:48%;--link-55-l:53%;--link-60-l:58%;--link-65-l:63%;--link-70-l:68%;--link-75-l:73%;--link-80-l:78%;--link-85-l:83%;--link-90-l:88%;--link-95-l:93%;--link-100-l:98%;--link-00:hsla(var(--link-h),var(--link-s),var(--link-00-l),1);--link-00-invert-l:var(--link-75-l);--link-00-invert:hsla(var(--link-h),var(--link-s),var(--link-00-invert-l),1);--link-05:hsla(var(--link-h),var(--link-s),var(--link-05-l),1);--link-05-invert-l:var(--link-75-l);--link-05-invert:hsla(var(--link-h),var(--link-s),var(--link-05-invert-l),1);--link-10:hsla(var(--link-h),var(--link-s),var(--link-10-l),1);--link-10-invert-l:var(--link-75-l);--link-10-invert:hsla(var(--link-h),var(--link-s),var(--link-10-invert-l),1);--link-15:hsla(var(--link-h),var(--link-s),var(--link-15-l),1);--link-15-invert-l:var(--link-80-l);--link-15-invert:hsla(var(--link-h),var(--link-s),var(--link-15-invert-l),1);--link-20:hsla(var(--link-h),var(--link-s),var(--link-20-l),1);--link-20-invert-l:var(--link-80-l);--link-20-invert:hsla(var(--link-h),var(--link-s),var(--link-20-invert-l),1);--link-25:hsla(var(--link-h),var(--link-s),var(--link-25-l),1);--link-25-invert-l:var(--link-85-l);--link-25-invert:hsla(var(--link-h),var(--link-s),var(--link-25-invert-l),1);--link-30:hsla(var(--link-h),var(--link-s),var(--link-30-l),1);--link-30-invert-l:var(--link-90-l);--link-30-invert:hsla(var(--link-h),var(--link-s),var(--link-30-invert-l),1);--link-35:hsla(var(--link-h),var(--link-s),var(--link-35-l),1);--link-35-invert-l:var(--link-90-l);--link-35-invert:hsla(var(--link-h),var(--link-s),var(--link-35-invert-l),1);--link-40:hsla(var(--link-h),var(--link-s),var(--link-40-l),1);--link-40-invert-l:var(--link-95-l);--link-40-invert:hsla(var(--link-h),var(--link-s),var(--link-40-invert-l),1);--link-45:hsla(var(--link-h),var(--link-s),var(--link-45-l),1);--link-45-invert-l:var(--link-100-l);--link-45-invert:hsla(var(--link-h),var(--link-s),var(--link-45-invert-l),1);--link-50:hsla(var(--link-h),var(--link-s),var(--link-50-l),1);--link-50-invert-l:var(--link-100-l);--link-50-invert:hsla(var(--link-h),var(--link-s),var(--link-50-invert-l),1);--link-55:hsla(var(--link-h),var(--link-s),var(--link-55-l),1);--link-55-invert-l:var(--link-100-l);--link-55-invert:hsla(var(--link-h),var(--link-s),var(--link-55-invert-l),1);--link-60:hsla(var(--link-h),var(--link-s),var(--link-60-l),1);--link-60-invert-l:var(--link-100-l);--link-60-invert:hsla(var(--link-h),var(--link-s),var(--link-60-invert-l),1);--link-65:hsla(var(--link-h),var(--link-s),var(--link-65-l),1);--link-65-invert-l:var(--link-100-l);--link-65-invert:hsla(var(--link-h),var(--link-s),var(--link-65-invert-l),1);--link-70:hsla(var(--link-h),var(--link-s),var(--link-70-l),1);--link-70-invert-l:var(--link-100-l);--link-70-invert:hsla(var(--link-h),var(--link-s),var(--link-70-invert-l),1);--link-75:hsla(var(--link-h),var(--link-s),var(--link-75-l),1);--link-75-invert-l:var(--link-10-l);--link-75-invert:hsla(var(--link-h),var(--link-s),var(--link-75-invert-l),1);--link-80:hsla(var(--link-h),var(--link-s),var(--link-80-l),1);--link-80-invert-l:var(--link-20-l);--link-80-invert:hsla(var(--link-h),var(--link-s),var(--link-80-invert-l),1);--link-85:hsla(var(--link-h),var(--link-s),var(--link-85-l),1);--link-85-invert-l:var(--link-25-l);--link-85-invert:hsla(var(--link-h),var(--link-s),var(--link-85-invert-l),1);--link-90:hsla(var(--link-h),var(--link-s),var(--link-90-l),1);--link-90-invert-l:var(--link-35-l);--link-90-invert:hsla(var(--link-h),var(--link-s),var(--link-90-invert-l),1);--link-95:hsla(var(--link-h),var(--link-s),var(--link-95-l),1);--link-95-invert-l:var(--link-40-l);--link-95-invert:hsla(var(--link-h),var(--link-s),var(--link-95-invert-l),1);--link-100:hsla(var(--link-h),var(--link-s),var(--link-100-l),1);--link-100-invert-l:var(--link-50-l);--link-100-invert:hsla(var(--link-h),var(--link-s),var(--link-100-invert-l),1);--link-invert-l:var(--link-100-l);--link-invert:hsla(var(--link-h),var(--link-s),var(--link-invert-l),1);--link-light-l:var(--link-90-l);--link-light:hsla(var(--link-h),var(--link-s),var(--link-light-l),1);--link-light-invert-l:var(--link-35-l);--link-light-invert:hsla(var(--link-h),var(--link-s),var(--link-light-invert-l),1);--link-dark-l:var(--link-10-l);--link-dark:hsla(var(--link-h),var(--link-s),var(--link-dark-l),1);--link-dark-invert-l:var(--link-75-l);--link-dark-invert:hsla(var(--link-h),var(--link-s),var(--link-dark-invert-l),1);--link-soft:hsla(var(--link-h),var(--link-s),var(--soft-l),1);--link-bold:hsla(var(--link-h),var(--link-s),var(--bold-l),1);--link-soft-invert:hsla(var(--link-h),var(--link-s),var(--soft-invert-l),1);--link-bold-invert:hsla(var(--link-h),var(--link-s),var(--bold-invert-l),1);--link-on-scheme-l:58%;--link-on-scheme:hsla(var(--link-h),var(--link-s),var(--link-on-scheme-l),1);--info:hsla(var(--info-h),var(--info-s),var(--info-l),1);--info-base:hsla(var(--info-h),var(--info-s),var(--info-l),1);--info-rgb:102,209,255;--info-h:198deg;--info-s:100%;--info-l:70%;--info-00-l:0%;--info-05-l:5%;--info-10-l:10%;--info-15-l:15%;--info-20-l:20%;--info-25-l:25%;--info-30-l:30%;--info-35-l:35%;--info-40-l:40%;--info-45-l:45%;--info-50-l:50%;--info-55-l:55%;--info-60-l:60%;--info-65-l:65%;--info-70-l:70%;--info-75-l:75%;--info-80-l:80%;--info-85-l:85%;--info-90-l:90%;--info-95-l:95%;--info-100-l:100%;--info-00:hsla(var(--info-h),var(--info-s),var(--info-00-l),1);--info-00-invert-l:var(--info-45-l);--info-00-invert:hsla(var(--info-h),var(--info-s),var(--info-00-invert-l),1);--info-05:hsla(var(--info-h),var(--info-s),var(--info-05-l),1);--info-05-invert-l:var(--info-50-l);--info-05-invert:hsla(var(--info-h),var(--info-s),var(--info-05-invert-l),1);--info-10:hsla(var(--info-h),var(--info-s),var(--info-10-l),1);--info-10-invert-l:var(--info-60-l);--info-10-invert:hsla(var(--info-h),var(--info-s),var(--info-10-invert-l),1);--info-15:hsla(var(--info-h),var(--info-s),var(--info-15-l),1);--info-15-invert-l:var(--info-80-l);--info-15-invert:hsla(var(--info-h),var(--info-s),var(--info-15-invert-l),1);--info-20:hsla(var(--info-h),var(--info-s),var(--info-20-l),1);--info-20-invert-l:var(--info-95-l);--info-20-invert:hsla(var(--info-h),var(--info-s),var(--info-20-invert-l),1);--info-25:hsla(var(--info-h),var(--info-s),var(--info-25-l),1);--info-25-invert-l:var(--info-100-l);--info-25-invert:hsla(var(--info-h),var(--info-s),var(--info-25-invert-l),1);--info-30:hsla(var(--info-h),var(--info-s),var(--info-30-l),1);--info-30-invert-l:var(--info-100-l);--info-30-invert:hsla(var(--info-h),var(--info-s),var(--info-30-invert-l),1);--info-35:hsla(var(--info-h),var(--info-s),var(--info-35-l),1);--info-35-invert-l:var(--info-100-l);--info-35-invert:hsla(var(--info-h),var(--info-s),var(--info-35-invert-l),1);--info-40:hsla(var(--info-h),var(--info-s),var(--info-40-l),1);--info-40-invert-l:var(--info-100-l);--info-40-invert:hsla(var(--info-h),var(--info-s),var(--info-40-invert-l),1);--info-45:hsla(var(--info-h),var(--info-s),var(--info-45-l),1);--info-45-invert-l:var(--info-00-l);--info-45-invert:hsla(var(--info-h),var(--info-s),var(--info-45-invert-l),1);--info-50:hsla(var(--info-h),var(--info-s),var(--info-50-l),1);--info-50-invert-l:var(--info-05-l);--info-50-invert:hsla(var(--info-h),var(--info-s),var(--info-50-invert-l),1);--info-55:hsla(var(--info-h),var(--info-s),var(--info-55-l),1);--info-55-invert-l:var(--info-05-l);--info-55-invert:hsla(var(--info-h),var(--info-s),var(--info-55-invert-l),1);--info-60:hsla(var(--info-h),var(--info-s),var(--info-60-l),1);--info-60-invert-l:var(--info-10-l);--info-60-invert:hsla(var(--info-h),var(--info-s),var(--info-60-invert-l),1);--info-65:hsla(var(--info-h),var(--info-s),var(--info-65-l),1);--info-65-invert-l:var(--info-10-l);--info-65-invert:hsla(var(--info-h),var(--info-s),var(--info-65-invert-l),1);--info-70:hsla(var(--info-h),var(--info-s),var(--info-70-l),1);--info-70-invert-l:var(--info-10-l);--info-70-invert:hsla(var(--info-h),var(--info-s),var(--info-70-invert-l),1);--info-75:hsla(var(--info-h),var(--info-s),var(--info-75-l),1);--info-75-invert-l:var(--info-10-l);--info-75-invert:hsla(var(--info-h),var(--info-s),var(--info-75-invert-l),1);--info-80:hsla(var(--info-h),var(--info-s),var(--info-80-l),1);--info-80-invert-l:var(--info-15-l);--info-80-invert:hsla(var(--info-h),var(--info-s),var(--info-80-invert-l),1);--info-85:hsla(var(--info-h),var(--info-s),var(--info-85-l),1);--info-85-invert-l:var(--info-15-l);--info-85-invert:hsla(var(--info-h),var(--info-s),var(--info-85-invert-l),1);--info-90:hsla(var(--info-h),var(--info-s),var(--info-90-l),1);--info-90-invert-l:var(--info-15-l);--info-90-invert:hsla(var(--info-h),var(--info-s),var(--info-90-invert-l),1);--info-95:hsla(var(--info-h),var(--info-s),var(--info-95-l),1);--info-95-invert-l:var(--info-20-l);--info-95-invert:hsla(var(--info-h),var(--info-s),var(--info-95-invert-l),1);--info-100:hsla(var(--info-h),var(--info-s),var(--info-100-l),1);--info-100-invert-l:var(--info-20-l);--info-100-invert:hsla(var(--info-h),var(--info-s),var(--info-100-invert-l),1);--info-invert-l:var(--info-10-l);--info-invert:hsla(var(--info-h),var(--info-s),var(--info-invert-l),1);--info-light-l:var(--info-90-l);--info-light:hsla(var(--info-h),var(--info-s),var(--info-light-l),1);--info-light-invert-l:var(--info-15-l);--info-light-invert:hsla(var(--info-h),var(--info-s),var(--info-light-invert-l),1);--info-dark-l:var(--info-10-l);--info-dark:hsla(var(--info-h),var(--info-s),var(--info-dark-l),1);--info-dark-invert-l:var(--info-60-l);--info-dark-invert:hsla(var(--info-h),var(--info-s),var(--info-dark-invert-l),1);--info-soft:hsla(var(--info-h),var(--info-s),var(--soft-l),1);--info-bold:hsla(var(--info-h),var(--info-s),var(--bold-l),1);--info-soft-invert:hsla(var(--info-h),var(--info-s),var(--soft-invert-l),1);--info-bold-invert:hsla(var(--info-h),var(--info-s),var(--bold-invert-l),1);--info-on-scheme-l:25%;--info-on-scheme:hsla(var(--info-h),var(--info-s),var(--info-on-scheme-l),1);--success:hsla(var(--success-h),var(--success-s),var(--success-l),1);--success-base:hsla(var(--success-h),var(--success-s),var(--success-l),1);--success-rgb:72,199,142;--success-h:153deg;--success-s:53%;--success-l:53%;--success-00-l:0%;--success-05-l:3%;--success-10-l:8%;--success-15-l:13%;--success-20-l:18%;--success-25-l:23%;--success-30-l:28%;--success-35-l:33%;--success-40-l:38%;--success-45-l:43%;--success-50-l:48%;--success-55-l:53%;--success-60-l:58%;--success-65-l:63%;--success-70-l:68%;--success-75-l:73%;--success-80-l:78%;--success-85-l:83%;--success-90-l:88%;--success-95-l:93%;--success-100-l:98%;--success-00:hsla(var(--success-h),var(--success-s),var(--success-00-l),1);--success-00-invert-l:var(--success-45-l);--success-00-invert:hsla(var(--success-h),var(--success-s),var(--success-00-invert-l),1);--success-05:hsla(var(--success-h),var(--success-s),var(--success-05-l),1);--success-05-invert-l:var(--success-45-l);--success-05-invert:hsla(var(--success-h),var(--success-s),var(--success-05-invert-l),1);--success-10:hsla(var(--success-h),var(--success-s),var(--success-10-l),1);--success-10-invert-l:var(--success-55-l);--success-10-invert:hsla(var(--success-h),var(--success-s),var(--success-10-invert-l),1);--success-15:hsla(var(--success-h),var(--success-s),var(--success-15-l),1);--success-15-invert-l:var(--success-75-l);--success-15-invert:hsla(var(--success-h),var(--success-s),var(--success-15-invert-l),1);--success-20:hsla(var(--success-h),var(--success-s),var(--success-20-l),1);--success-20-invert-l:var(--success-90-l);--success-20-invert:hsla(var(--success-h),var(--success-s),var(--success-20-invert-l),1);--success-25:hsla(var(--success-h),var(--success-s),var(--success-25-l),1);--success-25-invert-l:var(--success-100-l);--success-25-invert:hsla(var(--success-h),var(--success-s),var(--success-25-invert-l),1);--success-30:hsla(var(--success-h),var(--success-s),var(--success-30-l),1);--success-30-invert-l:var(--success-100-l);--success-30-invert:hsla(var(--success-h),var(--success-s),var(--success-30-invert-l),1);--success-35:hsla(var(--success-h),var(--success-s),var(--success-35-l),1);--success-35-invert-l:var(--success-100-l);--success-35-invert:hsla(var(--success-h),var(--success-s),var(--success-35-invert-l),1);--success-40:hsla(var(--success-h),var(--success-s),var(--success-40-l),1);--success-40-invert-l:var(--success-100-l);--success-40-invert:hsla(var(--success-h),var(--success-s),var(--success-40-invert-l),1);--success-45:hsla(var(--success-h),var(--success-s),var(--success-45-l),1);--success-45-invert-l:var(--success-05-l);--success-45-invert:hsla(var(--success-h),var(--success-s),var(--success-45-invert-l),1);--success-50:hsla(var(--success-h),var(--success-s),var(--success-50-l),1);--success-50-invert-l:var(--success-05-l);--success-50-invert:hsla(var(--success-h),var(--success-s),var(--success-50-invert-l),1);--success-55:hsla(var(--success-h),var(--success-s),var(--success-55-l),1);--success-55-invert-l:var(--success-10-l);--success-55-invert:hsla(var(--success-h),var(--success-s),var(--success-55-invert-l),1);--success-60:hsla(var(--success-h),var(--success-s),var(--success-60-l),1);--success-60-invert-l:var(--success-10-l);--success-60-invert:hsla(var(--success-h),var(--success-s),var(--success-60-invert-l),1);--success-65:hsla(var(--success-h),var(--success-s),var(--success-65-l),1);--success-65-invert-l:var(--success-10-l);--success-65-invert:hsla(var(--success-h),var(--success-s),var(--success-65-invert-l),1);--success-70:hsla(var(--success-h),var(--success-s),var(--success-70-l),1);--success-70-invert-l:var(--success-10-l);--success-70-invert:hsla(var(--success-h),var(--success-s),var(--success-70-invert-l),1);--success-75:hsla(var(--success-h),var(--success-s),var(--success-75-l),1);--success-75-invert-l:var(--success-15-l);--success-75-invert:hsla(var(--success-h),var(--success-s),var(--success-75-invert-l),1);--success-80:hsla(var(--success-h),var(--success-s),var(--success-80-l),1);--success-80-invert-l:var(--success-15-l);--success-80-invert:hsla(var(--success-h),var(--success-s),var(--success-80-invert-l),1);--success-85:hsla(var(--success-h),var(--success-s),var(--success-85-l),1);--success-85-invert-l:var(--success-15-l);--success-85-invert:hsla(var(--success-h),var(--success-s),var(--success-85-invert-l),1);--success-90:hsla(var(--success-h),var(--success-s),var(--success-90-l),1);--success-90-invert-l:var(--success-20-l);--success-90-invert:hsla(var(--success-h),var(--success-s),var(--success-90-invert-l),1);--success-95:hsla(var(--success-h),var(--success-s),var(--success-95-l),1);--success-95-invert-l:var(--success-20-l);--success-95-invert:hsla(var(--success-h),var(--success-s),var(--success-95-invert-l),1);--success-100:hsla(var(--success-h),var(--success-s),var(--success-100-l),1);--success-100-invert-l:var(--success-20-l);--success-100-invert:hsla(var(--success-h),var(--success-s),var(--success-100-invert-l),1);--success-invert-l:var(--success-10-l);--success-invert:hsla(var(--success-h),var(--success-s),var(--success-invert-l),1);--success-light-l:var(--success-90-l);--success-light:hsla(var(--success-h),var(--success-s),var(--success-light-l),1);--success-light-invert-l:var(--success-20-l);--success-light-invert:hsla(var(--success-h),var(--success-s),var(--success-light-invert-l),1);--success-dark-l:var(--success-10-l);--success-dark:hsla(var(--success-h),var(--success-s),var(--success-dark-l),1);--success-dark-invert-l:var(--success-55-l);--success-dark-invert:hsla(var(--success-h),var(--success-s),var(--success-dark-invert-l),1);--success-soft:hsla(var(--success-h),var(--success-s),var(--soft-l),1);--success-bold:hsla(var(--success-h),var(--success-s),var(--bold-l),1);--success-soft-invert:hsla(var(--success-h),var(--success-s),var(--soft-invert-l),1);--success-bold-invert:hsla(var(--success-h),var(--success-s),var(--bold-invert-l),1);--success-on-scheme-l:23%;--success-on-scheme:hsla(var(--success-h),var(--success-s),var(--success-on-scheme-l),1);--warning:hsla(var(--warning-h),var(--warning-s),var(--warning-l),1);--warning-base:hsla(var(--warning-h),var(--warning-s),var(--warning-l),1);--warning-rgb:255,183,15;--warning-h:42deg;--warning-s:100%;--warning-l:53%;--warning-00-l:0%;--warning-05-l:3%;--warning-10-l:8%;--warning-15-l:13%;--warning-20-l:18%;--warning-25-l:23%;--warning-30-l:28%;--warning-35-l:33%;--warning-40-l:38%;--warning-45-l:43%;--warning-50-l:48%;--warning-55-l:53%;--warning-60-l:58%;--warning-65-l:63%;--warning-70-l:68%;--warning-75-l:73%;--warning-80-l:78%;--warning-85-l:83%;--warning-90-l:88%;--warning-95-l:93%;--warning-100-l:98%;--warning-00:hsla(var(--warning-h),var(--warning-s),var(--warning-00-l),1);--warning-00-invert-l:var(--warning-40-l);--warning-00-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-00-invert-l),1);--warning-05:hsla(var(--warning-h),var(--warning-s),var(--warning-05-l),1);--warning-05-invert-l:var(--warning-45-l);--warning-05-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-05-invert-l),1);--warning-10:hsla(var(--warning-h),var(--warning-s),var(--warning-10-l),1);--warning-10-invert-l:var(--warning-50-l);--warning-10-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-10-invert-l),1);--warning-15:hsla(var(--warning-h),var(--warning-s),var(--warning-15-l),1);--warning-15-invert-l:var(--warning-70-l);--warning-15-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-15-invert-l),1);--warning-20:hsla(var(--warning-h),var(--warning-s),var(--warning-20-l),1);--warning-20-invert-l:var(--warning-100-l);--warning-20-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-20-invert-l),1);--warning-25:hsla(var(--warning-h),var(--warning-s),var(--warning-25-l),1);--warning-25-invert-l:var(--warning-100-l);--warning-25-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-25-invert-l),1);--warning-30:hsla(var(--warning-h),var(--warning-s),var(--warning-30-l),1);--warning-30-invert-l:var(--warning-100-l);--warning-30-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-30-invert-l),1);--warning-35:hsla(var(--warning-h),var(--warning-s),var(--warning-35-l),1);--warning-35-invert-l:var(--warning-100-l);--warning-35-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-35-invert-l),1);--warning-40:hsla(var(--warning-h),var(--warning-s),var(--warning-40-l),1);--warning-40-invert-l:var(--warning-00-l);--warning-40-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-40-invert-l),1);--warning-45:hsla(var(--warning-h),var(--warning-s),var(--warning-45-l),1);--warning-45-invert-l:var(--warning-05-l);--warning-45-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-45-invert-l),1);--warning-50:hsla(var(--warning-h),var(--warning-s),var(--warning-50-l),1);--warning-50-invert-l:var(--warning-10-l);--warning-50-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-50-invert-l),1);--warning-55:hsla(var(--warning-h),var(--warning-s),var(--warning-55-l),1);--warning-55-invert-l:var(--warning-10-l);--warning-55-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-55-invert-l),1);--warning-60:hsla(var(--warning-h),var(--warning-s),var(--warning-60-l),1);--warning-60-invert-l:var(--warning-10-l);--warning-60-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-60-invert-l),1);--warning-65:hsla(var(--warning-h),var(--warning-s),var(--warning-65-l),1);--warning-65-invert-l:var(--warning-10-l);--warning-65-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-65-invert-l),1);--warning-70:hsla(var(--warning-h),var(--warning-s),var(--warning-70-l),1);--warning-70-invert-l:var(--warning-15-l);--warning-70-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-70-invert-l),1);--warning-75:hsla(var(--warning-h),var(--warning-s),var(--warning-75-l),1);--warning-75-invert-l:var(--warning-15-l);--warning-75-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-75-invert-l),1);--warning-80:hsla(var(--warning-h),var(--warning-s),var(--warning-80-l),1);--warning-80-invert-l:var(--warning-15-l);--warning-80-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-80-invert-l),1);--warning-85:hsla(var(--warning-h),var(--warning-s),var(--warning-85-l),1);--warning-85-invert-l:var(--warning-15-l);--warning-85-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-85-invert-l),1);--warning-90:hsla(var(--warning-h),var(--warning-s),var(--warning-90-l),1);--warning-90-invert-l:var(--warning-15-l);--warning-90-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-90-invert-l),1);--warning-95:hsla(var(--warning-h),var(--warning-s),var(--warning-95-l),1);--warning-95-invert-l:var(--warning-15-l);--warning-95-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-95-invert-l),1);--warning-100:hsla(var(--warning-h),var(--warning-s),var(--warning-100-l),1);--warning-100-invert-l:var(--warning-20-l);--warning-100-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-100-invert-l),1);--warning-invert-l:var(--warning-10-l);--warning-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-invert-l),1);--warning-light-l:var(--warning-90-l);--warning-light:hsla(var(--warning-h),var(--warning-s),var(--warning-light-l),1);--warning-light-invert-l:var(--warning-15-l);--warning-light-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-light-invert-l),1);--warning-dark-l:var(--warning-10-l);--warning-dark:hsla(var(--warning-h),var(--warning-s),var(--warning-dark-l),1);--warning-dark-invert-l:var(--warning-50-l);--warning-dark-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-dark-invert-l),1);--warning-soft:hsla(var(--warning-h),var(--warning-s),var(--soft-l),1);--warning-bold:hsla(var(--warning-h),var(--warning-s),var(--bold-l),1);--warning-soft-invert:hsla(var(--warning-h),var(--warning-s),var(--soft-invert-l),1);--warning-bold-invert:hsla(var(--warning-h),var(--warning-s),var(--bold-invert-l),1);--warning-on-scheme-l:23%;--warning-on-scheme:hsla(var(--warning-h),var(--warning-s),var(--warning-on-scheme-l),1);--danger:hsla(var(--danger-h),var(--danger-s),var(--danger-l),1);--danger-base:hsla(var(--danger-h),var(--danger-s),var(--danger-l),1);--danger-rgb:255,102,133;--danger-h:348deg;--danger-s:100%;--danger-l:70%;--danger-00-l:0%;--danger-05-l:5%;--danger-10-l:10%;--danger-15-l:15%;--danger-20-l:20%;--danger-25-l:25%;--danger-30-l:30%;--danger-35-l:35%;--danger-40-l:40%;--danger-45-l:45%;--danger-50-l:50%;--danger-55-l:55%;--danger-60-l:60%;--danger-65-l:65%;--danger-70-l:70%;--danger-75-l:75%;--danger-80-l:80%;--danger-85-l:85%;--danger-90-l:90%;--danger-95-l:95%;--danger-100-l:100%;--danger-00:hsla(var(--danger-h),var(--danger-s),var(--danger-00-l),1);--danger-00-invert-l:var(--danger-65-l);--danger-00-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-00-invert-l),1);--danger-05:hsla(var(--danger-h),var(--danger-s),var(--danger-05-l),1);--danger-05-invert-l:var(--danger-70-l);--danger-05-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-05-invert-l),1);--danger-10:hsla(var(--danger-h),var(--danger-s),var(--danger-10-l),1);--danger-10-invert-l:var(--danger-75-l);--danger-10-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-10-invert-l),1);--danger-15:hsla(var(--danger-h),var(--danger-s),var(--danger-15-l),1);--danger-15-invert-l:var(--danger-80-l);--danger-15-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-15-invert-l),1);--danger-20:hsla(var(--danger-h),var(--danger-s),var(--danger-20-l),1);--danger-20-invert-l:var(--danger-85-l);--danger-20-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-20-invert-l),1);--danger-25:hsla(var(--danger-h),var(--danger-s),var(--danger-25-l),1);--danger-25-invert-l:var(--danger-90-l);--danger-25-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-25-invert-l),1);--danger-30:hsla(var(--danger-h),var(--danger-s),var(--danger-30-l),1);--danger-30-invert-l:var(--danger-100-l);--danger-30-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-30-invert-l),1);--danger-35:hsla(var(--danger-h),var(--danger-s),var(--danger-35-l),1);--danger-35-invert-l:var(--danger-100-l);--danger-35-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-35-invert-l),1);--danger-40:hsla(var(--danger-h),var(--danger-s),var(--danger-40-l),1);--danger-40-invert-l:var(--danger-100-l);--danger-40-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-40-invert-l),1);--danger-45:hsla(var(--danger-h),var(--danger-s),var(--danger-45-l),1);--danger-45-invert-l:var(--danger-100-l);--danger-45-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-45-invert-l),1);--danger-50:hsla(var(--danger-h),var(--danger-s),var(--danger-50-l),1);--danger-50-invert-l:var(--danger-100-l);--danger-50-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-50-invert-l),1);--danger-55:hsla(var(--danger-h),var(--danger-s),var(--danger-55-l),1);--danger-55-invert-l:var(--danger-100-l);--danger-55-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-55-invert-l),1);--danger-60:hsla(var(--danger-h),var(--danger-s),var(--danger-60-l),1);--danger-60-invert-l:var(--danger-100-l);--danger-60-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-60-invert-l),1);--danger-65:hsla(var(--danger-h),var(--danger-s),var(--danger-65-l),1);--danger-65-invert-l:var(--danger-00-l);--danger-65-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-65-invert-l),1);--danger-70:hsla(var(--danger-h),var(--danger-s),var(--danger-70-l),1);--danger-70-invert-l:var(--danger-05-l);--danger-70-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-70-invert-l),1);--danger-75:hsla(var(--danger-h),var(--danger-s),var(--danger-75-l),1);--danger-75-invert-l:var(--danger-10-l);--danger-75-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-75-invert-l),1);--danger-80:hsla(var(--danger-h),var(--danger-s),var(--danger-80-l),1);--danger-80-invert-l:var(--danger-15-l);--danger-80-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-80-invert-l),1);--danger-85:hsla(var(--danger-h),var(--danger-s),var(--danger-85-l),1);--danger-85-invert-l:var(--danger-20-l);--danger-85-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-85-invert-l),1);--danger-90:hsla(var(--danger-h),var(--danger-s),var(--danger-90-l),1);--danger-90-invert-l:var(--danger-25-l);--danger-90-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-90-invert-l),1);--danger-95:hsla(var(--danger-h),var(--danger-s),var(--danger-95-l),1);--danger-95-invert-l:var(--danger-25-l);--danger-95-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-95-invert-l),1);--danger-100:hsla(var(--danger-h),var(--danger-s),var(--danger-100-l),1);--danger-100-invert-l:var(--danger-30-l);--danger-100-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-100-invert-l),1);--danger-invert-l:var(--danger-05-l);--danger-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-invert-l),1);--danger-light-l:var(--danger-90-l);--danger-light:hsla(var(--danger-h),var(--danger-s),var(--danger-light-l),1);--danger-light-invert-l:var(--danger-25-l);--danger-light-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-light-invert-l),1);--danger-dark-l:var(--danger-10-l);--danger-dark:hsla(var(--danger-h),var(--danger-s),var(--danger-dark-l),1);--danger-dark-invert-l:var(--danger-75-l);--danger-dark-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-dark-invert-l),1);--danger-soft:hsla(var(--danger-h),var(--danger-s),var(--soft-l),1);--danger-bold:hsla(var(--danger-h),var(--danger-s),var(--bold-l),1);--danger-soft-invert:hsla(var(--danger-h),var(--danger-s),var(--soft-invert-l),1);--danger-bold-invert:hsla(var(--danger-h),var(--danger-s),var(--bold-invert-l),1);--danger-on-scheme-l:40%;--danger-on-scheme:hsla(var(--danger-h),var(--danger-s),var(--danger-on-scheme-l),1);--black-bis:#14161a;--black-ter:#1f2229;--grey-darker:#2e333d;--grey-dark:#404654;--grey:#69748c;--grey-light:#abb1bf;--grey-lighter:#d6d9e0;--white-ter:#f3f4f6;--white-bis:#f9fafb;--shadow-h:221deg;--shadow-s:14%;--shadow-l:4%;--size-1:3rem;--size-2:2.5rem;--size-3:2rem;--size-4:1.5rem;--size-5:1.25rem;--size-6:1rem;--size-7:0.75rem}}@media (prefers-color-scheme:dark){:root{--white-on-scheme-l:100%;--white-on-scheme:hsla(var(--white-h),var(--white-s),var(--white-on-scheme-l),1);--black-on-scheme-l:0%;--black-on-scheme:hsla(var(--black-h),var(--black-s),var(--black-on-scheme-l),1);--light-on-scheme-l:96%;--light-on-scheme:hsla(var(--light-h),var(--light-s),var(--light-on-scheme-l),1);--dark-on-scheme-l:56%;--dark-on-scheme:hsla(var(--dark-h),var(--dark-s),var(--dark-on-scheme-l),1);--text-on-scheme-l:54%;--text-on-scheme:hsla(var(--text-h),var(--text-s),var(--text-on-scheme-l),1);--primary-on-scheme-l:41%;--primary-on-scheme:hsla(var(--primary-h),var(--primary-s),var(--primary-on-scheme-l),1);--link-on-scheme-l:73%;--link-on-scheme:hsla(var(--link-h),var(--link-s),var(--link-on-scheme-l),1);--info-on-scheme-l:70%;--info-on-scheme:hsla(var(--info-h),var(--info-s),var(--info-on-scheme-l),1);--success-on-scheme-l:53%;--success-on-scheme:hsla(var(--success-h),var(--success-s),var(--success-on-scheme-l),1);--warning-on-scheme-l:53%;--warning-on-scheme:hsla(var(--warning-h),var(--warning-s),var(--warning-on-scheme-l),1);--danger-on-scheme-l:70%;--danger-on-scheme:hsla(var(--danger-h),var(--danger-s),var(--danger-on-scheme-l),1);--scheme-brightness:dark;--scheme-main-l:9%;--scheme-main-bis-l:11%;--scheme-main-ter-l:13%;--soft-l:20%;--bold-l:90%;--soft-invert-l:90%;--bold-invert-l:20%;--background-l:14%;--border-weak-l:21%;--border-l:24%;--text-weak-l:53%;--text-l:71%;--text-strong-l:93%;--text-title-l:100%;--hover-background-l-delta:5%;--active-background-l-delta:10%;--hover-border-l-delta:10%;--active-border-l-delta:20%;--hover-color-l-delta:5%;--active-color-l-delta:10%;--shadow-h:0deg;--shadow-s:0%;--shadow-l:100%}}[data-theme=light]{--scheme-h:221;--scheme-s:14%;--light-l:90%;--light-invert-l:20%;--dark-l:20%;--dark-invert-l:90%;--soft-l:90%;--bold-l:20%;--soft-invert-l:20%;--bold-invert-l:90%;--hover-background-l-delta:-5%;--active-background-l-delta:-10%;--hover-border-l-delta:-10%;--active-border-l-delta:-20%;--hover-color-l-delta:-5%;--active-color-l-delta:-10%;--hover-shadow-a-delta:-0.05;--active-shadow-a-delta:-0.1;--scheme-brightness:light;--scheme-main-l:100%;--scheme-main-bis-l:98%;--scheme-main-ter-l:96%;--background-l:96%;--border-weak-l:93%;--border-l:86%;--text-weak-l:48%;--text-strong-l:21%;--text-title-l:14%;--scheme-invert-ter-l:14%;--scheme-invert-bis-l:7%;--scheme-invert-l:4%;--family-primary:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Lucida Sans Unicode,Lucida Grande,Arial,sans-serif;--family-secondary:Inter,SF Pro,Segoe UI,Roboto,Oxygen,Ubuntu,Helvetica Neue,Helvetica,Arial,sans-serif;--family-code:Inconsolata,Hack,SF Mono,Roboto Mono,Source Code Pro,Ubuntu Mono,monospace;--size-small:0.75rem;--size-normal:1rem;--size-medium:1.25rem;--size-large:1.5rem;--weight-light:300;--weight-normal:400;--weight-medium:500;--weight-semibold:600;--weight-bold:700;--weight-extrabold:800;--block-spacing:1.5rem;--duration:294ms;--easing:ease-out;--radius-small:0.25rem;--radius:0.375rem;--radius-medium:0.5em;--radius-large:0.75rem;--radius-rounded:9999px;--speed:86ms;--arrow-color:var(--link);--loading-color:var(--border);--burger-h:var(--link-h);--burger-s:var(--link-s);--burger-l:var(--link-l);--burger-border-radius:0.5em;--burger-gap:5px;--burger-item-height:2px;--burger-item-width:20px;--white:hsla(var(--white-h),var(--white-s),var(--white-l),1);--white-base:hsla(var(--white-h),var(--white-s),var(--white-l),1);--white-rgb:255,255,255;--white-h:221deg;--white-s:14%;--white-l:100%;--white-invert-l:4%;--white-invert:#090a0c;--white-on-scheme-l:35%;--white-on-scheme:hsla(var(--white-h),var(--white-s),var(--white-on-scheme-l),1);--black:hsla(var(--black-h),var(--black-s),var(--black-l),1);--black-base:hsla(var(--black-h),var(--black-s),var(--black-l),1);--black-rgb:9,10,12;--black-h:221deg;--black-s:14%;--black-l:4%;--black-invert-l:100%;--black-invert:#fff;--black-on-scheme-l:4%;--black-on-scheme:hsla(var(--black-h),var(--black-s),var(--black-on-scheme-l),1);--light:hsla(var(--light-h),var(--light-s),var(--light-l),1);--light-base:hsla(var(--light-h),var(--light-s),var(--light-l),1);--light-rgb:243,244,246;--light-h:221deg;--light-s:14%;--light-l:96%;--light-invert-l:21%;--light-invert:#2e333d;--light-on-scheme-l:36%;--light-on-scheme:hsla(var(--light-h),var(--light-s),var(--light-on-scheme-l),1);--dark:hsla(var(--dark-h),var(--dark-s),var(--dark-l),1);--dark-base:hsla(var(--dark-h),var(--dark-s),var(--dark-l),1);--dark-rgb:46,51,61;--dark-h:221deg;--dark-s:14%;--dark-l:21%;--dark-invert-l:96%;--dark-invert:#f3f4f6;--dark-on-scheme-l:21%;--dark-on-scheme:hsla(var(--dark-h),var(--dark-s),var(--dark-on-scheme-l),1);--text:hsla(var(--text-h),var(--text-s),var(--text-l),1);--text-base:hsla(var(--text-h),var(--text-s),var(--text-l),1);--text-rgb:64,70,84;--text-h:221deg;--text-s:14%;--text-l:29%;--text-00-l:0%;--text-05-l:4%;--text-10-l:9%;--text-15-l:14%;--text-20-l:19%;--text-25-l:24%;--text-30-l:29%;--text-35-l:34%;--text-40-l:39%;--text-45-l:44%;--text-50-l:49%;--text-55-l:54%;--text-60-l:59%;--text-65-l:64%;--text-70-l:69%;--text-75-l:74%;--text-80-l:79%;--text-85-l:84%;--text-90-l:89%;--text-95-l:94%;--text-100-l:99%;--text-00:hsla(var(--text-h),var(--text-s),var(--text-00-l),1);--text-00-invert-l:var(--text-60-l);--text-00-invert:hsla(var(--text-h),var(--text-s),var(--text-00-invert-l),1);--text-05:hsla(var(--text-h),var(--text-s),var(--text-05-l),1);--text-05-invert-l:var(--text-60-l);--text-05-invert:hsla(var(--text-h),var(--text-s),var(--text-05-invert-l),1);--text-10:hsla(var(--text-h),var(--text-s),var(--text-10-l),1);--text-10-invert-l:var(--text-70-l);--text-10-invert:hsla(var(--text-h),var(--text-s),var(--text-10-invert-l),1);--text-15:hsla(var(--text-h),var(--text-s),var(--text-15-l),1);--text-15-invert-l:var(--text-75-l);--text-15-invert:hsla(var(--text-h),var(--text-s),var(--text-15-invert-l),1);--text-20:hsla(var(--text-h),var(--text-s),var(--text-20-l),1);--text-20-invert-l:var(--text-85-l);--text-20-invert:hsla(var(--text-h),var(--text-s),var(--text-20-invert-l),1);--text-25:hsla(var(--text-h),var(--text-s),var(--text-25-l),1);--text-25-invert-l:var(--text-95-l);--text-25-invert:hsla(var(--text-h),var(--text-s),var(--text-25-invert-l),1);--text-30:hsla(var(--text-h),var(--text-s),var(--text-30-l),1);--text-30-invert-l:var(--text-100-l);--text-30-invert:hsla(var(--text-h),var(--text-s),var(--text-30-invert-l),1);--text-35:hsla(var(--text-h),var(--text-s),var(--text-35-l),1);--text-35-invert-l:var(--text-100-l);--text-35-invert:hsla(var(--text-h),var(--text-s),var(--text-35-invert-l),1);--text-40:hsla(var(--text-h),var(--text-s),var(--text-40-l),1);--text-40-invert-l:var(--text-100-l);--text-40-invert:hsla(var(--text-h),var(--text-s),var(--text-40-invert-l),1);--text-45:hsla(var(--text-h),var(--text-s),var(--text-45-l),1);--text-45-invert-l:var(--text-100-l);--text-45-invert:hsla(var(--text-h),var(--text-s),var(--text-45-invert-l),1);--text-50:hsla(var(--text-h),var(--text-s),var(--text-50-l),1);--text-50-invert-l:var(--text-100-l);--text-50-invert:hsla(var(--text-h),var(--text-s),var(--text-50-invert-l),1);--text-55:hsla(var(--text-h),var(--text-s),var(--text-55-l),1);--text-55-invert-l:var(--text-100-l);--text-55-invert:hsla(var(--text-h),var(--text-s),var(--text-55-invert-l),1);--text-60:hsla(var(--text-h),var(--text-s),var(--text-60-l),1);--text-60-invert-l:var(--text-05-l);--text-60-invert:hsla(var(--text-h),var(--text-s),var(--text-60-invert-l),1);--text-65:hsla(var(--text-h),var(--text-s),var(--text-65-l),1);--text-65-invert-l:var(--text-05-l);--text-65-invert:hsla(var(--text-h),var(--text-s),var(--text-65-invert-l),1);--text-70:hsla(var(--text-h),var(--text-s),var(--text-70-l),1);--text-70-invert-l:var(--text-10-l);--text-70-invert:hsla(var(--text-h),var(--text-s),var(--text-70-invert-l),1);--text-75:hsla(var(--text-h),var(--text-s),var(--text-75-l),1);--text-75-invert-l:var(--text-15-l);--text-75-invert:hsla(var(--text-h),var(--text-s),var(--text-75-invert-l),1);--text-80:hsla(var(--text-h),var(--text-s),var(--text-80-l),1);--text-80-invert-l:var(--text-15-l);--text-80-invert:hsla(var(--text-h),var(--text-s),var(--text-80-invert-l),1);--text-85:hsla(var(--text-h),var(--text-s),var(--text-85-l),1);--text-85-invert-l:var(--text-20-l);--text-85-invert:hsla(var(--text-h),var(--text-s),var(--text-85-invert-l),1);--text-90:hsla(var(--text-h),var(--text-s),var(--text-90-l),1);--text-90-invert-l:var(--text-20-l);--text-90-invert:hsla(var(--text-h),var(--text-s),var(--text-90-invert-l),1);--text-95:hsla(var(--text-h),var(--text-s),var(--text-95-l),1);--text-95-invert-l:var(--text-25-l);--text-95-invert:hsla(var(--text-h),var(--text-s),var(--text-95-invert-l),1);--text-100:hsla(var(--text-h),var(--text-s),var(--text-100-l),1);--text-100-invert-l:var(--text-25-l);--text-100-invert:hsla(var(--text-h),var(--text-s),var(--text-100-invert-l),1);--text-invert-l:var(--text-100-l);--text-invert:hsla(var(--text-h),var(--text-s),var(--text-invert-l),1);--text-light-l:var(--text-90-l);--text-light:hsla(var(--text-h),var(--text-s),var(--text-light-l),1);--text-light-invert-l:var(--text-20-l);--text-light-invert:hsla(var(--text-h),var(--text-s),var(--text-light-invert-l),1);--text-dark-l:var(--text-10-l);--text-dark:hsla(var(--text-h),var(--text-s),var(--text-dark-l),1);--text-dark-invert-l:var(--text-70-l);--text-dark-invert:hsla(var(--text-h),var(--text-s),var(--text-dark-invert-l),1);--text-soft:hsla(var(--text-h),var(--text-s),var(--soft-l),1);--text-bold:hsla(var(--text-h),var(--text-s),var(--bold-l),1);--text-soft-invert:hsla(var(--text-h),var(--text-s),var(--soft-invert-l),1);--text-bold-invert:hsla(var(--text-h),var(--text-s),var(--bold-invert-l),1);--text-on-scheme-l:29%;--text-on-scheme:hsla(var(--text-h),var(--text-s),var(--text-on-scheme-l),1);--primary:hsla(var(--primary-h),var(--primary-s),var(--primary-l),1);--primary-base:hsla(var(--primary-h),var(--primary-s),var(--primary-l),1);--primary-rgb:0,209,178;--primary-h:171deg;--primary-s:100%;--primary-l:41%;--primary-00-l:1%;--primary-05-l:6%;--primary-10-l:11%;--primary-15-l:16%;--primary-20-l:21%;--primary-25-l:26%;--primary-30-l:31%;--primary-35-l:36%;--primary-40-l:41%;--primary-45-l:46%;--primary-50-l:51%;--primary-55-l:56%;--primary-60-l:61%;--primary-65-l:66%;--primary-70-l:71%;--primary-75-l:76%;--primary-80-l:81%;--primary-85-l:86%;--primary-90-l:91%;--primary-95-l:96%;--primary-100-l:100%;--primary-00:hsla(var(--primary-h),var(--primary-s),var(--primary-00-l),1);--primary-00-invert-l:var(--primary-30-l);--primary-00-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-00-invert-l),1);--primary-05:hsla(var(--primary-h),var(--primary-s),var(--primary-05-l),1);--primary-05-invert-l:var(--primary-40-l);--primary-05-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-05-invert-l),1);--primary-10:hsla(var(--primary-h),var(--primary-s),var(--primary-10-l),1);--primary-10-invert-l:var(--primary-50-l);--primary-10-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-10-invert-l),1);--primary-15:hsla(var(--primary-h),var(--primary-s),var(--primary-15-l),1);--primary-15-invert-l:var(--primary-100-l);--primary-15-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-15-invert-l),1);--primary-20:hsla(var(--primary-h),var(--primary-s),var(--primary-20-l),1);--primary-20-invert-l:var(--primary-100-l);--primary-20-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-20-invert-l),1);--primary-25:hsla(var(--primary-h),var(--primary-s),var(--primary-25-l),1);--primary-25-invert-l:var(--primary-100-l);--primary-25-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-25-invert-l),1);--primary-30:hsla(var(--primary-h),var(--primary-s),var(--primary-30-l),1);--primary-30-invert-l:var(--primary-00-l);--primary-30-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-30-invert-l),1);--primary-35:hsla(var(--primary-h),var(--primary-s),var(--primary-35-l),1);--primary-35-invert-l:var(--primary-00-l);--primary-35-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-35-invert-l),1);--primary-40:hsla(var(--primary-h),var(--primary-s),var(--primary-40-l),1);--primary-40-invert-l:var(--primary-05-l);--primary-40-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-40-invert-l),1);--primary-45:hsla(var(--primary-h),var(--primary-s),var(--primary-45-l),1);--primary-45-invert-l:var(--primary-05-l);--primary-45-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-45-invert-l),1);--primary-50:hsla(var(--primary-h),var(--primary-s),var(--primary-50-l),1);--primary-50-invert-l:var(--primary-10-l);--primary-50-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-50-invert-l),1);--primary-55:hsla(var(--primary-h),var(--primary-s),var(--primary-55-l),1);--primary-55-invert-l:var(--primary-10-l);--primary-55-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-55-invert-l),1);--primary-60:hsla(var(--primary-h),var(--primary-s),var(--primary-60-l),1);--primary-60-invert-l:var(--primary-10-l);--primary-60-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-60-invert-l),1);--primary-65:hsla(var(--primary-h),var(--primary-s),var(--primary-65-l),1);--primary-65-invert-l:var(--primary-10-l);--primary-65-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-65-invert-l),1);--primary-70:hsla(var(--primary-h),var(--primary-s),var(--primary-70-l),1);--primary-70-invert-l:var(--primary-10-l);--primary-70-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-70-invert-l),1);--primary-75:hsla(var(--primary-h),var(--primary-s),var(--primary-75-l),1);--primary-75-invert-l:var(--primary-10-l);--primary-75-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-75-invert-l),1);--primary-80:hsla(var(--primary-h),var(--primary-s),var(--primary-80-l),1);--primary-80-invert-l:var(--primary-10-l);--primary-80-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-80-invert-l),1);--primary-85:hsla(var(--primary-h),var(--primary-s),var(--primary-85-l),1);--primary-85-invert-l:var(--primary-10-l);--primary-85-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-85-invert-l),1);--primary-90:hsla(var(--primary-h),var(--primary-s),var(--primary-90-l),1);--primary-90-invert-l:var(--primary-10-l);--primary-90-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-90-invert-l),1);--primary-95:hsla(var(--primary-h),var(--primary-s),var(--primary-95-l),1);--primary-95-invert-l:var(--primary-10-l);--primary-95-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-95-invert-l),1);--primary-100:hsla(var(--primary-h),var(--primary-s),var(--primary-100-l),1);--primary-100-invert-l:var(--primary-15-l);--primary-100-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-100-invert-l),1);--primary-invert-l:var(--primary-05-l);--primary-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-invert-l),1);--primary-light-l:var(--primary-90-l);--primary-light:hsla(var(--primary-h),var(--primary-s),var(--primary-light-l),1);--primary-light-invert-l:var(--primary-10-l);--primary-light-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-light-invert-l),1);--primary-dark-l:var(--primary-10-l);--primary-dark:hsla(var(--primary-h),var(--primary-s),var(--primary-dark-l),1);--primary-dark-invert-l:var(--primary-50-l);--primary-dark-invert:hsla(var(--primary-h),var(--primary-s),var(--primary-dark-invert-l),1);--primary-soft:hsla(var(--primary-h),var(--primary-s),var(--soft-l),1);--primary-bold:hsla(var(--primary-h),var(--primary-s),var(--bold-l),1);--primary-soft-invert:hsla(var(--primary-h),var(--primary-s),var(--soft-invert-l),1);--primary-bold-invert:hsla(var(--primary-h),var(--primary-s),var(--bold-invert-l),1);--primary-on-scheme-l:21%;--primary-on-scheme:hsla(var(--primary-h),var(--primary-s),var(--primary-on-scheme-l),1);--link:hsla(var(--link-h),var(--link-s),var(--link-l),1);--link-base:hsla(var(--link-h),var(--link-s),var(--link-l),1);--link-rgb:66,88,255;--link-h:233deg;--link-s:100%;--link-l:63%;--link-00-l:0%;--link-05-l:3%;--link-10-l:8%;--link-15-l:13%;--link-20-l:18%;--link-25-l:23%;--link-30-l:28%;--link-35-l:33%;--link-40-l:38%;--link-45-l:43%;--link-50-l:48%;--link-55-l:53%;--link-60-l:58%;--link-65-l:63%;--link-70-l:68%;--link-75-l:73%;--link-80-l:78%;--link-85-l:83%;--link-90-l:88%;--link-95-l:93%;--link-100-l:98%;--link-00:hsla(var(--link-h),var(--link-s),var(--link-00-l),1);--link-00-invert-l:var(--link-75-l);--link-00-invert:hsla(var(--link-h),var(--link-s),var(--link-00-invert-l),1);--link-05:hsla(var(--link-h),var(--link-s),var(--link-05-l),1);--link-05-invert-l:var(--link-75-l);--link-05-invert:hsla(var(--link-h),var(--link-s),var(--link-05-invert-l),1);--link-10:hsla(var(--link-h),var(--link-s),var(--link-10-l),1);--link-10-invert-l:var(--link-75-l);--link-10-invert:hsla(var(--link-h),var(--link-s),var(--link-10-invert-l),1);--link-15:hsla(var(--link-h),var(--link-s),var(--link-15-l),1);--link-15-invert-l:var(--link-80-l);--link-15-invert:hsla(var(--link-h),var(--link-s),var(--link-15-invert-l),1);--link-20:hsla(var(--link-h),var(--link-s),var(--link-20-l),1);--link-20-invert-l:var(--link-80-l);--link-20-invert:hsla(var(--link-h),var(--link-s),var(--link-20-invert-l),1);--link-25:hsla(var(--link-h),var(--link-s),var(--link-25-l),1);--link-25-invert-l:var(--link-85-l);--link-25-invert:hsla(var(--link-h),var(--link-s),var(--link-25-invert-l),1);--link-30:hsla(var(--link-h),var(--link-s),var(--link-30-l),1);--link-30-invert-l:var(--link-90-l);--link-30-invert:hsla(var(--link-h),var(--link-s),var(--link-30-invert-l),1);--link-35:hsla(var(--link-h),var(--link-s),var(--link-35-l),1);--link-35-invert-l:var(--link-90-l);--link-35-invert:hsla(var(--link-h),var(--link-s),var(--link-35-invert-l),1);--link-40:hsla(var(--link-h),var(--link-s),var(--link-40-l),1);--link-40-invert-l:var(--link-95-l);--link-40-invert:hsla(var(--link-h),var(--link-s),var(--link-40-invert-l),1);--link-45:hsla(var(--link-h),var(--link-s),var(--link-45-l),1);--link-45-invert-l:var(--link-100-l);--link-45-invert:hsla(var(--link-h),var(--link-s),var(--link-45-invert-l),1);--link-50:hsla(var(--link-h),var(--link-s),var(--link-50-l),1);--link-50-invert-l:var(--link-100-l);--link-50-invert:hsla(var(--link-h),var(--link-s),var(--link-50-invert-l),1);--link-55:hsla(var(--link-h),var(--link-s),var(--link-55-l),1);--link-55-invert-l:var(--link-100-l);--link-55-invert:hsla(var(--link-h),var(--link-s),var(--link-55-invert-l),1);--link-60:hsla(var(--link-h),var(--link-s),var(--link-60-l),1);--link-60-invert-l:var(--link-100-l);--link-60-invert:hsla(var(--link-h),var(--link-s),var(--link-60-invert-l),1);--link-65:hsla(var(--link-h),var(--link-s),var(--link-65-l),1);--link-65-invert-l:var(--link-100-l);--link-65-invert:hsla(var(--link-h),var(--link-s),var(--link-65-invert-l),1);--link-70:hsla(var(--link-h),var(--link-s),var(--link-70-l),1);--link-70-invert-l:var(--link-100-l);--link-70-invert:hsla(var(--link-h),var(--link-s),var(--link-70-invert-l),1);--link-75:hsla(var(--link-h),var(--link-s),var(--link-75-l),1);--link-75-invert-l:var(--link-10-l);--link-75-invert:hsla(var(--link-h),var(--link-s),var(--link-75-invert-l),1);--link-80:hsla(var(--link-h),var(--link-s),var(--link-80-l),1);--link-80-invert-l:var(--link-20-l);--link-80-invert:hsla(var(--link-h),var(--link-s),var(--link-80-invert-l),1);--link-85:hsla(var(--link-h),var(--link-s),var(--link-85-l),1);--link-85-invert-l:var(--link-25-l);--link-85-invert:hsla(var(--link-h),var(--link-s),var(--link-85-invert-l),1);--link-90:hsla(var(--link-h),var(--link-s),var(--link-90-l),1);--link-90-invert-l:var(--link-35-l);--link-90-invert:hsla(var(--link-h),var(--link-s),var(--link-90-invert-l),1);--link-95:hsla(var(--link-h),var(--link-s),var(--link-95-l),1);--link-95-invert-l:var(--link-40-l);--link-95-invert:hsla(var(--link-h),var(--link-s),var(--link-95-invert-l),1);--link-100:hsla(var(--link-h),var(--link-s),var(--link-100-l),1);--link-100-invert-l:var(--link-50-l);--link-100-invert:hsla(var(--link-h),var(--link-s),var(--link-100-invert-l),1);--link-invert-l:var(--link-100-l);--link-invert:hsla(var(--link-h),var(--link-s),var(--link-invert-l),1);--link-light-l:var(--link-90-l);--link-light:hsla(var(--link-h),var(--link-s),var(--link-light-l),1);--link-light-invert-l:var(--link-35-l);--link-light-invert:hsla(var(--link-h),var(--link-s),var(--link-light-invert-l),1);--link-dark-l:var(--link-10-l);--link-dark:hsla(var(--link-h),var(--link-s),var(--link-dark-l),1);--link-dark-invert-l:var(--link-75-l);--link-dark-invert:hsla(var(--link-h),var(--link-s),var(--link-dark-invert-l),1);--link-soft:hsla(var(--link-h),var(--link-s),var(--soft-l),1);--link-bold:hsla(var(--link-h),var(--link-s),var(--bold-l),1);--link-soft-invert:hsla(var(--link-h),var(--link-s),var(--soft-invert-l),1);--link-bold-invert:hsla(var(--link-h),var(--link-s),var(--bold-invert-l),1);--link-on-scheme-l:58%;--link-on-scheme:hsla(var(--link-h),var(--link-s),var(--link-on-scheme-l),1);--info:hsla(var(--info-h),var(--info-s),var(--info-l),1);--info-base:hsla(var(--info-h),var(--info-s),var(--info-l),1);--info-rgb:102,209,255;--info-h:198deg;--info-s:100%;--info-l:70%;--info-00-l:0%;--info-05-l:5%;--info-10-l:10%;--info-15-l:15%;--info-20-l:20%;--info-25-l:25%;--info-30-l:30%;--info-35-l:35%;--info-40-l:40%;--info-45-l:45%;--info-50-l:50%;--info-55-l:55%;--info-60-l:60%;--info-65-l:65%;--info-70-l:70%;--info-75-l:75%;--info-80-l:80%;--info-85-l:85%;--info-90-l:90%;--info-95-l:95%;--info-100-l:100%;--info-00:hsla(var(--info-h),var(--info-s),var(--info-00-l),1);--info-00-invert-l:var(--info-45-l);--info-00-invert:hsla(var(--info-h),var(--info-s),var(--info-00-invert-l),1);--info-05:hsla(var(--info-h),var(--info-s),var(--info-05-l),1);--info-05-invert-l:var(--info-50-l);--info-05-invert:hsla(var(--info-h),var(--info-s),var(--info-05-invert-l),1);--info-10:hsla(var(--info-h),var(--info-s),var(--info-10-l),1);--info-10-invert-l:var(--info-60-l);--info-10-invert:hsla(var(--info-h),var(--info-s),var(--info-10-invert-l),1);--info-15:hsla(var(--info-h),var(--info-s),var(--info-15-l),1);--info-15-invert-l:var(--info-80-l);--info-15-invert:hsla(var(--info-h),var(--info-s),var(--info-15-invert-l),1);--info-20:hsla(var(--info-h),var(--info-s),var(--info-20-l),1);--info-20-invert-l:var(--info-95-l);--info-20-invert:hsla(var(--info-h),var(--info-s),var(--info-20-invert-l),1);--info-25:hsla(var(--info-h),var(--info-s),var(--info-25-l),1);--info-25-invert-l:var(--info-100-l);--info-25-invert:hsla(var(--info-h),var(--info-s),var(--info-25-invert-l),1);--info-30:hsla(var(--info-h),var(--info-s),var(--info-30-l),1);--info-30-invert-l:var(--info-100-l);--info-30-invert:hsla(var(--info-h),var(--info-s),var(--info-30-invert-l),1);--info-35:hsla(var(--info-h),var(--info-s),var(--info-35-l),1);--info-35-invert-l:var(--info-100-l);--info-35-invert:hsla(var(--info-h),var(--info-s),var(--info-35-invert-l),1);--info-40:hsla(var(--info-h),var(--info-s),var(--info-40-l),1);--info-40-invert-l:var(--info-100-l);--info-40-invert:hsla(var(--info-h),var(--info-s),var(--info-40-invert-l),1);--info-45:hsla(var(--info-h),var(--info-s),var(--info-45-l),1);--info-45-invert-l:var(--info-00-l);--info-45-invert:hsla(var(--info-h),var(--info-s),var(--info-45-invert-l),1);--info-50:hsla(var(--info-h),var(--info-s),var(--info-50-l),1);--info-50-invert-l:var(--info-05-l);--info-50-invert:hsla(var(--info-h),var(--info-s),var(--info-50-invert-l),1);--info-55:hsla(var(--info-h),var(--info-s),var(--info-55-l),1);--info-55-invert-l:var(--info-05-l);--info-55-invert:hsla(var(--info-h),var(--info-s),var(--info-55-invert-l),1);--info-60:hsla(var(--info-h),var(--info-s),var(--info-60-l),1);--info-60-invert-l:var(--info-10-l);--info-60-invert:hsla(var(--info-h),var(--info-s),var(--info-60-invert-l),1);--info-65:hsla(var(--info-h),var(--info-s),var(--info-65-l),1);--info-65-invert-l:var(--info-10-l);--info-65-invert:hsla(var(--info-h),var(--info-s),var(--info-65-invert-l),1);--info-70:hsla(var(--info-h),var(--info-s),var(--info-70-l),1);--info-70-invert-l:var(--info-10-l);--info-70-invert:hsla(var(--info-h),var(--info-s),var(--info-70-invert-l),1);--info-75:hsla(var(--info-h),var(--info-s),var(--info-75-l),1);--info-75-invert-l:var(--info-10-l);--info-75-invert:hsla(var(--info-h),var(--info-s),var(--info-75-invert-l),1);--info-80:hsla(var(--info-h),var(--info-s),var(--info-80-l),1);--info-80-invert-l:var(--info-15-l);--info-80-invert:hsla(var(--info-h),var(--info-s),var(--info-80-invert-l),1);--info-85:hsla(var(--info-h),var(--info-s),var(--info-85-l),1);--info-85-invert-l:var(--info-15-l);--info-85-invert:hsla(var(--info-h),var(--info-s),var(--info-85-invert-l),1);--info-90:hsla(var(--info-h),var(--info-s),var(--info-90-l),1);--info-90-invert-l:var(--info-15-l);--info-90-invert:hsla(var(--info-h),var(--info-s),var(--info-90-invert-l),1);--info-95:hsla(var(--info-h),var(--info-s),var(--info-95-l),1);--info-95-invert-l:var(--info-20-l);--info-95-invert:hsla(var(--info-h),var(--info-s),var(--info-95-invert-l),1);--info-100:hsla(var(--info-h),var(--info-s),var(--info-100-l),1);--info-100-invert-l:var(--info-20-l);--info-100-invert:hsla(var(--info-h),var(--info-s),var(--info-100-invert-l),1);--info-invert-l:var(--info-10-l);--info-invert:hsla(var(--info-h),var(--info-s),var(--info-invert-l),1);--info-light-l:var(--info-90-l);--info-light:hsla(var(--info-h),var(--info-s),var(--info-light-l),1);--info-light-invert-l:var(--info-15-l);--info-light-invert:hsla(var(--info-h),var(--info-s),var(--info-light-invert-l),1);--info-dark-l:var(--info-10-l);--info-dark:hsla(var(--info-h),var(--info-s),var(--info-dark-l),1);--info-dark-invert-l:var(--info-60-l);--info-dark-invert:hsla(var(--info-h),var(--info-s),var(--info-dark-invert-l),1);--info-soft:hsla(var(--info-h),var(--info-s),var(--soft-l),1);--info-bold:hsla(var(--info-h),var(--info-s),var(--bold-l),1);--info-soft-invert:hsla(var(--info-h),var(--info-s),var(--soft-invert-l),1);--info-bold-invert:hsla(var(--info-h),var(--info-s),var(--bold-invert-l),1);--info-on-scheme-l:25%;--info-on-scheme:hsla(var(--info-h),var(--info-s),var(--info-on-scheme-l),1);--success:hsla(var(--success-h),var(--success-s),var(--success-l),1);--success-base:hsla(var(--success-h),var(--success-s),var(--success-l),1);--success-rgb:72,199,142;--success-h:153deg;--success-s:53%;--success-l:53%;--success-00-l:0%;--success-05-l:3%;--success-10-l:8%;--success-15-l:13%;--success-20-l:18%;--success-25-l:23%;--success-30-l:28%;--success-35-l:33%;--success-40-l:38%;--success-45-l:43%;--success-50-l:48%;--success-55-l:53%;--success-60-l:58%;--success-65-l:63%;--success-70-l:68%;--success-75-l:73%;--success-80-l:78%;--success-85-l:83%;--success-90-l:88%;--success-95-l:93%;--success-100-l:98%;--success-00:hsla(var(--success-h),var(--success-s),var(--success-00-l),1);--success-00-invert-l:var(--success-45-l);--success-00-invert:hsla(var(--success-h),var(--success-s),var(--success-00-invert-l),1);--success-05:hsla(var(--success-h),var(--success-s),var(--success-05-l),1);--success-05-invert-l:var(--success-45-l);--success-05-invert:hsla(var(--success-h),var(--success-s),var(--success-05-invert-l),1);--success-10:hsla(var(--success-h),var(--success-s),var(--success-10-l),1);--success-10-invert-l:var(--success-55-l);--success-10-invert:hsla(var(--success-h),var(--success-s),var(--success-10-invert-l),1);--success-15:hsla(var(--success-h),var(--success-s),var(--success-15-l),1);--success-15-invert-l:var(--success-75-l);--success-15-invert:hsla(var(--success-h),var(--success-s),var(--success-15-invert-l),1);--success-20:hsla(var(--success-h),var(--success-s),var(--success-20-l),1);--success-20-invert-l:var(--success-90-l);--success-20-invert:hsla(var(--success-h),var(--success-s),var(--success-20-invert-l),1);--success-25:hsla(var(--success-h),var(--success-s),var(--success-25-l),1);--success-25-invert-l:var(--success-100-l);--success-25-invert:hsla(var(--success-h),var(--success-s),var(--success-25-invert-l),1);--success-30:hsla(var(--success-h),var(--success-s),var(--success-30-l),1);--success-30-invert-l:var(--success-100-l);--success-30-invert:hsla(var(--success-h),var(--success-s),var(--success-30-invert-l),1);--success-35:hsla(var(--success-h),var(--success-s),var(--success-35-l),1);--success-35-invert-l:var(--success-100-l);--success-35-invert:hsla(var(--success-h),var(--success-s),var(--success-35-invert-l),1);--success-40:hsla(var(--success-h),var(--success-s),var(--success-40-l),1);--success-40-invert-l:var(--success-100-l);--success-40-invert:hsla(var(--success-h),var(--success-s),var(--success-40-invert-l),1);--success-45:hsla(var(--success-h),var(--success-s),var(--success-45-l),1);--success-45-invert-l:var(--success-05-l);--success-45-invert:hsla(var(--success-h),var(--success-s),var(--success-45-invert-l),1);--success-50:hsla(var(--success-h),var(--success-s),var(--success-50-l),1);--success-50-invert-l:var(--success-05-l);--success-50-invert:hsla(var(--success-h),var(--success-s),var(--success-50-invert-l),1);--success-55:hsla(var(--success-h),var(--success-s),var(--success-55-l),1);--success-55-invert-l:var(--success-10-l);--success-55-invert:hsla(var(--success-h),var(--success-s),var(--success-55-invert-l),1);--success-60:hsla(var(--success-h),var(--success-s),var(--success-60-l),1);--success-60-invert-l:var(--success-10-l);--success-60-invert:hsla(var(--success-h),var(--success-s),var(--success-60-invert-l),1);--success-65:hsla(var(--success-h),var(--success-s),var(--success-65-l),1);--success-65-invert-l:var(--success-10-l);--success-65-invert:hsla(var(--success-h),var(--success-s),var(--success-65-invert-l),1);--success-70:hsla(var(--success-h),var(--success-s),var(--success-70-l),1);--success-70-invert-l:var(--success-10-l);--success-70-invert:hsla(var(--success-h),var(--success-s),var(--success-70-invert-l),1);--success-75:hsla(var(--success-h),var(--success-s),var(--success-75-l),1);--success-75-invert-l:var(--success-15-l);--success-75-invert:hsla(var(--success-h),var(--success-s),var(--success-75-invert-l),1);--success-80:hsla(var(--success-h),var(--success-s),var(--success-80-l),1);--success-80-invert-l:var(--success-15-l);--success-80-invert:hsla(var(--success-h),var(--success-s),var(--success-80-invert-l),1);--success-85:hsla(var(--success-h),var(--success-s),var(--success-85-l),1);--success-85-invert-l:var(--success-15-l);--success-85-invert:hsla(var(--success-h),var(--success-s),var(--success-85-invert-l),1);--success-90:hsla(var(--success-h),var(--success-s),var(--success-90-l),1);--success-90-invert-l:var(--success-20-l);--success-90-invert:hsla(var(--success-h),var(--success-s),var(--success-90-invert-l),1);--success-95:hsla(var(--success-h),var(--success-s),var(--success-95-l),1);--success-95-invert-l:var(--success-20-l);--success-95-invert:hsla(var(--success-h),var(--success-s),var(--success-95-invert-l),1);--success-100:hsla(var(--success-h),var(--success-s),var(--success-100-l),1);--success-100-invert-l:var(--success-20-l);--success-100-invert:hsla(var(--success-h),var(--success-s),var(--success-100-invert-l),1);--success-invert-l:var(--success-10-l);--success-invert:hsla(var(--success-h),var(--success-s),var(--success-invert-l),1);--success-light-l:var(--success-90-l);--success-light:hsla(var(--success-h),var(--success-s),var(--success-light-l),1);--success-light-invert-l:var(--success-20-l);--success-light-invert:hsla(var(--success-h),var(--success-s),var(--success-light-invert-l),1);--success-dark-l:var(--success-10-l);--success-dark:hsla(var(--success-h),var(--success-s),var(--success-dark-l),1);--success-dark-invert-l:var(--success-55-l);--success-dark-invert:hsla(var(--success-h),var(--success-s),var(--success-dark-invert-l),1);--success-soft:hsla(var(--success-h),var(--success-s),var(--soft-l),1);--success-bold:hsla(var(--success-h),var(--success-s),var(--bold-l),1);--success-soft-invert:hsla(var(--success-h),var(--success-s),var(--soft-invert-l),1);--success-bold-invert:hsla(var(--success-h),var(--success-s),var(--bold-invert-l),1);--success-on-scheme-l:23%;--success-on-scheme:hsla(var(--success-h),var(--success-s),var(--success-on-scheme-l),1);--warning:hsla(var(--warning-h),var(--warning-s),var(--warning-l),1);--warning-base:hsla(var(--warning-h),var(--warning-s),var(--warning-l),1);--warning-rgb:255,183,15;--warning-h:42deg;--warning-s:100%;--warning-l:53%;--warning-00-l:0%;--warning-05-l:3%;--warning-10-l:8%;--warning-15-l:13%;--warning-20-l:18%;--warning-25-l:23%;--warning-30-l:28%;--warning-35-l:33%;--warning-40-l:38%;--warning-45-l:43%;--warning-50-l:48%;--warning-55-l:53%;--warning-60-l:58%;--warning-65-l:63%;--warning-70-l:68%;--warning-75-l:73%;--warning-80-l:78%;--warning-85-l:83%;--warning-90-l:88%;--warning-95-l:93%;--warning-100-l:98%;--warning-00:hsla(var(--warning-h),var(--warning-s),var(--warning-00-l),1);--warning-00-invert-l:var(--warning-40-l);--warning-00-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-00-invert-l),1);--warning-05:hsla(var(--warning-h),var(--warning-s),var(--warning-05-l),1);--warning-05-invert-l:var(--warning-45-l);--warning-05-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-05-invert-l),1);--warning-10:hsla(var(--warning-h),var(--warning-s),var(--warning-10-l),1);--warning-10-invert-l:var(--warning-50-l);--warning-10-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-10-invert-l),1);--warning-15:hsla(var(--warning-h),var(--warning-s),var(--warning-15-l),1);--warning-15-invert-l:var(--warning-70-l);--warning-15-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-15-invert-l),1);--warning-20:hsla(var(--warning-h),var(--warning-s),var(--warning-20-l),1);--warning-20-invert-l:var(--warning-100-l);--warning-20-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-20-invert-l),1);--warning-25:hsla(var(--warning-h),var(--warning-s),var(--warning-25-l),1);--warning-25-invert-l:var(--warning-100-l);--warning-25-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-25-invert-l),1);--warning-30:hsla(var(--warning-h),var(--warning-s),var(--warning-30-l),1);--warning-30-invert-l:var(--warning-100-l);--warning-30-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-30-invert-l),1);--warning-35:hsla(var(--warning-h),var(--warning-s),var(--warning-35-l),1);--warning-35-invert-l:var(--warning-100-l);--warning-35-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-35-invert-l),1);--warning-40:hsla(var(--warning-h),var(--warning-s),var(--warning-40-l),1);--warning-40-invert-l:var(--warning-00-l);--warning-40-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-40-invert-l),1);--warning-45:hsla(var(--warning-h),var(--warning-s),var(--warning-45-l),1);--warning-45-invert-l:var(--warning-05-l);--warning-45-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-45-invert-l),1);--warning-50:hsla(var(--warning-h),var(--warning-s),var(--warning-50-l),1);--warning-50-invert-l:var(--warning-10-l);--warning-50-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-50-invert-l),1);--warning-55:hsla(var(--warning-h),var(--warning-s),var(--warning-55-l),1);--warning-55-invert-l:var(--warning-10-l);--warning-55-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-55-invert-l),1);--warning-60:hsla(var(--warning-h),var(--warning-s),var(--warning-60-l),1);--warning-60-invert-l:var(--warning-10-l);--warning-60-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-60-invert-l),1);--warning-65:hsla(var(--warning-h),var(--warning-s),var(--warning-65-l),1);--warning-65-invert-l:var(--warning-10-l);--warning-65-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-65-invert-l),1);--warning-70:hsla(var(--warning-h),var(--warning-s),var(--warning-70-l),1);--warning-70-invert-l:var(--warning-15-l);--warning-70-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-70-invert-l),1);--warning-75:hsla(var(--warning-h),var(--warning-s),var(--warning-75-l),1);--warning-75-invert-l:var(--warning-15-l);--warning-75-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-75-invert-l),1);--warning-80:hsla(var(--warning-h),var(--warning-s),var(--warning-80-l),1);--warning-80-invert-l:var(--warning-15-l);--warning-80-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-80-invert-l),1);--warning-85:hsla(var(--warning-h),var(--warning-s),var(--warning-85-l),1);--warning-85-invert-l:var(--warning-15-l);--warning-85-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-85-invert-l),1);--warning-90:hsla(var(--warning-h),var(--warning-s),var(--warning-90-l),1);--warning-90-invert-l:var(--warning-15-l);--warning-90-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-90-invert-l),1);--warning-95:hsla(var(--warning-h),var(--warning-s),var(--warning-95-l),1);--warning-95-invert-l:var(--warning-15-l);--warning-95-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-95-invert-l),1);--warning-100:hsla(var(--warning-h),var(--warning-s),var(--warning-100-l),1);--warning-100-invert-l:var(--warning-20-l);--warning-100-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-100-invert-l),1);--warning-invert-l:var(--warning-10-l);--warning-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-invert-l),1);--warning-light-l:var(--warning-90-l);--warning-light:hsla(var(--warning-h),var(--warning-s),var(--warning-light-l),1);--warning-light-invert-l:var(--warning-15-l);--warning-light-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-light-invert-l),1);--warning-dark-l:var(--warning-10-l);--warning-dark:hsla(var(--warning-h),var(--warning-s),var(--warning-dark-l),1);--warning-dark-invert-l:var(--warning-50-l);--warning-dark-invert:hsla(var(--warning-h),var(--warning-s),var(--warning-dark-invert-l),1);--warning-soft:hsla(var(--warning-h),var(--warning-s),var(--soft-l),1);--warning-bold:hsla(var(--warning-h),var(--warning-s),var(--bold-l),1);--warning-soft-invert:hsla(var(--warning-h),var(--warning-s),var(--soft-invert-l),1);--warning-bold-invert:hsla(var(--warning-h),var(--warning-s),var(--bold-invert-l),1);--warning-on-scheme-l:23%;--warning-on-scheme:hsla(var(--warning-h),var(--warning-s),var(--warning-on-scheme-l),1);--danger:hsla(var(--danger-h),var(--danger-s),var(--danger-l),1);--danger-base:hsla(var(--danger-h),var(--danger-s),var(--danger-l),1);--danger-rgb:255,102,133;--danger-h:348deg;--danger-s:100%;--danger-l:70%;--danger-00-l:0%;--danger-05-l:5%;--danger-10-l:10%;--danger-15-l:15%;--danger-20-l:20%;--danger-25-l:25%;--danger-30-l:30%;--danger-35-l:35%;--danger-40-l:40%;--danger-45-l:45%;--danger-50-l:50%;--danger-55-l:55%;--danger-60-l:60%;--danger-65-l:65%;--danger-70-l:70%;--danger-75-l:75%;--danger-80-l:80%;--danger-85-l:85%;--danger-90-l:90%;--danger-95-l:95%;--danger-100-l:100%;--danger-00:hsla(var(--danger-h),var(--danger-s),var(--danger-00-l),1);--danger-00-invert-l:var(--danger-65-l);--danger-00-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-00-invert-l),1);--danger-05:hsla(var(--danger-h),var(--danger-s),var(--danger-05-l),1);--danger-05-invert-l:var(--danger-70-l);--danger-05-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-05-invert-l),1);--danger-10:hsla(var(--danger-h),var(--danger-s),var(--danger-10-l),1);--danger-10-invert-l:var(--danger-75-l);--danger-10-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-10-invert-l),1);--danger-15:hsla(var(--danger-h),var(--danger-s),var(--danger-15-l),1);--danger-15-invert-l:var(--danger-80-l);--danger-15-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-15-invert-l),1);--danger-20:hsla(var(--danger-h),var(--danger-s),var(--danger-20-l),1);--danger-20-invert-l:var(--danger-85-l);--danger-20-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-20-invert-l),1);--danger-25:hsla(var(--danger-h),var(--danger-s),var(--danger-25-l),1);--danger-25-invert-l:var(--danger-90-l);--danger-25-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-25-invert-l),1);--danger-30:hsla(var(--danger-h),var(--danger-s),var(--danger-30-l),1);--danger-30-invert-l:var(--danger-100-l);--danger-30-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-30-invert-l),1);--danger-35:hsla(var(--danger-h),var(--danger-s),var(--danger-35-l),1);--danger-35-invert-l:var(--danger-100-l);--danger-35-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-35-invert-l),1);--danger-40:hsla(var(--danger-h),var(--danger-s),var(--danger-40-l),1);--danger-40-invert-l:var(--danger-100-l);--danger-40-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-40-invert-l),1);--danger-45:hsla(var(--danger-h),var(--danger-s),var(--danger-45-l),1);--danger-45-invert-l:var(--danger-100-l);--danger-45-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-45-invert-l),1);--danger-50:hsla(var(--danger-h),var(--danger-s),var(--danger-50-l),1);--danger-50-invert-l:var(--danger-100-l);--danger-50-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-50-invert-l),1);--danger-55:hsla(var(--danger-h),var(--danger-s),var(--danger-55-l),1);--danger-55-invert-l:var(--danger-100-l);--danger-55-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-55-invert-l),1);--danger-60:hsla(var(--danger-h),var(--danger-s),var(--danger-60-l),1);--danger-60-invert-l:var(--danger-100-l);--danger-60-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-60-invert-l),1);--danger-65:hsla(var(--danger-h),var(--danger-s),var(--danger-65-l),1);--danger-65-invert-l:var(--danger-00-l);--danger-65-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-65-invert-l),1);--danger-70:hsla(var(--danger-h),var(--danger-s),var(--danger-70-l),1);--danger-70-invert-l:var(--danger-05-l);--danger-70-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-70-invert-l),1);--danger-75:hsla(var(--danger-h),var(--danger-s),var(--danger-75-l),1);--danger-75-invert-l:var(--danger-10-l);--danger-75-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-75-invert-l),1);--danger-80:hsla(var(--danger-h),var(--danger-s),var(--danger-80-l),1);--danger-80-invert-l:var(--danger-15-l);--danger-80-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-80-invert-l),1);--danger-85:hsla(var(--danger-h),var(--danger-s),var(--danger-85-l),1);--danger-85-invert-l:var(--danger-20-l);--danger-85-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-85-invert-l),1);--danger-90:hsla(var(--danger-h),var(--danger-s),var(--danger-90-l),1);--danger-90-invert-l:var(--danger-25-l);--danger-90-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-90-invert-l),1);--danger-95:hsla(var(--danger-h),var(--danger-s),var(--danger-95-l),1);--danger-95-invert-l:var(--danger-25-l);--danger-95-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-95-invert-l),1);--danger-100:hsla(var(--danger-h),var(--danger-s),var(--danger-100-l),1);--danger-100-invert-l:var(--danger-30-l);--danger-100-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-100-invert-l),1);--danger-invert-l:var(--danger-05-l);--danger-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-invert-l),1);--danger-light-l:var(--danger-90-l);--danger-light:hsla(var(--danger-h),var(--danger-s),var(--danger-light-l),1);--danger-light-invert-l:var(--danger-25-l);--danger-light-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-light-invert-l),1);--danger-dark-l:var(--danger-10-l);--danger-dark:hsla(var(--danger-h),var(--danger-s),var(--danger-dark-l),1);--danger-dark-invert-l:var(--danger-75-l);--danger-dark-invert:hsla(var(--danger-h),var(--danger-s),var(--danger-dark-invert-l),1);--danger-soft:hsla(var(--danger-h),var(--danger-s),var(--soft-l),1);--danger-bold:hsla(var(--danger-h),var(--danger-s),var(--bold-l),1);--danger-soft-invert:hsla(var(--danger-h),var(--danger-s),var(--soft-invert-l),1);--danger-bold-invert:hsla(var(--danger-h),var(--danger-s),var(--bold-invert-l),1);--danger-on-scheme-l:40%;--danger-on-scheme:hsla(var(--danger-h),var(--danger-s),var(--danger-on-scheme-l),1);--black-bis:#14161a;--black-ter:#1f2229;--grey-darker:#2e333d;--grey-dark:#404654;--grey:#69748c;--grey-light:#abb1bf;--grey-lighter:#d6d9e0;--white-ter:#f3f4f6;--white-bis:#f9fafb;--shadow-h:221deg;--shadow-s:14%;--shadow-l:4%;--size-1:3rem;--size-2:2.5rem;--size-3:2rem;--size-4:1.5rem;--size-5:1.25rem;--size-6:1rem;--size-7:0.75rem;--scheme-main:hsl(var(--scheme-h),var(--scheme-s),var(--scheme-main-l));--scheme-main-bis:hsl(var(--scheme-h),var(--scheme-s),var(--scheme-main-bis-l));--scheme-main-ter:hsl(var(--scheme-h),var(--scheme-s),var(--scheme-main-ter-l));--background:hsl(var(--scheme-h),var(--scheme-s),var(--background-l));--background-hover:hsl(var(--scheme-h),var(--scheme-s),calc(var(--background-l) + var(--hover-background-l-delta)));--background-active:hsl(var(--scheme-h),var(--scheme-s),calc(var(--background-l) + var(--active-background-l-delta)));--border-weak:hsl(var(--scheme-h),var(--scheme-s),var(--border-weak-l));--border:hsl(var(--scheme-h),var(--scheme-s),var(--border-l));--border-hover:hsl(var(--scheme-h),var(--scheme-s),calc(var(--border-l) + var(--hover-border-l-delta)));--border-active:hsl(var(--scheme-h),var(--scheme-s),calc(var(--border-l) + var(--active-border-l-delta)));--text-weak:hsl(var(--text-h),var(--text-s),var(--text-weak-l));--text:hsl(var(--text-h),var(--text-s),var(--text-l));--text-strong:hsl(var(--text-h),var(--text-s),var(--text-strong-l));--scheme-invert-ter:hsl(var(--scheme-h),var(--scheme-s),var(--scheme-invert-ter-l));--scheme-invert-bis:hsl(var(--scheme-h),var(--scheme-s),var(--scheme-invert-bis-l));--scheme-invert:hsl(var(--scheme-h),var(--scheme-s),var(--scheme-invert-l));--link:hsl(var(--link-h),var(--link-s),var(--link-l));--link-text:hsl(var(--link-h),var(--link-s),var(--link-on-scheme-l));--link-text-hover:hsl(var(--link-h),var(--link-s),calc(var(--link-on-scheme-l) + var(--hover-color-l-delta)));--link-text-active:hsl(var(--link-h),var(--link-s),calc(var(--link-on-scheme-l) + var(--active-color-l-delta)));--focus-h:var(--link-h);--focus-s:var(--link-s);--focus-l:var(--link-l);--focus-offset:1px;--focus-style:solid;--focus-width:2px;--focus-shadow-size:0 0 0 0.1875em;--focus-shadow-alpha:0.25;--code:hsl(var(--danger-h),var(--danger-s),var(--danger-on-scheme-l));--code-background:var(--background);--pre:var(--text);--pre-background:var(--background);--shadow:0 0.5em 1em -0.125em hsla(var(--shadow-h),var(--shadow-s),var(--shadow-l),0.1),0 0px 0 1px hsla(var(--shadow-h),var(--shadow-s),var(--shadow-l),0.02)}.switch[type=checkbox]{display:inline-block;opacity:0;outline:0;position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none}.switch[type=checkbox]:focus+label:after,.switch[type=checkbox]:focus+label:before{outline:1px dotted #abb1bf}.switch[type=checkbox][disabled]{cursor:not-allowed}.switch[type=checkbox][disabled]+label,.switch[type=checkbox][disabled]+label:after,.switch[type=checkbox][disabled]+label:before{opacity:.5}.switch[type=checkbox][disabled]+label:hover{cursor:not-allowed}.switch[type=checkbox]+label{align-items:center;cursor:pointer;display:inline-flex;font-size:1rem;height:2.5em;justify-content:flex-start;line-height:1.5;padding-left:3.5rem;padding-top:.2rem;position:relative}.switch[type=checkbox]+label:before{background:#abb1bf;border:.1rem solid transparent;border-radius:.375rem;content:"";display:block;height:1.5rem;left:0;position:absolute;top:calc(50% - .75rem);width:3rem}.switch[type=checkbox]+label:after{background:#fff;border-radius:.375rem;content:"";display:block;height:1rem;left:.25rem;position:absolute;top:calc(50% - .5rem);transform:translateZ(0);transition:all .25s ease-out;width:1rem}.switch[type=checkbox]:checked+label:before{background:#00d1b2}.switch[type=checkbox]:checked+label:after{left:1.625rem}.switch[type=checkbox].is-rounded+label:before{border-radius:3rem}.switch[type=checkbox].is-rounded+label:after{border-radius:50%}.switch[type=checkbox].is-small+label{align-items:center;cursor:pointer;display:inline-flex;font-size:.75rem;height:2.5em;justify-content:flex-start;line-height:1.5;padding-left:2.75rem;padding-top:.2rem;position:relative}.switch[type=checkbox].is-small+label:before{background:#abb1bf;border:.1rem solid transparent;border-radius:.375rem;content:"";display:block;height:1.125rem;left:0;position:absolute;top:calc(50% - .5625rem);width:2.25rem}.switch[type=checkbox].is-small+label:after{background:#fff;border-radius:.375rem;content:"";display:block;height:.625rem;left:.25rem;position:absolute;top:calc(50% - .3125rem);transform:translateZ(0);transition:all .25s ease-out;width:.625rem}.switch[type=checkbox].is-small:checked+label:before{background:#00d1b2}.switch[type=checkbox].is-small:checked+label:after{left:1.25rem}.switch[type=checkbox].is-small.is-rounded+label:before{border-radius:3rem}.switch[type=checkbox].is-small.is-rounded+label:after{border-radius:50%}.switch[type=checkbox].is-medium+label{align-items:center;cursor:pointer;display:inline-flex;font-size:1.25rem;height:2.5em;justify-content:flex-start;line-height:1.5;padding-left:4.25rem;padding-top:.2rem;position:relative}.switch[type=checkbox].is-medium+label:before{background:#abb1bf;border:.1rem solid transparent;border-radius:.375rem;content:"";display:block;height:1.875rem;left:0;position:absolute;top:calc(50% - .9375rem);width:3.75rem}.switch[type=checkbox].is-medium+label:after{background:#fff;border-radius:.375rem;content:"";display:block;height:1.375rem;left:.25rem;position:absolute;top:calc(50% - .6875rem);transform:translateZ(0);transition:all .25s ease-out;width:1.375rem}.switch[type=checkbox].is-medium:checked+label:before{background:#00d1b2}.switch[type=checkbox].is-medium:checked+label:after{left:2rem}.switch[type=checkbox].is-medium.is-rounded+label:before{border-radius:3rem}.switch[type=checkbox].is-medium.is-rounded+label:after{border-radius:50%}.switch[type=checkbox].is-large+label{align-items:center;cursor:pointer;display:inline-flex;font-size:1.5rem;height:2.5em;justify-content:flex-start;line-height:1.5;padding-left:5rem;padding-top:.2rem;position:relative}.switch[type=checkbox].is-large+label:before{background:#abb1bf;border:.1rem solid transparent;border-radius:.375rem;content:"";display:block;height:2.25rem;left:0;position:absolute;top:calc(50% - 1.125rem);width:4.5rem}.switch[type=checkbox].is-large+label:after{background:#fff;border-radius:.375rem;content:"";display:block;height:1.75rem;left:.25rem;position:absolute;top:calc(50% - .875rem);transform:translateZ(0);transition:all .25s ease-out;width:1.75rem}.switch[type=checkbox].is-large:checked+label:before{background:#00d1b2}.switch[type=checkbox].is-large:checked+label:after{left:2.375rem}.switch[type=checkbox].is-large.is-rounded+label:before{border-radius:3rem}.switch[type=checkbox].is-large.is-rounded+label:after{border-radius:50%}.field-body .switch[type=checkbox]+label{margin-top:.375em}[data-tooltip]:not(.is-disabled),[data-tooltip]:not(.is-loading),[data-tooltip]:not([disabled]){cursor:pointer;overflow:visible;position:relative}[data-tooltip]:not(.is-disabled):after,[data-tooltip]:not(.is-disabled):before,[data-tooltip]:not(.is-loading):after,[data-tooltip]:not(.is-loading):before,[data-tooltip]:not([disabled]):after,[data-tooltip]:not([disabled]):before{box-sizing:border-box;color:#fff;display:inline-block;font-family:"Inter, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Lucida Sans Unicode, Lucida Grande, Arial, sans-serif";font-size:.75rem;-webkit-hyphens:auto;hyphens:auto;opacity:0;overflow:hidden;pointer-events:none;position:absolute;visibility:hidden;z-index:1020}[data-tooltip]:not(.is-disabled):after,[data-tooltip]:not(.is-loading):after,[data-tooltip]:not([disabled]):after{border:6px solid transparent;border-top-color:rgba(64,70,84,.9);border-color:rgba(64,70,84,.9) transparent transparent;bottom:auto;content:"";left:50%;margin-bottom:-5px;margin:-5px auto auto -5px;right:auto;top:0}[data-tooltip]:not(.is-disabled):before,[data-tooltip]:not(.is-loading):before,[data-tooltip]:not([disabled]):before{background:rgba(64,70,84,.9);border-radius:.25rem;bottom:auto;content:attr(data-tooltip);left:50%;margin-bottom:auto;margin-top:-5px;padding:.5rem 1rem;right:auto;text-overflow:ellipsis;top:0;transform:translate(-50%,-100%);white-space:pre}[data-tooltip]:not(.is-disabled).has-tooltip-right:after,[data-tooltip]:not(.is-loading).has-tooltip-right:after,[data-tooltip]:not([disabled]).has-tooltip-right:after{border-color:transparent rgba(64,70,84,.9) transparent transparent;bottom:50%;left:auto;margin:auto -11px -6px auto;right:0;top:auto}[data-tooltip]:not(.is-disabled).has-tooltip-right:before,[data-tooltip]:not(.is-loading).has-tooltip-right:before,[data-tooltip]:not([disabled]).has-tooltip-right:before{bottom:50%;left:auto;margin-top:auto;right:-11px;top:auto;transform:translate(100%,50%)}[data-tooltip]:not(.is-disabled).has-tooltip-multiline:before,[data-tooltip]:not(.is-loading).has-tooltip-multiline:before,[data-tooltip]:not([disabled]).has-tooltip-multiline:before{height:auto;max-width:15rem;text-overflow:clip;white-space:normal;width:15rem;word-break:keep-all}[data-tooltip]:not(.is-disabled):focus:after,[data-tooltip]:not(.is-disabled):focus:before,[data-tooltip]:not(.is-disabled):hover:after,[data-tooltip]:not(.is-disabled):hover:before,[data-tooltip]:not(.is-loading):focus:after,[data-tooltip]:not(.is-loading):focus:before,[data-tooltip]:not(.is-loading):hover:after,[data-tooltip]:not(.is-loading):hover:before,[data-tooltip]:not([disabled]):focus:after,[data-tooltip]:not([disabled]):focus:before,[data-tooltip]:not([disabled]):hover:after,[data-tooltip]:not([disabled]):hover:before{opacity:1;visibility:visible} +/* Bulma Utilities */:root{--control-radius:var(--radius);--control-radius-small:var(--radius-small);--control-border-width:1px;--control-height:2.5em;--control-line-height:1.5;--control-padding-vertical:calc(0.5em - 1px);--control-padding-horizontal:calc(0.75em - 1px);--control-size:var(--size-normal);--control-focus-shadow-l:50%}.is-checkradio[type=checkbox]{display:none;opacity:0;outline:0;position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none}.is-checkradio[type=checkbox]+label{border-radius:.375rem;cursor:pointer;display:initial;margin:.5em;padding:.2rem .5rem .2rem 0;position:relative;vertical-align:middle}.is-checkradio[type=checkbox]+label:first-of-type{margin-left:0}.is-checkradio[type=checkbox]+label:hover:before{animation-duration:.4s;animation-fill-mode:both;animation-name:hover-color}.is-checkradio[type=checkbox]+label:before{border:.1rem solid #d6d9e0;content:"";left:0;position:absolute;top:0}.is-checkradio[type=checkbox]+label:after{content:"";display:none;position:absolute;top:0}.is-checkradio[type=checkbox]:focus+label:before{outline:1px dotted #abb1bf}.is-checkradio[type=checkbox]:hover:not([disabled])+label:before{border-color:#00d1b2!important}.is-checkradio[type=checkbox]:checked+label:before{border:.1rem solid #d6d9e0}.is-checkradio[type=checkbox]:checked[disabled]{cursor:not-allowed}.is-checkradio[type=checkbox]:checked[disabled]+label{opacity:.5}.is-checkradio[type=checkbox]:checked+label:before{animation-name:none}.is-checkradio[type=checkbox]:checked+label:after{display:inline-block}.is-checkradio[type=checkbox][disabled]{cursor:not-allowed}.is-checkradio[type=checkbox][disabled]+label{cursor:not-allowed;opacity:.5}.is-checkradio[type=checkbox][disabled]+label:after,.is-checkradio[type=checkbox][disabled]+label:before,.is-checkradio[type=checkbox][disabled]+label:hover,.is-checkradio[type=checkbox][disabled]:hover{cursor:not-allowed}.is-checkradio[type=checkbox][disabled]:hover:before{animation-name:none}.is-checkradio[type=checkbox][disabled]:after,.is-checkradio[type=checkbox][disabled]:before{cursor:not-allowed}.is-checkradio[type=checkbox].is-block{display:none!important}.is-checkradio[type=checkbox].is-block+label{background:#f3f4f6;color:findColorInvert(#f3f4f6);padding-right:.75em;width:100%!important}.is-checkradio[type=checkbox].is-block:hover:not([disabled])+label{background:#e5e7eb}.is-checkradio[type=checkbox]+label:before{border-radius:.375rem}.is-checkradio[type=checkbox]+label:after{border:.1rem solid #00d1b2;border-left:0;border-top:0;box-sizing:border-box;transform:translateY(0) rotate(45deg)}.is-checkradio[type=checkbox]+label{font-size:1rem;padding-left:2rem}.is-checkradio[type=checkbox]+label:before{height:1.5rem;width:1.5rem}.is-checkradio[type=checkbox]+label:after{height:.6rem;left:.6rem;top:.405rem;width:.375rem}.is-checkradio[type=checkbox].is-block+label:before{height:1.25rem;left:.175rem;top:.175rem;width:1.25rem}.is-checkradio[type=checkbox].is-block+label:after{left:.65rem;top:.325rem}.is-checkradio[type=checkbox].is-small+label{font-size:.75rem;padding-left:1.5rem}.is-checkradio[type=checkbox].is-small+label:before{height:1.125rem;width:1.125rem}.is-checkradio[type=checkbox].is-small+label:after{height:.45rem;left:.45rem;top:.30375rem;width:.28125rem}.is-checkradio[type=checkbox].is-small.is-block+label:before{height:.9375rem;left:.175rem;top:.175rem;width:.9375rem}.is-checkradio[type=checkbox].is-small.is-block+label:after{left:.5375rem;top:.29375rem}.is-checkradio[type=checkbox].is-medium+label{font-size:1.25rem;padding-left:2.5rem}.is-checkradio[type=checkbox].is-medium+label:before{height:1.875rem;width:1.875rem}.is-checkradio[type=checkbox].is-medium+label:after{height:.75rem;left:.75rem;top:.50625rem;width:.46875rem}.is-checkradio[type=checkbox].is-medium.is-block+label:before{height:1.5625rem;left:.175rem;top:.175rem;width:1.5625rem}.is-checkradio[type=checkbox].is-medium.is-block+label:after{left:.7625rem;top:.35625rem}.is-checkradio[type=checkbox].is-large+label{font-size:1.5rem;padding-left:3rem}.is-checkradio[type=checkbox].is-large+label:before{height:2.25rem;width:2.25rem}.is-checkradio[type=checkbox].is-large+label:after{height:.9rem;left:.9rem;top:.6075rem;width:.5625rem}.is-checkradio[type=checkbox].is-large.is-block+label:before{height:1.875rem;left:.175rem;top:.175rem;width:1.875rem}.is-checkradio[type=checkbox].is-large.is-block+label:after{left:.875rem;top:.3875rem}.is-checkradio[type=checkbox]:indeterminate+label:after{border-bottom:none;display:inline-block;transform:rotate(90deg)}.fa{font-family:var(--fa-style-family,"Font Awesome 6 Free");font-weight:var(--fa-style,900)}.fa,.fa-brands,.fa-classic,.fa-regular,.fa-sharp-solid,.fa-solid,.fab,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display,inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fa-classic,.fa-regular,.fa-solid,.far,.fas{font-family:Font Awesome\ 6 Free}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.0833333337em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.0714285718em;vertical-align:.0535714295em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.0416666682em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}@font-face{font-display:block;font-family:Font Awesome\ 6 Brands;font-style:normal;font-weight:400;src:url(/static/fonts/fontawesome/webfonts/fa-brands-400.woff2) format("woff2"),url(/static/fonts/fontawesome/webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-display:block;font-family:Font Awesome\ 6 Free;font-style:normal;font-weight:900;src:url(/static/fonts/fontawesome/webfonts/fa-solid-900.woff2) format("woff2"),url(/static/fonts/fontawesome/webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-display:block;font-family:Font Awesome\ 6 Free;font-style:normal;font-weight:400;src:url(/static/fonts/fontawesome/webfonts/fa-regular-400.woff2) format("woff2"),url(/static/fonts/fontawesome/webfonts/fa-regular-400.ttf) format("truetype")}.fa-regular,.far{font-weight:400}.fa-regular,.fa-solid,.far,.fas{font-family:Font Awesome\ 6 Free}.fa-solid,.fas{font-weight:900}.fa-brands,.fab{font-family:Font Awesome\ 6 Brands;font-weight:400}.fa-2_3x{font-size:2.3em} + +/* build icon list */.fa-magnifying-glass:before{content:"\f002"}.fa-pen-to-square:before{content:"\f044"}.fa-trash:before{content:"\f1f8"}.fa-delete-left:before{content:"\f55a"}.fa-sort:before{content:"\f0dc"}.fa-terminal:before{content:"\f120"}.fa-list:before{content:"\f03a"}.fa-ban:before{content:"\f05e"}.fa-toggle-on:before{content:"\f205"}.fa-toggle-off:before{content:"\f204"}.fa-circle-play:before{content:"\f144"}.fa-plus:before{content:"\+"}.fa-rotate:before{content:"\f2f1"}.fa-copy:before{content:"\f0c5"}.fa-download:before{content:"\f019"}.fa-check:before{content:"\f00c"}.fa-circle-info:before{content:"\f05a"}.fa-file-arrow-down:before{content:"\f56d"}.fa-angle-right:before{content:"\f105"}.fa-circle-check:before{content:"\f058"}.fa-circle-xmark:before{content:"\f057"}.fa-circle-notch:before{content:"\f1ce"}.fa-circle-stop:before{content:"\f28d"}.fa-circle-pause:before{content:"\f28b"}.fa-circle-question:before{content:"\f059"}.fa-calendar:before{content:"\f133"}.fa-arrow-up-right-from-square:before{content:"\f08e"}.fa-eye-slash:before{content:"\f070"}.fa-eye:before{content:"\f06e"}.fa-users:before{content:"\f0c0"}.fa-right-to-bracket:before{content:"\f2f6"}.fa-angle-down:before{content:"\f107"}.fa-triangle-exclamation:before{content:"\f071"} + +/* BASICS */.CodeMirror{color:#000;direction:ltr; + /* Set height, width, borders, and global font properties here */font-family:monospace;height:300px} + +/* PADDING */.CodeMirror-lines{padding:4px 0 /* Vertical padding around content */}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px /* Horizontal padding of content */}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff /* The little square between H and V scrollbars */} + +/* GUTTER */.CodeMirror-gutters{background-color:#f7f7f7;border-right:1px solid #ddd;white-space:nowrap}.CodeMirror-linenumber{color:#999;min-width:20px;padding:0 3px 0 5px;text-align:right;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999} + +/* CURSOR */.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0} + +/* Shown when moving in bi-directional text */.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{background:#7e7;border:0!important;width:auto}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor .CodeMirror-line::-moz-selection, .cm-fat-cursor .CodeMirror-line>span::-moz-selection, .cm-fat-cursor .CodeMirror-line>span>span::-moz-selection{background:transparent}.cm-fat-cursor .CodeMirror-line::selection,.cm-fat-cursor .CodeMirror-line>span::selection,.cm-fat-cursor .CodeMirror-line>span>span::selection{background:transparent}.cm-fat-cursor .CodeMirror-line::-moz-selection,.cm-fat-cursor .CodeMirror-line>span::-moz-selection,.cm-fat-cursor .CodeMirror-line>span>span::-moz-selection{background:transparent}.cm-fat-cursor{caret-color:transparent}@keyframes blink{50%{background-color:transparent}} +/* Can style cursor different in overwrite (non-insert) mode */.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{bottom:0;left:0;overflow:hidden;position:absolute;right:0;top:-50px}.CodeMirror-ruler{border-left:1px solid #ccc;bottom:0;position:absolute;top:0} + +/* DEFAULT THEME */.cm-s-default .cm-header{color:blue}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-type,.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-invalidchar,.cm-s-default .cm-error{color:red}.CodeMirror-composing{border-bottom:2px solid} + +/* Default styles for common addons */div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff} + +/* STOP */ +/* The rest of this file contains styles related to the mechanics of + the editor. You probably shouldn't touch them. */.CodeMirror{background:#fff;overflow:hidden;position:relative}.CodeMirror-scroll{height:100%; + /* 50px is the magic margin used to hide the element's real scrollbars */ + /* See overflow: hidden in .CodeMirror */margin-bottom:-50px;margin-right:-50px;outline:none; /* Prevent dragging from highlighting the element */overflow:scroll!important; /* Things will break if this is overridden */padding-bottom:50px;position:relative;z-index:0}.CodeMirror-sizer{border-right:50px solid transparent;position:relative} + +/* The fake, visible scrollbars. Used to force redraw during scrolling + before actual scrolling happens, thus preventing shaking and + flickering artifacts. */.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{display:none;outline:none;position:absolute;z-index:6}.CodeMirror-vscrollbar{overflow-x:hidden;overflow-y:scroll;right:0;top:0}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-x:scroll;overflow-y:hidden}.CodeMirror-scrollbar-filler{bottom:0;right:0}.CodeMirror-gutter-filler{bottom:0;left:0}.CodeMirror-gutters{left:0;min-height:100%;position:absolute;top:0;z-index:3}.CodeMirror-gutter{display:inline-block;height:100%;margin-bottom:-50px;vertical-align:top;white-space:normal}.CodeMirror-gutter-wrapper{background:none!important;border:none!important;position:absolute;z-index:4}.CodeMirror-gutter-background{bottom:0;position:absolute;top:0;z-index:4}.CodeMirror-gutter-elt{cursor:default;position:absolute;z-index:4}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px /* prevents collapsing before first draw */}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{background:transparent; + /* Reset some styles that the rest of the page might have set */border-radius:0;border-width:0;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;color:inherit;line-height:inherit;overflow:visible;position:relative;z-index:2;-webkit-tap-highlight-color:transparent;font-variant-ligatures:contextual}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{bottom:0;left:0;position:absolute;right:0;top:0;z-index:0}.CodeMirror-linewidget{padding:.1px; /* Force widget margins to stay inside of the container */position:relative;z-index:2}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:none} + +/* Force content-box sizing for the elements where we expect it */.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{box-sizing:content-box}.CodeMirror-measure{height:0;overflow:hidden;position:absolute;visibility:hidden;width:100%}.CodeMirror-cursor{pointer-events:none;position:absolute}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{position:relative;visibility:hidden;z-index:3}.CodeMirror-focused div.CodeMirror-cursors,div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::-moz-selection, .CodeMirror-line>span::-moz-selection, .CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:rgba(255,255,0,.4)} + +/* Used to force a border model for a node */.cm-force-border{padding-right:.1px}@media print{ + /* Hide the cursor when printing */.CodeMirror div.CodeMirror-cursors{visibility:hidden}} +/* See issue #2901 */.cm-tab-wrap-hack:after{content:""} + +/* Help users use markselection to safely style text background */span.CodeMirror-selectedtext{background:none}.cm-s-ttcn .cm-quote{color:#090}.cm-s-ttcn .cm-negative{color:#d44}.cm-s-ttcn .cm-positive{color:#292}.cm-s-ttcn .cm-header,.cm-strong{font-weight:700}.cm-s-ttcn .cm-em{font-style:italic}.cm-s-ttcn .cm-strikethrough{text-decoration:line-through}.cm-s-ttcn .cm-header{color:#00f;font-weight:700}.cm-s-ttcn .cm-atom{color:#219}.cm-s-ttcn .cm-attribute{color:#00c}.cm-s-ttcn .cm-bracket{color:#997}.cm-s-ttcn .cm-comment{color:#333}.cm-s-ttcn .cm-def{color:#00f}.cm-s-ttcn .cm-error{color:red}.cm-s-ttcn .cm-hr{color:#999}.cm-s-ttcn .cm-invalidchar{color:red}.cm-s-ttcn .cm-keyword{font-weight:700}.cm-s-ttcn .cm-link{color:#00c;text-decoration:underline}.cm-s-ttcn .cm-meta,.cm-s-ttcn .cm-qualifier{color:#555}.cm-s-ttcn .cm-string{color:#006400}.cm-s-ttcn .cm-string-2{color:#f50}.cm-s-ttcn .cm-strong{font-weight:700}.cm-s-ttcn .cm-tag{color:#170}.cm-s-ttcn .cm-variable{color:#8b2252}.cm-s-ttcn .cm-variable-2{color:#05a}.cm-s-ttcn .cm-type,.cm-s-ttcn .cm-variable-3{color:#085} + +/* ASN */.cm-s-ttcn .cm-accessTypes,.cm-s-ttcn .cm-compareTypes{color:#27408b}.cm-s-ttcn .cm-cmipVerbs{color:#8b2252}.cm-s-ttcn .cm-modifier{color:#d2691e}.cm-s-ttcn .cm-status{color:#8b4545}.cm-s-ttcn .cm-storage{color:#a020f0}.cm-s-ttcn .cm-tags{color:#006400} + +/* CFG */.cm-s-ttcn .cm-externalCommands{color:#8b4545;font-weight:700}.cm-s-ttcn .cm-fileNCtrlMaskOptions,.cm-s-ttcn .cm-sectionTitle{color:#2e8b57;font-weight:700} + +/* TTCN */.cm-s-ttcn .cm-booleanConsts,.cm-s-ttcn .cm-otherConsts,.cm-s-ttcn .cm-verdictConsts{color:#006400}.cm-s-ttcn .cm-configOps,.cm-s-ttcn .cm-functionOps,.cm-s-ttcn .cm-portOps,.cm-s-ttcn .cm-sutOps,.cm-s-ttcn .cm-timerOps,.cm-s-ttcn .cm-verdictOps{color:#00f}.cm-s-ttcn .cm-preprocessor,.cm-s-ttcn .cm-templateMatch,.cm-s-ttcn .cm-ttcn3Macros{color:#27408b}.cm-s-ttcn .cm-types{color:brown;font-weight:700}.cm-s-ttcn .cm-visibilityModifiers{font-weight:700}.CodeMirror-simplescroll-horizontal div,.CodeMirror-simplescroll-vertical div{background:#ccc;border:1px solid #bbb;border-radius:2px;box-sizing:border-box;position:absolute}.CodeMirror-simplescroll-horizontal,.CodeMirror-simplescroll-vertical{background:#eee;position:absolute;z-index:6}.CodeMirror-simplescroll-horizontal{bottom:0;height:8px;left:0}.CodeMirror-simplescroll-horizontal div{bottom:0;height:100%}.CodeMirror-simplescroll-vertical{right:0;top:0;width:8px}.CodeMirror-simplescroll-vertical div{right:0;width:100%}.CodeMirror-overlayscroll .CodeMirror-gutter-filler,.CodeMirror-overlayscroll .CodeMirror-scrollbar-filler{display:none}.CodeMirror-overlayscroll-horizontal div,.CodeMirror-overlayscroll-vertical div{background:#bcd;border-radius:3px;position:absolute}.CodeMirror-overlayscroll-horizontal,.CodeMirror-overlayscroll-vertical{position:absolute;z-index:6}.CodeMirror-overlayscroll-horizontal{bottom:0;height:6px;left:0}.CodeMirror-overlayscroll-horizontal div{bottom:0;height:100%}.CodeMirror-overlayscroll-vertical{right:0;top:0;width:6px}.CodeMirror-overlayscroll-vertical div{right:0;width:100%}.ss-wrapper{float:left;height:100%;overflow:hidden;position:relative;width:100%;z-index:1}.ss-content{box-sizing:border-box;height:calc(22px + 100%);overflow-x:scroll;overflow-y:scroll;padding:0;position:relative;width:calc(18px + 100%)}.ss-scroll{padding-top:2px;right:0;top:0}.ss-hscroll,.ss-scroll{cursor:pointer;opacity:0;padding-bottom:2px;padding-right:2px;position:absolute;transition:opacity .25s linear .5s;z-index:2}.ss-hscroll{bottom:0;left:0;padding-left:2px}.ss-liner{background:rgba(0,0,0,.4);border-radius:4px;height:100%;transition:background .25s linear;width:100%}.ss-scroll .ss-liner{transition:width .15s linear;width:8px}.ss-hscroll .ss-liner{height:8px;transition:height .15s linear}.ss-grabbed .ss-liner,.ss-hscroll:hover .ss-liner,.ss-scroll:hover .ss-liner{background:rgba(0,0,0,.5);border-radius:6px}.ss-scroll.ss-grabbed .ss-liner,.ss-scroll:hover .ss-liner{width:12px}.ss-hscroll.ss-grabbed .ss-liner,.ss-hscroll:hover .ss-liner{height:12px}.ss-container.light .ss-liner{background:hsla(0,0%,100%,.4)}.ss-container.light .ss-grabbed .ss-liner,.ss-container.light .ss-hscroll:hover .ss-liner,.ss-container.light .ss-scroll:hover .ss-liner{background:hsla(0,0%,100%,.8)}.ss-hidden{display:none}.ss-container.ss-grabbed>.ss-wrapper>.ss-hscroll,.ss-container.ss-grabbed>.ss-wrapper>.ss-scroll,.ss-container:active>.ss-wrapper>.ss-hscroll,.ss-container:active>.ss-wrapper>.ss-scroll,.ss-container:hover>.ss-wrapper>.ss-hscroll,.ss-container:hover>.ss-wrapper>.ss-scroll{opacity:1;transition:opacity .25s linear 0s}.ss-grabbed{-o-user-select:none;-moz-user-select:none;-webkit-user-select:none;user-select:none} + +/*********** scroll preview **************/.sp-wrapper{height:100%;opacity:0;position:absolute;right:0;top:0;transition:opacity .25s linear .5s;-moz-user-select:none;-webkit-user-select:none;user-select:none;width:0}.sp-container:hover .sp-wrapper,.sp-wrapper>.sp-grabbed,.ss-grabbed~.sp-wrapper{opacity:1;transition:opacity .25s linear 0s}.sp-content{transform-origin:0 0}.sp-scroll{background-image:linear-gradient(270deg,hsla(0,0%,100%,0),hsla(0,0%,100%,.2));border-left:2px solid #e7db74;left:-2px;opacity:0;position:absolute;transition:opacity .25s linear .5s;width:100%}.sp-wrapper .sp-scroll.sp-grabbed,.sp-wrapper.sp-hover .sp-scroll,.sp-wrapper:hover .sp-scroll,.ss-scroll.ss-grabbed~.sp-wrapper .sp-scroll,.ss-scroll:hover~.sp-wrapper .sp-scroll{opacity:1;transition:opacity .25s linear 0s}.ss-content::-webkit-scrollbar{background-color:#fff;width:16px} + +/* PrismJS 1.25.0 +https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript+ini+python+sql+toml */ +/** + * prism.js default theme for JavaScript, CSS and HTML + * Based on dabblet (http://dabblet.com) + * @author Lea Verou + */code[class*=language-],pre[class*=language-]{background:none;color:#000;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;text-shadow:0 1px #fff;white-space:pre;word-break:normal;word-spacing:normal;word-wrap:normal;-webkit-hyphens:none;hyphens:none;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{background:#b3d4fc;text-shadow:none}code[class*=language-] ::-moz-selection, code[class*=language-]::-moz-selection, pre[class*=language-] ::-moz-selection, pre[class*=language-]::-moz-selection{background:#b3d4fc;text-shadow:none}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{background:#b3d4fc;text-shadow:none}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}} +/* Code blocks */pre[class*=language-]{margin:.5em 0;overflow:auto;padding:1em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0} + +/* Inline code */:not(pre)>code[class*=language-]{border-radius:.3em;padding:.1em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{ + /* This background color was intended by the author of this theme. */background:hsla(0,0%,100%,.5);color:#9a6e3a}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.table.sort tr>th{cursor:pointer}pre[class*=language-].line-numbers{counter-reset:linenumber;padding-left:3.8em;position:relative}pre[class*=language-].line-numbers>code{position:relative;white-space:inherit}.line-numbers .line-numbers-rows{border-right:1px solid #999;font-size:100%;left:-3.8em;letter-spacing:-1px;pointer-events:none;position:absolute;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:3em /* works for line-numbers below 1000 lines */}.line-numbers-rows>span{counter-increment:linenumber;display:block}.line-numbers-rows>span:before{color:#999;content:counter(linenumber);display:block;padding-right:.8em;text-align:right}.flatpickr-calendar{animation:none;background:transparent;background:#fff;border:0;border-radius:5px;box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,.08);box-sizing:border-box;direction:ltr;display:none;font-size:14px;line-height:24px;opacity:0;padding:0;position:absolute;text-align:center;touch-action:manipulation;visibility:hidden;width:307.875px}.flatpickr-calendar.inline,.flatpickr-calendar.open{max-height:640px;opacity:1;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{animation:fpFadeInDown .3s cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{display:block;z-index:999}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){box-shadow:none!important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasTime .dayContainer,.flatpickr-calendar .hasWeeks .dayContainer{border-bottom:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time{border-top:1px solid #e6e6e6;height:40px}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:after,.flatpickr-calendar:before{border:solid transparent;content:"";display:block;height:0;left:22px;pointer-events:none;position:absolute;width:0}.flatpickr-calendar.rightMost:after,.flatpickr-calendar.rightMost:before{left:auto;right:22px}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:after,.flatpickr-calendar.arrowTop:before{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:after,.flatpickr-calendar.arrowBottom:before{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{display:inline-block;position:relative}.flatpickr-months{display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,.9);fill:rgba(0,0,0,.9);height:34px;line-height:1;overflow:hidden;position:relative;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex:1}.flatpickr-months .flatpickr-next-month,.flatpickr-months .flatpickr-prev-month{color:rgba(0,0,0,.9);cursor:pointer;height:34px;padding:10px;position:absolute;text-decoration:none;top:0;z-index:3;fill:rgba(0,0,0,.9)}.flatpickr-months .flatpickr-next-month.flatpickr-disabled,.flatpickr-months .flatpickr-prev-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-next-month i,.flatpickr-months .flatpickr-prev-month i{position:relative}.flatpickr-months .flatpickr-next-month.flatpickr-prev-month,.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month{ + /* + /*rtl:begin:ignore*/left:0 /* +/*rtl:end:ignore*/} /* + /*rtl:begin:ignore*/ +/* + /*rtl:end:ignore*/.flatpickr-months .flatpickr-next-month.flatpickr-next-month,.flatpickr-months .flatpickr-prev-month.flatpickr-next-month{ + /* + /*rtl:begin:ignore*/right:0 /* +/*rtl:end:ignore*/} /* + /*rtl:begin:ignore*/ +/* + /*rtl:end:ignore*/.flatpickr-months .flatpickr-next-month:hover,.flatpickr-months .flatpickr-prev-month:hover{color:#959ea9}.flatpickr-months .flatpickr-next-month:hover svg,.flatpickr-months .flatpickr-prev-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-next-month svg,.flatpickr-months .flatpickr-prev-month svg{height:14px;width:14px}.flatpickr-months .flatpickr-next-month svg path,.flatpickr-months .flatpickr-prev-month svg path{transition:fill .1s;fill:inherit}.numInputWrapper{height:auto;position:relative}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-inner-spin-button,.numInputWrapper input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.numInputWrapper span{border:1px solid rgba(57,57,57,.15);box-sizing:border-box;cursor:pointer;height:50%;line-height:50%;opacity:0;padding:0 4px 0 2px;position:absolute;right:0;width:14px}.numInputWrapper span:hover{background:rgba(0,0,0,.1)}.numInputWrapper span:active{background:rgba(0,0,0,.2)}.numInputWrapper span:after{content:"";display:block;position:absolute}.numInputWrapper span.arrowUp{border-bottom:0;top:0}.numInputWrapper span.arrowUp:after{border-bottom:4px solid rgba(57,57,57,.6);border-left:4px solid transparent;border-right:4px solid transparent;top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,.6);top:40%}.numInputWrapper span svg{height:auto;width:inherit}.numInputWrapper span svg path{fill:rgba(0,0,0,.5)}.numInputWrapper:hover{background:rgba(0,0,0,.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{color:inherit;display:inline-block;font-size:135%;font-weight:300;height:34px;left:12.5%;line-height:inherit;line-height:1;padding:7.48px 0 0;position:absolute;text-align:center;transform:translateZ(0);width:75%}.flatpickr-current-month span.cur-month{color:inherit;display:inline-block;font-family:inherit;font-weight:700;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,.05)}.flatpickr-current-month .numInputWrapper{display:inline-block;width:6ch;width:7ch\0 }.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,.9)}.flatpickr-current-month input.cur-year{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield;background:transparent;border:0;border-radius:0;box-sizing:border-box;color:inherit;cursor:text;display:inline-block;font-family:inherit;font-size:inherit;font-weight:300;height:auto;line-height:inherit;margin:0;padding:0 0 0 .5ch;vertical-align:initial}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{background:transparent;color:rgba(0,0,0,.5);font-size:100%;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;-webkit-appearance:menulist;-moz-appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;-webkit-box-sizing:border-box;color:inherit;cursor:pointer;font-family:inherit;font-size:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:active,.flatpickr-current-month .flatpickr-monthDropdown-months:focus{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;overflow:hidden;text-align:center;width:100%;align-items:center;height:28px}.flatpickr-weekdays,.flatpickr-weekdays .flatpickr-weekdaycontainer{display:flex}.flatpickr-weekdays .flatpickr-weekdaycontainer,span.flatpickr-weekday{flex:1}span.flatpickr-weekday{background:transparent;color:rgba(0,0,0,.54);cursor:default;display:block;font-size:90%;font-weight:bolder;line-height:1;margin:0;text-align:center}.dayContainer,.flatpickr-weeks{padding:1px 0 0}.flatpickr-days{display:flex;overflow:hidden;position:relative;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{box-sizing:border-box;display:inline-block;display:flex;flex-wrap:wrap;-ms-flex-wrap:wrap;max-width:307.875px;min-width:307.875px;outline:0;padding:0;text-align:left;width:307.875px;justify-content:space-around;opacity:1;transform:translateZ(0)}.dayContainer+.dayContainer{box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;box-sizing:border-box;color:#393939;cursor:pointer;-webkit-flex-basis:14.2857143%;font-weight:400;width:14.2857143%;-ms-flex-preferred-size:14.2857143%;display:inline-block;flex-basis:14.2857143%;height:39px;line-height:39px;margin:0;max-width:39px;position:relative;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day.nextMonthDay:focus,.flatpickr-day.nextMonthDay:hover,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.today.inRange,.flatpickr-day:focus,.flatpickr-day:hover{background:#e6e6e6;border-color:#e6e6e6;cursor:pointer;outline:0}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:focus,.flatpickr-day.today:hover{background:#959ea9;border-color:#959ea9;color:#fff}.flatpickr-day.endRange,.flatpickr-day.endRange.inRange,.flatpickr-day.endRange.nextMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.endRange:focus,.flatpickr-day.endRange:hover,.flatpickr-day.selected,.flatpickr-day.selected.inRange,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.selected:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange,.flatpickr-day.startRange.inRange,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.startRange:focus,.flatpickr-day.startRange:hover{background:#569ff7;border-color:#569ff7;box-shadow:none;color:#fff}.flatpickr-day.endRange.startRange,.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.endRange.endRange,.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.endRange.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.selected.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange+.endRange:not(:nth-child(7n+1)){box-shadow:-10px 0 0 #569ff7}.flatpickr-day.endRange.startRange.endRange,.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.nextMonthDay,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.prevMonthDay{background:transparent;border-color:transparent;color:rgba(57,57,57,.3);cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{color:rgba(57,57,57,.1);cursor:not-allowed}.flatpickr-day.week.selected{border-radius:0;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{box-shadow:1px 0 0 #e6e6e6;padding:0 12px}.flatpickr-weekwrapper .flatpickr-weekday{float:none;line-height:28px;width:100%}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{background:transparent;border:none;color:rgba(57,57,57,.3);cursor:default;display:block;max-width:none;width:100%}.flatpickr-innerContainer{display:block;display:flex;overflow:hidden}.flatpickr-innerContainer,.flatpickr-rContainer{box-sizing:border-box}.flatpickr-rContainer{display:inline-block;padding:0}.flatpickr-time{box-sizing:border-box;display:block;display:flex;height:0;line-height:40px;max-height:40px;outline:0;overflow:hidden;text-align:center}.flatpickr-time:after{clear:both;content:"";display:table}.flatpickr-time .numInputWrapper{flex:1;float:left;height:40px;width:40%}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield;background:transparent;border:0;border-radius:0;box-shadow:none;box-sizing:border-box;color:#393939;font-size:14px;height:inherit;line-height:inherit;margin:0;padding:0;position:relative;text-align:center}.flatpickr-time input.flatpickr-hour{font-weight:700}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{border:0;outline:0}.flatpickr-time .flatpickr-am-pm,.flatpickr-time .flatpickr-time-separator{-webkit-align-self:center;color:#393939;float:left;font-weight:700;height:inherit;line-height:inherit;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:2%;align-self:center}.flatpickr-time .flatpickr-am-pm{cursor:pointer;font-weight:400;outline:0;text-align:center;width:18%}.flatpickr-time .flatpickr-am-pm:focus,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time input:hover{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@keyframes fpFadeInDown{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}} +/* inter-latin-300-normal */@font-face{font-display:swap;font-family:Inter;font-style:normal;font-weight:300;src:url(/static/fonts/inter/files/inter-latin-300-normal.woff2) format("woff2"),url(/static/fonts/inter/files/inter-latin-300-normal.woff) format("woff");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+2074,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd} +/* inter-latin-400-normal */@font-face{font-display:swap;font-family:Inter;font-style:normal;font-weight:400;src:url(/static/fonts/inter/files/inter-latin-400-normal.woff2) format("woff2"),url(/static/fonts/inter/files/inter-latin-400-normal.woff) format("woff");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+2074,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd} +/* inter-latin-500-normal */@font-face{font-display:swap;font-family:Inter;font-style:normal;font-weight:500;src:url(/static/fonts/inter/files/inter-latin-500-normal.woff2) format("woff2"),url(/static/fonts/inter/files/inter-latin-500-normal.woff) format("woff");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+2074,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd} +/* inter-latin-600-normal */@font-face{font-display:swap;font-family:Inter;font-style:normal;font-weight:600;src:url(/static/fonts/inter/files/inter-latin-600-normal.woff2) format("woff2"),url(/static/fonts/inter/files/inter-latin-600-normal.woff) format("woff");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+2074,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd} +/* inter-latin-700-normal */@font-face{font-display:swap;font-family:Inter;font-style:normal;font-weight:700;src:url(/static/fonts/inter/files/inter-latin-700-normal.woff2) format("woff2"),url(/static/fonts/inter/files/inter-latin-700-normal.woff) format("woff");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+2074,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd} +/* rasa-latin-600-normal */@font-face{font-display:swap;font-family:Rasa;font-style:normal;font-weight:600;src:url(/static/fonts/rasa/files/rasa-latin-600-normal.woff2) format("woff2"),url(/static/fonts/rasa/files/rasa-latin-600-normal.woff) format("woff");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+2074,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}.column{min-width:0}.atlas-navbar{padding:16px 0}.atlas-navbar .navbar-brand{margin-left:0!important}.atlas-navbar .navbar-brand a{padding-bottom:0;padding-top:0}.atlas-navbar .navbar-brand a img{height:50px;max-height:50px}.atlas-navbar .has-dropdown .navbar-link:hover,.atlas-navbar a.navbar-item:hover{color:#2e333d}@media screen and (min-width:1024px){.atlas-navbar .navbar-start{padding-top:0!important}.hide-desktop{display:none!important}} +/* search */#search-form{position:relative}#search-results{border-radius:.375rem;display:none;left:0;max-height:calc(100vh - 145px);max-width:800px;min-width:100%;min-width:max(50vw,100%);overflow-y:auto;position:absolute;top:50px;z-index:999999}@media screen and (min-width:1024px){#search-results{min-width:max(30vw,100%)}}#search-results:empty{display:none!important}#search-results.search-focus,#search-results:active{border:1px solid #d6d9e0;display:block}#search-results .panel-block:first-of-type{border-top-left-radius:inherit;border-top-right-radius:inherit}#search-background{background:transparent;bottom:0;display:none;left:0;position:fixed;right:0;top:0;z-index:10}#search-background.search-focus-background{display:block}#search-background+div{z-index:11}#search-results em{background-color:#eff5fb;color:#3e8ed0} + +/*** tabs ***/.tab-cnt>.tab-dta:not(.is-active){display:none} + +/*** tags ***/.tag:empty{background:transparent} + +/*** multiline tooltip ***/[data-tooltip].has-tooltip-multiline:before{white-space:pre-line!important}[data-tooltip]:before{max-width:21rem!important;width:21rem!important} + +/* font */.is-size-6-5{font-size:.85rem!important} + +/* input */input.transparent{background:transparent!important;border:transparent!important} + +/* pagination */.pagination.is-close ul li:not(:first-of-type) .pagination-link{border-bottom-left-radius:0;border-top-left-radius:0;margin-left:0}.pagination.is-close ul li:not(:last-child) .pagination-link{border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}.pagination.is-close ul li:not(:last-child) .pagination-link:hover{margin-right:0;z-index:4}.pagination.is-close ul li:not(:last-child):hover+li .pagination-link{margin-left:-1px} + +/* logs */.log-group div[log_id].is-collapsed{align-items:baseline;height:20px;overflow:hidden}.log-group.first-of-type{margin-top:15px}.em-codeBox{max-height:500px;overflow:hidden}.em-codeBox pre{display:inline-block;margin:0!important;min-height:calc(100% - 1px);min-width:100%;overflow:hidden!important;padding:1em 0 0 1em}.em-codeBox code{padding-right:130px}.em-timelineScale{bottom:0;position:absolute;top:0;width:100%}.em-timelineLiner{padding-left:50px;position:relative}.em-timelineLiner:before{bottom:-20px;content:"runs/\a time";left:0;position:absolute;white-space:pre-wrap}.em-el{height:200px}.em-elBar{height:0;position:relative}.em-elBar:before{background:#fff;bottom:-30px;content:attr(data-attr);left:0;position:absolute;right:0}.em-ScaleBar{background:#abb1bf;height:1px;margin-bottom:50px;position:relative;width:100%}.em-ScaleBar:before{background:#fff;color:#404654;content:attr(data-attr);padding-right:10px;position:absolute;top:50%;transform:translateY(-50%)}.em-ScaleBar:last-of-type{background:transparent} + +/* fix bulma + prism */code .number{all:unset}.is-inlineblock{display:inline-block!important} + +/* links in message */article.message a{text-decoration:none!important} + +/* ajax loader */.em-ajaxContent.is-inline div{display:inline-block} \ No newline at end of file diff --git a/web/static/fonts/fontawesome/webfonts/fa-regular-400.ttf b/web/static/fonts/fontawesome/webfonts/fa-regular-400.ttf index f015bb6a..ad6faeb6 100644 Binary files a/web/static/fonts/fontawesome/webfonts/fa-regular-400.ttf and b/web/static/fonts/fontawesome/webfonts/fa-regular-400.ttf differ diff --git a/web/static/fonts/fontawesome/webfonts/fa-regular-400.woff2 b/web/static/fonts/fontawesome/webfonts/fa-regular-400.woff2 index 3d7babfe..e3ca572a 100644 Binary files a/web/static/fonts/fontawesome/webfonts/fa-regular-400.woff2 and b/web/static/fonts/fontawesome/webfonts/fa-regular-400.woff2 differ diff --git a/web/static/fonts/fontawesome/webfonts/fa-solid-900.ttf b/web/static/fonts/fontawesome/webfonts/fa-solid-900.ttf index 65a54780..e5fe836e 100644 Binary files a/web/static/fonts/fontawesome/webfonts/fa-solid-900.ttf and b/web/static/fonts/fontawesome/webfonts/fa-solid-900.ttf differ diff --git a/web/static/fonts/fontawesome/webfonts/fa-solid-900.woff2 b/web/static/fonts/fontawesome/webfonts/fa-solid-900.woff2 index 9d444e48..5a5a56d0 100644 Binary files a/web/static/fonts/fontawesome/webfonts/fa-solid-900.woff2 and b/web/static/fonts/fontawesome/webfonts/fa-solid-900.woff2 differ diff --git a/web/static/fonts/inter/100-italic.css b/web/static/fonts/inter/100-italic.css new file mode 100644 index 00000000..795defde --- /dev/null +++ b/web/static/fonts/inter/100-italic.css @@ -0,0 +1,69 @@ +/* inter-cyrillic-ext-100-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 100; + src: url(/static/fonts/inter/files/inter-cyrillic-ext-100-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-100-italic.woff) format('woff'); + unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; +} + +/* inter-cyrillic-100-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 100; + src: url(/static/fonts/inter/files/inter-cyrillic-100-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-100-italic.woff) format('woff'); + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; +} + +/* inter-greek-ext-100-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 100; + src: url(/static/fonts/inter/files/inter-greek-ext-100-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-100-italic.woff) format('woff'); + unicode-range: U+1F00-1FFF; +} + +/* inter-greek-100-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 100; + src: url(/static/fonts/inter/files/inter-greek-100-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-100-italic.woff) format('woff'); + unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; +} + +/* inter-vietnamese-100-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 100; + src: url(/static/fonts/inter/files/inter-vietnamese-100-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-100-italic.woff) format('woff'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* inter-latin-ext-100-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 100; + src: url(/static/fonts/inter/files/inter-latin-ext-100-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-100-italic.woff) format('woff'); + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* inter-latin-100-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 100; + src: url(/static/fonts/inter/files/inter-latin-100-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-100-italic.woff) format('woff'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/web/static/fonts/inter/100.css b/web/static/fonts/inter/100.css index e7c37f51..2f188d25 100644 --- a/web/static/fonts/inter/100.css +++ b/web/static/fonts/inter/100.css @@ -35,7 +35,7 @@ font-display: swap; font-weight: 100; src: url(/static/fonts/inter/files/inter-greek-100-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-100-normal.woff) format('woff'); - unicode-range: U+0370-03FF; + unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; } /* inter-vietnamese-100-normal */ @@ -55,7 +55,7 @@ font-display: swap; font-weight: 100; src: url(/static/fonts/inter/files/inter-latin-ext-100-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-100-normal.woff) format('woff'); - unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; } /* inter-latin-100-normal */ @@ -65,5 +65,5 @@ font-display: swap; font-weight: 100; src: url(/static/fonts/inter/files/inter-latin-100-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-100-normal.woff) format('woff'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; } \ No newline at end of file diff --git a/web/static/fonts/inter/200-italic.css b/web/static/fonts/inter/200-italic.css new file mode 100644 index 00000000..5daf5ead --- /dev/null +++ b/web/static/fonts/inter/200-italic.css @@ -0,0 +1,69 @@ +/* inter-cyrillic-ext-200-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 200; + src: url(/static/fonts/inter/files/inter-cyrillic-ext-200-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-200-italic.woff) format('woff'); + unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; +} + +/* inter-cyrillic-200-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 200; + src: url(/static/fonts/inter/files/inter-cyrillic-200-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-200-italic.woff) format('woff'); + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; +} + +/* inter-greek-ext-200-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 200; + src: url(/static/fonts/inter/files/inter-greek-ext-200-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-200-italic.woff) format('woff'); + unicode-range: U+1F00-1FFF; +} + +/* inter-greek-200-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 200; + src: url(/static/fonts/inter/files/inter-greek-200-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-200-italic.woff) format('woff'); + unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; +} + +/* inter-vietnamese-200-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 200; + src: url(/static/fonts/inter/files/inter-vietnamese-200-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-200-italic.woff) format('woff'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* inter-latin-ext-200-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 200; + src: url(/static/fonts/inter/files/inter-latin-ext-200-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-200-italic.woff) format('woff'); + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* inter-latin-200-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 200; + src: url(/static/fonts/inter/files/inter-latin-200-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-200-italic.woff) format('woff'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/web/static/fonts/inter/200.css b/web/static/fonts/inter/200.css index 51c094b6..c6787d9c 100644 --- a/web/static/fonts/inter/200.css +++ b/web/static/fonts/inter/200.css @@ -35,7 +35,7 @@ font-display: swap; font-weight: 200; src: url(/static/fonts/inter/files/inter-greek-200-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-200-normal.woff) format('woff'); - unicode-range: U+0370-03FF; + unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; } /* inter-vietnamese-200-normal */ @@ -55,7 +55,7 @@ font-display: swap; font-weight: 200; src: url(/static/fonts/inter/files/inter-latin-ext-200-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-200-normal.woff) format('woff'); - unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; } /* inter-latin-200-normal */ @@ -65,5 +65,5 @@ font-display: swap; font-weight: 200; src: url(/static/fonts/inter/files/inter-latin-200-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-200-normal.woff) format('woff'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; } \ No newline at end of file diff --git a/web/static/fonts/inter/300-italic.css b/web/static/fonts/inter/300-italic.css new file mode 100644 index 00000000..47aa1eab --- /dev/null +++ b/web/static/fonts/inter/300-italic.css @@ -0,0 +1,69 @@ +/* inter-cyrillic-ext-300-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(/static/fonts/inter/files/inter-cyrillic-ext-300-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-300-italic.woff) format('woff'); + unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; +} + +/* inter-cyrillic-300-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(/static/fonts/inter/files/inter-cyrillic-300-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-300-italic.woff) format('woff'); + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; +} + +/* inter-greek-ext-300-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(/static/fonts/inter/files/inter-greek-ext-300-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-300-italic.woff) format('woff'); + unicode-range: U+1F00-1FFF; +} + +/* inter-greek-300-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(/static/fonts/inter/files/inter-greek-300-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-300-italic.woff) format('woff'); + unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; +} + +/* inter-vietnamese-300-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(/static/fonts/inter/files/inter-vietnamese-300-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-300-italic.woff) format('woff'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* inter-latin-ext-300-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(/static/fonts/inter/files/inter-latin-ext-300-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-300-italic.woff) format('woff'); + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* inter-latin-300-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(/static/fonts/inter/files/inter-latin-300-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-300-italic.woff) format('woff'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/web/static/fonts/inter/300.css b/web/static/fonts/inter/300.css index b8805c75..9104ead6 100644 --- a/web/static/fonts/inter/300.css +++ b/web/static/fonts/inter/300.css @@ -35,7 +35,7 @@ font-display: swap; font-weight: 300; src: url(/static/fonts/inter/files/inter-greek-300-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-300-normal.woff) format('woff'); - unicode-range: U+0370-03FF; + unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; } /* inter-vietnamese-300-normal */ @@ -55,7 +55,7 @@ font-display: swap; font-weight: 300; src: url(/static/fonts/inter/files/inter-latin-ext-300-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-300-normal.woff) format('woff'); - unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; } /* inter-latin-300-normal */ @@ -65,5 +65,5 @@ font-display: swap; font-weight: 300; src: url(/static/fonts/inter/files/inter-latin-300-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-300-normal.woff) format('woff'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; } \ No newline at end of file diff --git a/web/static/fonts/inter/400-italic.css b/web/static/fonts/inter/400-italic.css new file mode 100644 index 00000000..0da79f46 --- /dev/null +++ b/web/static/fonts/inter/400-italic.css @@ -0,0 +1,69 @@ +/* inter-cyrillic-ext-400-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(/static/fonts/inter/files/inter-cyrillic-ext-400-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-400-italic.woff) format('woff'); + unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; +} + +/* inter-cyrillic-400-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(/static/fonts/inter/files/inter-cyrillic-400-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-400-italic.woff) format('woff'); + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; +} + +/* inter-greek-ext-400-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(/static/fonts/inter/files/inter-greek-ext-400-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-400-italic.woff) format('woff'); + unicode-range: U+1F00-1FFF; +} + +/* inter-greek-400-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(/static/fonts/inter/files/inter-greek-400-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-400-italic.woff) format('woff'); + unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; +} + +/* inter-vietnamese-400-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(/static/fonts/inter/files/inter-vietnamese-400-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-400-italic.woff) format('woff'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* inter-latin-ext-400-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(/static/fonts/inter/files/inter-latin-ext-400-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-400-italic.woff) format('woff'); + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* inter-latin-400-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(/static/fonts/inter/files/inter-latin-400-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-400-italic.woff) format('woff'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/web/static/fonts/inter/400.css b/web/static/fonts/inter/400.css index 15f91ed0..a5988b68 100644 --- a/web/static/fonts/inter/400.css +++ b/web/static/fonts/inter/400.css @@ -35,7 +35,7 @@ font-display: swap; font-weight: 400; src: url(/static/fonts/inter/files/inter-greek-400-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-400-normal.woff) format('woff'); - unicode-range: U+0370-03FF; + unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; } /* inter-vietnamese-400-normal */ @@ -55,7 +55,7 @@ font-display: swap; font-weight: 400; src: url(/static/fonts/inter/files/inter-latin-ext-400-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-400-normal.woff) format('woff'); - unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; } /* inter-latin-400-normal */ @@ -65,5 +65,5 @@ font-display: swap; font-weight: 400; src: url(/static/fonts/inter/files/inter-latin-400-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-400-normal.woff) format('woff'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; } \ No newline at end of file diff --git a/web/static/fonts/inter/500-italic.css b/web/static/fonts/inter/500-italic.css new file mode 100644 index 00000000..dce25e8a --- /dev/null +++ b/web/static/fonts/inter/500-italic.css @@ -0,0 +1,69 @@ +/* inter-cyrillic-ext-500-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 500; + src: url(/static/fonts/inter/files/inter-cyrillic-ext-500-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-500-italic.woff) format('woff'); + unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; +} + +/* inter-cyrillic-500-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 500; + src: url(/static/fonts/inter/files/inter-cyrillic-500-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-500-italic.woff) format('woff'); + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; +} + +/* inter-greek-ext-500-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 500; + src: url(/static/fonts/inter/files/inter-greek-ext-500-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-500-italic.woff) format('woff'); + unicode-range: U+1F00-1FFF; +} + +/* inter-greek-500-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 500; + src: url(/static/fonts/inter/files/inter-greek-500-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-500-italic.woff) format('woff'); + unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; +} + +/* inter-vietnamese-500-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 500; + src: url(/static/fonts/inter/files/inter-vietnamese-500-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-500-italic.woff) format('woff'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* inter-latin-ext-500-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 500; + src: url(/static/fonts/inter/files/inter-latin-ext-500-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-500-italic.woff) format('woff'); + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* inter-latin-500-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 500; + src: url(/static/fonts/inter/files/inter-latin-500-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-500-italic.woff) format('woff'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/web/static/fonts/inter/500.css b/web/static/fonts/inter/500.css index b5abebc0..10c0dba1 100644 --- a/web/static/fonts/inter/500.css +++ b/web/static/fonts/inter/500.css @@ -35,7 +35,7 @@ font-display: swap; font-weight: 500; src: url(/static/fonts/inter/files/inter-greek-500-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-500-normal.woff) format('woff'); - unicode-range: U+0370-03FF; + unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; } /* inter-vietnamese-500-normal */ @@ -55,7 +55,7 @@ font-display: swap; font-weight: 500; src: url(/static/fonts/inter/files/inter-latin-ext-500-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-500-normal.woff) format('woff'); - unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; } /* inter-latin-500-normal */ @@ -65,5 +65,5 @@ font-display: swap; font-weight: 500; src: url(/static/fonts/inter/files/inter-latin-500-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-500-normal.woff) format('woff'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; } \ No newline at end of file diff --git a/web/static/fonts/inter/600-italic.css b/web/static/fonts/inter/600-italic.css new file mode 100644 index 00000000..289ba9d1 --- /dev/null +++ b/web/static/fonts/inter/600-italic.css @@ -0,0 +1,69 @@ +/* inter-cyrillic-ext-600-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 600; + src: url(/static/fonts/inter/files/inter-cyrillic-ext-600-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-600-italic.woff) format('woff'); + unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; +} + +/* inter-cyrillic-600-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 600; + src: url(/static/fonts/inter/files/inter-cyrillic-600-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-600-italic.woff) format('woff'); + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; +} + +/* inter-greek-ext-600-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 600; + src: url(/static/fonts/inter/files/inter-greek-ext-600-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-600-italic.woff) format('woff'); + unicode-range: U+1F00-1FFF; +} + +/* inter-greek-600-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 600; + src: url(/static/fonts/inter/files/inter-greek-600-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-600-italic.woff) format('woff'); + unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; +} + +/* inter-vietnamese-600-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 600; + src: url(/static/fonts/inter/files/inter-vietnamese-600-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-600-italic.woff) format('woff'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* inter-latin-ext-600-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 600; + src: url(/static/fonts/inter/files/inter-latin-ext-600-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-600-italic.woff) format('woff'); + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* inter-latin-600-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 600; + src: url(/static/fonts/inter/files/inter-latin-600-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-600-italic.woff) format('woff'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/web/static/fonts/inter/600.css b/web/static/fonts/inter/600.css index ad4eda2b..2d3c03c8 100644 --- a/web/static/fonts/inter/600.css +++ b/web/static/fonts/inter/600.css @@ -35,7 +35,7 @@ font-display: swap; font-weight: 600; src: url(/static/fonts/inter/files/inter-greek-600-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-600-normal.woff) format('woff'); - unicode-range: U+0370-03FF; + unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; } /* inter-vietnamese-600-normal */ @@ -55,7 +55,7 @@ font-display: swap; font-weight: 600; src: url(/static/fonts/inter/files/inter-latin-ext-600-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-600-normal.woff) format('woff'); - unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; } /* inter-latin-600-normal */ @@ -65,5 +65,5 @@ font-display: swap; font-weight: 600; src: url(/static/fonts/inter/files/inter-latin-600-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-600-normal.woff) format('woff'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; } \ No newline at end of file diff --git a/web/static/fonts/inter/700-italic.css b/web/static/fonts/inter/700-italic.css new file mode 100644 index 00000000..eddb23dc --- /dev/null +++ b/web/static/fonts/inter/700-italic.css @@ -0,0 +1,69 @@ +/* inter-cyrillic-ext-700-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(/static/fonts/inter/files/inter-cyrillic-ext-700-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-700-italic.woff) format('woff'); + unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; +} + +/* inter-cyrillic-700-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(/static/fonts/inter/files/inter-cyrillic-700-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-700-italic.woff) format('woff'); + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; +} + +/* inter-greek-ext-700-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(/static/fonts/inter/files/inter-greek-ext-700-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-700-italic.woff) format('woff'); + unicode-range: U+1F00-1FFF; +} + +/* inter-greek-700-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(/static/fonts/inter/files/inter-greek-700-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-700-italic.woff) format('woff'); + unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; +} + +/* inter-vietnamese-700-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(/static/fonts/inter/files/inter-vietnamese-700-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-700-italic.woff) format('woff'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* inter-latin-ext-700-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(/static/fonts/inter/files/inter-latin-ext-700-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-700-italic.woff) format('woff'); + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* inter-latin-700-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(/static/fonts/inter/files/inter-latin-700-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-700-italic.woff) format('woff'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/web/static/fonts/inter/700.css b/web/static/fonts/inter/700.css index 8111fad5..8cfdd6e6 100644 --- a/web/static/fonts/inter/700.css +++ b/web/static/fonts/inter/700.css @@ -35,7 +35,7 @@ font-display: swap; font-weight: 700; src: url(/static/fonts/inter/files/inter-greek-700-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-700-normal.woff) format('woff'); - unicode-range: U+0370-03FF; + unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; } /* inter-vietnamese-700-normal */ @@ -55,7 +55,7 @@ font-display: swap; font-weight: 700; src: url(/static/fonts/inter/files/inter-latin-ext-700-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-700-normal.woff) format('woff'); - unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; } /* inter-latin-700-normal */ @@ -65,5 +65,5 @@ font-display: swap; font-weight: 700; src: url(/static/fonts/inter/files/inter-latin-700-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-700-normal.woff) format('woff'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; } \ No newline at end of file diff --git a/web/static/fonts/inter/800-italic.css b/web/static/fonts/inter/800-italic.css new file mode 100644 index 00000000..26d82433 --- /dev/null +++ b/web/static/fonts/inter/800-italic.css @@ -0,0 +1,69 @@ +/* inter-cyrillic-ext-800-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 800; + src: url(/static/fonts/inter/files/inter-cyrillic-ext-800-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-800-italic.woff) format('woff'); + unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; +} + +/* inter-cyrillic-800-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 800; + src: url(/static/fonts/inter/files/inter-cyrillic-800-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-800-italic.woff) format('woff'); + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; +} + +/* inter-greek-ext-800-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 800; + src: url(/static/fonts/inter/files/inter-greek-ext-800-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-800-italic.woff) format('woff'); + unicode-range: U+1F00-1FFF; +} + +/* inter-greek-800-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 800; + src: url(/static/fonts/inter/files/inter-greek-800-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-800-italic.woff) format('woff'); + unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; +} + +/* inter-vietnamese-800-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 800; + src: url(/static/fonts/inter/files/inter-vietnamese-800-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-800-italic.woff) format('woff'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* inter-latin-ext-800-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 800; + src: url(/static/fonts/inter/files/inter-latin-ext-800-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-800-italic.woff) format('woff'); + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* inter-latin-800-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 800; + src: url(/static/fonts/inter/files/inter-latin-800-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-800-italic.woff) format('woff'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/web/static/fonts/inter/800.css b/web/static/fonts/inter/800.css index 42435bce..7ae170de 100644 --- a/web/static/fonts/inter/800.css +++ b/web/static/fonts/inter/800.css @@ -35,7 +35,7 @@ font-display: swap; font-weight: 800; src: url(/static/fonts/inter/files/inter-greek-800-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-800-normal.woff) format('woff'); - unicode-range: U+0370-03FF; + unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; } /* inter-vietnamese-800-normal */ @@ -55,7 +55,7 @@ font-display: swap; font-weight: 800; src: url(/static/fonts/inter/files/inter-latin-ext-800-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-800-normal.woff) format('woff'); - unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; } /* inter-latin-800-normal */ @@ -65,5 +65,5 @@ font-display: swap; font-weight: 800; src: url(/static/fonts/inter/files/inter-latin-800-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-800-normal.woff) format('woff'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; } \ No newline at end of file diff --git a/web/static/fonts/inter/900-italic.css b/web/static/fonts/inter/900-italic.css new file mode 100644 index 00000000..b3a671be --- /dev/null +++ b/web/static/fonts/inter/900-italic.css @@ -0,0 +1,69 @@ +/* inter-cyrillic-ext-900-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(/static/fonts/inter/files/inter-cyrillic-ext-900-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-900-italic.woff) format('woff'); + unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; +} + +/* inter-cyrillic-900-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(/static/fonts/inter/files/inter-cyrillic-900-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-900-italic.woff) format('woff'); + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; +} + +/* inter-greek-ext-900-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(/static/fonts/inter/files/inter-greek-ext-900-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-900-italic.woff) format('woff'); + unicode-range: U+1F00-1FFF; +} + +/* inter-greek-900-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(/static/fonts/inter/files/inter-greek-900-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-900-italic.woff) format('woff'); + unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; +} + +/* inter-vietnamese-900-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(/static/fonts/inter/files/inter-vietnamese-900-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-900-italic.woff) format('woff'); + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB; +} + +/* inter-latin-ext-900-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(/static/fonts/inter/files/inter-latin-ext-900-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-900-italic.woff) format('woff'); + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; +} + +/* inter-latin-900-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(/static/fonts/inter/files/inter-latin-900-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-900-italic.woff) format('woff'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} \ No newline at end of file diff --git a/web/static/fonts/inter/900.css b/web/static/fonts/inter/900.css index 012fba83..4d97133f 100644 --- a/web/static/fonts/inter/900.css +++ b/web/static/fonts/inter/900.css @@ -35,7 +35,7 @@ font-display: swap; font-weight: 900; src: url(/static/fonts/inter/files/inter-greek-900-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-900-normal.woff) format('woff'); - unicode-range: U+0370-03FF; + unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; } /* inter-vietnamese-900-normal */ @@ -55,7 +55,7 @@ font-display: swap; font-weight: 900; src: url(/static/fonts/inter/files/inter-latin-ext-900-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-900-normal.woff) format('woff'); - unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; } /* inter-latin-900-normal */ @@ -65,5 +65,5 @@ font-display: swap; font-weight: 900; src: url(/static/fonts/inter/files/inter-latin-900-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-900-normal.woff) format('woff'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; } \ No newline at end of file diff --git a/web/static/fonts/inter/Inter-Black.woff b/web/static/fonts/inter/Inter-Black.woff deleted file mode 100644 index b6dcbf08..00000000 Binary files a/web/static/fonts/inter/Inter-Black.woff and /dev/null differ diff --git a/web/static/fonts/inter/Inter-Black.woff2 b/web/static/fonts/inter/Inter-Black.woff2 deleted file mode 100644 index 5b3c5bf9..00000000 Binary files a/web/static/fonts/inter/Inter-Black.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/Inter-BlackItalic.woff b/web/static/fonts/inter/Inter-BlackItalic.woff deleted file mode 100644 index 6c3ad3a3..00000000 Binary files a/web/static/fonts/inter/Inter-BlackItalic.woff and /dev/null differ diff --git a/web/static/fonts/inter/Inter-Bold.woff b/web/static/fonts/inter/Inter-Bold.woff deleted file mode 100644 index 827d6d0a..00000000 Binary files a/web/static/fonts/inter/Inter-Bold.woff and /dev/null differ diff --git a/web/static/fonts/inter/Inter-Bold.woff2 b/web/static/fonts/inter/Inter-Bold.woff2 deleted file mode 100644 index 2532ddd0..00000000 Binary files a/web/static/fonts/inter/Inter-Bold.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/Inter-BoldItalic.woff b/web/static/fonts/inter/Inter-BoldItalic.woff deleted file mode 100644 index 38083c95..00000000 Binary files a/web/static/fonts/inter/Inter-BoldItalic.woff and /dev/null differ diff --git a/web/static/fonts/inter/Inter-ExtraBold.woff b/web/static/fonts/inter/Inter-ExtraBold.woff deleted file mode 100644 index eb21edc5..00000000 Binary files a/web/static/fonts/inter/Inter-ExtraBold.woff and /dev/null differ diff --git a/web/static/fonts/inter/Inter-ExtraBold.woff2 b/web/static/fonts/inter/Inter-ExtraBold.woff2 deleted file mode 100644 index 1e54fb56..00000000 Binary files a/web/static/fonts/inter/Inter-ExtraBold.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/Inter-ExtraBoldItalic.woff b/web/static/fonts/inter/Inter-ExtraBoldItalic.woff deleted file mode 100644 index 55059620..00000000 Binary files a/web/static/fonts/inter/Inter-ExtraBoldItalic.woff and /dev/null differ diff --git a/web/static/fonts/inter/Inter-ExtraLight-BETA.woff b/web/static/fonts/inter/Inter-ExtraLight-BETA.woff deleted file mode 100644 index af4caf5b..00000000 Binary files a/web/static/fonts/inter/Inter-ExtraLight-BETA.woff and /dev/null differ diff --git a/web/static/fonts/inter/Inter-ExtraLight.woff b/web/static/fonts/inter/Inter-ExtraLight.woff deleted file mode 100644 index 4e25f3d7..00000000 Binary files a/web/static/fonts/inter/Inter-ExtraLight.woff and /dev/null differ diff --git a/web/static/fonts/inter/Inter-ExtraLight.woff2 b/web/static/fonts/inter/Inter-ExtraLight.woff2 deleted file mode 100644 index 3ff56188..00000000 Binary files a/web/static/fonts/inter/Inter-ExtraLight.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/Inter-ExtraLightItalic-BETA.woff b/web/static/fonts/inter/Inter-ExtraLightItalic-BETA.woff deleted file mode 100644 index d02e8691..00000000 Binary files a/web/static/fonts/inter/Inter-ExtraLightItalic-BETA.woff and /dev/null differ diff --git a/web/static/fonts/inter/Inter-Italic.woff b/web/static/fonts/inter/Inter-Italic.woff deleted file mode 100644 index b2ec2f64..00000000 Binary files a/web/static/fonts/inter/Inter-Italic.woff and /dev/null differ diff --git a/web/static/fonts/inter/Inter-Light-BETA.woff b/web/static/fonts/inter/Inter-Light-BETA.woff deleted file mode 100644 index cede0bfd..00000000 Binary files a/web/static/fonts/inter/Inter-Light-BETA.woff and /dev/null differ diff --git a/web/static/fonts/inter/Inter-Light.woff b/web/static/fonts/inter/Inter-Light.woff deleted file mode 100644 index c9a59434..00000000 Binary files a/web/static/fonts/inter/Inter-Light.woff and /dev/null differ diff --git a/web/static/fonts/inter/Inter-Light.woff2 b/web/static/fonts/inter/Inter-Light.woff2 deleted file mode 100644 index c90308af..00000000 Binary files a/web/static/fonts/inter/Inter-Light.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/Inter-LightItalic-BETA.woff b/web/static/fonts/inter/Inter-LightItalic-BETA.woff deleted file mode 100644 index 87314393..00000000 Binary files a/web/static/fonts/inter/Inter-LightItalic-BETA.woff and /dev/null differ diff --git a/web/static/fonts/inter/Inter-Medium.woff b/web/static/fonts/inter/Inter-Medium.woff deleted file mode 100644 index 51450d34..00000000 Binary files a/web/static/fonts/inter/Inter-Medium.woff and /dev/null differ diff --git a/web/static/fonts/inter/Inter-Medium.woff2 b/web/static/fonts/inter/Inter-Medium.woff2 deleted file mode 100644 index 12454556..00000000 Binary files a/web/static/fonts/inter/Inter-Medium.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/Inter-MediumItalic.woff b/web/static/fonts/inter/Inter-MediumItalic.woff deleted file mode 100644 index 49a27e75..00000000 Binary files a/web/static/fonts/inter/Inter-MediumItalic.woff and /dev/null differ diff --git a/web/static/fonts/inter/Inter-Regular.woff b/web/static/fonts/inter/Inter-Regular.woff deleted file mode 100644 index 749f8636..00000000 Binary files a/web/static/fonts/inter/Inter-Regular.woff and /dev/null differ diff --git a/web/static/fonts/inter/Inter-Regular.woff2 b/web/static/fonts/inter/Inter-Regular.woff2 deleted file mode 100644 index 598e7611..00000000 Binary files a/web/static/fonts/inter/Inter-Regular.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/Inter-SemiBold.woff b/web/static/fonts/inter/Inter-SemiBold.woff deleted file mode 100644 index b804c345..00000000 Binary files a/web/static/fonts/inter/Inter-SemiBold.woff and /dev/null differ diff --git a/web/static/fonts/inter/Inter-SemiBold.woff2 b/web/static/fonts/inter/Inter-SemiBold.woff2 deleted file mode 100644 index 6a73b9f7..00000000 Binary files a/web/static/fonts/inter/Inter-SemiBold.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/Inter-SemiBoldItalic.woff b/web/static/fonts/inter/Inter-SemiBoldItalic.woff deleted file mode 100644 index 9390f0c0..00000000 Binary files a/web/static/fonts/inter/Inter-SemiBoldItalic.woff and /dev/null differ diff --git a/web/static/fonts/inter/Inter-Thin-BETA.woff b/web/static/fonts/inter/Inter-Thin-BETA.woff deleted file mode 100644 index 32e52e05..00000000 Binary files a/web/static/fonts/inter/Inter-Thin-BETA.woff and /dev/null differ diff --git a/web/static/fonts/inter/Inter-Thin.woff b/web/static/fonts/inter/Inter-Thin.woff deleted file mode 100644 index ed6979d1..00000000 Binary files a/web/static/fonts/inter/Inter-Thin.woff and /dev/null differ diff --git a/web/static/fonts/inter/Inter-Thin.woff2 b/web/static/fonts/inter/Inter-Thin.woff2 deleted file mode 100644 index e4982d90..00000000 Binary files a/web/static/fonts/inter/Inter-Thin.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/Inter-ThinItalic-BETA.woff b/web/static/fonts/inter/Inter-ThinItalic-BETA.woff deleted file mode 100644 index 15a7a37b..00000000 Binary files a/web/static/fonts/inter/Inter-ThinItalic-BETA.woff and /dev/null differ diff --git a/web/static/fonts/inter/LICENSE b/web/static/fonts/inter/LICENSE index 00287df1..cc6e8bb1 100644 --- a/web/static/fonts/inter/LICENSE +++ b/web/static/fonts/inter/LICENSE @@ -1,4 +1,4 @@ -Copyright 2020 The Inter Project Authors (https://github.com/rsms/inter) +Copyright 2016 The Inter Project Authors (https://github.com/rsms/inter) This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is copied below, and is also available with a FAQ at: diff --git a/web/static/fonts/inter/README.md b/web/static/fonts/inter/README.md index 6fa8fc21..fd8901bb 100644 --- a/web/static/fonts/inter/README.md +++ b/web/static/fonts/inter/README.md @@ -22,7 +22,7 @@ import "@fontsource/inter/400-italic.css"; // Specify weight and style Supported variables: - Weights: `[100,200,300,400,500,600,700,800,900]` -- Styles: `[normal]` +- Styles: `[italic,normal]` - Subsets: `[cyrillic,cyrillic-ext,greek,greek-ext,latin,latin-ext,vietnamese]` > Note: `italic` may not be supported by all fonts. To learn more about what weights and styles are supported, please visit the [Fontsource website](https://fontsource.org/fonts/inter). @@ -38,10 +38,10 @@ body { ## Licensing Always make sure to read the license for each font you use. Most of the fonts in the collection use the SIL Open Font License, v1.1. Some fonts use the Apache 2 license. The Ubuntu fonts use the Ubuntu Font License v1.0. -Copyright 2020 The Inter Project Authors (https://github.com/rsms/inter) +Copyright 2016 The Inter Project Authors (https://github.com/rsms/inter) [OFL-1.1](http://scripts.sil.org/OFL) ## Other Notes -Font version (provided by source): `v12`. +Font version (provided by source): `v18`. If you have any suggestions or ideas to improve the performance of font loading or expand the existing library, feel free to star and contribute to this repository. You can share your suggestions or ideas by creating an [issue](https://github.com/fontsource/fontsource/issues). \ No newline at end of file diff --git a/web/static/fonts/inter/README.txt b/web/static/fonts/inter/README.txt deleted file mode 100644 index b621edf7..00000000 --- a/web/static/fonts/inter/README.txt +++ /dev/null @@ -1,72 +0,0 @@ -Inter Variable Font -=================== - -This download contains Inter as both a variable font and static fonts. - -Inter is a variable font with these axes: - slnt - wght - -This means all the styles are contained in a single file: - Inter-VariableFont_slnt,wght.ttf - -If your app fully supports variable fonts, you can now pick intermediate styles -that aren’t available as static fonts. Not all apps support variable fonts, and -in those cases you can use the static font files for Inter: - static/Inter-Thin.ttf - static/Inter-ExtraLight.ttf - static/Inter-Light.ttf - static/Inter-Regular.ttf - static/Inter-Medium.ttf - static/Inter-SemiBold.ttf - static/Inter-Bold.ttf - static/Inter-ExtraBold.ttf - static/Inter-Black.ttf - -Get started ------------ - -1. Install the font files you want to use - -2. Use your app's font picker to view the font family and all the -available styles - -Learn more about variable fonts -------------------------------- - - https://developers.google.com/web/fundamentals/design-and-ux/typography/variable-fonts - https://variablefonts.typenetwork.com - https://medium.com/variable-fonts - -In desktop apps - - https://theblog.adobe.com/can-variable-fonts-illustrator-cc - https://helpx.adobe.com/nz/photoshop/using/fonts.html#variable_fonts - -Online - - https://developers.google.com/fonts/docs/getting_started - https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide - https://developer.microsoft.com/en-us/microsoft-edge/testdrive/demos/variable-fonts - -Installing fonts - - MacOS: https://support.apple.com/en-us/HT201749 - Linux: https://www.google.com/search?q=how+to+install+a+font+on+gnu%2Blinux - Windows: https://support.microsoft.com/en-us/help/314960/how-to-install-or-remove-a-font-in-windows - -Android Apps - - https://developers.google.com/fonts/docs/android - https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts - -License -------- -Please read the full license text (OFL.txt) to understand the permissions, -restrictions and requirements for usage, redistribution, and modification. - -You can use them freely in your products & projects - print or digital, -commercial or otherwise. However, you can't sell the fonts on their own. - -This isn't legal advice, please consider consulting a lawyer and see the full -license for all details. diff --git a/web/static/fonts/inter/cyrillic-100-italic.css b/web/static/fonts/inter/cyrillic-100-italic.css new file mode 100644 index 00000000..890d944d --- /dev/null +++ b/web/static/fonts/inter/cyrillic-100-italic.css @@ -0,0 +1,8 @@ +/* inter-cyrillic-100-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 100; + src: url(/static/fonts/inter/files/inter-cyrillic-100-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-100-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/cyrillic-200-italic.css b/web/static/fonts/inter/cyrillic-200-italic.css new file mode 100644 index 00000000..71685ca3 --- /dev/null +++ b/web/static/fonts/inter/cyrillic-200-italic.css @@ -0,0 +1,8 @@ +/* inter-cyrillic-200-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 200; + src: url(/static/fonts/inter/files/inter-cyrillic-200-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-200-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/cyrillic-300-italic.css b/web/static/fonts/inter/cyrillic-300-italic.css new file mode 100644 index 00000000..cd71dde7 --- /dev/null +++ b/web/static/fonts/inter/cyrillic-300-italic.css @@ -0,0 +1,8 @@ +/* inter-cyrillic-300-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(/static/fonts/inter/files/inter-cyrillic-300-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-300-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/cyrillic-400-italic.css b/web/static/fonts/inter/cyrillic-400-italic.css new file mode 100644 index 00000000..a6fa8fa5 --- /dev/null +++ b/web/static/fonts/inter/cyrillic-400-italic.css @@ -0,0 +1,8 @@ +/* inter-cyrillic-400-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(/static/fonts/inter/files/inter-cyrillic-400-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-400-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/cyrillic-500-italic.css b/web/static/fonts/inter/cyrillic-500-italic.css new file mode 100644 index 00000000..1f050a40 --- /dev/null +++ b/web/static/fonts/inter/cyrillic-500-italic.css @@ -0,0 +1,8 @@ +/* inter-cyrillic-500-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 500; + src: url(/static/fonts/inter/files/inter-cyrillic-500-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-500-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/cyrillic-600-italic.css b/web/static/fonts/inter/cyrillic-600-italic.css new file mode 100644 index 00000000..8042d947 --- /dev/null +++ b/web/static/fonts/inter/cyrillic-600-italic.css @@ -0,0 +1,8 @@ +/* inter-cyrillic-600-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 600; + src: url(/static/fonts/inter/files/inter-cyrillic-600-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-600-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/cyrillic-700-italic.css b/web/static/fonts/inter/cyrillic-700-italic.css new file mode 100644 index 00000000..2a9ce025 --- /dev/null +++ b/web/static/fonts/inter/cyrillic-700-italic.css @@ -0,0 +1,8 @@ +/* inter-cyrillic-700-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(/static/fonts/inter/files/inter-cyrillic-700-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-700-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/cyrillic-800-italic.css b/web/static/fonts/inter/cyrillic-800-italic.css new file mode 100644 index 00000000..e94f8f38 --- /dev/null +++ b/web/static/fonts/inter/cyrillic-800-italic.css @@ -0,0 +1,8 @@ +/* inter-cyrillic-800-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 800; + src: url(/static/fonts/inter/files/inter-cyrillic-800-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-800-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/cyrillic-900-italic.css b/web/static/fonts/inter/cyrillic-900-italic.css new file mode 100644 index 00000000..40a44ef5 --- /dev/null +++ b/web/static/fonts/inter/cyrillic-900-italic.css @@ -0,0 +1,8 @@ +/* inter-cyrillic-900-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(/static/fonts/inter/files/inter-cyrillic-900-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-900-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/cyrillic-ext-100-italic.css b/web/static/fonts/inter/cyrillic-ext-100-italic.css new file mode 100644 index 00000000..a79403bd --- /dev/null +++ b/web/static/fonts/inter/cyrillic-ext-100-italic.css @@ -0,0 +1,8 @@ +/* inter-cyrillic-ext-100-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 100; + src: url(/static/fonts/inter/files/inter-cyrillic-ext-100-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-100-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/cyrillic-ext-200-italic.css b/web/static/fonts/inter/cyrillic-ext-200-italic.css new file mode 100644 index 00000000..28aab688 --- /dev/null +++ b/web/static/fonts/inter/cyrillic-ext-200-italic.css @@ -0,0 +1,8 @@ +/* inter-cyrillic-ext-200-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 200; + src: url(/static/fonts/inter/files/inter-cyrillic-ext-200-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-200-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/cyrillic-ext-300-italic.css b/web/static/fonts/inter/cyrillic-ext-300-italic.css new file mode 100644 index 00000000..ac74bb1e --- /dev/null +++ b/web/static/fonts/inter/cyrillic-ext-300-italic.css @@ -0,0 +1,8 @@ +/* inter-cyrillic-ext-300-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(/static/fonts/inter/files/inter-cyrillic-ext-300-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-300-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/cyrillic-ext-400-italic.css b/web/static/fonts/inter/cyrillic-ext-400-italic.css new file mode 100644 index 00000000..a14eec1b --- /dev/null +++ b/web/static/fonts/inter/cyrillic-ext-400-italic.css @@ -0,0 +1,8 @@ +/* inter-cyrillic-ext-400-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(/static/fonts/inter/files/inter-cyrillic-ext-400-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-400-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/cyrillic-ext-500-italic.css b/web/static/fonts/inter/cyrillic-ext-500-italic.css new file mode 100644 index 00000000..77a7cff5 --- /dev/null +++ b/web/static/fonts/inter/cyrillic-ext-500-italic.css @@ -0,0 +1,8 @@ +/* inter-cyrillic-ext-500-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 500; + src: url(/static/fonts/inter/files/inter-cyrillic-ext-500-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-500-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/cyrillic-ext-600-italic.css b/web/static/fonts/inter/cyrillic-ext-600-italic.css new file mode 100644 index 00000000..cac34c1b --- /dev/null +++ b/web/static/fonts/inter/cyrillic-ext-600-italic.css @@ -0,0 +1,8 @@ +/* inter-cyrillic-ext-600-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 600; + src: url(/static/fonts/inter/files/inter-cyrillic-ext-600-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-600-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/cyrillic-ext-700-italic.css b/web/static/fonts/inter/cyrillic-ext-700-italic.css new file mode 100644 index 00000000..21a5ce12 --- /dev/null +++ b/web/static/fonts/inter/cyrillic-ext-700-italic.css @@ -0,0 +1,8 @@ +/* inter-cyrillic-ext-700-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(/static/fonts/inter/files/inter-cyrillic-ext-700-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-700-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/cyrillic-ext-800-italic.css b/web/static/fonts/inter/cyrillic-ext-800-italic.css new file mode 100644 index 00000000..d3a842f8 --- /dev/null +++ b/web/static/fonts/inter/cyrillic-ext-800-italic.css @@ -0,0 +1,8 @@ +/* inter-cyrillic-ext-800-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 800; + src: url(/static/fonts/inter/files/inter-cyrillic-ext-800-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-800-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/cyrillic-ext-900-italic.css b/web/static/fonts/inter/cyrillic-ext-900-italic.css new file mode 100644 index 00000000..55de4f79 --- /dev/null +++ b/web/static/fonts/inter/cyrillic-ext-900-italic.css @@ -0,0 +1,8 @@ +/* inter-cyrillic-ext-900-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(/static/fonts/inter/files/inter-cyrillic-ext-900-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-900-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/cyrillic-ext-italic.css b/web/static/fonts/inter/cyrillic-ext-italic.css new file mode 100644 index 00000000..f3a3d414 --- /dev/null +++ b/web/static/fonts/inter/cyrillic-ext-italic.css @@ -0,0 +1,80 @@ +/* inter-cyrillic-ext-100-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 100; + src: url(/static/fonts/inter/files/inter-cyrillic-ext-100-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-100-italic.woff) format('woff'); +} + +/* inter-cyrillic-ext-200-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 200; + src: url(/static/fonts/inter/files/inter-cyrillic-ext-200-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-200-italic.woff) format('woff'); +} + +/* inter-cyrillic-ext-300-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(/static/fonts/inter/files/inter-cyrillic-ext-300-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-300-italic.woff) format('woff'); +} + +/* inter-cyrillic-ext-400-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(/static/fonts/inter/files/inter-cyrillic-ext-400-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-400-italic.woff) format('woff'); +} + +/* inter-cyrillic-ext-500-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 500; + src: url(/static/fonts/inter/files/inter-cyrillic-ext-500-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-500-italic.woff) format('woff'); +} + +/* inter-cyrillic-ext-600-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 600; + src: url(/static/fonts/inter/files/inter-cyrillic-ext-600-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-600-italic.woff) format('woff'); +} + +/* inter-cyrillic-ext-700-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(/static/fonts/inter/files/inter-cyrillic-ext-700-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-700-italic.woff) format('woff'); +} + +/* inter-cyrillic-ext-800-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 800; + src: url(/static/fonts/inter/files/inter-cyrillic-ext-800-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-800-italic.woff) format('woff'); +} + +/* inter-cyrillic-ext-900-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(/static/fonts/inter/files/inter-cyrillic-ext-900-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-ext-900-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/cyrillic-italic.css b/web/static/fonts/inter/cyrillic-italic.css new file mode 100644 index 00000000..8590fe0c --- /dev/null +++ b/web/static/fonts/inter/cyrillic-italic.css @@ -0,0 +1,80 @@ +/* inter-cyrillic-100-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 100; + src: url(/static/fonts/inter/files/inter-cyrillic-100-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-100-italic.woff) format('woff'); +} + +/* inter-cyrillic-200-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 200; + src: url(/static/fonts/inter/files/inter-cyrillic-200-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-200-italic.woff) format('woff'); +} + +/* inter-cyrillic-300-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(/static/fonts/inter/files/inter-cyrillic-300-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-300-italic.woff) format('woff'); +} + +/* inter-cyrillic-400-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(/static/fonts/inter/files/inter-cyrillic-400-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-400-italic.woff) format('woff'); +} + +/* inter-cyrillic-500-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 500; + src: url(/static/fonts/inter/files/inter-cyrillic-500-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-500-italic.woff) format('woff'); +} + +/* inter-cyrillic-600-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 600; + src: url(/static/fonts/inter/files/inter-cyrillic-600-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-600-italic.woff) format('woff'); +} + +/* inter-cyrillic-700-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(/static/fonts/inter/files/inter-cyrillic-700-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-700-italic.woff) format('woff'); +} + +/* inter-cyrillic-800-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 800; + src: url(/static/fonts/inter/files/inter-cyrillic-800-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-800-italic.woff) format('woff'); +} + +/* inter-cyrillic-900-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(/static/fonts/inter/files/inter-cyrillic-900-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-cyrillic-900-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/example.html b/web/static/fonts/inter/example.html deleted file mode 100644 index d6202a6a..00000000 --- a/web/static/fonts/inter/example.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - - -

Generated from: http://www.cufonfonts.com

-
-

- AaBbCcDdEeFfGgHhŞşIıİi Example -

-

- AaBbCcDdEeFfGgHhŞşIıİi Example -

-

- AaBbCcDdEeFfGgHhŞşIıİi Example -

-

- AaBbCcDdEeFfGgHhŞşIıİi Example -

-

- AaBbCcDdEeFfGgHhŞşIıİi Example -

-

- AaBbCcDdEeFfGgHhŞşIıİi Example -

-

- AaBbCcDdEeFfGgHhŞşIıİi Example -

-

- AaBbCcDdEeFfGgHhŞşIıİi Example -

-

- AaBbCcDdEeFfGgHhŞşIıİi Example -

-

- AaBbCcDdEeFfGgHhŞşIıİi Example -

-

- AaBbCcDdEeFfGgHhŞşIıİi Example -

-

- AaBbCcDdEeFfGgHhŞşIıİi Example -

-

- AaBbCcDdEeFfGgHhŞşIıİi Example -

-

- AaBbCcDdEeFfGgHhŞşIıİi Example -

-

- AaBbCcDdEeFfGgHhŞşIıİi Example -

-

- AaBbCcDdEeFfGgHhŞşIıİi Example -

-

- AaBbCcDdEeFfGgHhŞşIıİi Example -

-

- AaBbCcDdEeFfGgHhŞşIıİi Example -

- - diff --git a/web/static/fonts/inter/files/file-list.json b/web/static/fonts/inter/files/file-list.json deleted file mode 100644 index fb1a8aeb..00000000 --- a/web/static/fonts/inter/files/file-list.json +++ /dev/null @@ -1,151 +0,0 @@ -[ - "./fonts/google/inter/files/inter-cyrillic-100-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-ext-100-normal.woff", - "./fonts/google/inter/files/inter-greek-100-normal.woff", - "./fonts/google/inter/files/inter-greek-ext-100-normal.woff", - "./fonts/google/inter/files/inter-latin-100-normal.woff", - "./fonts/google/inter/files/inter-latin-ext-100-normal.woff", - "./fonts/google/inter/files/inter-vietnamese-100-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-200-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-ext-200-normal.woff", - "./fonts/google/inter/files/inter-greek-200-normal.woff", - "./fonts/google/inter/files/inter-greek-ext-200-normal.woff", - "./fonts/google/inter/files/inter-latin-200-normal.woff", - "./fonts/google/inter/files/inter-latin-ext-200-normal.woff", - "./fonts/google/inter/files/inter-vietnamese-200-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-300-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-ext-300-normal.woff", - "./fonts/google/inter/files/inter-greek-300-normal.woff", - "./fonts/google/inter/files/inter-greek-ext-300-normal.woff", - "./fonts/google/inter/files/inter-latin-300-normal.woff", - "./fonts/google/inter/files/inter-latin-ext-300-normal.woff", - "./fonts/google/inter/files/inter-vietnamese-300-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-400-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-ext-400-normal.woff", - "./fonts/google/inter/files/inter-greek-400-normal.woff", - "./fonts/google/inter/files/inter-greek-ext-400-normal.woff", - "./fonts/google/inter/files/inter-latin-400-normal.woff", - "./fonts/google/inter/files/inter-latin-ext-400-normal.woff", - "./fonts/google/inter/files/inter-vietnamese-400-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-500-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-ext-500-normal.woff", - "./fonts/google/inter/files/inter-greek-500-normal.woff", - "./fonts/google/inter/files/inter-greek-ext-500-normal.woff", - "./fonts/google/inter/files/inter-latin-500-normal.woff", - "./fonts/google/inter/files/inter-latin-ext-500-normal.woff", - "./fonts/google/inter/files/inter-vietnamese-500-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-600-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-ext-600-normal.woff", - "./fonts/google/inter/files/inter-greek-600-normal.woff", - "./fonts/google/inter/files/inter-greek-ext-600-normal.woff", - "./fonts/google/inter/files/inter-latin-600-normal.woff", - "./fonts/google/inter/files/inter-latin-ext-600-normal.woff", - "./fonts/google/inter/files/inter-vietnamese-600-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-700-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-ext-700-normal.woff", - "./fonts/google/inter/files/inter-greek-700-normal.woff", - "./fonts/google/inter/files/inter-greek-ext-700-normal.woff", - "./fonts/google/inter/files/inter-latin-700-normal.woff", - "./fonts/google/inter/files/inter-latin-ext-700-normal.woff", - "./fonts/google/inter/files/inter-vietnamese-700-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-800-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-ext-800-normal.woff", - "./fonts/google/inter/files/inter-greek-800-normal.woff", - "./fonts/google/inter/files/inter-greek-ext-800-normal.woff", - "./fonts/google/inter/files/inter-latin-800-normal.woff", - "./fonts/google/inter/files/inter-latin-ext-800-normal.woff", - "./fonts/google/inter/files/inter-vietnamese-800-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-900-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-ext-900-normal.woff", - "./fonts/google/inter/files/inter-greek-900-normal.woff", - "./fonts/google/inter/files/inter-greek-ext-900-normal.woff", - "./fonts/google/inter/files/inter-latin-900-normal.woff", - "./fonts/google/inter/files/inter-latin-ext-900-normal.woff", - "./fonts/google/inter/files/inter-vietnamese-900-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-ext-100-normal.woff2", - "./fonts/google/inter/files/inter-all-100-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-100-normal.woff2", - "./fonts/google/inter/files/inter-greek-ext-100-normal.woff2", - "./fonts/google/inter/files/inter-greek-100-normal.woff2", - "./fonts/google/inter/files/inter-vietnamese-100-normal.woff2", - "./fonts/google/inter/files/inter-latin-ext-100-normal.woff2", - "./fonts/google/inter/files/inter-latin-100-normal.woff2", - "./fonts/google/inter/files/inter-cyrillic-ext-200-normal.woff2", - "./fonts/google/inter/files/inter-all-200-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-200-normal.woff2", - "./fonts/google/inter/files/inter-greek-ext-200-normal.woff2", - "./fonts/google/inter/files/inter-greek-200-normal.woff2", - "./fonts/google/inter/files/inter-vietnamese-200-normal.woff2", - "./fonts/google/inter/files/inter-latin-ext-200-normal.woff2", - "./fonts/google/inter/files/inter-latin-200-normal.woff2", - "./fonts/google/inter/files/inter-cyrillic-ext-300-normal.woff2", - "./fonts/google/inter/files/inter-all-300-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-300-normal.woff2", - "./fonts/google/inter/files/inter-greek-ext-300-normal.woff2", - "./fonts/google/inter/files/inter-greek-300-normal.woff2", - "./fonts/google/inter/files/inter-vietnamese-300-normal.woff2", - "./fonts/google/inter/files/inter-latin-ext-300-normal.woff2", - "./fonts/google/inter/files/inter-latin-300-normal.woff2", - "./fonts/google/inter/files/inter-cyrillic-ext-400-normal.woff2", - "./fonts/google/inter/files/inter-all-400-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-400-normal.woff2", - "./fonts/google/inter/files/inter-greek-ext-400-normal.woff2", - "./fonts/google/inter/files/inter-greek-400-normal.woff2", - "./fonts/google/inter/files/inter-vietnamese-400-normal.woff2", - "./fonts/google/inter/files/inter-latin-ext-400-normal.woff2", - "./fonts/google/inter/files/inter-latin-400-normal.woff2", - "./fonts/google/inter/files/inter-cyrillic-ext-500-normal.woff2", - "./fonts/google/inter/files/inter-all-500-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-500-normal.woff2", - "./fonts/google/inter/files/inter-greek-ext-500-normal.woff2", - "./fonts/google/inter/files/inter-greek-500-normal.woff2", - "./fonts/google/inter/files/inter-vietnamese-500-normal.woff2", - "./fonts/google/inter/files/inter-latin-ext-500-normal.woff2", - "./fonts/google/inter/files/inter-latin-500-normal.woff2", - "./fonts/google/inter/files/inter-cyrillic-ext-600-normal.woff2", - "./fonts/google/inter/files/inter-all-600-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-600-normal.woff2", - "./fonts/google/inter/files/inter-greek-ext-600-normal.woff2", - "./fonts/google/inter/files/inter-greek-600-normal.woff2", - "./fonts/google/inter/files/inter-vietnamese-600-normal.woff2", - "./fonts/google/inter/files/inter-latin-ext-600-normal.woff2", - "./fonts/google/inter/files/inter-latin-600-normal.woff2", - "./fonts/google/inter/files/inter-cyrillic-ext-700-normal.woff2", - "./fonts/google/inter/files/inter-all-700-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-700-normal.woff2", - "./fonts/google/inter/files/inter-greek-ext-700-normal.woff2", - "./fonts/google/inter/files/inter-greek-700-normal.woff2", - "./fonts/google/inter/files/inter-vietnamese-700-normal.woff2", - "./fonts/google/inter/files/inter-latin-ext-700-normal.woff2", - "./fonts/google/inter/files/inter-latin-700-normal.woff2", - "./fonts/google/inter/files/inter-cyrillic-ext-800-normal.woff2", - "./fonts/google/inter/files/inter-all-800-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-800-normal.woff2", - "./fonts/google/inter/files/inter-greek-ext-800-normal.woff2", - "./fonts/google/inter/files/inter-greek-800-normal.woff2", - "./fonts/google/inter/files/inter-vietnamese-800-normal.woff2", - "./fonts/google/inter/files/inter-latin-ext-800-normal.woff2", - "./fonts/google/inter/files/inter-latin-800-normal.woff2", - "./fonts/google/inter/files/inter-cyrillic-ext-900-normal.woff2", - "./fonts/google/inter/files/inter-all-900-normal.woff", - "./fonts/google/inter/files/inter-cyrillic-900-normal.woff2", - "./fonts/google/inter/files/inter-greek-ext-900-normal.woff2", - "./fonts/google/inter/files/inter-greek-900-normal.woff2", - "./fonts/google/inter/files/inter-vietnamese-900-normal.woff2", - "./fonts/google/inter/files/inter-latin-ext-900-normal.woff2", - "./fonts/google/inter/files/inter-latin-900-normal.woff2", - "./fonts/google/inter/files/inter-cyrillic-ext-variable-wghtOnly-normal.woff2", - "./fonts/google/inter/files/inter-cyrillic-variable-wghtOnly-normal.woff2", - "./fonts/google/inter/files/inter-greek-ext-variable-wghtOnly-normal.woff2", - "./fonts/google/inter/files/inter-greek-variable-wghtOnly-normal.woff2", - "./fonts/google/inter/files/inter-vietnamese-variable-wghtOnly-normal.woff2", - "./fonts/google/inter/files/inter-latin-ext-variable-wghtOnly-normal.woff2", - "./fonts/google/inter/files/inter-latin-variable-wghtOnly-normal.woff2", - "./fonts/google/inter/files/inter-cyrillic-ext-variable-full-normal.woff2", - "./fonts/google/inter/files/inter-cyrillic-variable-full-normal.woff2", - "./fonts/google/inter/files/inter-greek-ext-variable-full-normal.woff2", - "./fonts/google/inter/files/inter-greek-variable-full-normal.woff2", - "./fonts/google/inter/files/inter-vietnamese-variable-full-normal.woff2", - "./fonts/google/inter/files/inter-latin-ext-variable-full-normal.woff2", - "./fonts/google/inter/files/inter-latin-variable-full-normal.woff2" -] diff --git a/web/static/fonts/inter/files/inter-all-100-normal.woff b/web/static/fonts/inter/files/inter-all-100-normal.woff deleted file mode 100644 index 0306d1d7..00000000 Binary files a/web/static/fonts/inter/files/inter-all-100-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-all-200-normal.woff b/web/static/fonts/inter/files/inter-all-200-normal.woff deleted file mode 100644 index 9245b8f0..00000000 Binary files a/web/static/fonts/inter/files/inter-all-200-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-all-300-normal.woff b/web/static/fonts/inter/files/inter-all-300-normal.woff deleted file mode 100644 index 8b700d7c..00000000 Binary files a/web/static/fonts/inter/files/inter-all-300-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-all-400-normal.woff b/web/static/fonts/inter/files/inter-all-400-normal.woff deleted file mode 100644 index db0f8d1c..00000000 Binary files a/web/static/fonts/inter/files/inter-all-400-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-all-500-normal.woff b/web/static/fonts/inter/files/inter-all-500-normal.woff deleted file mode 100644 index ec2c08d3..00000000 Binary files a/web/static/fonts/inter/files/inter-all-500-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-all-600-normal.woff b/web/static/fonts/inter/files/inter-all-600-normal.woff deleted file mode 100644 index 8c99dc81..00000000 Binary files a/web/static/fonts/inter/files/inter-all-600-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-all-700-normal.woff b/web/static/fonts/inter/files/inter-all-700-normal.woff deleted file mode 100644 index 7248f274..00000000 Binary files a/web/static/fonts/inter/files/inter-all-700-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-all-800-normal.woff b/web/static/fonts/inter/files/inter-all-800-normal.woff deleted file mode 100644 index 241bb64d..00000000 Binary files a/web/static/fonts/inter/files/inter-all-800-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-all-900-normal.woff b/web/static/fonts/inter/files/inter-all-900-normal.woff deleted file mode 100644 index cc3405d5..00000000 Binary files a/web/static/fonts/inter/files/inter-all-900-normal.woff and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-100-italic.woff b/web/static/fonts/inter/files/inter-cyrillic-100-italic.woff new file mode 100644 index 00000000..799c8d72 Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-100-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-100-italic.woff2 b/web/static/fonts/inter/files/inter-cyrillic-100-italic.woff2 new file mode 100644 index 00000000..c0378a18 Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-100-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-100-normal.woff b/web/static/fonts/inter/files/inter-cyrillic-100-normal.woff index 0b328f0e..7777f222 100644 Binary files a/web/static/fonts/inter/files/inter-cyrillic-100-normal.woff and b/web/static/fonts/inter/files/inter-cyrillic-100-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-100-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-100-normal.woff2 index 519ef27e..db4b2305 100644 Binary files a/web/static/fonts/inter/files/inter-cyrillic-100-normal.woff2 and b/web/static/fonts/inter/files/inter-cyrillic-100-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-200-italic.woff b/web/static/fonts/inter/files/inter-cyrillic-200-italic.woff new file mode 100644 index 00000000..19521ff8 Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-200-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-200-italic.woff2 b/web/static/fonts/inter/files/inter-cyrillic-200-italic.woff2 new file mode 100644 index 00000000..69213bfa Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-200-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-200-normal.woff b/web/static/fonts/inter/files/inter-cyrillic-200-normal.woff index 4bd3fc3b..07273c85 100644 Binary files a/web/static/fonts/inter/files/inter-cyrillic-200-normal.woff and b/web/static/fonts/inter/files/inter-cyrillic-200-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-200-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-200-normal.woff2 index d94f792f..6228b6c2 100644 Binary files a/web/static/fonts/inter/files/inter-cyrillic-200-normal.woff2 and b/web/static/fonts/inter/files/inter-cyrillic-200-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-300-italic.woff b/web/static/fonts/inter/files/inter-cyrillic-300-italic.woff new file mode 100644 index 00000000..40f7c7c5 Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-300-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-300-italic.woff2 b/web/static/fonts/inter/files/inter-cyrillic-300-italic.woff2 new file mode 100644 index 00000000..cf4eff38 Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-300-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-300-normal.woff b/web/static/fonts/inter/files/inter-cyrillic-300-normal.woff index cbfcc5d4..eefc047e 100644 Binary files a/web/static/fonts/inter/files/inter-cyrillic-300-normal.woff and b/web/static/fonts/inter/files/inter-cyrillic-300-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-300-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-300-normal.woff2 index f98e5b23..89d2f734 100644 Binary files a/web/static/fonts/inter/files/inter-cyrillic-300-normal.woff2 and b/web/static/fonts/inter/files/inter-cyrillic-300-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-400-italic.woff b/web/static/fonts/inter/files/inter-cyrillic-400-italic.woff new file mode 100644 index 00000000..8fc7d730 Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-400-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-400-italic.woff2 b/web/static/fonts/inter/files/inter-cyrillic-400-italic.woff2 new file mode 100644 index 00000000..5867807c Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-400-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-400-normal.woff b/web/static/fonts/inter/files/inter-cyrillic-400-normal.woff index 3dcb4ecc..f12f6fc2 100644 Binary files a/web/static/fonts/inter/files/inter-cyrillic-400-normal.woff and b/web/static/fonts/inter/files/inter-cyrillic-400-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-400-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-400-normal.woff2 index c1c57683..264c128d 100644 Binary files a/web/static/fonts/inter/files/inter-cyrillic-400-normal.woff2 and b/web/static/fonts/inter/files/inter-cyrillic-400-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-500-italic.woff b/web/static/fonts/inter/files/inter-cyrillic-500-italic.woff new file mode 100644 index 00000000..e541de5b Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-500-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-500-italic.woff2 b/web/static/fonts/inter/files/inter-cyrillic-500-italic.woff2 new file mode 100644 index 00000000..329fc63c Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-500-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-500-normal.woff b/web/static/fonts/inter/files/inter-cyrillic-500-normal.woff index 7803e79b..cf7ebafa 100644 Binary files a/web/static/fonts/inter/files/inter-cyrillic-500-normal.woff and b/web/static/fonts/inter/files/inter-cyrillic-500-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-500-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-500-normal.woff2 index d1518426..84e49542 100644 Binary files a/web/static/fonts/inter/files/inter-cyrillic-500-normal.woff2 and b/web/static/fonts/inter/files/inter-cyrillic-500-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-600-italic.woff b/web/static/fonts/inter/files/inter-cyrillic-600-italic.woff new file mode 100644 index 00000000..8999561c Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-600-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-600-italic.woff2 b/web/static/fonts/inter/files/inter-cyrillic-600-italic.woff2 new file mode 100644 index 00000000..a9a330db Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-600-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-600-normal.woff b/web/static/fonts/inter/files/inter-cyrillic-600-normal.woff index 0dbbbcf9..73e42ed7 100644 Binary files a/web/static/fonts/inter/files/inter-cyrillic-600-normal.woff and b/web/static/fonts/inter/files/inter-cyrillic-600-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-600-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-600-normal.woff2 index b0f0af58..bb0502c7 100644 Binary files a/web/static/fonts/inter/files/inter-cyrillic-600-normal.woff2 and b/web/static/fonts/inter/files/inter-cyrillic-600-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-700-italic.woff b/web/static/fonts/inter/files/inter-cyrillic-700-italic.woff new file mode 100644 index 00000000..8708890e Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-700-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-700-italic.woff2 b/web/static/fonts/inter/files/inter-cyrillic-700-italic.woff2 new file mode 100644 index 00000000..34da259d Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-700-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-700-normal.woff b/web/static/fonts/inter/files/inter-cyrillic-700-normal.woff index c2d977ff..1524e0df 100644 Binary files a/web/static/fonts/inter/files/inter-cyrillic-700-normal.woff and b/web/static/fonts/inter/files/inter-cyrillic-700-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-700-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-700-normal.woff2 index 22a09b0b..7ec481fb 100644 Binary files a/web/static/fonts/inter/files/inter-cyrillic-700-normal.woff2 and b/web/static/fonts/inter/files/inter-cyrillic-700-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-800-italic.woff b/web/static/fonts/inter/files/inter-cyrillic-800-italic.woff new file mode 100644 index 00000000..895d8dad Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-800-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-800-italic.woff2 b/web/static/fonts/inter/files/inter-cyrillic-800-italic.woff2 new file mode 100644 index 00000000..e03dda95 Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-800-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-800-normal.woff b/web/static/fonts/inter/files/inter-cyrillic-800-normal.woff index 19f9d557..2364bf10 100644 Binary files a/web/static/fonts/inter/files/inter-cyrillic-800-normal.woff and b/web/static/fonts/inter/files/inter-cyrillic-800-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-800-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-800-normal.woff2 index cad49b63..d09e18f7 100644 Binary files a/web/static/fonts/inter/files/inter-cyrillic-800-normal.woff2 and b/web/static/fonts/inter/files/inter-cyrillic-800-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-900-italic.woff b/web/static/fonts/inter/files/inter-cyrillic-900-italic.woff new file mode 100644 index 00000000..fc34da48 Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-900-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-900-italic.woff2 b/web/static/fonts/inter/files/inter-cyrillic-900-italic.woff2 new file mode 100644 index 00000000..3a96b78d Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-900-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-900-normal.woff b/web/static/fonts/inter/files/inter-cyrillic-900-normal.woff index 730baf7b..a67551cd 100644 Binary files a/web/static/fonts/inter/files/inter-cyrillic-900-normal.woff and b/web/static/fonts/inter/files/inter-cyrillic-900-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-900-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-900-normal.woff2 index d1133f54..f7ca695f 100644 Binary files a/web/static/fonts/inter/files/inter-cyrillic-900-normal.woff2 and b/web/static/fonts/inter/files/inter-cyrillic-900-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-100-italic.woff b/web/static/fonts/inter/files/inter-cyrillic-ext-100-italic.woff new file mode 100644 index 00000000..99f74f0b Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-ext-100-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-100-italic.woff2 b/web/static/fonts/inter/files/inter-cyrillic-ext-100-italic.woff2 new file mode 100644 index 00000000..c282d22e Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-ext-100-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-100-normal.woff b/web/static/fonts/inter/files/inter-cyrillic-ext-100-normal.woff index 26d00510..b39831a6 100644 Binary files a/web/static/fonts/inter/files/inter-cyrillic-ext-100-normal.woff and b/web/static/fonts/inter/files/inter-cyrillic-ext-100-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-100-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-ext-100-normal.woff2 index 878765a5..8722c440 100644 Binary files a/web/static/fonts/inter/files/inter-cyrillic-ext-100-normal.woff2 and b/web/static/fonts/inter/files/inter-cyrillic-ext-100-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-200-italic.woff b/web/static/fonts/inter/files/inter-cyrillic-ext-200-italic.woff new file mode 100644 index 00000000..d2885217 Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-ext-200-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-200-italic.woff2 b/web/static/fonts/inter/files/inter-cyrillic-ext-200-italic.woff2 new file mode 100644 index 00000000..5602c7a5 Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-ext-200-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-200-normal.woff b/web/static/fonts/inter/files/inter-cyrillic-ext-200-normal.woff index 3940678e..d7812539 100644 Binary files a/web/static/fonts/inter/files/inter-cyrillic-ext-200-normal.woff and b/web/static/fonts/inter/files/inter-cyrillic-ext-200-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-200-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-ext-200-normal.woff2 index eb020032..d15a56e0 100644 Binary files a/web/static/fonts/inter/files/inter-cyrillic-ext-200-normal.woff2 and b/web/static/fonts/inter/files/inter-cyrillic-ext-200-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-300-italic.woff b/web/static/fonts/inter/files/inter-cyrillic-ext-300-italic.woff new file mode 100644 index 00000000..0b429b93 Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-ext-300-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-300-italic.woff2 b/web/static/fonts/inter/files/inter-cyrillic-ext-300-italic.woff2 new file mode 100644 index 00000000..9f806c82 Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-ext-300-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-300-normal.woff b/web/static/fonts/inter/files/inter-cyrillic-ext-300-normal.woff index 186e4977..8dc909c6 100644 Binary files a/web/static/fonts/inter/files/inter-cyrillic-ext-300-normal.woff and b/web/static/fonts/inter/files/inter-cyrillic-ext-300-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-300-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-ext-300-normal.woff2 index 294c7ff8..18e09954 100644 Binary files a/web/static/fonts/inter/files/inter-cyrillic-ext-300-normal.woff2 and b/web/static/fonts/inter/files/inter-cyrillic-ext-300-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-400-italic.woff b/web/static/fonts/inter/files/inter-cyrillic-ext-400-italic.woff new file mode 100644 index 00000000..86aa409a Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-ext-400-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-400-italic.woff2 b/web/static/fonts/inter/files/inter-cyrillic-ext-400-italic.woff2 new file mode 100644 index 00000000..e9d56e88 Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-ext-400-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-400-normal.woff b/web/static/fonts/inter/files/inter-cyrillic-ext-400-normal.woff index 4017466b..933077bc 100644 Binary files a/web/static/fonts/inter/files/inter-cyrillic-ext-400-normal.woff and b/web/static/fonts/inter/files/inter-cyrillic-ext-400-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-400-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-ext-400-normal.woff2 index da834bb8..2b0f2271 100644 Binary files a/web/static/fonts/inter/files/inter-cyrillic-ext-400-normal.woff2 and b/web/static/fonts/inter/files/inter-cyrillic-ext-400-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-500-italic.woff b/web/static/fonts/inter/files/inter-cyrillic-ext-500-italic.woff new file mode 100644 index 00000000..185cb839 Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-ext-500-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-500-italic.woff2 b/web/static/fonts/inter/files/inter-cyrillic-ext-500-italic.woff2 new file mode 100644 index 00000000..dba8b9dc Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-ext-500-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-500-normal.woff b/web/static/fonts/inter/files/inter-cyrillic-ext-500-normal.woff index 1c047a5b..8eaebb79 100644 Binary files a/web/static/fonts/inter/files/inter-cyrillic-ext-500-normal.woff and b/web/static/fonts/inter/files/inter-cyrillic-ext-500-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-500-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-ext-500-normal.woff2 index 5a1646bc..77c7abca 100644 Binary files a/web/static/fonts/inter/files/inter-cyrillic-ext-500-normal.woff2 and b/web/static/fonts/inter/files/inter-cyrillic-ext-500-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-600-italic.woff b/web/static/fonts/inter/files/inter-cyrillic-ext-600-italic.woff new file mode 100644 index 00000000..02d1b73b Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-ext-600-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-600-italic.woff2 b/web/static/fonts/inter/files/inter-cyrillic-ext-600-italic.woff2 new file mode 100644 index 00000000..5264a133 Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-ext-600-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-600-normal.woff b/web/static/fonts/inter/files/inter-cyrillic-ext-600-normal.woff index 8d6489d7..5a0ca24b 100644 Binary files a/web/static/fonts/inter/files/inter-cyrillic-ext-600-normal.woff and b/web/static/fonts/inter/files/inter-cyrillic-ext-600-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-600-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-ext-600-normal.woff2 index 3b4d7f4b..17bf9c2a 100644 Binary files a/web/static/fonts/inter/files/inter-cyrillic-ext-600-normal.woff2 and b/web/static/fonts/inter/files/inter-cyrillic-ext-600-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-700-italic.woff b/web/static/fonts/inter/files/inter-cyrillic-ext-700-italic.woff new file mode 100644 index 00000000..9f4ec407 Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-ext-700-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-700-italic.woff2 b/web/static/fonts/inter/files/inter-cyrillic-ext-700-italic.woff2 new file mode 100644 index 00000000..cf45f28a Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-ext-700-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-700-normal.woff b/web/static/fonts/inter/files/inter-cyrillic-ext-700-normal.woff index cb714dfa..a7dcd2e4 100644 Binary files a/web/static/fonts/inter/files/inter-cyrillic-ext-700-normal.woff and b/web/static/fonts/inter/files/inter-cyrillic-ext-700-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-700-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-ext-700-normal.woff2 index 7e52d98c..e67ecc4b 100644 Binary files a/web/static/fonts/inter/files/inter-cyrillic-ext-700-normal.woff2 and b/web/static/fonts/inter/files/inter-cyrillic-ext-700-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-800-italic.woff b/web/static/fonts/inter/files/inter-cyrillic-ext-800-italic.woff new file mode 100644 index 00000000..9d81d8e9 Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-ext-800-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-800-italic.woff2 b/web/static/fonts/inter/files/inter-cyrillic-ext-800-italic.woff2 new file mode 100644 index 00000000..cf3895f6 Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-ext-800-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-800-normal.woff b/web/static/fonts/inter/files/inter-cyrillic-ext-800-normal.woff index d8f99045..59d14f55 100644 Binary files a/web/static/fonts/inter/files/inter-cyrillic-ext-800-normal.woff and b/web/static/fonts/inter/files/inter-cyrillic-ext-800-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-800-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-ext-800-normal.woff2 index f9a1a8cd..7a50c483 100644 Binary files a/web/static/fonts/inter/files/inter-cyrillic-ext-800-normal.woff2 and b/web/static/fonts/inter/files/inter-cyrillic-ext-800-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-900-italic.woff b/web/static/fonts/inter/files/inter-cyrillic-ext-900-italic.woff new file mode 100644 index 00000000..4075a0ed Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-ext-900-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-900-italic.woff2 b/web/static/fonts/inter/files/inter-cyrillic-ext-900-italic.woff2 new file mode 100644 index 00000000..f68ccb4d Binary files /dev/null and b/web/static/fonts/inter/files/inter-cyrillic-ext-900-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-900-normal.woff b/web/static/fonts/inter/files/inter-cyrillic-ext-900-normal.woff index 8919d091..ab9e0278 100644 Binary files a/web/static/fonts/inter/files/inter-cyrillic-ext-900-normal.woff and b/web/static/fonts/inter/files/inter-cyrillic-ext-900-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-900-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-ext-900-normal.woff2 index 160f0fff..1b4fe8d3 100644 Binary files a/web/static/fonts/inter/files/inter-cyrillic-ext-900-normal.woff2 and b/web/static/fonts/inter/files/inter-cyrillic-ext-900-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-variable-full-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-ext-variable-full-normal.woff2 deleted file mode 100644 index a81001a8..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-ext-variable-full-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-ext-variable-wghtOnly-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-ext-variable-wghtOnly-normal.woff2 deleted file mode 100644 index f6aa9988..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-ext-variable-wghtOnly-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-variable-full-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-variable-full-normal.woff2 deleted file mode 100644 index 1b65cd9f..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-variable-full-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-cyrillic-variable-wghtOnly-normal.woff2 b/web/static/fonts/inter/files/inter-cyrillic-variable-wghtOnly-normal.woff2 deleted file mode 100644 index 87445437..00000000 Binary files a/web/static/fonts/inter/files/inter-cyrillic-variable-wghtOnly-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-100-italic.woff b/web/static/fonts/inter/files/inter-greek-100-italic.woff new file mode 100644 index 00000000..8e9524ca Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-100-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-greek-100-italic.woff2 b/web/static/fonts/inter/files/inter-greek-100-italic.woff2 new file mode 100644 index 00000000..6e627e1f Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-100-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-100-normal.woff b/web/static/fonts/inter/files/inter-greek-100-normal.woff index 9d9fa7af..1f355cec 100644 Binary files a/web/static/fonts/inter/files/inter-greek-100-normal.woff and b/web/static/fonts/inter/files/inter-greek-100-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-greek-100-normal.woff2 b/web/static/fonts/inter/files/inter-greek-100-normal.woff2 index bbff286c..83c39011 100644 Binary files a/web/static/fonts/inter/files/inter-greek-100-normal.woff2 and b/web/static/fonts/inter/files/inter-greek-100-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-200-italic.woff b/web/static/fonts/inter/files/inter-greek-200-italic.woff new file mode 100644 index 00000000..153f9911 Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-200-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-greek-200-italic.woff2 b/web/static/fonts/inter/files/inter-greek-200-italic.woff2 new file mode 100644 index 00000000..e3e609cb Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-200-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-200-normal.woff b/web/static/fonts/inter/files/inter-greek-200-normal.woff index c7a5b0a8..ace30990 100644 Binary files a/web/static/fonts/inter/files/inter-greek-200-normal.woff and b/web/static/fonts/inter/files/inter-greek-200-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-greek-200-normal.woff2 b/web/static/fonts/inter/files/inter-greek-200-normal.woff2 index 8041bcbf..745f3c51 100644 Binary files a/web/static/fonts/inter/files/inter-greek-200-normal.woff2 and b/web/static/fonts/inter/files/inter-greek-200-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-300-italic.woff b/web/static/fonts/inter/files/inter-greek-300-italic.woff new file mode 100644 index 00000000..09125b58 Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-300-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-greek-300-italic.woff2 b/web/static/fonts/inter/files/inter-greek-300-italic.woff2 new file mode 100644 index 00000000..1b3ad297 Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-300-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-300-normal.woff b/web/static/fonts/inter/files/inter-greek-300-normal.woff index cd730de5..81318c25 100644 Binary files a/web/static/fonts/inter/files/inter-greek-300-normal.woff and b/web/static/fonts/inter/files/inter-greek-300-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-greek-300-normal.woff2 b/web/static/fonts/inter/files/inter-greek-300-normal.woff2 index e96490ff..d838899a 100644 Binary files a/web/static/fonts/inter/files/inter-greek-300-normal.woff2 and b/web/static/fonts/inter/files/inter-greek-300-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-400-italic.woff b/web/static/fonts/inter/files/inter-greek-400-italic.woff new file mode 100644 index 00000000..d47807a5 Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-400-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-greek-400-italic.woff2 b/web/static/fonts/inter/files/inter-greek-400-italic.woff2 new file mode 100644 index 00000000..b4254e13 Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-400-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-400-normal.woff b/web/static/fonts/inter/files/inter-greek-400-normal.woff index d293f1fc..7b5644cc 100644 Binary files a/web/static/fonts/inter/files/inter-greek-400-normal.woff and b/web/static/fonts/inter/files/inter-greek-400-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-greek-400-normal.woff2 b/web/static/fonts/inter/files/inter-greek-400-normal.woff2 index 143a941b..53e8b3f3 100644 Binary files a/web/static/fonts/inter/files/inter-greek-400-normal.woff2 and b/web/static/fonts/inter/files/inter-greek-400-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-500-italic.woff b/web/static/fonts/inter/files/inter-greek-500-italic.woff new file mode 100644 index 00000000..faf70b21 Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-500-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-greek-500-italic.woff2 b/web/static/fonts/inter/files/inter-greek-500-italic.woff2 new file mode 100644 index 00000000..5767635a Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-500-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-500-normal.woff b/web/static/fonts/inter/files/inter-greek-500-normal.woff index a450fa7a..c0b6b580 100644 Binary files a/web/static/fonts/inter/files/inter-greek-500-normal.woff and b/web/static/fonts/inter/files/inter-greek-500-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-greek-500-normal.woff2 b/web/static/fonts/inter/files/inter-greek-500-normal.woff2 index 5c986382..4265167f 100644 Binary files a/web/static/fonts/inter/files/inter-greek-500-normal.woff2 and b/web/static/fonts/inter/files/inter-greek-500-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-600-italic.woff b/web/static/fonts/inter/files/inter-greek-600-italic.woff new file mode 100644 index 00000000..18c9d9be Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-600-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-greek-600-italic.woff2 b/web/static/fonts/inter/files/inter-greek-600-italic.woff2 new file mode 100644 index 00000000..8d299952 Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-600-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-600-normal.woff b/web/static/fonts/inter/files/inter-greek-600-normal.woff index 39f5ccbf..5a67707e 100644 Binary files a/web/static/fonts/inter/files/inter-greek-600-normal.woff and b/web/static/fonts/inter/files/inter-greek-600-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-greek-600-normal.woff2 b/web/static/fonts/inter/files/inter-greek-600-normal.woff2 index f4f0a5eb..1478870f 100644 Binary files a/web/static/fonts/inter/files/inter-greek-600-normal.woff2 and b/web/static/fonts/inter/files/inter-greek-600-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-700-italic.woff b/web/static/fonts/inter/files/inter-greek-700-italic.woff new file mode 100644 index 00000000..c62fdc7c Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-700-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-greek-700-italic.woff2 b/web/static/fonts/inter/files/inter-greek-700-italic.woff2 new file mode 100644 index 00000000..d25fa12e Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-700-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-700-normal.woff b/web/static/fonts/inter/files/inter-greek-700-normal.woff index 5eac98ec..ed6a65f3 100644 Binary files a/web/static/fonts/inter/files/inter-greek-700-normal.woff and b/web/static/fonts/inter/files/inter-greek-700-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-greek-700-normal.woff2 b/web/static/fonts/inter/files/inter-greek-700-normal.woff2 index 140147ef..e73850a5 100644 Binary files a/web/static/fonts/inter/files/inter-greek-700-normal.woff2 and b/web/static/fonts/inter/files/inter-greek-700-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-800-italic.woff b/web/static/fonts/inter/files/inter-greek-800-italic.woff new file mode 100644 index 00000000..eca6524c Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-800-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-greek-800-italic.woff2 b/web/static/fonts/inter/files/inter-greek-800-italic.woff2 new file mode 100644 index 00000000..e045782b Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-800-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-800-normal.woff b/web/static/fonts/inter/files/inter-greek-800-normal.woff index 69c7296b..8d9f18bb 100644 Binary files a/web/static/fonts/inter/files/inter-greek-800-normal.woff and b/web/static/fonts/inter/files/inter-greek-800-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-greek-800-normal.woff2 b/web/static/fonts/inter/files/inter-greek-800-normal.woff2 index 544d5835..6daf3514 100644 Binary files a/web/static/fonts/inter/files/inter-greek-800-normal.woff2 and b/web/static/fonts/inter/files/inter-greek-800-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-900-italic.woff b/web/static/fonts/inter/files/inter-greek-900-italic.woff new file mode 100644 index 00000000..9d09a333 Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-900-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-greek-900-italic.woff2 b/web/static/fonts/inter/files/inter-greek-900-italic.woff2 new file mode 100644 index 00000000..8a33ca9e Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-900-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-900-normal.woff b/web/static/fonts/inter/files/inter-greek-900-normal.woff index 747d9ef8..12f94086 100644 Binary files a/web/static/fonts/inter/files/inter-greek-900-normal.woff and b/web/static/fonts/inter/files/inter-greek-900-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-greek-900-normal.woff2 b/web/static/fonts/inter/files/inter-greek-900-normal.woff2 index ab3f1c08..fed6a8ee 100644 Binary files a/web/static/fonts/inter/files/inter-greek-900-normal.woff2 and b/web/static/fonts/inter/files/inter-greek-900-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-100-italic.woff b/web/static/fonts/inter/files/inter-greek-ext-100-italic.woff new file mode 100644 index 00000000..7329b4d0 Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-ext-100-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-100-italic.woff2 b/web/static/fonts/inter/files/inter-greek-ext-100-italic.woff2 new file mode 100644 index 00000000..b4598d0d Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-ext-100-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-100-normal.woff b/web/static/fonts/inter/files/inter-greek-ext-100-normal.woff index 435f25c1..12725067 100644 Binary files a/web/static/fonts/inter/files/inter-greek-ext-100-normal.woff and b/web/static/fonts/inter/files/inter-greek-ext-100-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-100-normal.woff2 b/web/static/fonts/inter/files/inter-greek-ext-100-normal.woff2 index 4f023ac3..2c5b33d4 100644 Binary files a/web/static/fonts/inter/files/inter-greek-ext-100-normal.woff2 and b/web/static/fonts/inter/files/inter-greek-ext-100-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-200-italic.woff b/web/static/fonts/inter/files/inter-greek-ext-200-italic.woff new file mode 100644 index 00000000..3ea9714e Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-ext-200-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-200-italic.woff2 b/web/static/fonts/inter/files/inter-greek-ext-200-italic.woff2 new file mode 100644 index 00000000..0ee480d5 Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-ext-200-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-200-normal.woff b/web/static/fonts/inter/files/inter-greek-ext-200-normal.woff index e6c8949d..1e81d548 100644 Binary files a/web/static/fonts/inter/files/inter-greek-ext-200-normal.woff and b/web/static/fonts/inter/files/inter-greek-ext-200-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-200-normal.woff2 b/web/static/fonts/inter/files/inter-greek-ext-200-normal.woff2 index 8fa4e472..d97c7b0f 100644 Binary files a/web/static/fonts/inter/files/inter-greek-ext-200-normal.woff2 and b/web/static/fonts/inter/files/inter-greek-ext-200-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-300-italic.woff b/web/static/fonts/inter/files/inter-greek-ext-300-italic.woff new file mode 100644 index 00000000..53e0d18a Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-ext-300-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-300-italic.woff2 b/web/static/fonts/inter/files/inter-greek-ext-300-italic.woff2 new file mode 100644 index 00000000..8779aacc Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-ext-300-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-300-normal.woff b/web/static/fonts/inter/files/inter-greek-ext-300-normal.woff index 57b76f71..6cc46adb 100644 Binary files a/web/static/fonts/inter/files/inter-greek-ext-300-normal.woff and b/web/static/fonts/inter/files/inter-greek-ext-300-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-300-normal.woff2 b/web/static/fonts/inter/files/inter-greek-ext-300-normal.woff2 index 97e45aae..ea151be0 100644 Binary files a/web/static/fonts/inter/files/inter-greek-ext-300-normal.woff2 and b/web/static/fonts/inter/files/inter-greek-ext-300-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-400-italic.woff b/web/static/fonts/inter/files/inter-greek-ext-400-italic.woff new file mode 100644 index 00000000..b544456b Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-ext-400-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-400-italic.woff2 b/web/static/fonts/inter/files/inter-greek-ext-400-italic.woff2 new file mode 100644 index 00000000..bea09fcb Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-ext-400-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-400-normal.woff b/web/static/fonts/inter/files/inter-greek-ext-400-normal.woff index 1fe94089..43bfe590 100644 Binary files a/web/static/fonts/inter/files/inter-greek-ext-400-normal.woff and b/web/static/fonts/inter/files/inter-greek-ext-400-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-400-normal.woff2 b/web/static/fonts/inter/files/inter-greek-ext-400-normal.woff2 index 5f4ae923..5ee82527 100644 Binary files a/web/static/fonts/inter/files/inter-greek-ext-400-normal.woff2 and b/web/static/fonts/inter/files/inter-greek-ext-400-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-500-italic.woff b/web/static/fonts/inter/files/inter-greek-ext-500-italic.woff new file mode 100644 index 00000000..b36e16b8 Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-ext-500-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-500-italic.woff2 b/web/static/fonts/inter/files/inter-greek-ext-500-italic.woff2 new file mode 100644 index 00000000..e9367857 Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-ext-500-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-500-normal.woff b/web/static/fonts/inter/files/inter-greek-ext-500-normal.woff index e61572c2..f3439680 100644 Binary files a/web/static/fonts/inter/files/inter-greek-ext-500-normal.woff and b/web/static/fonts/inter/files/inter-greek-ext-500-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-500-normal.woff2 b/web/static/fonts/inter/files/inter-greek-ext-500-normal.woff2 index aec20f61..5b8f6e39 100644 Binary files a/web/static/fonts/inter/files/inter-greek-ext-500-normal.woff2 and b/web/static/fonts/inter/files/inter-greek-ext-500-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-600-italic.woff b/web/static/fonts/inter/files/inter-greek-ext-600-italic.woff new file mode 100644 index 00000000..79bb0db4 Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-ext-600-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-600-italic.woff2 b/web/static/fonts/inter/files/inter-greek-ext-600-italic.woff2 new file mode 100644 index 00000000..34890f0f Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-ext-600-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-600-normal.woff b/web/static/fonts/inter/files/inter-greek-ext-600-normal.woff index b2e6a573..85b3d558 100644 Binary files a/web/static/fonts/inter/files/inter-greek-ext-600-normal.woff and b/web/static/fonts/inter/files/inter-greek-ext-600-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-600-normal.woff2 b/web/static/fonts/inter/files/inter-greek-ext-600-normal.woff2 index 0fee707f..9f805fd3 100644 Binary files a/web/static/fonts/inter/files/inter-greek-ext-600-normal.woff2 and b/web/static/fonts/inter/files/inter-greek-ext-600-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-700-italic.woff b/web/static/fonts/inter/files/inter-greek-ext-700-italic.woff new file mode 100644 index 00000000..db1cb71a Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-ext-700-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-700-italic.woff2 b/web/static/fonts/inter/files/inter-greek-ext-700-italic.woff2 new file mode 100644 index 00000000..e097583d Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-ext-700-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-700-normal.woff b/web/static/fonts/inter/files/inter-greek-ext-700-normal.woff index 0410e226..516f0682 100644 Binary files a/web/static/fonts/inter/files/inter-greek-ext-700-normal.woff and b/web/static/fonts/inter/files/inter-greek-ext-700-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-700-normal.woff2 b/web/static/fonts/inter/files/inter-greek-ext-700-normal.woff2 index 3a44ec36..7c2055e4 100644 Binary files a/web/static/fonts/inter/files/inter-greek-ext-700-normal.woff2 and b/web/static/fonts/inter/files/inter-greek-ext-700-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-800-italic.woff b/web/static/fonts/inter/files/inter-greek-ext-800-italic.woff new file mode 100644 index 00000000..99a54ea7 Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-ext-800-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-800-italic.woff2 b/web/static/fonts/inter/files/inter-greek-ext-800-italic.woff2 new file mode 100644 index 00000000..f6dd08ea Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-ext-800-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-800-normal.woff b/web/static/fonts/inter/files/inter-greek-ext-800-normal.woff index 7e5cc6e9..bcb2d513 100644 Binary files a/web/static/fonts/inter/files/inter-greek-ext-800-normal.woff and b/web/static/fonts/inter/files/inter-greek-ext-800-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-800-normal.woff2 b/web/static/fonts/inter/files/inter-greek-ext-800-normal.woff2 index 3d281d00..d15b6889 100644 Binary files a/web/static/fonts/inter/files/inter-greek-ext-800-normal.woff2 and b/web/static/fonts/inter/files/inter-greek-ext-800-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-900-italic.woff b/web/static/fonts/inter/files/inter-greek-ext-900-italic.woff new file mode 100644 index 00000000..c382b70e Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-ext-900-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-900-italic.woff2 b/web/static/fonts/inter/files/inter-greek-ext-900-italic.woff2 new file mode 100644 index 00000000..d3340b0e Binary files /dev/null and b/web/static/fonts/inter/files/inter-greek-ext-900-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-900-normal.woff b/web/static/fonts/inter/files/inter-greek-ext-900-normal.woff index 7d81a8b3..d0b80196 100644 Binary files a/web/static/fonts/inter/files/inter-greek-ext-900-normal.woff and b/web/static/fonts/inter/files/inter-greek-ext-900-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-900-normal.woff2 b/web/static/fonts/inter/files/inter-greek-ext-900-normal.woff2 index c23b86f1..9ee2d441 100644 Binary files a/web/static/fonts/inter/files/inter-greek-ext-900-normal.woff2 and b/web/static/fonts/inter/files/inter-greek-ext-900-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-variable-full-normal.woff2 b/web/static/fonts/inter/files/inter-greek-ext-variable-full-normal.woff2 deleted file mode 100644 index ec02a600..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-ext-variable-full-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-ext-variable-wghtOnly-normal.woff2 b/web/static/fonts/inter/files/inter-greek-ext-variable-wghtOnly-normal.woff2 deleted file mode 100644 index 28a2d3a4..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-ext-variable-wghtOnly-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-variable-full-normal.woff2 b/web/static/fonts/inter/files/inter-greek-variable-full-normal.woff2 deleted file mode 100644 index c824651a..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-variable-full-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-greek-variable-wghtOnly-normal.woff2 b/web/static/fonts/inter/files/inter-greek-variable-wghtOnly-normal.woff2 deleted file mode 100644 index 53f099f8..00000000 Binary files a/web/static/fonts/inter/files/inter-greek-variable-wghtOnly-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-100-italic.woff b/web/static/fonts/inter/files/inter-latin-100-italic.woff new file mode 100644 index 00000000..80a4b72b Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-100-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-latin-100-italic.woff2 b/web/static/fonts/inter/files/inter-latin-100-italic.woff2 new file mode 100644 index 00000000..502fe89a Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-100-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-100-normal.woff b/web/static/fonts/inter/files/inter-latin-100-normal.woff index f6317807..1897c06b 100644 Binary files a/web/static/fonts/inter/files/inter-latin-100-normal.woff and b/web/static/fonts/inter/files/inter-latin-100-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-latin-100-normal.woff2 b/web/static/fonts/inter/files/inter-latin-100-normal.woff2 index 1ef23573..6aa06cb6 100644 Binary files a/web/static/fonts/inter/files/inter-latin-100-normal.woff2 and b/web/static/fonts/inter/files/inter-latin-100-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-200-italic.woff b/web/static/fonts/inter/files/inter-latin-200-italic.woff new file mode 100644 index 00000000..7db868f3 Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-200-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-latin-200-italic.woff2 b/web/static/fonts/inter/files/inter-latin-200-italic.woff2 new file mode 100644 index 00000000..3fb8a8e9 Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-200-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-200-normal.woff b/web/static/fonts/inter/files/inter-latin-200-normal.woff index e7f01535..003e488b 100644 Binary files a/web/static/fonts/inter/files/inter-latin-200-normal.woff and b/web/static/fonts/inter/files/inter-latin-200-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-latin-200-normal.woff2 b/web/static/fonts/inter/files/inter-latin-200-normal.woff2 index ca591ae7..ba5753e4 100644 Binary files a/web/static/fonts/inter/files/inter-latin-200-normal.woff2 and b/web/static/fonts/inter/files/inter-latin-200-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-300-italic.woff b/web/static/fonts/inter/files/inter-latin-300-italic.woff new file mode 100644 index 00000000..360e7356 Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-300-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-latin-300-italic.woff2 b/web/static/fonts/inter/files/inter-latin-300-italic.woff2 new file mode 100644 index 00000000..34af554a Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-300-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-300-normal.woff b/web/static/fonts/inter/files/inter-latin-300-normal.woff index f9a5dd91..10fae2f1 100644 Binary files a/web/static/fonts/inter/files/inter-latin-300-normal.woff and b/web/static/fonts/inter/files/inter-latin-300-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-latin-300-normal.woff2 b/web/static/fonts/inter/files/inter-latin-300-normal.woff2 index e085aa82..794bde5a 100644 Binary files a/web/static/fonts/inter/files/inter-latin-300-normal.woff2 and b/web/static/fonts/inter/files/inter-latin-300-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-400-italic.woff b/web/static/fonts/inter/files/inter-latin-400-italic.woff new file mode 100644 index 00000000..131b2595 Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-400-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-latin-400-italic.woff2 b/web/static/fonts/inter/files/inter-latin-400-italic.woff2 new file mode 100644 index 00000000..ec07ef7d Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-400-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-400-normal.woff b/web/static/fonts/inter/files/inter-latin-400-normal.woff index b3db3063..2468d6f0 100644 Binary files a/web/static/fonts/inter/files/inter-latin-400-normal.woff and b/web/static/fonts/inter/files/inter-latin-400-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-latin-400-normal.woff2 b/web/static/fonts/inter/files/inter-latin-400-normal.woff2 index c659f5e4..33002f12 100644 Binary files a/web/static/fonts/inter/files/inter-latin-400-normal.woff2 and b/web/static/fonts/inter/files/inter-latin-400-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-500-italic.woff b/web/static/fonts/inter/files/inter-latin-500-italic.woff new file mode 100644 index 00000000..a99f1536 Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-500-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-latin-500-italic.woff2 b/web/static/fonts/inter/files/inter-latin-500-italic.woff2 new file mode 100644 index 00000000..ef0937e0 Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-500-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-500-normal.woff b/web/static/fonts/inter/files/inter-latin-500-normal.woff index ee274431..20007230 100644 Binary files a/web/static/fonts/inter/files/inter-latin-500-normal.woff and b/web/static/fonts/inter/files/inter-latin-500-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-latin-500-normal.woff2 b/web/static/fonts/inter/files/inter-latin-500-normal.woff2 index 6fc94ad0..03aaea1c 100644 Binary files a/web/static/fonts/inter/files/inter-latin-500-normal.woff2 and b/web/static/fonts/inter/files/inter-latin-500-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-600-italic.woff b/web/static/fonts/inter/files/inter-latin-600-italic.woff new file mode 100644 index 00000000..d2374e3d Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-600-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-latin-600-italic.woff2 b/web/static/fonts/inter/files/inter-latin-600-italic.woff2 new file mode 100644 index 00000000..feee055b Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-600-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-600-normal.woff b/web/static/fonts/inter/files/inter-latin-600-normal.woff index 8ce08d36..71a902b5 100644 Binary files a/web/static/fonts/inter/files/inter-latin-600-normal.woff and b/web/static/fonts/inter/files/inter-latin-600-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-latin-600-normal.woff2 b/web/static/fonts/inter/files/inter-latin-600-normal.woff2 index bc76d107..fb50a02b 100644 Binary files a/web/static/fonts/inter/files/inter-latin-600-normal.woff2 and b/web/static/fonts/inter/files/inter-latin-600-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-700-italic.woff b/web/static/fonts/inter/files/inter-latin-700-italic.woff new file mode 100644 index 00000000..83deeabe Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-700-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-latin-700-italic.woff2 b/web/static/fonts/inter/files/inter-latin-700-italic.woff2 new file mode 100644 index 00000000..46172807 Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-700-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-700-normal.woff b/web/static/fonts/inter/files/inter-latin-700-normal.woff index c2cd54d8..94f73440 100644 Binary files a/web/static/fonts/inter/files/inter-latin-700-normal.woff and b/web/static/fonts/inter/files/inter-latin-700-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-latin-700-normal.woff2 b/web/static/fonts/inter/files/inter-latin-700-normal.woff2 index 8fcc4321..12b51d77 100644 Binary files a/web/static/fonts/inter/files/inter-latin-700-normal.woff2 and b/web/static/fonts/inter/files/inter-latin-700-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-800-italic.woff b/web/static/fonts/inter/files/inter-latin-800-italic.woff new file mode 100644 index 00000000..254cdcaa Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-800-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-latin-800-italic.woff2 b/web/static/fonts/inter/files/inter-latin-800-italic.woff2 new file mode 100644 index 00000000..f4f2106e Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-800-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-800-normal.woff b/web/static/fonts/inter/files/inter-latin-800-normal.woff index 5a05354c..f1e7b95d 100644 Binary files a/web/static/fonts/inter/files/inter-latin-800-normal.woff and b/web/static/fonts/inter/files/inter-latin-800-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-latin-800-normal.woff2 b/web/static/fonts/inter/files/inter-latin-800-normal.woff2 index 27db0546..882bd182 100644 Binary files a/web/static/fonts/inter/files/inter-latin-800-normal.woff2 and b/web/static/fonts/inter/files/inter-latin-800-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-900-italic.woff b/web/static/fonts/inter/files/inter-latin-900-italic.woff new file mode 100644 index 00000000..c671ddb1 Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-900-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-latin-900-italic.woff2 b/web/static/fonts/inter/files/inter-latin-900-italic.woff2 new file mode 100644 index 00000000..9c2eafaa Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-900-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-900-normal.woff b/web/static/fonts/inter/files/inter-latin-900-normal.woff index 2da3cacd..b01de4d3 100644 Binary files a/web/static/fonts/inter/files/inter-latin-900-normal.woff and b/web/static/fonts/inter/files/inter-latin-900-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-latin-900-normal.woff2 b/web/static/fonts/inter/files/inter-latin-900-normal.woff2 index b1c208a1..ecc6f69c 100644 Binary files a/web/static/fonts/inter/files/inter-latin-900-normal.woff2 and b/web/static/fonts/inter/files/inter-latin-900-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-100-italic.woff b/web/static/fonts/inter/files/inter-latin-ext-100-italic.woff new file mode 100644 index 00000000..1e92b9e2 Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-ext-100-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-100-italic.woff2 b/web/static/fonts/inter/files/inter-latin-ext-100-italic.woff2 new file mode 100644 index 00000000..0a874543 Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-ext-100-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-100-normal.woff b/web/static/fonts/inter/files/inter-latin-ext-100-normal.woff index cc721fa0..7f9d8f27 100644 Binary files a/web/static/fonts/inter/files/inter-latin-ext-100-normal.woff and b/web/static/fonts/inter/files/inter-latin-ext-100-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-100-normal.woff2 b/web/static/fonts/inter/files/inter-latin-ext-100-normal.woff2 index 9982f5f6..cfcf5417 100644 Binary files a/web/static/fonts/inter/files/inter-latin-ext-100-normal.woff2 and b/web/static/fonts/inter/files/inter-latin-ext-100-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-200-italic.woff b/web/static/fonts/inter/files/inter-latin-ext-200-italic.woff new file mode 100644 index 00000000..7ac9d0e3 Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-ext-200-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-200-italic.woff2 b/web/static/fonts/inter/files/inter-latin-ext-200-italic.woff2 new file mode 100644 index 00000000..71361953 Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-ext-200-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-200-normal.woff b/web/static/fonts/inter/files/inter-latin-ext-200-normal.woff index cdf55aa0..20c3ffab 100644 Binary files a/web/static/fonts/inter/files/inter-latin-ext-200-normal.woff and b/web/static/fonts/inter/files/inter-latin-ext-200-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-200-normal.woff2 b/web/static/fonts/inter/files/inter-latin-ext-200-normal.woff2 index a822063f..e0b8aa7a 100644 Binary files a/web/static/fonts/inter/files/inter-latin-ext-200-normal.woff2 and b/web/static/fonts/inter/files/inter-latin-ext-200-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-300-italic.woff b/web/static/fonts/inter/files/inter-latin-ext-300-italic.woff new file mode 100644 index 00000000..c3fe269e Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-ext-300-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-300-italic.woff2 b/web/static/fonts/inter/files/inter-latin-ext-300-italic.woff2 new file mode 100644 index 00000000..80b076c7 Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-ext-300-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-300-normal.woff b/web/static/fonts/inter/files/inter-latin-ext-300-normal.woff index 2ee09656..9847e233 100644 Binary files a/web/static/fonts/inter/files/inter-latin-ext-300-normal.woff and b/web/static/fonts/inter/files/inter-latin-ext-300-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-300-normal.woff2 b/web/static/fonts/inter/files/inter-latin-ext-300-normal.woff2 index 25be677c..99381997 100644 Binary files a/web/static/fonts/inter/files/inter-latin-ext-300-normal.woff2 and b/web/static/fonts/inter/files/inter-latin-ext-300-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-400-italic.woff b/web/static/fonts/inter/files/inter-latin-ext-400-italic.woff new file mode 100644 index 00000000..863806d0 Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-ext-400-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-400-italic.woff2 b/web/static/fonts/inter/files/inter-latin-ext-400-italic.woff2 new file mode 100644 index 00000000..df6c9fa1 Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-ext-400-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-400-normal.woff b/web/static/fonts/inter/files/inter-latin-ext-400-normal.woff index f7197314..e85a6361 100644 Binary files a/web/static/fonts/inter/files/inter-latin-ext-400-normal.woff and b/web/static/fonts/inter/files/inter-latin-ext-400-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-400-normal.woff2 b/web/static/fonts/inter/files/inter-latin-ext-400-normal.woff2 index b0d08940..e46b74a8 100644 Binary files a/web/static/fonts/inter/files/inter-latin-ext-400-normal.woff2 and b/web/static/fonts/inter/files/inter-latin-ext-400-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-500-italic.woff b/web/static/fonts/inter/files/inter-latin-ext-500-italic.woff new file mode 100644 index 00000000..5d368cb8 Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-ext-500-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-500-italic.woff2 b/web/static/fonts/inter/files/inter-latin-ext-500-italic.woff2 new file mode 100644 index 00000000..a37100fd Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-ext-500-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-500-normal.woff b/web/static/fonts/inter/files/inter-latin-ext-500-normal.woff index cfbd116b..29e21db4 100644 Binary files a/web/static/fonts/inter/files/inter-latin-ext-500-normal.woff and b/web/static/fonts/inter/files/inter-latin-ext-500-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-500-normal.woff2 b/web/static/fonts/inter/files/inter-latin-ext-500-normal.woff2 index e7872918..3d2f2475 100644 Binary files a/web/static/fonts/inter/files/inter-latin-ext-500-normal.woff2 and b/web/static/fonts/inter/files/inter-latin-ext-500-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-600-italic.woff b/web/static/fonts/inter/files/inter-latin-ext-600-italic.woff new file mode 100644 index 00000000..b8a82736 Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-ext-600-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-600-italic.woff2 b/web/static/fonts/inter/files/inter-latin-ext-600-italic.woff2 new file mode 100644 index 00000000..0e989ea2 Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-ext-600-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-600-normal.woff b/web/static/fonts/inter/files/inter-latin-ext-600-normal.woff index cedbd7f9..83210206 100644 Binary files a/web/static/fonts/inter/files/inter-latin-ext-600-normal.woff and b/web/static/fonts/inter/files/inter-latin-ext-600-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-600-normal.woff2 b/web/static/fonts/inter/files/inter-latin-ext-600-normal.woff2 index 8ff1de2f..ae16ff8d 100644 Binary files a/web/static/fonts/inter/files/inter-latin-ext-600-normal.woff2 and b/web/static/fonts/inter/files/inter-latin-ext-600-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-700-italic.woff b/web/static/fonts/inter/files/inter-latin-ext-700-italic.woff new file mode 100644 index 00000000..4e8efcc2 Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-ext-700-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-700-italic.woff2 b/web/static/fonts/inter/files/inter-latin-ext-700-italic.woff2 new file mode 100644 index 00000000..e8069309 Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-ext-700-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-700-normal.woff b/web/static/fonts/inter/files/inter-latin-ext-700-normal.woff index de34917d..08457721 100644 Binary files a/web/static/fonts/inter/files/inter-latin-ext-700-normal.woff and b/web/static/fonts/inter/files/inter-latin-ext-700-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-700-normal.woff2 b/web/static/fonts/inter/files/inter-latin-ext-700-normal.woff2 index d8c5665e..818c9060 100644 Binary files a/web/static/fonts/inter/files/inter-latin-ext-700-normal.woff2 and b/web/static/fonts/inter/files/inter-latin-ext-700-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-800-italic.woff b/web/static/fonts/inter/files/inter-latin-ext-800-italic.woff new file mode 100644 index 00000000..19eafa50 Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-ext-800-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-800-italic.woff2 b/web/static/fonts/inter/files/inter-latin-ext-800-italic.woff2 new file mode 100644 index 00000000..4ae8fcd8 Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-ext-800-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-800-normal.woff b/web/static/fonts/inter/files/inter-latin-ext-800-normal.woff index 0e991970..5c6d7b0d 100644 Binary files a/web/static/fonts/inter/files/inter-latin-ext-800-normal.woff and b/web/static/fonts/inter/files/inter-latin-ext-800-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-800-normal.woff2 b/web/static/fonts/inter/files/inter-latin-ext-800-normal.woff2 index 1a2cf496..e3c76e9a 100644 Binary files a/web/static/fonts/inter/files/inter-latin-ext-800-normal.woff2 and b/web/static/fonts/inter/files/inter-latin-ext-800-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-900-italic.woff b/web/static/fonts/inter/files/inter-latin-ext-900-italic.woff new file mode 100644 index 00000000..c8415791 Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-ext-900-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-900-italic.woff2 b/web/static/fonts/inter/files/inter-latin-ext-900-italic.woff2 new file mode 100644 index 00000000..4c24dc9b Binary files /dev/null and b/web/static/fonts/inter/files/inter-latin-ext-900-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-900-normal.woff b/web/static/fonts/inter/files/inter-latin-ext-900-normal.woff index e35faf7f..c6020528 100644 Binary files a/web/static/fonts/inter/files/inter-latin-ext-900-normal.woff and b/web/static/fonts/inter/files/inter-latin-ext-900-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-900-normal.woff2 b/web/static/fonts/inter/files/inter-latin-ext-900-normal.woff2 index 2d12b583..ef7ab76b 100644 Binary files a/web/static/fonts/inter/files/inter-latin-ext-900-normal.woff2 and b/web/static/fonts/inter/files/inter-latin-ext-900-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-variable-full-normal.woff2 b/web/static/fonts/inter/files/inter-latin-ext-variable-full-normal.woff2 deleted file mode 100644 index f92fc165..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-ext-variable-full-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-ext-variable-wghtOnly-normal.woff2 b/web/static/fonts/inter/files/inter-latin-ext-variable-wghtOnly-normal.woff2 deleted file mode 100644 index 80b17cbf..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-ext-variable-wghtOnly-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-variable-full-normal.woff2 b/web/static/fonts/inter/files/inter-latin-variable-full-normal.woff2 deleted file mode 100644 index 3d422a1f..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-variable-full-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-latin-variable-wghtOnly-normal.woff2 b/web/static/fonts/inter/files/inter-latin-variable-wghtOnly-normal.woff2 deleted file mode 100644 index fff3df96..00000000 Binary files a/web/static/fonts/inter/files/inter-latin-variable-wghtOnly-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-100-italic.woff b/web/static/fonts/inter/files/inter-vietnamese-100-italic.woff new file mode 100644 index 00000000..9e51ce63 Binary files /dev/null and b/web/static/fonts/inter/files/inter-vietnamese-100-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-100-italic.woff2 b/web/static/fonts/inter/files/inter-vietnamese-100-italic.woff2 new file mode 100644 index 00000000..738e44bf Binary files /dev/null and b/web/static/fonts/inter/files/inter-vietnamese-100-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-100-normal.woff b/web/static/fonts/inter/files/inter-vietnamese-100-normal.woff index 75c85d80..d7f44f44 100644 Binary files a/web/static/fonts/inter/files/inter-vietnamese-100-normal.woff and b/web/static/fonts/inter/files/inter-vietnamese-100-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-100-normal.woff2 b/web/static/fonts/inter/files/inter-vietnamese-100-normal.woff2 index 1e01e432..7c17533a 100644 Binary files a/web/static/fonts/inter/files/inter-vietnamese-100-normal.woff2 and b/web/static/fonts/inter/files/inter-vietnamese-100-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-200-italic.woff b/web/static/fonts/inter/files/inter-vietnamese-200-italic.woff new file mode 100644 index 00000000..8e5bcbf4 Binary files /dev/null and b/web/static/fonts/inter/files/inter-vietnamese-200-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-200-italic.woff2 b/web/static/fonts/inter/files/inter-vietnamese-200-italic.woff2 new file mode 100644 index 00000000..4be9c7a3 Binary files /dev/null and b/web/static/fonts/inter/files/inter-vietnamese-200-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-200-normal.woff b/web/static/fonts/inter/files/inter-vietnamese-200-normal.woff index 259d7a53..bf4a12d0 100644 Binary files a/web/static/fonts/inter/files/inter-vietnamese-200-normal.woff and b/web/static/fonts/inter/files/inter-vietnamese-200-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-200-normal.woff2 b/web/static/fonts/inter/files/inter-vietnamese-200-normal.woff2 index 49bf2d61..43ae5ca1 100644 Binary files a/web/static/fonts/inter/files/inter-vietnamese-200-normal.woff2 and b/web/static/fonts/inter/files/inter-vietnamese-200-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-300-italic.woff b/web/static/fonts/inter/files/inter-vietnamese-300-italic.woff new file mode 100644 index 00000000..46051499 Binary files /dev/null and b/web/static/fonts/inter/files/inter-vietnamese-300-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-300-italic.woff2 b/web/static/fonts/inter/files/inter-vietnamese-300-italic.woff2 new file mode 100644 index 00000000..16a90b5e Binary files /dev/null and b/web/static/fonts/inter/files/inter-vietnamese-300-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-300-normal.woff b/web/static/fonts/inter/files/inter-vietnamese-300-normal.woff index 7a070346..27a41ac0 100644 Binary files a/web/static/fonts/inter/files/inter-vietnamese-300-normal.woff and b/web/static/fonts/inter/files/inter-vietnamese-300-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-300-normal.woff2 b/web/static/fonts/inter/files/inter-vietnamese-300-normal.woff2 index c75e79a6..5c473b35 100644 Binary files a/web/static/fonts/inter/files/inter-vietnamese-300-normal.woff2 and b/web/static/fonts/inter/files/inter-vietnamese-300-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-400-italic.woff b/web/static/fonts/inter/files/inter-vietnamese-400-italic.woff new file mode 100644 index 00000000..280e2afd Binary files /dev/null and b/web/static/fonts/inter/files/inter-vietnamese-400-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-400-italic.woff2 b/web/static/fonts/inter/files/inter-vietnamese-400-italic.woff2 new file mode 100644 index 00000000..0ef7659e Binary files /dev/null and b/web/static/fonts/inter/files/inter-vietnamese-400-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-400-normal.woff b/web/static/fonts/inter/files/inter-vietnamese-400-normal.woff index 4f2b3b5a..348a66d6 100644 Binary files a/web/static/fonts/inter/files/inter-vietnamese-400-normal.woff and b/web/static/fonts/inter/files/inter-vietnamese-400-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-400-normal.woff2 b/web/static/fonts/inter/files/inter-vietnamese-400-normal.woff2 index b9cb104b..ba7767f2 100644 Binary files a/web/static/fonts/inter/files/inter-vietnamese-400-normal.woff2 and b/web/static/fonts/inter/files/inter-vietnamese-400-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-500-italic.woff b/web/static/fonts/inter/files/inter-vietnamese-500-italic.woff new file mode 100644 index 00000000..0a103b31 Binary files /dev/null and b/web/static/fonts/inter/files/inter-vietnamese-500-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-500-italic.woff2 b/web/static/fonts/inter/files/inter-vietnamese-500-italic.woff2 new file mode 100644 index 00000000..5107ac2c Binary files /dev/null and b/web/static/fonts/inter/files/inter-vietnamese-500-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-500-normal.woff b/web/static/fonts/inter/files/inter-vietnamese-500-normal.woff index 6d8f9f2d..87e49806 100644 Binary files a/web/static/fonts/inter/files/inter-vietnamese-500-normal.woff and b/web/static/fonts/inter/files/inter-vietnamese-500-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-500-normal.woff2 b/web/static/fonts/inter/files/inter-vietnamese-500-normal.woff2 index 73c7d0f3..abe88f50 100644 Binary files a/web/static/fonts/inter/files/inter-vietnamese-500-normal.woff2 and b/web/static/fonts/inter/files/inter-vietnamese-500-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-600-italic.woff b/web/static/fonts/inter/files/inter-vietnamese-600-italic.woff new file mode 100644 index 00000000..bac5faee Binary files /dev/null and b/web/static/fonts/inter/files/inter-vietnamese-600-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-600-italic.woff2 b/web/static/fonts/inter/files/inter-vietnamese-600-italic.woff2 new file mode 100644 index 00000000..6c2365e2 Binary files /dev/null and b/web/static/fonts/inter/files/inter-vietnamese-600-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-600-normal.woff b/web/static/fonts/inter/files/inter-vietnamese-600-normal.woff index b6e89fb4..9ee2b62e 100644 Binary files a/web/static/fonts/inter/files/inter-vietnamese-600-normal.woff and b/web/static/fonts/inter/files/inter-vietnamese-600-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-600-normal.woff2 b/web/static/fonts/inter/files/inter-vietnamese-600-normal.woff2 index 0f59ce62..e7b7814b 100644 Binary files a/web/static/fonts/inter/files/inter-vietnamese-600-normal.woff2 and b/web/static/fonts/inter/files/inter-vietnamese-600-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-700-italic.woff b/web/static/fonts/inter/files/inter-vietnamese-700-italic.woff new file mode 100644 index 00000000..bab33999 Binary files /dev/null and b/web/static/fonts/inter/files/inter-vietnamese-700-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-700-italic.woff2 b/web/static/fonts/inter/files/inter-vietnamese-700-italic.woff2 new file mode 100644 index 00000000..cbc8c608 Binary files /dev/null and b/web/static/fonts/inter/files/inter-vietnamese-700-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-700-normal.woff b/web/static/fonts/inter/files/inter-vietnamese-700-normal.woff index 4906979d..ffdefe9c 100644 Binary files a/web/static/fonts/inter/files/inter-vietnamese-700-normal.woff and b/web/static/fonts/inter/files/inter-vietnamese-700-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-700-normal.woff2 b/web/static/fonts/inter/files/inter-vietnamese-700-normal.woff2 index a9a5314a..47cdc0d0 100644 Binary files a/web/static/fonts/inter/files/inter-vietnamese-700-normal.woff2 and b/web/static/fonts/inter/files/inter-vietnamese-700-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-800-italic.woff b/web/static/fonts/inter/files/inter-vietnamese-800-italic.woff new file mode 100644 index 00000000..9b444e52 Binary files /dev/null and b/web/static/fonts/inter/files/inter-vietnamese-800-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-800-italic.woff2 b/web/static/fonts/inter/files/inter-vietnamese-800-italic.woff2 new file mode 100644 index 00000000..0e0d6011 Binary files /dev/null and b/web/static/fonts/inter/files/inter-vietnamese-800-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-800-normal.woff b/web/static/fonts/inter/files/inter-vietnamese-800-normal.woff index f08df88d..2f7576ca 100644 Binary files a/web/static/fonts/inter/files/inter-vietnamese-800-normal.woff and b/web/static/fonts/inter/files/inter-vietnamese-800-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-800-normal.woff2 b/web/static/fonts/inter/files/inter-vietnamese-800-normal.woff2 index 56b1f464..d954dd73 100644 Binary files a/web/static/fonts/inter/files/inter-vietnamese-800-normal.woff2 and b/web/static/fonts/inter/files/inter-vietnamese-800-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-900-italic.woff b/web/static/fonts/inter/files/inter-vietnamese-900-italic.woff new file mode 100644 index 00000000..5ac1a224 Binary files /dev/null and b/web/static/fonts/inter/files/inter-vietnamese-900-italic.woff differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-900-italic.woff2 b/web/static/fonts/inter/files/inter-vietnamese-900-italic.woff2 new file mode 100644 index 00000000..8d4dd5f2 Binary files /dev/null and b/web/static/fonts/inter/files/inter-vietnamese-900-italic.woff2 differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-900-normal.woff b/web/static/fonts/inter/files/inter-vietnamese-900-normal.woff index bf4cad4d..62bb052c 100644 Binary files a/web/static/fonts/inter/files/inter-vietnamese-900-normal.woff and b/web/static/fonts/inter/files/inter-vietnamese-900-normal.woff differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-900-normal.woff2 b/web/static/fonts/inter/files/inter-vietnamese-900-normal.woff2 index 27eadde3..608bc3ce 100644 Binary files a/web/static/fonts/inter/files/inter-vietnamese-900-normal.woff2 and b/web/static/fonts/inter/files/inter-vietnamese-900-normal.woff2 differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-variable-full-normal.woff2 b/web/static/fonts/inter/files/inter-vietnamese-variable-full-normal.woff2 deleted file mode 100644 index 0ebcbbf5..00000000 Binary files a/web/static/fonts/inter/files/inter-vietnamese-variable-full-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/files/inter-vietnamese-variable-wghtOnly-normal.woff2 b/web/static/fonts/inter/files/inter-vietnamese-variable-wghtOnly-normal.woff2 deleted file mode 100644 index 7ee67fb2..00000000 Binary files a/web/static/fonts/inter/files/inter-vietnamese-variable-wghtOnly-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/inter/greek-100-italic.css b/web/static/fonts/inter/greek-100-italic.css new file mode 100644 index 00000000..890776b7 --- /dev/null +++ b/web/static/fonts/inter/greek-100-italic.css @@ -0,0 +1,8 @@ +/* inter-greek-100-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 100; + src: url(/static/fonts/inter/files/inter-greek-100-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-100-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/greek-200-italic.css b/web/static/fonts/inter/greek-200-italic.css new file mode 100644 index 00000000..661f0aa7 --- /dev/null +++ b/web/static/fonts/inter/greek-200-italic.css @@ -0,0 +1,8 @@ +/* inter-greek-200-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 200; + src: url(/static/fonts/inter/files/inter-greek-200-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-200-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/greek-300-italic.css b/web/static/fonts/inter/greek-300-italic.css new file mode 100644 index 00000000..29c15d4b --- /dev/null +++ b/web/static/fonts/inter/greek-300-italic.css @@ -0,0 +1,8 @@ +/* inter-greek-300-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(/static/fonts/inter/files/inter-greek-300-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-300-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/greek-400-italic.css b/web/static/fonts/inter/greek-400-italic.css new file mode 100644 index 00000000..00274b1f --- /dev/null +++ b/web/static/fonts/inter/greek-400-italic.css @@ -0,0 +1,8 @@ +/* inter-greek-400-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(/static/fonts/inter/files/inter-greek-400-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-400-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/greek-500-italic.css b/web/static/fonts/inter/greek-500-italic.css new file mode 100644 index 00000000..690a69a6 --- /dev/null +++ b/web/static/fonts/inter/greek-500-italic.css @@ -0,0 +1,8 @@ +/* inter-greek-500-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 500; + src: url(/static/fonts/inter/files/inter-greek-500-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-500-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/greek-600-italic.css b/web/static/fonts/inter/greek-600-italic.css new file mode 100644 index 00000000..807d5548 --- /dev/null +++ b/web/static/fonts/inter/greek-600-italic.css @@ -0,0 +1,8 @@ +/* inter-greek-600-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 600; + src: url(/static/fonts/inter/files/inter-greek-600-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-600-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/greek-700-italic.css b/web/static/fonts/inter/greek-700-italic.css new file mode 100644 index 00000000..971f22cf --- /dev/null +++ b/web/static/fonts/inter/greek-700-italic.css @@ -0,0 +1,8 @@ +/* inter-greek-700-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(/static/fonts/inter/files/inter-greek-700-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-700-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/greek-800-italic.css b/web/static/fonts/inter/greek-800-italic.css new file mode 100644 index 00000000..5ab990d9 --- /dev/null +++ b/web/static/fonts/inter/greek-800-italic.css @@ -0,0 +1,8 @@ +/* inter-greek-800-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 800; + src: url(/static/fonts/inter/files/inter-greek-800-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-800-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/greek-900-italic.css b/web/static/fonts/inter/greek-900-italic.css new file mode 100644 index 00000000..73df5bd5 --- /dev/null +++ b/web/static/fonts/inter/greek-900-italic.css @@ -0,0 +1,8 @@ +/* inter-greek-900-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(/static/fonts/inter/files/inter-greek-900-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-900-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/greek-ext-100-italic.css b/web/static/fonts/inter/greek-ext-100-italic.css new file mode 100644 index 00000000..b86438ef --- /dev/null +++ b/web/static/fonts/inter/greek-ext-100-italic.css @@ -0,0 +1,8 @@ +/* inter-greek-ext-100-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 100; + src: url(/static/fonts/inter/files/inter-greek-ext-100-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-100-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/greek-ext-200-italic.css b/web/static/fonts/inter/greek-ext-200-italic.css new file mode 100644 index 00000000..5cb370a1 --- /dev/null +++ b/web/static/fonts/inter/greek-ext-200-italic.css @@ -0,0 +1,8 @@ +/* inter-greek-ext-200-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 200; + src: url(/static/fonts/inter/files/inter-greek-ext-200-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-200-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/greek-ext-300-italic.css b/web/static/fonts/inter/greek-ext-300-italic.css new file mode 100644 index 00000000..d29f055d --- /dev/null +++ b/web/static/fonts/inter/greek-ext-300-italic.css @@ -0,0 +1,8 @@ +/* inter-greek-ext-300-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(/static/fonts/inter/files/inter-greek-ext-300-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-300-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/greek-ext-400-italic.css b/web/static/fonts/inter/greek-ext-400-italic.css new file mode 100644 index 00000000..e9afb9c9 --- /dev/null +++ b/web/static/fonts/inter/greek-ext-400-italic.css @@ -0,0 +1,8 @@ +/* inter-greek-ext-400-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(/static/fonts/inter/files/inter-greek-ext-400-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-400-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/greek-ext-500-italic.css b/web/static/fonts/inter/greek-ext-500-italic.css new file mode 100644 index 00000000..4c72907c --- /dev/null +++ b/web/static/fonts/inter/greek-ext-500-italic.css @@ -0,0 +1,8 @@ +/* inter-greek-ext-500-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 500; + src: url(/static/fonts/inter/files/inter-greek-ext-500-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-500-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/greek-ext-600-italic.css b/web/static/fonts/inter/greek-ext-600-italic.css new file mode 100644 index 00000000..146a4e7d --- /dev/null +++ b/web/static/fonts/inter/greek-ext-600-italic.css @@ -0,0 +1,8 @@ +/* inter-greek-ext-600-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 600; + src: url(/static/fonts/inter/files/inter-greek-ext-600-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-600-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/greek-ext-700-italic.css b/web/static/fonts/inter/greek-ext-700-italic.css new file mode 100644 index 00000000..af471997 --- /dev/null +++ b/web/static/fonts/inter/greek-ext-700-italic.css @@ -0,0 +1,8 @@ +/* inter-greek-ext-700-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(/static/fonts/inter/files/inter-greek-ext-700-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-700-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/greek-ext-800-italic.css b/web/static/fonts/inter/greek-ext-800-italic.css new file mode 100644 index 00000000..d765f28b --- /dev/null +++ b/web/static/fonts/inter/greek-ext-800-italic.css @@ -0,0 +1,8 @@ +/* inter-greek-ext-800-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 800; + src: url(/static/fonts/inter/files/inter-greek-ext-800-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-800-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/greek-ext-900-italic.css b/web/static/fonts/inter/greek-ext-900-italic.css new file mode 100644 index 00000000..937f3cb3 --- /dev/null +++ b/web/static/fonts/inter/greek-ext-900-italic.css @@ -0,0 +1,8 @@ +/* inter-greek-ext-900-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(/static/fonts/inter/files/inter-greek-ext-900-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-900-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/greek-ext-italic.css b/web/static/fonts/inter/greek-ext-italic.css new file mode 100644 index 00000000..0eee1e58 --- /dev/null +++ b/web/static/fonts/inter/greek-ext-italic.css @@ -0,0 +1,80 @@ +/* inter-greek-ext-100-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 100; + src: url(/static/fonts/inter/files/inter-greek-ext-100-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-100-italic.woff) format('woff'); +} + +/* inter-greek-ext-200-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 200; + src: url(/static/fonts/inter/files/inter-greek-ext-200-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-200-italic.woff) format('woff'); +} + +/* inter-greek-ext-300-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(/static/fonts/inter/files/inter-greek-ext-300-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-300-italic.woff) format('woff'); +} + +/* inter-greek-ext-400-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(/static/fonts/inter/files/inter-greek-ext-400-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-400-italic.woff) format('woff'); +} + +/* inter-greek-ext-500-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 500; + src: url(/static/fonts/inter/files/inter-greek-ext-500-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-500-italic.woff) format('woff'); +} + +/* inter-greek-ext-600-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 600; + src: url(/static/fonts/inter/files/inter-greek-ext-600-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-600-italic.woff) format('woff'); +} + +/* inter-greek-ext-700-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(/static/fonts/inter/files/inter-greek-ext-700-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-700-italic.woff) format('woff'); +} + +/* inter-greek-ext-800-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 800; + src: url(/static/fonts/inter/files/inter-greek-ext-800-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-800-italic.woff) format('woff'); +} + +/* inter-greek-ext-900-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(/static/fonts/inter/files/inter-greek-ext-900-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-ext-900-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/greek-italic.css b/web/static/fonts/inter/greek-italic.css new file mode 100644 index 00000000..35f593a1 --- /dev/null +++ b/web/static/fonts/inter/greek-italic.css @@ -0,0 +1,80 @@ +/* inter-greek-100-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 100; + src: url(/static/fonts/inter/files/inter-greek-100-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-100-italic.woff) format('woff'); +} + +/* inter-greek-200-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 200; + src: url(/static/fonts/inter/files/inter-greek-200-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-200-italic.woff) format('woff'); +} + +/* inter-greek-300-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(/static/fonts/inter/files/inter-greek-300-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-300-italic.woff) format('woff'); +} + +/* inter-greek-400-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(/static/fonts/inter/files/inter-greek-400-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-400-italic.woff) format('woff'); +} + +/* inter-greek-500-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 500; + src: url(/static/fonts/inter/files/inter-greek-500-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-500-italic.woff) format('woff'); +} + +/* inter-greek-600-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 600; + src: url(/static/fonts/inter/files/inter-greek-600-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-600-italic.woff) format('woff'); +} + +/* inter-greek-700-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(/static/fonts/inter/files/inter-greek-700-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-700-italic.woff) format('woff'); +} + +/* inter-greek-800-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 800; + src: url(/static/fonts/inter/files/inter-greek-800-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-800-italic.woff) format('woff'); +} + +/* inter-greek-900-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(/static/fonts/inter/files/inter-greek-900-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-900-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/index.css b/web/static/fonts/inter/index.css index 15f91ed0..a5988b68 100644 --- a/web/static/fonts/inter/index.css +++ b/web/static/fonts/inter/index.css @@ -35,7 +35,7 @@ font-display: swap; font-weight: 400; src: url(/static/fonts/inter/files/inter-greek-400-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-greek-400-normal.woff) format('woff'); - unicode-range: U+0370-03FF; + unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF; } /* inter-vietnamese-400-normal */ @@ -55,7 +55,7 @@ font-display: swap; font-weight: 400; src: url(/static/fonts/inter/files/inter-latin-ext-400-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-400-normal.woff) format('woff'); - unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; } /* inter-latin-400-normal */ @@ -65,5 +65,5 @@ font-display: swap; font-weight: 400; src: url(/static/fonts/inter/files/inter-latin-400-normal.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-400-normal.woff) format('woff'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; } \ No newline at end of file diff --git a/web/static/fonts/inter/latin-100-italic.css b/web/static/fonts/inter/latin-100-italic.css new file mode 100644 index 00000000..04979640 --- /dev/null +++ b/web/static/fonts/inter/latin-100-italic.css @@ -0,0 +1,8 @@ +/* inter-latin-100-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 100; + src: url(/static/fonts/inter/files/inter-latin-100-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-100-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/latin-200-italic.css b/web/static/fonts/inter/latin-200-italic.css new file mode 100644 index 00000000..f9a0937b --- /dev/null +++ b/web/static/fonts/inter/latin-200-italic.css @@ -0,0 +1,8 @@ +/* inter-latin-200-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 200; + src: url(/static/fonts/inter/files/inter-latin-200-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-200-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/latin-300-italic.css b/web/static/fonts/inter/latin-300-italic.css new file mode 100644 index 00000000..9a007f2d --- /dev/null +++ b/web/static/fonts/inter/latin-300-italic.css @@ -0,0 +1,8 @@ +/* inter-latin-300-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(/static/fonts/inter/files/inter-latin-300-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-300-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/latin-400-italic.css b/web/static/fonts/inter/latin-400-italic.css new file mode 100644 index 00000000..d4191367 --- /dev/null +++ b/web/static/fonts/inter/latin-400-italic.css @@ -0,0 +1,8 @@ +/* inter-latin-400-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(/static/fonts/inter/files/inter-latin-400-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-400-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/latin-500-italic.css b/web/static/fonts/inter/latin-500-italic.css new file mode 100644 index 00000000..ab51a8ef --- /dev/null +++ b/web/static/fonts/inter/latin-500-italic.css @@ -0,0 +1,8 @@ +/* inter-latin-500-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 500; + src: url(/static/fonts/inter/files/inter-latin-500-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-500-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/latin-600-italic.css b/web/static/fonts/inter/latin-600-italic.css new file mode 100644 index 00000000..088e75f0 --- /dev/null +++ b/web/static/fonts/inter/latin-600-italic.css @@ -0,0 +1,8 @@ +/* inter-latin-600-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 600; + src: url(/static/fonts/inter/files/inter-latin-600-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-600-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/latin-700-italic.css b/web/static/fonts/inter/latin-700-italic.css new file mode 100644 index 00000000..dbc0c1cd --- /dev/null +++ b/web/static/fonts/inter/latin-700-italic.css @@ -0,0 +1,8 @@ +/* inter-latin-700-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(/static/fonts/inter/files/inter-latin-700-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-700-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/latin-800-italic.css b/web/static/fonts/inter/latin-800-italic.css new file mode 100644 index 00000000..a271821a --- /dev/null +++ b/web/static/fonts/inter/latin-800-italic.css @@ -0,0 +1,8 @@ +/* inter-latin-800-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 800; + src: url(/static/fonts/inter/files/inter-latin-800-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-800-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/latin-900-italic.css b/web/static/fonts/inter/latin-900-italic.css new file mode 100644 index 00000000..58183762 --- /dev/null +++ b/web/static/fonts/inter/latin-900-italic.css @@ -0,0 +1,8 @@ +/* inter-latin-900-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(/static/fonts/inter/files/inter-latin-900-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-900-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/latin-ext-100-italic.css b/web/static/fonts/inter/latin-ext-100-italic.css new file mode 100644 index 00000000..657508d7 --- /dev/null +++ b/web/static/fonts/inter/latin-ext-100-italic.css @@ -0,0 +1,8 @@ +/* inter-latin-ext-100-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 100; + src: url(/static/fonts/inter/files/inter-latin-ext-100-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-100-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/latin-ext-200-italic.css b/web/static/fonts/inter/latin-ext-200-italic.css new file mode 100644 index 00000000..1b379d6b --- /dev/null +++ b/web/static/fonts/inter/latin-ext-200-italic.css @@ -0,0 +1,8 @@ +/* inter-latin-ext-200-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 200; + src: url(/static/fonts/inter/files/inter-latin-ext-200-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-200-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/latin-ext-300-italic.css b/web/static/fonts/inter/latin-ext-300-italic.css new file mode 100644 index 00000000..f849bd4a --- /dev/null +++ b/web/static/fonts/inter/latin-ext-300-italic.css @@ -0,0 +1,8 @@ +/* inter-latin-ext-300-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(/static/fonts/inter/files/inter-latin-ext-300-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-300-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/latin-ext-400-italic.css b/web/static/fonts/inter/latin-ext-400-italic.css new file mode 100644 index 00000000..aaf590cc --- /dev/null +++ b/web/static/fonts/inter/latin-ext-400-italic.css @@ -0,0 +1,8 @@ +/* inter-latin-ext-400-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(/static/fonts/inter/files/inter-latin-ext-400-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-400-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/latin-ext-500-italic.css b/web/static/fonts/inter/latin-ext-500-italic.css new file mode 100644 index 00000000..fa476e58 --- /dev/null +++ b/web/static/fonts/inter/latin-ext-500-italic.css @@ -0,0 +1,8 @@ +/* inter-latin-ext-500-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 500; + src: url(/static/fonts/inter/files/inter-latin-ext-500-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-500-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/latin-ext-600-italic.css b/web/static/fonts/inter/latin-ext-600-italic.css new file mode 100644 index 00000000..2c7d95c1 --- /dev/null +++ b/web/static/fonts/inter/latin-ext-600-italic.css @@ -0,0 +1,8 @@ +/* inter-latin-ext-600-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 600; + src: url(/static/fonts/inter/files/inter-latin-ext-600-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-600-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/latin-ext-700-italic.css b/web/static/fonts/inter/latin-ext-700-italic.css new file mode 100644 index 00000000..c8724f59 --- /dev/null +++ b/web/static/fonts/inter/latin-ext-700-italic.css @@ -0,0 +1,8 @@ +/* inter-latin-ext-700-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(/static/fonts/inter/files/inter-latin-ext-700-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-700-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/latin-ext-800-italic.css b/web/static/fonts/inter/latin-ext-800-italic.css new file mode 100644 index 00000000..0b99f0de --- /dev/null +++ b/web/static/fonts/inter/latin-ext-800-italic.css @@ -0,0 +1,8 @@ +/* inter-latin-ext-800-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 800; + src: url(/static/fonts/inter/files/inter-latin-ext-800-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-800-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/latin-ext-900-italic.css b/web/static/fonts/inter/latin-ext-900-italic.css new file mode 100644 index 00000000..a25dd20f --- /dev/null +++ b/web/static/fonts/inter/latin-ext-900-italic.css @@ -0,0 +1,8 @@ +/* inter-latin-ext-900-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(/static/fonts/inter/files/inter-latin-ext-900-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-900-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/latin-ext-italic.css b/web/static/fonts/inter/latin-ext-italic.css new file mode 100644 index 00000000..5fd79a9f --- /dev/null +++ b/web/static/fonts/inter/latin-ext-italic.css @@ -0,0 +1,80 @@ +/* inter-latin-ext-100-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 100; + src: url(/static/fonts/inter/files/inter-latin-ext-100-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-100-italic.woff) format('woff'); +} + +/* inter-latin-ext-200-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 200; + src: url(/static/fonts/inter/files/inter-latin-ext-200-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-200-italic.woff) format('woff'); +} + +/* inter-latin-ext-300-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(/static/fonts/inter/files/inter-latin-ext-300-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-300-italic.woff) format('woff'); +} + +/* inter-latin-ext-400-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(/static/fonts/inter/files/inter-latin-ext-400-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-400-italic.woff) format('woff'); +} + +/* inter-latin-ext-500-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 500; + src: url(/static/fonts/inter/files/inter-latin-ext-500-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-500-italic.woff) format('woff'); +} + +/* inter-latin-ext-600-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 600; + src: url(/static/fonts/inter/files/inter-latin-ext-600-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-600-italic.woff) format('woff'); +} + +/* inter-latin-ext-700-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(/static/fonts/inter/files/inter-latin-ext-700-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-700-italic.woff) format('woff'); +} + +/* inter-latin-ext-800-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 800; + src: url(/static/fonts/inter/files/inter-latin-ext-800-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-800-italic.woff) format('woff'); +} + +/* inter-latin-ext-900-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(/static/fonts/inter/files/inter-latin-ext-900-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-ext-900-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/latin-italic.css b/web/static/fonts/inter/latin-italic.css new file mode 100644 index 00000000..a042edff --- /dev/null +++ b/web/static/fonts/inter/latin-italic.css @@ -0,0 +1,80 @@ +/* inter-latin-100-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 100; + src: url(/static/fonts/inter/files/inter-latin-100-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-100-italic.woff) format('woff'); +} + +/* inter-latin-200-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 200; + src: url(/static/fonts/inter/files/inter-latin-200-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-200-italic.woff) format('woff'); +} + +/* inter-latin-300-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(/static/fonts/inter/files/inter-latin-300-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-300-italic.woff) format('woff'); +} + +/* inter-latin-400-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(/static/fonts/inter/files/inter-latin-400-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-400-italic.woff) format('woff'); +} + +/* inter-latin-500-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 500; + src: url(/static/fonts/inter/files/inter-latin-500-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-500-italic.woff) format('woff'); +} + +/* inter-latin-600-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 600; + src: url(/static/fonts/inter/files/inter-latin-600-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-600-italic.woff) format('woff'); +} + +/* inter-latin-700-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(/static/fonts/inter/files/inter-latin-700-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-700-italic.woff) format('woff'); +} + +/* inter-latin-800-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 800; + src: url(/static/fonts/inter/files/inter-latin-800-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-800-italic.woff) format('woff'); +} + +/* inter-latin-900-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(/static/fonts/inter/files/inter-latin-900-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-latin-900-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/metadata.json b/web/static/fonts/inter/metadata.json index c3d6d0e6..b8bdb1a0 100644 --- a/web/static/fonts/inter/metadata.json +++ b/web/static/fonts/inter/metadata.json @@ -11,19 +11,20 @@ "vietnamese" ], "weights": [100, 200, 300, 400, 500, 600, 700, 800, 900], - "styles": ["normal"], + "styles": ["italic", "normal"], "defSubset": "latin", "variable": { - "slnt": {"default": "0", "min": "-10", "max": "0", "step": "1"}, + "ital": {"default": "0", "min": "0", "max": "1", "step": "1"}, + "opsz": {"default": "14", "min": "14", "max": "32", "step": "0.1"}, "wght": {"default": "400", "min": "100", "max": "900", "step": "1"} }, - "lastModified": "2022-09-22", - "version": "v12", + "lastModified": "2024-09-04", + "version": "v18", "category": "sans-serif", "license": { "type": "OFL-1.1", "url": "http://scripts.sil.org/OFL", - "attribution": "Copyright 2020 The Inter Project Authors (https://github.com/rsms/inter)" + "attribution": "Copyright 2016 The Inter Project Authors (https://github.com/rsms/inter)" }, "source": "https://github.com/google/fonts", "type": "google" diff --git a/web/static/fonts/inter/package.json b/web/static/fonts/inter/package.json index 4ff29193..b7dbfe21 100644 --- a/web/static/fonts/inter/package.json +++ b/web/static/fonts/inter/package.json @@ -1,6 +1,6 @@ { "name": "@fontsource/inter", - "version": "5.0.3", + "version": "5.1.0", "description": "Self-host the Inter font in a neatly bundled NPM package.", "main": "index.css", "publishConfig": {"access": "public"}, @@ -26,5 +26,5 @@ "url": "https://github.com/fontsource/font-files.git", "directory": "fonts/google/inter" }, - "publishHash": "f30be48934c43ab4" + "publishHash": "6780e9308ba60580" } \ No newline at end of file diff --git a/web/static/fonts/inter/scss/metadata.scss b/web/static/fonts/inter/scss/metadata.scss index 24fe7b1c..08069183 100644 --- a/web/static/fonts/inter/scss/metadata.scss +++ b/web/static/fonts/inter/scss/metadata.scss @@ -3,7 +3,7 @@ $family: 'Inter' !default; $category: sans-serif !default; $subsets: (cyrillic, cyrillic-ext, greek, greek-ext, latin, latin-ext, vietnamese) !default; $weights: (100, 200, 300, 400, 500, 600, 700, 800, 900) !default; -$styles: (normal) !default; +$styles: (italic, normal) !default; $axes: null !default; $defaults: ( subset: latin, @@ -15,8 +15,8 @@ $unicode: ( cyrillic-ext: (U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F), cyrillic: (U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116), greek-ext: (U+1F00-1FFF), - greek: (U+0370-03FF), + greek: (U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF), vietnamese: (U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB), - latin-ext: (U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF), - latin: (U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD), + latin-ext: (U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF), + latin: (U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD), ) !default; diff --git a/web/static/fonts/inter/scss/mixins.scss b/web/static/fonts/inter/scss/mixins.scss index 4d1c6c3a..0571337f 100644 --- a/web/static/fonts/inter/scss/mixins.scss +++ b/web/static/fonts/inter/scss/mixins.scss @@ -34,6 +34,7 @@ $displayVar: null !default; // Deprecated $displayVar: $displayVar ) { + @if $displayVar != null { @warn "$displayVar is deprecated due to the limitation of using css variables in @font-face (https://github.com/fontsource/fontsource/issues/726)."; } @@ -52,7 +53,7 @@ $displayVar: null !default; $subsets: if( $subsets, if($subsets == all, map.get($metadata, subsets), $subsets), - map.get($metadata, defaults, subset) + map.get($metadata, subsets) ); $weights: if( $weights, @@ -72,13 +73,20 @@ $displayVar: null !default; @each $subset in $subsets { @each $unicodeSubset, $unicodeRange in map.get($metadata, unicode) { + // If condition is true, generate faces for the current subset @if ( - ($subset == $unicodeSubset) or - ( - // Is numeric subset - ($subset == map.get($metadata, defaults, subset)) and not - list.index(map.get($metadata, subsets), $unicodeSubset) - ) + // If there is no unicode information for the font or + ($unicodeSubset == null) or + // If the subset match a unicode subset or + ($subset == $unicodeSubset) or + ( + // If $unicodeSubset is a numeric unicode subset + // and current subset exists in the list of font subsets but does not match any unicode subset + // then generate faces for this numeric unicode subset as it is representing part of the current subset + list.index(map.get($metadata, subsets), $subset) and not + map.has-key($metadata, unicode, $subset) and not + list.index(map.get($metadata, subsets), $unicodeSubset) + ) ) { @each $weight in if($axes, null, $weights) { @each $axis in $axes { diff --git a/web/static/fonts/inter/stylesheet.css b/web/static/fonts/inter/stylesheet.css deleted file mode 100644 index cb8f23bf..00000000 --- a/web/static/fonts/inter/stylesheet.css +++ /dev/null @@ -1,80 +0,0 @@ -@font-face { - font-family: 'Inter'; - src: url('/static/fonts/Inter/Inter-Black.woff2') format('woff2'), - url('/static/fonts/Inter/Inter-Black.woff') format('woff'); - font-weight: 900; - font-style: normal; - font-display: swap; -} - -@font-face { - font-family: 'Inter'; - src: url('/static/fonts/Inter/Inter-ExtraBold.woff2') format('woff2'), - url('/static/fonts/Inter/Inter-ExtraBold.woff') format('woff'); - font-weight: 800; - font-style: normal; - font-display: swap; -} - -@font-face { - font-family: 'Inter'; - src: url('/static/fonts/Inter/Inter-Bold.woff2') format('woff2'), - url('/static/fonts/Inter/Inter-Bold.woff') format('woff'); - font-weight: bold; - font-style: normal; - font-display: swap; -} - -@font-face { - font-family: 'Inter'; - src: url('/static/fonts/Inter/Inter-Light.woff2') format('woff2'), - url('/static/fonts/Inter/Inter-Light.woff') format('woff'); - font-weight: 300; - font-style: normal; - font-display: swap; -} - -@font-face { - font-family: 'Inter'; - src: url('/static/fonts/Inter/Inter-ExtraLight.woff2') format('woff2'), - url('/static/fonts/Inter/Inter-ExtraLight.woff') format('woff'); - font-weight: 200; - font-style: normal; - font-display: swap; -} - -@font-face { - font-family: 'Inter'; - src: url('/static/fonts/Inter/Inter-Medium.woff2') format('woff2'), - url('/static/fonts/Inter/Inter-Medium.woff') format('woff'); - font-weight: normal; - font-style: normal; - font-display: swap; -} - -@font-face { - font-family: 'Inter'; - src: url('/static/fonts/Inter/Inter-Regular.woff2') format('woff2'), - url('/static/fonts/Inter/Inter-Regular.woff') format('woff'); - font-weight: 400; - font-style: normal; - font-display: swap; -} - -@font-face { - font-family: 'Inter'; - src: url('/static/fonts/Inter/Inter-Thin.woff2') format('woff2'), - url('/static/fonts/Inter/Inter-Thin.woff') format('woff'); - font-weight: 100; - font-style: normal; - font-display: swap; -} - -@font-face { - font-family: 'Inter'; - src: url('/static/fonts/Inter/Inter-SemiBold.woff2') format('woff2'), - url('/static/fonts/Inter/Inter-SemiBold.woff') format('woff'); - font-weight: 600; - font-style: normal; - font-display: swap; -} diff --git a/web/static/fonts/inter/unicode.json b/web/static/fonts/inter/unicode.json index 0cd6dc4b..05a09615 100644 --- a/web/static/fonts/inter/unicode.json +++ b/web/static/fonts/inter/unicode.json @@ -2,8 +2,8 @@ "cyrillic-ext": "U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F", "cyrillic": "U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116", "greek-ext": "U+1F00-1FFF", - "greek": "U+0370-03FF", + "greek": "U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF", "vietnamese": "U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB", - "latin-ext": "U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF", - "latin": "U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD" + "latin-ext": "U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF", + "latin": "U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD" } \ No newline at end of file diff --git a/web/static/fonts/inter/variable-full.css b/web/static/fonts/inter/variable-full.css deleted file mode 100644 index 01894e25..00000000 --- a/web/static/fonts/inter/variable-full.css +++ /dev/null @@ -1,63 +0,0 @@ -/* inter-cyrillic-variable-full-oblique 0deg 10deg */ -@font-face { - font-family: 'InterVariable'; - font-style: oblique 0deg 10deg; - font-display: swap; - font-weight: 100 900; - src: url('/static/fonts/inter/files/inter-cyrillic-variable-full-normal.woff2') format('woff2'); - unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; -} -/* inter-cyrillic-ext-variable-full-oblique 0deg 10deg */ -@font-face { - font-family: 'InterVariable'; - font-style: oblique 0deg 10deg; - font-display: swap; - font-weight: 100 900; - src: url('/static/fonts/inter/files/inter-cyrillic-ext-variable-full-normal.woff2') format('woff2'); - unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; -} -/* inter-greek-variable-full-oblique 0deg 10deg */ -@font-face { - font-family: 'InterVariable'; - font-style: oblique 0deg 10deg; - font-display: swap; - font-weight: 100 900; - src: url('/static/fonts/inter/files/inter-greek-variable-full-normal.woff2') format('woff2'); - unicode-range: U+0370-03FF; -} -/* inter-greek-ext-variable-full-oblique 0deg 10deg */ -@font-face { - font-family: 'InterVariable'; - font-style: oblique 0deg 10deg; - font-display: swap; - font-weight: 100 900; - src: url('/static/fonts/inter/files/inter-greek-ext-variable-full-normal.woff2') format('woff2'); - unicode-range: U+1F00-1FFF; -} -/* inter-latin-variable-full-oblique 0deg 10deg */ -@font-face { - font-family: 'InterVariable'; - font-style: oblique 0deg 10deg; - font-display: swap; - font-weight: 100 900; - src: url('/static/fonts/inter/files/inter-latin-variable-full-normal.woff2') format('woff2'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; -} -/* inter-latin-ext-variable-full-oblique 0deg 10deg */ -@font-face { - font-family: 'InterVariable'; - font-style: oblique 0deg 10deg; - font-display: swap; - font-weight: 100 900; - src: url('/static/fonts/inter/files/inter-latin-ext-variable-full-normal.woff2') format('woff2'); - unicode-range: U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; -} -/* inter-vietnamese-variable-full-oblique 0deg 10deg */ -@font-face { - font-family: 'InterVariable'; - font-style: oblique 0deg 10deg; - font-display: swap; - font-weight: 100 900; - src: url('/static/fonts/inter/files/inter-vietnamese-variable-full-normal.woff2') format('woff2'); - unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB; -} diff --git a/web/static/fonts/inter/variable.css b/web/static/fonts/inter/variable.css deleted file mode 100644 index f0400af1..00000000 --- a/web/static/fonts/inter/variable.css +++ /dev/null @@ -1,63 +0,0 @@ -/* inter-cyrillic-variable-wghtOnly-normal */ -@font-face { - font-family: 'InterVariable'; - font-style: normal; - font-display: swap; - font-weight: 100 900; - src: url('/static/fonts/inter/files/inter-cyrillic-variable-wghtOnly-normal.woff2') format('woff2'); - unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; -} -/* inter-cyrillic-ext-variable-wghtOnly-normal */ -@font-face { - font-family: 'InterVariable'; - font-style: normal; - font-display: swap; - font-weight: 100 900; - src: url('/static/fonts/inter/files/inter-cyrillic-ext-variable-wghtOnly-normal.woff2') format('woff2'); - unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; -} -/* inter-greek-variable-wghtOnly-normal */ -@font-face { - font-family: 'InterVariable'; - font-style: normal; - font-display: swap; - font-weight: 100 900; - src: url('/static/fonts/inter/files/inter-greek-variable-wghtOnly-normal.woff2') format('woff2'); - unicode-range: U+0370-03FF; -} -/* inter-greek-ext-variable-wghtOnly-normal */ -@font-face { - font-family: 'InterVariable'; - font-style: normal; - font-display: swap; - font-weight: 100 900; - src: url('/static/fonts/inter/files/inter-greek-ext-variable-wghtOnly-normal.woff2') format('woff2'); - unicode-range: U+1F00-1FFF; -} -/* inter-latin-variable-wghtOnly-normal */ -@font-face { - font-family: 'InterVariable'; - font-style: normal; - font-display: swap; - font-weight: 100 900; - src: url('/static/fonts/inter/files/inter-latin-variable-wghtOnly-normal.woff2') format('woff2'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; -} -/* inter-latin-ext-variable-wghtOnly-normal */ -@font-face { - font-family: 'InterVariable'; - font-style: normal; - font-display: swap; - font-weight: 100 900; - src: url('/static/fonts/inter/files/inter-latin-ext-variable-wghtOnly-normal.woff2') format('woff2'); - unicode-range: U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; -} -/* inter-vietnamese-variable-wghtOnly-normal */ -@font-face { - font-family: 'InterVariable'; - font-style: normal; - font-display: swap; - font-weight: 100 900; - src: url('/static/fonts/inter/files/inter-vietnamese-variable-wghtOnly-normal.woff2') format('woff2'); - unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB; -} diff --git a/web/static/fonts/inter/vietnamese-100-italic.css b/web/static/fonts/inter/vietnamese-100-italic.css new file mode 100644 index 00000000..abb4eb52 --- /dev/null +++ b/web/static/fonts/inter/vietnamese-100-italic.css @@ -0,0 +1,8 @@ +/* inter-vietnamese-100-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 100; + src: url(/static/fonts/inter/files/inter-vietnamese-100-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-100-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/vietnamese-200-italic.css b/web/static/fonts/inter/vietnamese-200-italic.css new file mode 100644 index 00000000..74690e43 --- /dev/null +++ b/web/static/fonts/inter/vietnamese-200-italic.css @@ -0,0 +1,8 @@ +/* inter-vietnamese-200-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 200; + src: url(/static/fonts/inter/files/inter-vietnamese-200-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-200-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/vietnamese-300-italic.css b/web/static/fonts/inter/vietnamese-300-italic.css new file mode 100644 index 00000000..c6bc913e --- /dev/null +++ b/web/static/fonts/inter/vietnamese-300-italic.css @@ -0,0 +1,8 @@ +/* inter-vietnamese-300-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(/static/fonts/inter/files/inter-vietnamese-300-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-300-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/vietnamese-400-italic.css b/web/static/fonts/inter/vietnamese-400-italic.css new file mode 100644 index 00000000..339ebd03 --- /dev/null +++ b/web/static/fonts/inter/vietnamese-400-italic.css @@ -0,0 +1,8 @@ +/* inter-vietnamese-400-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(/static/fonts/inter/files/inter-vietnamese-400-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-400-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/vietnamese-500-italic.css b/web/static/fonts/inter/vietnamese-500-italic.css new file mode 100644 index 00000000..b22c4d5b --- /dev/null +++ b/web/static/fonts/inter/vietnamese-500-italic.css @@ -0,0 +1,8 @@ +/* inter-vietnamese-500-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 500; + src: url(/static/fonts/inter/files/inter-vietnamese-500-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-500-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/vietnamese-600-italic.css b/web/static/fonts/inter/vietnamese-600-italic.css new file mode 100644 index 00000000..8cc12255 --- /dev/null +++ b/web/static/fonts/inter/vietnamese-600-italic.css @@ -0,0 +1,8 @@ +/* inter-vietnamese-600-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 600; + src: url(/static/fonts/inter/files/inter-vietnamese-600-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-600-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/vietnamese-700-italic.css b/web/static/fonts/inter/vietnamese-700-italic.css new file mode 100644 index 00000000..19f5fbc8 --- /dev/null +++ b/web/static/fonts/inter/vietnamese-700-italic.css @@ -0,0 +1,8 @@ +/* inter-vietnamese-700-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(/static/fonts/inter/files/inter-vietnamese-700-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-700-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/vietnamese-800-italic.css b/web/static/fonts/inter/vietnamese-800-italic.css new file mode 100644 index 00000000..c618ca62 --- /dev/null +++ b/web/static/fonts/inter/vietnamese-800-italic.css @@ -0,0 +1,8 @@ +/* inter-vietnamese-800-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 800; + src: url(/static/fonts/inter/files/inter-vietnamese-800-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-800-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/vietnamese-900-italic.css b/web/static/fonts/inter/vietnamese-900-italic.css new file mode 100644 index 00000000..3b1575a3 --- /dev/null +++ b/web/static/fonts/inter/vietnamese-900-italic.css @@ -0,0 +1,8 @@ +/* inter-vietnamese-900-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(/static/fonts/inter/files/inter-vietnamese-900-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-900-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/inter/vietnamese-italic.css b/web/static/fonts/inter/vietnamese-italic.css new file mode 100644 index 00000000..bd51bc7c --- /dev/null +++ b/web/static/fonts/inter/vietnamese-italic.css @@ -0,0 +1,80 @@ +/* inter-vietnamese-100-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 100; + src: url(/static/fonts/inter/files/inter-vietnamese-100-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-100-italic.woff) format('woff'); +} + +/* inter-vietnamese-200-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 200; + src: url(/static/fonts/inter/files/inter-vietnamese-200-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-200-italic.woff) format('woff'); +} + +/* inter-vietnamese-300-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 300; + src: url(/static/fonts/inter/files/inter-vietnamese-300-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-300-italic.woff) format('woff'); +} + +/* inter-vietnamese-400-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 400; + src: url(/static/fonts/inter/files/inter-vietnamese-400-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-400-italic.woff) format('woff'); +} + +/* inter-vietnamese-500-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 500; + src: url(/static/fonts/inter/files/inter-vietnamese-500-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-500-italic.woff) format('woff'); +} + +/* inter-vietnamese-600-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 600; + src: url(/static/fonts/inter/files/inter-vietnamese-600-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-600-italic.woff) format('woff'); +} + +/* inter-vietnamese-700-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 700; + src: url(/static/fonts/inter/files/inter-vietnamese-700-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-700-italic.woff) format('woff'); +} + +/* inter-vietnamese-800-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 800; + src: url(/static/fonts/inter/files/inter-vietnamese-800-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-800-italic.woff) format('woff'); +} + +/* inter-vietnamese-900-italic */ +@font-face { + font-family: 'Inter'; + font-style: italic; + font-display: swap; + font-weight: 900; + src: url(/static/fonts/inter/files/inter-vietnamese-900-italic.woff2) format('woff2'), url(/static/fonts/inter/files/inter-vietnamese-900-italic.woff) format('woff'); +} \ No newline at end of file diff --git a/web/static/fonts/rasa/300-italic.css b/web/static/fonts/rasa/300-italic.css index 191aeba5..1320fff2 100644 --- a/web/static/fonts/rasa/300-italic.css +++ b/web/static/fonts/rasa/300-italic.css @@ -5,7 +5,7 @@ font-display: swap; font-weight: 300; src: url(/static/fonts/rasa/files/rasa-gujarati-300-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-gujarati-300-italic.woff) format('woff'); - unicode-range: U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; + unicode-range: U+0951-0952,U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; } /* rasa-vietnamese-300-italic */ @@ -25,7 +25,7 @@ font-display: swap; font-weight: 300; src: url(/static/fonts/rasa/files/rasa-latin-ext-300-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-ext-300-italic.woff) format('woff'); - unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; } /* rasa-latin-300-italic */ @@ -35,5 +35,5 @@ font-display: swap; font-weight: 300; src: url(/static/fonts/rasa/files/rasa-latin-300-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-300-italic.woff) format('woff'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; } \ No newline at end of file diff --git a/web/static/fonts/rasa/300.css b/web/static/fonts/rasa/300.css index 639ebb93..3aff91b8 100644 --- a/web/static/fonts/rasa/300.css +++ b/web/static/fonts/rasa/300.css @@ -5,7 +5,7 @@ font-display: swap; font-weight: 300; src: url(/static/fonts/rasa/files/rasa-gujarati-300-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-gujarati-300-normal.woff) format('woff'); - unicode-range: U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; + unicode-range: U+0951-0952,U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; } /* rasa-vietnamese-300-normal */ @@ -25,7 +25,7 @@ font-display: swap; font-weight: 300; src: url(/static/fonts/rasa/files/rasa-latin-ext-300-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-ext-300-normal.woff) format('woff'); - unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; } /* rasa-latin-300-normal */ @@ -35,5 +35,5 @@ font-display: swap; font-weight: 300; src: url(/static/fonts/rasa/files/rasa-latin-300-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-300-normal.woff) format('woff'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; } \ No newline at end of file diff --git a/web/static/fonts/rasa/400-italic.css b/web/static/fonts/rasa/400-italic.css index b34137bc..dd7cadd3 100644 --- a/web/static/fonts/rasa/400-italic.css +++ b/web/static/fonts/rasa/400-italic.css @@ -5,7 +5,7 @@ font-display: swap; font-weight: 400; src: url(/static/fonts/rasa/files/rasa-gujarati-400-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-gujarati-400-italic.woff) format('woff'); - unicode-range: U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; + unicode-range: U+0951-0952,U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; } /* rasa-vietnamese-400-italic */ @@ -25,7 +25,7 @@ font-display: swap; font-weight: 400; src: url(/static/fonts/rasa/files/rasa-latin-ext-400-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-ext-400-italic.woff) format('woff'); - unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; } /* rasa-latin-400-italic */ @@ -35,5 +35,5 @@ font-display: swap; font-weight: 400; src: url(/static/fonts/rasa/files/rasa-latin-400-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-400-italic.woff) format('woff'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; } \ No newline at end of file diff --git a/web/static/fonts/rasa/400.css b/web/static/fonts/rasa/400.css index b0e5b63a..8739084e 100644 --- a/web/static/fonts/rasa/400.css +++ b/web/static/fonts/rasa/400.css @@ -5,7 +5,7 @@ font-display: swap; font-weight: 400; src: url(/static/fonts/rasa/files/rasa-gujarati-400-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-gujarati-400-normal.woff) format('woff'); - unicode-range: U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; + unicode-range: U+0951-0952,U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; } /* rasa-vietnamese-400-normal */ @@ -25,7 +25,7 @@ font-display: swap; font-weight: 400; src: url(/static/fonts/rasa/files/rasa-latin-ext-400-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-ext-400-normal.woff) format('woff'); - unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; } /* rasa-latin-400-normal */ @@ -35,5 +35,5 @@ font-display: swap; font-weight: 400; src: url(/static/fonts/rasa/files/rasa-latin-400-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-400-normal.woff) format('woff'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; } \ No newline at end of file diff --git a/web/static/fonts/rasa/500-italic.css b/web/static/fonts/rasa/500-italic.css index 601efbd8..9b0ce61a 100644 --- a/web/static/fonts/rasa/500-italic.css +++ b/web/static/fonts/rasa/500-italic.css @@ -5,7 +5,7 @@ font-display: swap; font-weight: 500; src: url(/static/fonts/rasa/files/rasa-gujarati-500-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-gujarati-500-italic.woff) format('woff'); - unicode-range: U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; + unicode-range: U+0951-0952,U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; } /* rasa-vietnamese-500-italic */ @@ -25,7 +25,7 @@ font-display: swap; font-weight: 500; src: url(/static/fonts/rasa/files/rasa-latin-ext-500-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-ext-500-italic.woff) format('woff'); - unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; } /* rasa-latin-500-italic */ @@ -35,5 +35,5 @@ font-display: swap; font-weight: 500; src: url(/static/fonts/rasa/files/rasa-latin-500-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-500-italic.woff) format('woff'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; } \ No newline at end of file diff --git a/web/static/fonts/rasa/500.css b/web/static/fonts/rasa/500.css index b66d30d0..a086f9ee 100644 --- a/web/static/fonts/rasa/500.css +++ b/web/static/fonts/rasa/500.css @@ -5,7 +5,7 @@ font-display: swap; font-weight: 500; src: url(/static/fonts/rasa/files/rasa-gujarati-500-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-gujarati-500-normal.woff) format('woff'); - unicode-range: U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; + unicode-range: U+0951-0952,U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; } /* rasa-vietnamese-500-normal */ @@ -25,7 +25,7 @@ font-display: swap; font-weight: 500; src: url(/static/fonts/rasa/files/rasa-latin-ext-500-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-ext-500-normal.woff) format('woff'); - unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; } /* rasa-latin-500-normal */ @@ -35,5 +35,5 @@ font-display: swap; font-weight: 500; src: url(/static/fonts/rasa/files/rasa-latin-500-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-500-normal.woff) format('woff'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; } \ No newline at end of file diff --git a/web/static/fonts/rasa/600-italic.css b/web/static/fonts/rasa/600-italic.css index 864d61c1..d2fd8f60 100644 --- a/web/static/fonts/rasa/600-italic.css +++ b/web/static/fonts/rasa/600-italic.css @@ -5,7 +5,7 @@ font-display: swap; font-weight: 600; src: url(/static/fonts/rasa/files/rasa-gujarati-600-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-gujarati-600-italic.woff) format('woff'); - unicode-range: U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; + unicode-range: U+0951-0952,U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; } /* rasa-vietnamese-600-italic */ @@ -25,7 +25,7 @@ font-display: swap; font-weight: 600; src: url(/static/fonts/rasa/files/rasa-latin-ext-600-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-ext-600-italic.woff) format('woff'); - unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; } /* rasa-latin-600-italic */ @@ -35,5 +35,5 @@ font-display: swap; font-weight: 600; src: url(/static/fonts/rasa/files/rasa-latin-600-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-600-italic.woff) format('woff'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; } \ No newline at end of file diff --git a/web/static/fonts/rasa/600.css b/web/static/fonts/rasa/600.css index daa9cfd7..cec34df6 100644 --- a/web/static/fonts/rasa/600.css +++ b/web/static/fonts/rasa/600.css @@ -5,7 +5,7 @@ font-display: swap; font-weight: 600; src: url(/static/fonts/rasa/files/rasa-gujarati-600-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-gujarati-600-normal.woff) format('woff'); - unicode-range: U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; + unicode-range: U+0951-0952,U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; } /* rasa-vietnamese-600-normal */ @@ -25,7 +25,7 @@ font-display: swap; font-weight: 600; src: url(/static/fonts/rasa/files/rasa-latin-ext-600-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-ext-600-normal.woff) format('woff'); - unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; } /* rasa-latin-600-normal */ @@ -35,5 +35,5 @@ font-display: swap; font-weight: 600; src: url(/static/fonts/rasa/files/rasa-latin-600-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-600-normal.woff) format('woff'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; } \ No newline at end of file diff --git a/web/static/fonts/rasa/700-italic.css b/web/static/fonts/rasa/700-italic.css index d32e2900..75177aa1 100644 --- a/web/static/fonts/rasa/700-italic.css +++ b/web/static/fonts/rasa/700-italic.css @@ -5,7 +5,7 @@ font-display: swap; font-weight: 700; src: url(/static/fonts/rasa/files/rasa-gujarati-700-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-gujarati-700-italic.woff) format('woff'); - unicode-range: U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; + unicode-range: U+0951-0952,U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; } /* rasa-vietnamese-700-italic */ @@ -25,7 +25,7 @@ font-display: swap; font-weight: 700; src: url(/static/fonts/rasa/files/rasa-latin-ext-700-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-ext-700-italic.woff) format('woff'); - unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; } /* rasa-latin-700-italic */ @@ -35,5 +35,5 @@ font-display: swap; font-weight: 700; src: url(/static/fonts/rasa/files/rasa-latin-700-italic.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-700-italic.woff) format('woff'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; } \ No newline at end of file diff --git a/web/static/fonts/rasa/700.css b/web/static/fonts/rasa/700.css index aede24d8..fc6b8339 100644 --- a/web/static/fonts/rasa/700.css +++ b/web/static/fonts/rasa/700.css @@ -5,7 +5,7 @@ font-display: swap; font-weight: 700; src: url(/static/fonts/rasa/files/rasa-gujarati-700-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-gujarati-700-normal.woff) format('woff'); - unicode-range: U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; + unicode-range: U+0951-0952,U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; } /* rasa-vietnamese-700-normal */ @@ -25,7 +25,7 @@ font-display: swap; font-weight: 700; src: url(/static/fonts/rasa/files/rasa-latin-ext-700-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-ext-700-normal.woff) format('woff'); - unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; } /* rasa-latin-700-normal */ @@ -35,5 +35,5 @@ font-display: swap; font-weight: 700; src: url(/static/fonts/rasa/files/rasa-latin-700-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-700-normal.woff) format('woff'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; } \ No newline at end of file diff --git a/web/static/fonts/rasa/README.md b/web/static/fonts/rasa/README.md index e76d551e..030a7e77 100644 --- a/web/static/fonts/rasa/README.md +++ b/web/static/fonts/rasa/README.md @@ -42,6 +42,6 @@ Copyright 2015 The Yrsa-Rasa Project Authors (https://github.com/rosettatype/yrs [OFL-1.1](http://scripts.sil.org/OFL) ## Other Notes -Font version (provided by source): `v19`. +Font version (provided by source): `v22`. If you have any suggestions or ideas to improve the performance of font loading or expand the existing library, feel free to star and contribute to this repository. You can share your suggestions or ideas by creating an [issue](https://github.com/fontsource/fontsource/issues). \ No newline at end of file diff --git a/web/static/fonts/rasa/files/file-list.json b/web/static/fonts/rasa/files/file-list.json deleted file mode 100644 index dc782f6b..00000000 --- a/web/static/fonts/rasa/files/file-list.json +++ /dev/null @@ -1,100 +0,0 @@ -[ - "./fonts/google/rasa/files/rasa-gujarati-300-italic.woff", - "./fonts/google/rasa/files/rasa-latin-300-italic.woff", - "./fonts/google/rasa/files/rasa-latin-ext-300-italic.woff", - "./fonts/google/rasa/files/rasa-vietnamese-300-italic.woff", - "./fonts/google/rasa/files/rasa-gujarati-300-normal.woff", - "./fonts/google/rasa/files/rasa-latin-300-normal.woff", - "./fonts/google/rasa/files/rasa-latin-ext-300-normal.woff", - "./fonts/google/rasa/files/rasa-vietnamese-300-normal.woff", - "./fonts/google/rasa/files/rasa-gujarati-400-italic.woff", - "./fonts/google/rasa/files/rasa-latin-400-italic.woff", - "./fonts/google/rasa/files/rasa-latin-ext-400-italic.woff", - "./fonts/google/rasa/files/rasa-vietnamese-400-italic.woff", - "./fonts/google/rasa/files/rasa-gujarati-400-normal.woff", - "./fonts/google/rasa/files/rasa-latin-400-normal.woff", - "./fonts/google/rasa/files/rasa-latin-ext-400-normal.woff", - "./fonts/google/rasa/files/rasa-vietnamese-400-normal.woff", - "./fonts/google/rasa/files/rasa-gujarati-500-italic.woff", - "./fonts/google/rasa/files/rasa-latin-500-italic.woff", - "./fonts/google/rasa/files/rasa-latin-ext-500-italic.woff", - "./fonts/google/rasa/files/rasa-vietnamese-500-italic.woff", - "./fonts/google/rasa/files/rasa-gujarati-500-normal.woff", - "./fonts/google/rasa/files/rasa-latin-500-normal.woff", - "./fonts/google/rasa/files/rasa-latin-ext-500-normal.woff", - "./fonts/google/rasa/files/rasa-vietnamese-500-normal.woff", - "./fonts/google/rasa/files/rasa-gujarati-600-italic.woff", - "./fonts/google/rasa/files/rasa-latin-600-italic.woff", - "./fonts/google/rasa/files/rasa-latin-ext-600-italic.woff", - "./fonts/google/rasa/files/rasa-vietnamese-600-italic.woff", - "./fonts/google/rasa/files/rasa-gujarati-600-normal.woff", - "./fonts/google/rasa/files/rasa-latin-600-normal.woff", - "./fonts/google/rasa/files/rasa-latin-ext-600-normal.woff", - "./fonts/google/rasa/files/rasa-vietnamese-600-normal.woff", - "./fonts/google/rasa/files/rasa-gujarati-700-italic.woff", - "./fonts/google/rasa/files/rasa-latin-700-italic.woff", - "./fonts/google/rasa/files/rasa-latin-ext-700-italic.woff", - "./fonts/google/rasa/files/rasa-vietnamese-700-italic.woff", - "./fonts/google/rasa/files/rasa-gujarati-700-normal.woff", - "./fonts/google/rasa/files/rasa-latin-700-normal.woff", - "./fonts/google/rasa/files/rasa-latin-ext-700-normal.woff", - "./fonts/google/rasa/files/rasa-vietnamese-700-normal.woff", - "./fonts/google/rasa/files/rasa-gujarati-300-italic.woff2", - "./fonts/google/rasa/files/rasa-all-300-italic.woff", - "./fonts/google/rasa/files/rasa-vietnamese-300-italic.woff2", - "./fonts/google/rasa/files/rasa-latin-ext-300-italic.woff2", - "./fonts/google/rasa/files/rasa-latin-300-italic.woff2", - "./fonts/google/rasa/files/rasa-gujarati-300-normal.woff2", - "./fonts/google/rasa/files/rasa-all-300-normal.woff", - "./fonts/google/rasa/files/rasa-vietnamese-300-normal.woff2", - "./fonts/google/rasa/files/rasa-latin-ext-300-normal.woff2", - "./fonts/google/rasa/files/rasa-latin-300-normal.woff2", - "./fonts/google/rasa/files/rasa-gujarati-400-italic.woff2", - "./fonts/google/rasa/files/rasa-all-400-italic.woff", - "./fonts/google/rasa/files/rasa-vietnamese-400-italic.woff2", - "./fonts/google/rasa/files/rasa-latin-ext-400-italic.woff2", - "./fonts/google/rasa/files/rasa-latin-400-italic.woff2", - "./fonts/google/rasa/files/rasa-gujarati-400-normal.woff2", - "./fonts/google/rasa/files/rasa-all-400-normal.woff", - "./fonts/google/rasa/files/rasa-vietnamese-400-normal.woff2", - "./fonts/google/rasa/files/rasa-latin-ext-400-normal.woff2", - "./fonts/google/rasa/files/rasa-latin-400-normal.woff2", - "./fonts/google/rasa/files/rasa-gujarati-500-italic.woff2", - "./fonts/google/rasa/files/rasa-all-500-italic.woff", - "./fonts/google/rasa/files/rasa-vietnamese-500-italic.woff2", - "./fonts/google/rasa/files/rasa-latin-ext-500-italic.woff2", - "./fonts/google/rasa/files/rasa-latin-500-italic.woff2", - "./fonts/google/rasa/files/rasa-gujarati-500-normal.woff2", - "./fonts/google/rasa/files/rasa-all-500-normal.woff", - "./fonts/google/rasa/files/rasa-vietnamese-500-normal.woff2", - "./fonts/google/rasa/files/rasa-latin-ext-500-normal.woff2", - "./fonts/google/rasa/files/rasa-latin-500-normal.woff2", - "./fonts/google/rasa/files/rasa-gujarati-600-italic.woff2", - "./fonts/google/rasa/files/rasa-all-600-italic.woff", - "./fonts/google/rasa/files/rasa-vietnamese-600-italic.woff2", - "./fonts/google/rasa/files/rasa-latin-ext-600-italic.woff2", - "./fonts/google/rasa/files/rasa-latin-600-italic.woff2", - "./fonts/google/rasa/files/rasa-gujarati-600-normal.woff2", - "./fonts/google/rasa/files/rasa-all-600-normal.woff", - "./fonts/google/rasa/files/rasa-vietnamese-600-normal.woff2", - "./fonts/google/rasa/files/rasa-latin-ext-600-normal.woff2", - "./fonts/google/rasa/files/rasa-latin-600-normal.woff2", - "./fonts/google/rasa/files/rasa-gujarati-700-italic.woff2", - "./fonts/google/rasa/files/rasa-all-700-italic.woff", - "./fonts/google/rasa/files/rasa-vietnamese-700-italic.woff2", - "./fonts/google/rasa/files/rasa-latin-ext-700-italic.woff2", - "./fonts/google/rasa/files/rasa-latin-700-italic.woff2", - "./fonts/google/rasa/files/rasa-gujarati-700-normal.woff2", - "./fonts/google/rasa/files/rasa-all-700-normal.woff", - "./fonts/google/rasa/files/rasa-vietnamese-700-normal.woff2", - "./fonts/google/rasa/files/rasa-latin-ext-700-normal.woff2", - "./fonts/google/rasa/files/rasa-latin-700-normal.woff2", - "./fonts/google/rasa/files/rasa-gujarati-variable-wghtOnly-normal.woff2", - "./fonts/google/rasa/files/rasa-vietnamese-variable-wghtOnly-normal.woff2", - "./fonts/google/rasa/files/rasa-latin-ext-variable-wghtOnly-normal.woff2", - "./fonts/google/rasa/files/rasa-latin-variable-wghtOnly-normal.woff2", - "./fonts/google/rasa/files/rasa-gujarati-variable-wghtOnly-italic.woff2", - "./fonts/google/rasa/files/rasa-vietnamese-variable-wghtOnly-italic.woff2", - "./fonts/google/rasa/files/rasa-latin-ext-variable-wghtOnly-italic.woff2", - "./fonts/google/rasa/files/rasa-latin-variable-wghtOnly-italic.woff2" -] diff --git a/web/static/fonts/rasa/files/rasa-all-300-italic.woff b/web/static/fonts/rasa/files/rasa-all-300-italic.woff deleted file mode 100644 index 04f98a16..00000000 Binary files a/web/static/fonts/rasa/files/rasa-all-300-italic.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-all-300-normal.woff b/web/static/fonts/rasa/files/rasa-all-300-normal.woff deleted file mode 100644 index 9f40d9a8..00000000 Binary files a/web/static/fonts/rasa/files/rasa-all-300-normal.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-all-400-italic.woff b/web/static/fonts/rasa/files/rasa-all-400-italic.woff deleted file mode 100644 index 825127dc..00000000 Binary files a/web/static/fonts/rasa/files/rasa-all-400-italic.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-all-400-normal.woff b/web/static/fonts/rasa/files/rasa-all-400-normal.woff deleted file mode 100644 index 2b186c81..00000000 Binary files a/web/static/fonts/rasa/files/rasa-all-400-normal.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-all-500-italic.woff b/web/static/fonts/rasa/files/rasa-all-500-italic.woff deleted file mode 100644 index bd7b5007..00000000 Binary files a/web/static/fonts/rasa/files/rasa-all-500-italic.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-all-500-normal.woff b/web/static/fonts/rasa/files/rasa-all-500-normal.woff deleted file mode 100644 index f659f7fc..00000000 Binary files a/web/static/fonts/rasa/files/rasa-all-500-normal.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-all-600-italic.woff b/web/static/fonts/rasa/files/rasa-all-600-italic.woff deleted file mode 100644 index d0f2c37f..00000000 Binary files a/web/static/fonts/rasa/files/rasa-all-600-italic.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-all-600-normal.woff b/web/static/fonts/rasa/files/rasa-all-600-normal.woff deleted file mode 100644 index b14d21ee..00000000 Binary files a/web/static/fonts/rasa/files/rasa-all-600-normal.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-all-700-italic.woff b/web/static/fonts/rasa/files/rasa-all-700-italic.woff deleted file mode 100644 index dedddfe3..00000000 Binary files a/web/static/fonts/rasa/files/rasa-all-700-italic.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-all-700-normal.woff b/web/static/fonts/rasa/files/rasa-all-700-normal.woff deleted file mode 100644 index a6fe2a3c..00000000 Binary files a/web/static/fonts/rasa/files/rasa-all-700-normal.woff and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-300-italic.woff b/web/static/fonts/rasa/files/rasa-gujarati-300-italic.woff index afdba6b5..5d237cf2 100644 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-300-italic.woff and b/web/static/fonts/rasa/files/rasa-gujarati-300-italic.woff differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-300-normal.woff b/web/static/fonts/rasa/files/rasa-gujarati-300-normal.woff index 85853b87..f2be8e30 100644 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-300-normal.woff and b/web/static/fonts/rasa/files/rasa-gujarati-300-normal.woff differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-300-normal.woff2 b/web/static/fonts/rasa/files/rasa-gujarati-300-normal.woff2 index 3a8fcd9d..ef1a53ee 100644 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-300-normal.woff2 and b/web/static/fonts/rasa/files/rasa-gujarati-300-normal.woff2 differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-400-italic.woff b/web/static/fonts/rasa/files/rasa-gujarati-400-italic.woff index 6e25866b..10f8eb61 100644 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-400-italic.woff and b/web/static/fonts/rasa/files/rasa-gujarati-400-italic.woff differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-400-normal.woff b/web/static/fonts/rasa/files/rasa-gujarati-400-normal.woff index f29a56be..111ea356 100644 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-400-normal.woff and b/web/static/fonts/rasa/files/rasa-gujarati-400-normal.woff differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-400-normal.woff2 b/web/static/fonts/rasa/files/rasa-gujarati-400-normal.woff2 index f327220d..42d6cac9 100644 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-400-normal.woff2 and b/web/static/fonts/rasa/files/rasa-gujarati-400-normal.woff2 differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-500-italic.woff b/web/static/fonts/rasa/files/rasa-gujarati-500-italic.woff index 66cf9c70..b13deff5 100644 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-500-italic.woff and b/web/static/fonts/rasa/files/rasa-gujarati-500-italic.woff differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-500-normal.woff b/web/static/fonts/rasa/files/rasa-gujarati-500-normal.woff index f1f9cc30..739dad95 100644 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-500-normal.woff and b/web/static/fonts/rasa/files/rasa-gujarati-500-normal.woff differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-500-normal.woff2 b/web/static/fonts/rasa/files/rasa-gujarati-500-normal.woff2 index 7154ba75..f62b88a3 100644 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-500-normal.woff2 and b/web/static/fonts/rasa/files/rasa-gujarati-500-normal.woff2 differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-600-italic.woff b/web/static/fonts/rasa/files/rasa-gujarati-600-italic.woff index 0ced6470..9d6aaa6a 100644 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-600-italic.woff and b/web/static/fonts/rasa/files/rasa-gujarati-600-italic.woff differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-600-normal.woff b/web/static/fonts/rasa/files/rasa-gujarati-600-normal.woff index 98de4bf1..753ea0a6 100644 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-600-normal.woff and b/web/static/fonts/rasa/files/rasa-gujarati-600-normal.woff differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-600-normal.woff2 b/web/static/fonts/rasa/files/rasa-gujarati-600-normal.woff2 index 0919b20c..f8b1527e 100644 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-600-normal.woff2 and b/web/static/fonts/rasa/files/rasa-gujarati-600-normal.woff2 differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-700-italic.woff b/web/static/fonts/rasa/files/rasa-gujarati-700-italic.woff index b158aa07..aa808384 100644 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-700-italic.woff and b/web/static/fonts/rasa/files/rasa-gujarati-700-italic.woff differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-700-normal.woff b/web/static/fonts/rasa/files/rasa-gujarati-700-normal.woff index aa35a0ed..7d8ee91a 100644 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-700-normal.woff and b/web/static/fonts/rasa/files/rasa-gujarati-700-normal.woff differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-700-normal.woff2 b/web/static/fonts/rasa/files/rasa-gujarati-700-normal.woff2 index 45e5a232..ba69c539 100644 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-700-normal.woff2 and b/web/static/fonts/rasa/files/rasa-gujarati-700-normal.woff2 differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-variable-full-italic.woff2 b/web/static/fonts/rasa/files/rasa-gujarati-variable-full-italic.woff2 deleted file mode 100644 index d466a2a1..00000000 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-variable-full-italic.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-variable-full-normal.woff2 b/web/static/fonts/rasa/files/rasa-gujarati-variable-full-normal.woff2 deleted file mode 100644 index 6a63dd52..00000000 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-variable-full-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-variable-wghtOnly-italic.woff2 b/web/static/fonts/rasa/files/rasa-gujarati-variable-wghtOnly-italic.woff2 deleted file mode 100644 index d466a2a1..00000000 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-variable-wghtOnly-italic.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-gujarati-variable-wghtOnly-normal.woff2 b/web/static/fonts/rasa/files/rasa-gujarati-variable-wghtOnly-normal.woff2 deleted file mode 100644 index 6a63dd52..00000000 Binary files a/web/static/fonts/rasa/files/rasa-gujarati-variable-wghtOnly-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-300-italic.woff b/web/static/fonts/rasa/files/rasa-latin-300-italic.woff index a5166364..c976f059 100644 Binary files a/web/static/fonts/rasa/files/rasa-latin-300-italic.woff and b/web/static/fonts/rasa/files/rasa-latin-300-italic.woff differ diff --git a/web/static/fonts/rasa/files/rasa-latin-300-italic.woff2 b/web/static/fonts/rasa/files/rasa-latin-300-italic.woff2 index ef2dce6e..11608067 100644 Binary files a/web/static/fonts/rasa/files/rasa-latin-300-italic.woff2 and b/web/static/fonts/rasa/files/rasa-latin-300-italic.woff2 differ diff --git a/web/static/fonts/rasa/files/rasa-latin-300-normal.woff b/web/static/fonts/rasa/files/rasa-latin-300-normal.woff index 84d80025..8fbe2384 100644 Binary files a/web/static/fonts/rasa/files/rasa-latin-300-normal.woff and b/web/static/fonts/rasa/files/rasa-latin-300-normal.woff differ diff --git a/web/static/fonts/rasa/files/rasa-latin-300-normal.woff2 b/web/static/fonts/rasa/files/rasa-latin-300-normal.woff2 index e435acd9..3fe9a4a3 100644 Binary files a/web/static/fonts/rasa/files/rasa-latin-300-normal.woff2 and b/web/static/fonts/rasa/files/rasa-latin-300-normal.woff2 differ diff --git a/web/static/fonts/rasa/files/rasa-latin-400-italic.woff b/web/static/fonts/rasa/files/rasa-latin-400-italic.woff index 3b3eb846..a4123a51 100644 Binary files a/web/static/fonts/rasa/files/rasa-latin-400-italic.woff and b/web/static/fonts/rasa/files/rasa-latin-400-italic.woff differ diff --git a/web/static/fonts/rasa/files/rasa-latin-400-italic.woff2 b/web/static/fonts/rasa/files/rasa-latin-400-italic.woff2 index c762ac19..3c532c0c 100644 Binary files a/web/static/fonts/rasa/files/rasa-latin-400-italic.woff2 and b/web/static/fonts/rasa/files/rasa-latin-400-italic.woff2 differ diff --git a/web/static/fonts/rasa/files/rasa-latin-400-normal.woff b/web/static/fonts/rasa/files/rasa-latin-400-normal.woff index 2049a57d..426cecb0 100644 Binary files a/web/static/fonts/rasa/files/rasa-latin-400-normal.woff and b/web/static/fonts/rasa/files/rasa-latin-400-normal.woff differ diff --git a/web/static/fonts/rasa/files/rasa-latin-400-normal.woff2 b/web/static/fonts/rasa/files/rasa-latin-400-normal.woff2 index 1685742e..6c53d91b 100644 Binary files a/web/static/fonts/rasa/files/rasa-latin-400-normal.woff2 and b/web/static/fonts/rasa/files/rasa-latin-400-normal.woff2 differ diff --git a/web/static/fonts/rasa/files/rasa-latin-500-italic.woff b/web/static/fonts/rasa/files/rasa-latin-500-italic.woff index 6e8ac351..014bec51 100644 Binary files a/web/static/fonts/rasa/files/rasa-latin-500-italic.woff and b/web/static/fonts/rasa/files/rasa-latin-500-italic.woff differ diff --git a/web/static/fonts/rasa/files/rasa-latin-500-italic.woff2 b/web/static/fonts/rasa/files/rasa-latin-500-italic.woff2 index a8cd687d..1c84d204 100644 Binary files a/web/static/fonts/rasa/files/rasa-latin-500-italic.woff2 and b/web/static/fonts/rasa/files/rasa-latin-500-italic.woff2 differ diff --git a/web/static/fonts/rasa/files/rasa-latin-500-normal.woff b/web/static/fonts/rasa/files/rasa-latin-500-normal.woff index 8afe4d73..932e3a7a 100644 Binary files a/web/static/fonts/rasa/files/rasa-latin-500-normal.woff and b/web/static/fonts/rasa/files/rasa-latin-500-normal.woff differ diff --git a/web/static/fonts/rasa/files/rasa-latin-500-normal.woff2 b/web/static/fonts/rasa/files/rasa-latin-500-normal.woff2 index 717cae5e..fabe2f85 100644 Binary files a/web/static/fonts/rasa/files/rasa-latin-500-normal.woff2 and b/web/static/fonts/rasa/files/rasa-latin-500-normal.woff2 differ diff --git a/web/static/fonts/rasa/files/rasa-latin-600-italic.woff b/web/static/fonts/rasa/files/rasa-latin-600-italic.woff index 0eb880b6..646371a7 100644 Binary files a/web/static/fonts/rasa/files/rasa-latin-600-italic.woff and b/web/static/fonts/rasa/files/rasa-latin-600-italic.woff differ diff --git a/web/static/fonts/rasa/files/rasa-latin-600-italic.woff2 b/web/static/fonts/rasa/files/rasa-latin-600-italic.woff2 index 148baaf2..b53cc16e 100644 Binary files a/web/static/fonts/rasa/files/rasa-latin-600-italic.woff2 and b/web/static/fonts/rasa/files/rasa-latin-600-italic.woff2 differ diff --git a/web/static/fonts/rasa/files/rasa-latin-600-normal.woff b/web/static/fonts/rasa/files/rasa-latin-600-normal.woff index dbbf0a24..38a66537 100644 Binary files a/web/static/fonts/rasa/files/rasa-latin-600-normal.woff and b/web/static/fonts/rasa/files/rasa-latin-600-normal.woff differ diff --git a/web/static/fonts/rasa/files/rasa-latin-600-normal.woff2 b/web/static/fonts/rasa/files/rasa-latin-600-normal.woff2 index 16298a38..a0e3eef6 100644 Binary files a/web/static/fonts/rasa/files/rasa-latin-600-normal.woff2 and b/web/static/fonts/rasa/files/rasa-latin-600-normal.woff2 differ diff --git a/web/static/fonts/rasa/files/rasa-latin-700-italic.woff b/web/static/fonts/rasa/files/rasa-latin-700-italic.woff index a06eb36b..98d01784 100644 Binary files a/web/static/fonts/rasa/files/rasa-latin-700-italic.woff and b/web/static/fonts/rasa/files/rasa-latin-700-italic.woff differ diff --git a/web/static/fonts/rasa/files/rasa-latin-700-italic.woff2 b/web/static/fonts/rasa/files/rasa-latin-700-italic.woff2 index 8501886f..b8569c11 100644 Binary files a/web/static/fonts/rasa/files/rasa-latin-700-italic.woff2 and b/web/static/fonts/rasa/files/rasa-latin-700-italic.woff2 differ diff --git a/web/static/fonts/rasa/files/rasa-latin-700-normal.woff b/web/static/fonts/rasa/files/rasa-latin-700-normal.woff index 9d5da2c9..f9d99a61 100644 Binary files a/web/static/fonts/rasa/files/rasa-latin-700-normal.woff and b/web/static/fonts/rasa/files/rasa-latin-700-normal.woff differ diff --git a/web/static/fonts/rasa/files/rasa-latin-700-normal.woff2 b/web/static/fonts/rasa/files/rasa-latin-700-normal.woff2 index b8a1018d..5fb5bdaa 100644 Binary files a/web/static/fonts/rasa/files/rasa-latin-700-normal.woff2 and b/web/static/fonts/rasa/files/rasa-latin-700-normal.woff2 differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-300-italic.woff b/web/static/fonts/rasa/files/rasa-latin-ext-300-italic.woff index 4a45ffc0..fdb24d51 100644 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-300-italic.woff and b/web/static/fonts/rasa/files/rasa-latin-ext-300-italic.woff differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-300-italic.woff2 b/web/static/fonts/rasa/files/rasa-latin-ext-300-italic.woff2 index 64a6d0b2..f1b1d39d 100644 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-300-italic.woff2 and b/web/static/fonts/rasa/files/rasa-latin-ext-300-italic.woff2 differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-300-normal.woff b/web/static/fonts/rasa/files/rasa-latin-ext-300-normal.woff index f9159b9c..f7705003 100644 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-300-normal.woff and b/web/static/fonts/rasa/files/rasa-latin-ext-300-normal.woff differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-300-normal.woff2 b/web/static/fonts/rasa/files/rasa-latin-ext-300-normal.woff2 index ad817dc1..d0267a6f 100644 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-300-normal.woff2 and b/web/static/fonts/rasa/files/rasa-latin-ext-300-normal.woff2 differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-400-italic.woff b/web/static/fonts/rasa/files/rasa-latin-ext-400-italic.woff index 4396bc5b..30a0c328 100644 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-400-italic.woff and b/web/static/fonts/rasa/files/rasa-latin-ext-400-italic.woff differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-400-italic.woff2 b/web/static/fonts/rasa/files/rasa-latin-ext-400-italic.woff2 index 4788f1dc..0399b713 100644 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-400-italic.woff2 and b/web/static/fonts/rasa/files/rasa-latin-ext-400-italic.woff2 differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-400-normal.woff b/web/static/fonts/rasa/files/rasa-latin-ext-400-normal.woff index fbebf6a4..d055206b 100644 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-400-normal.woff and b/web/static/fonts/rasa/files/rasa-latin-ext-400-normal.woff differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-400-normal.woff2 b/web/static/fonts/rasa/files/rasa-latin-ext-400-normal.woff2 index 4811e8bd..47effc82 100644 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-400-normal.woff2 and b/web/static/fonts/rasa/files/rasa-latin-ext-400-normal.woff2 differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-500-italic.woff b/web/static/fonts/rasa/files/rasa-latin-ext-500-italic.woff index 7745d901..f575e827 100644 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-500-italic.woff and b/web/static/fonts/rasa/files/rasa-latin-ext-500-italic.woff differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-500-italic.woff2 b/web/static/fonts/rasa/files/rasa-latin-ext-500-italic.woff2 index e232b0ec..4de6b9fd 100644 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-500-italic.woff2 and b/web/static/fonts/rasa/files/rasa-latin-ext-500-italic.woff2 differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-500-normal.woff b/web/static/fonts/rasa/files/rasa-latin-ext-500-normal.woff index ada25205..b97975c5 100644 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-500-normal.woff and b/web/static/fonts/rasa/files/rasa-latin-ext-500-normal.woff differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-500-normal.woff2 b/web/static/fonts/rasa/files/rasa-latin-ext-500-normal.woff2 index 9cef214d..f653cec0 100644 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-500-normal.woff2 and b/web/static/fonts/rasa/files/rasa-latin-ext-500-normal.woff2 differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-600-italic.woff b/web/static/fonts/rasa/files/rasa-latin-ext-600-italic.woff index 9be62af6..9d5c3d78 100644 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-600-italic.woff and b/web/static/fonts/rasa/files/rasa-latin-ext-600-italic.woff differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-600-italic.woff2 b/web/static/fonts/rasa/files/rasa-latin-ext-600-italic.woff2 index ed56c8f1..b3165346 100644 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-600-italic.woff2 and b/web/static/fonts/rasa/files/rasa-latin-ext-600-italic.woff2 differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-600-normal.woff b/web/static/fonts/rasa/files/rasa-latin-ext-600-normal.woff index fdd35a60..c948f7fa 100644 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-600-normal.woff and b/web/static/fonts/rasa/files/rasa-latin-ext-600-normal.woff differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-600-normal.woff2 b/web/static/fonts/rasa/files/rasa-latin-ext-600-normal.woff2 index 29ffcff2..e2a22ca2 100644 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-600-normal.woff2 and b/web/static/fonts/rasa/files/rasa-latin-ext-600-normal.woff2 differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-700-italic.woff b/web/static/fonts/rasa/files/rasa-latin-ext-700-italic.woff index 106de17e..e66db4bf 100644 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-700-italic.woff and b/web/static/fonts/rasa/files/rasa-latin-ext-700-italic.woff differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-700-italic.woff2 b/web/static/fonts/rasa/files/rasa-latin-ext-700-italic.woff2 index 1553a454..e8fc9fa5 100644 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-700-italic.woff2 and b/web/static/fonts/rasa/files/rasa-latin-ext-700-italic.woff2 differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-700-normal.woff b/web/static/fonts/rasa/files/rasa-latin-ext-700-normal.woff index f6b1429b..8df171f7 100644 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-700-normal.woff and b/web/static/fonts/rasa/files/rasa-latin-ext-700-normal.woff differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-700-normal.woff2 b/web/static/fonts/rasa/files/rasa-latin-ext-700-normal.woff2 index c8ef8f9c..08e25074 100644 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-700-normal.woff2 and b/web/static/fonts/rasa/files/rasa-latin-ext-700-normal.woff2 differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-variable-full-italic.woff2 b/web/static/fonts/rasa/files/rasa-latin-ext-variable-full-italic.woff2 deleted file mode 100644 index 8a1bdc49..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-variable-full-italic.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-variable-full-normal.woff2 b/web/static/fonts/rasa/files/rasa-latin-ext-variable-full-normal.woff2 deleted file mode 100644 index 85b975e3..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-variable-full-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-variable-wghtOnly-italic.woff2 b/web/static/fonts/rasa/files/rasa-latin-ext-variable-wghtOnly-italic.woff2 deleted file mode 100644 index 8a1bdc49..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-variable-wghtOnly-italic.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-ext-variable-wghtOnly-normal.woff2 b/web/static/fonts/rasa/files/rasa-latin-ext-variable-wghtOnly-normal.woff2 deleted file mode 100644 index 85b975e3..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-ext-variable-wghtOnly-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-variable-full-italic.woff2 b/web/static/fonts/rasa/files/rasa-latin-variable-full-italic.woff2 deleted file mode 100644 index f96a9935..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-variable-full-italic.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-variable-full-normal.woff2 b/web/static/fonts/rasa/files/rasa-latin-variable-full-normal.woff2 deleted file mode 100644 index 2b5046b2..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-variable-full-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-variable-wghtOnly-italic.woff2 b/web/static/fonts/rasa/files/rasa-latin-variable-wghtOnly-italic.woff2 deleted file mode 100644 index f96a9935..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-variable-wghtOnly-italic.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-latin-variable-wghtOnly-normal.woff2 b/web/static/fonts/rasa/files/rasa-latin-variable-wghtOnly-normal.woff2 deleted file mode 100644 index 2b5046b2..00000000 Binary files a/web/static/fonts/rasa/files/rasa-latin-variable-wghtOnly-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-300-italic.woff b/web/static/fonts/rasa/files/rasa-vietnamese-300-italic.woff index 18468c23..e8291e0f 100644 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-300-italic.woff and b/web/static/fonts/rasa/files/rasa-vietnamese-300-italic.woff differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-300-italic.woff2 b/web/static/fonts/rasa/files/rasa-vietnamese-300-italic.woff2 index b6a56be9..ea32ac89 100644 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-300-italic.woff2 and b/web/static/fonts/rasa/files/rasa-vietnamese-300-italic.woff2 differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-300-normal.woff b/web/static/fonts/rasa/files/rasa-vietnamese-300-normal.woff index 13adce02..15205b13 100644 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-300-normal.woff and b/web/static/fonts/rasa/files/rasa-vietnamese-300-normal.woff differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-300-normal.woff2 b/web/static/fonts/rasa/files/rasa-vietnamese-300-normal.woff2 index a5898fed..e7c994c9 100644 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-300-normal.woff2 and b/web/static/fonts/rasa/files/rasa-vietnamese-300-normal.woff2 differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-400-italic.woff b/web/static/fonts/rasa/files/rasa-vietnamese-400-italic.woff index 4f788084..9e23e034 100644 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-400-italic.woff and b/web/static/fonts/rasa/files/rasa-vietnamese-400-italic.woff differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-400-italic.woff2 b/web/static/fonts/rasa/files/rasa-vietnamese-400-italic.woff2 index 551610f3..3f2fd7af 100644 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-400-italic.woff2 and b/web/static/fonts/rasa/files/rasa-vietnamese-400-italic.woff2 differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-400-normal.woff b/web/static/fonts/rasa/files/rasa-vietnamese-400-normal.woff index 6621d0c4..46bc7a7a 100644 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-400-normal.woff and b/web/static/fonts/rasa/files/rasa-vietnamese-400-normal.woff differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-400-normal.woff2 b/web/static/fonts/rasa/files/rasa-vietnamese-400-normal.woff2 index b229ef43..e54f2a0d 100644 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-400-normal.woff2 and b/web/static/fonts/rasa/files/rasa-vietnamese-400-normal.woff2 differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-500-italic.woff b/web/static/fonts/rasa/files/rasa-vietnamese-500-italic.woff index f5646f95..0907df3c 100644 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-500-italic.woff and b/web/static/fonts/rasa/files/rasa-vietnamese-500-italic.woff differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-500-italic.woff2 b/web/static/fonts/rasa/files/rasa-vietnamese-500-italic.woff2 index d9b8042e..3462e2f9 100644 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-500-italic.woff2 and b/web/static/fonts/rasa/files/rasa-vietnamese-500-italic.woff2 differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-500-normal.woff b/web/static/fonts/rasa/files/rasa-vietnamese-500-normal.woff index 2843439e..8a6768d8 100644 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-500-normal.woff and b/web/static/fonts/rasa/files/rasa-vietnamese-500-normal.woff differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-500-normal.woff2 b/web/static/fonts/rasa/files/rasa-vietnamese-500-normal.woff2 index a73cedd9..dbb7aff4 100644 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-500-normal.woff2 and b/web/static/fonts/rasa/files/rasa-vietnamese-500-normal.woff2 differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-600-italic.woff b/web/static/fonts/rasa/files/rasa-vietnamese-600-italic.woff index 9d1630e2..b2116550 100644 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-600-italic.woff and b/web/static/fonts/rasa/files/rasa-vietnamese-600-italic.woff differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-600-italic.woff2 b/web/static/fonts/rasa/files/rasa-vietnamese-600-italic.woff2 index f558d42a..5a13ac52 100644 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-600-italic.woff2 and b/web/static/fonts/rasa/files/rasa-vietnamese-600-italic.woff2 differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-600-normal.woff b/web/static/fonts/rasa/files/rasa-vietnamese-600-normal.woff index cd28b296..6327b945 100644 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-600-normal.woff and b/web/static/fonts/rasa/files/rasa-vietnamese-600-normal.woff differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-600-normal.woff2 b/web/static/fonts/rasa/files/rasa-vietnamese-600-normal.woff2 index 7db47e76..458f2998 100644 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-600-normal.woff2 and b/web/static/fonts/rasa/files/rasa-vietnamese-600-normal.woff2 differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-700-italic.woff b/web/static/fonts/rasa/files/rasa-vietnamese-700-italic.woff index c7721c0e..28edcedc 100644 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-700-italic.woff and b/web/static/fonts/rasa/files/rasa-vietnamese-700-italic.woff differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-700-italic.woff2 b/web/static/fonts/rasa/files/rasa-vietnamese-700-italic.woff2 index 0d004930..5e4e4f3a 100644 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-700-italic.woff2 and b/web/static/fonts/rasa/files/rasa-vietnamese-700-italic.woff2 differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-700-normal.woff b/web/static/fonts/rasa/files/rasa-vietnamese-700-normal.woff index f956340c..60e4ec1d 100644 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-700-normal.woff and b/web/static/fonts/rasa/files/rasa-vietnamese-700-normal.woff differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-700-normal.woff2 b/web/static/fonts/rasa/files/rasa-vietnamese-700-normal.woff2 index db0e194b..610d11ff 100644 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-700-normal.woff2 and b/web/static/fonts/rasa/files/rasa-vietnamese-700-normal.woff2 differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-variable-full-italic.woff2 b/web/static/fonts/rasa/files/rasa-vietnamese-variable-full-italic.woff2 deleted file mode 100644 index 8287b330..00000000 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-variable-full-italic.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-variable-full-normal.woff2 b/web/static/fonts/rasa/files/rasa-vietnamese-variable-full-normal.woff2 deleted file mode 100644 index 2d3049ac..00000000 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-variable-full-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-variable-wghtOnly-italic.woff2 b/web/static/fonts/rasa/files/rasa-vietnamese-variable-wghtOnly-italic.woff2 deleted file mode 100644 index 8287b330..00000000 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-variable-wghtOnly-italic.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/files/rasa-vietnamese-variable-wghtOnly-normal.woff2 b/web/static/fonts/rasa/files/rasa-vietnamese-variable-wghtOnly-normal.woff2 deleted file mode 100644 index 2d3049ac..00000000 Binary files a/web/static/fonts/rasa/files/rasa-vietnamese-variable-wghtOnly-normal.woff2 and /dev/null differ diff --git a/web/static/fonts/rasa/index.css b/web/static/fonts/rasa/index.css index b0e5b63a..8739084e 100644 --- a/web/static/fonts/rasa/index.css +++ b/web/static/fonts/rasa/index.css @@ -5,7 +5,7 @@ font-display: swap; font-weight: 400; src: url(/static/fonts/rasa/files/rasa-gujarati-400-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-gujarati-400-normal.woff) format('woff'); - unicode-range: U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; + unicode-range: U+0951-0952,U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; } /* rasa-vietnamese-400-normal */ @@ -25,7 +25,7 @@ font-display: swap; font-weight: 400; src: url(/static/fonts/rasa/files/rasa-latin-ext-400-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-ext-400-normal.woff) format('woff'); - unicode-range: U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; + unicode-range: U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; } /* rasa-latin-400-normal */ @@ -35,5 +35,5 @@ font-display: swap; font-weight: 400; src: url(/static/fonts/rasa/files/rasa-latin-400-normal.woff2) format('woff2'), url(/static/fonts/rasa/files/rasa-latin-400-normal.woff) format('woff'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; } \ No newline at end of file diff --git a/web/static/fonts/rasa/metadata.json b/web/static/fonts/rasa/metadata.json index a439ee9a..a1b2c16c 100644 --- a/web/static/fonts/rasa/metadata.json +++ b/web/static/fonts/rasa/metadata.json @@ -9,8 +9,8 @@ "ital": {"default": "0", "min": "0", "max": "1", "step": "1"}, "wght": {"default": "400", "min": "300", "max": "700", "step": "1"} }, - "lastModified": "2023-03-21", - "version": "v19", + "lastModified": "2024-09-04", + "version": "v22", "category": "serif", "license": { "type": "OFL-1.1", diff --git a/web/static/fonts/rasa/package.json b/web/static/fonts/rasa/package.json index 2d0fe9e6..9b78d52e 100644 --- a/web/static/fonts/rasa/package.json +++ b/web/static/fonts/rasa/package.json @@ -1,6 +1,6 @@ { "name": "@fontsource/rasa", - "version": "5.0.3", + "version": "5.1.0", "description": "Self-host the Rasa font in a neatly bundled NPM package.", "main": "index.css", "publishConfig": {"access": "public"}, @@ -26,5 +26,5 @@ "url": "https://github.com/fontsource/font-files.git", "directory": "fonts/google/rasa" }, - "publishHash": "d06bed800a4e0ec6" + "publishHash": "3efb60f86d9a9b32" } \ No newline at end of file diff --git a/web/static/fonts/rasa/scss/metadata.scss b/web/static/fonts/rasa/scss/metadata.scss index 9254c4f5..40f64159 100644 --- a/web/static/fonts/rasa/scss/metadata.scss +++ b/web/static/fonts/rasa/scss/metadata.scss @@ -12,8 +12,8 @@ $defaults: ( axis: null, ) !default; $unicode: ( - gujarati: (U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839), + gujarati: (U+0951-0952,U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839), vietnamese: (U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB), - latin-ext: (U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF), - latin: (U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD), + latin-ext: (U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF), + latin: (U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD), ) !default; diff --git a/web/static/fonts/rasa/scss/mixins.scss b/web/static/fonts/rasa/scss/mixins.scss index 4d1c6c3a..0571337f 100644 --- a/web/static/fonts/rasa/scss/mixins.scss +++ b/web/static/fonts/rasa/scss/mixins.scss @@ -34,6 +34,7 @@ $displayVar: null !default; // Deprecated $displayVar: $displayVar ) { + @if $displayVar != null { @warn "$displayVar is deprecated due to the limitation of using css variables in @font-face (https://github.com/fontsource/fontsource/issues/726)."; } @@ -52,7 +53,7 @@ $displayVar: null !default; $subsets: if( $subsets, if($subsets == all, map.get($metadata, subsets), $subsets), - map.get($metadata, defaults, subset) + map.get($metadata, subsets) ); $weights: if( $weights, @@ -72,13 +73,20 @@ $displayVar: null !default; @each $subset in $subsets { @each $unicodeSubset, $unicodeRange in map.get($metadata, unicode) { + // If condition is true, generate faces for the current subset @if ( - ($subset == $unicodeSubset) or - ( - // Is numeric subset - ($subset == map.get($metadata, defaults, subset)) and not - list.index(map.get($metadata, subsets), $unicodeSubset) - ) + // If there is no unicode information for the font or + ($unicodeSubset == null) or + // If the subset match a unicode subset or + ($subset == $unicodeSubset) or + ( + // If $unicodeSubset is a numeric unicode subset + // and current subset exists in the list of font subsets but does not match any unicode subset + // then generate faces for this numeric unicode subset as it is representing part of the current subset + list.index(map.get($metadata, subsets), $subset) and not + map.has-key($metadata, unicode, $subset) and not + list.index(map.get($metadata, subsets), $unicodeSubset) + ) ) { @each $weight in if($axes, null, $weights) { @each $axis in $axes { diff --git a/web/static/fonts/rasa/unicode.json b/web/static/fonts/rasa/unicode.json index 6852d6c0..0c58d7db 100644 --- a/web/static/fonts/rasa/unicode.json +++ b/web/static/fonts/rasa/unicode.json @@ -1,6 +1,6 @@ { - "gujarati": "U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839", + "gujarati": "U+0951-0952,U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839", "vietnamese": "U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB", - "latin-ext": "U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF", - "latin": "U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD" + "latin-ext": "U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF", + "latin": "U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD" } \ No newline at end of file diff --git a/web/static/fonts/rasa/variable-full-italic.css b/web/static/fonts/rasa/variable-full-italic.css deleted file mode 100644 index d6077502..00000000 --- a/web/static/fonts/rasa/variable-full-italic.css +++ /dev/null @@ -1,36 +0,0 @@ -/* rasa-gujarati-variable-full-italic */ -@font-face { - font-family: 'RasaVariable'; - font-style: italic; - font-display: swap; - font-weight: 300 700; - src: url('/static/fonts/rasa/files/rasa-gujarati-variable-full-italic.woff2') format('woff2'); - unicode-range: U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; -} -/* rasa-latin-variable-full-italic */ -@font-face { - font-family: 'RasaVariable'; - font-style: italic; - font-display: swap; - font-weight: 300 700; - src: url('/static/fonts/rasa/files/rasa-latin-variable-full-italic.woff2') format('woff2'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; -} -/* rasa-latin-ext-variable-full-italic */ -@font-face { - font-family: 'RasaVariable'; - font-style: italic; - font-display: swap; - font-weight: 300 700; - src: url('/static/fonts/rasa/files/rasa-latin-ext-variable-full-italic.woff2') format('woff2'); - unicode-range: U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; -} -/* rasa-vietnamese-variable-full-italic */ -@font-face { - font-family: 'RasaVariable'; - font-style: italic; - font-display: swap; - font-weight: 300 700; - src: url('/static/fonts/rasa/files/rasa-vietnamese-variable-full-italic.woff2') format('woff2'); - unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB; -} diff --git a/web/static/fonts/rasa/variable-full.css b/web/static/fonts/rasa/variable-full.css deleted file mode 100644 index 36841b9c..00000000 --- a/web/static/fonts/rasa/variable-full.css +++ /dev/null @@ -1,36 +0,0 @@ -/* rasa-gujarati-variable-full-normal */ -@font-face { - font-family: 'RasaVariable'; - font-style: normal; - font-display: swap; - font-weight: 300 700; - src: url('/static/fonts/rasa/files/rasa-gujarati-variable-full-normal.woff2') format('woff2'); - unicode-range: U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; -} -/* rasa-latin-variable-full-normal */ -@font-face { - font-family: 'RasaVariable'; - font-style: normal; - font-display: swap; - font-weight: 300 700; - src: url('/static/fonts/rasa/files/rasa-latin-variable-full-normal.woff2') format('woff2'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; -} -/* rasa-latin-ext-variable-full-normal */ -@font-face { - font-family: 'RasaVariable'; - font-style: normal; - font-display: swap; - font-weight: 300 700; - src: url('/static/fonts/rasa/files/rasa-latin-ext-variable-full-normal.woff2') format('woff2'); - unicode-range: U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; -} -/* rasa-vietnamese-variable-full-normal */ -@font-face { - font-family: 'RasaVariable'; - font-style: normal; - font-display: swap; - font-weight: 300 700; - src: url('/static/fonts/rasa/files/rasa-vietnamese-variable-full-normal.woff2') format('woff2'); - unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB; -} diff --git a/web/static/fonts/rasa/variable-italic.css b/web/static/fonts/rasa/variable-italic.css deleted file mode 100644 index ca4ac9c3..00000000 --- a/web/static/fonts/rasa/variable-italic.css +++ /dev/null @@ -1,36 +0,0 @@ -/* rasa-gujarati-variable-wghtOnly-italic */ -@font-face { - font-family: 'RasaVariable'; - font-style: italic; - font-display: swap; - font-weight: 300 700; - src: url('/static/fonts/rasa/files/rasa-gujarati-variable-wghtOnly-italic.woff2') format('woff2'); - unicode-range: U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; -} -/* rasa-latin-variable-wghtOnly-italic */ -@font-face { - font-family: 'RasaVariable'; - font-style: italic; - font-display: swap; - font-weight: 300 700; - src: url('/static/fonts/rasa/files/rasa-latin-variable-wghtOnly-italic.woff2') format('woff2'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; -} -/* rasa-latin-ext-variable-wghtOnly-italic */ -@font-face { - font-family: 'RasaVariable'; - font-style: italic; - font-display: swap; - font-weight: 300 700; - src: url('/static/fonts/rasa/files/rasa-latin-ext-variable-wghtOnly-italic.woff2') format('woff2'); - unicode-range: U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; -} -/* rasa-vietnamese-variable-wghtOnly-italic */ -@font-face { - font-family: 'RasaVariable'; - font-style: italic; - font-display: swap; - font-weight: 300 700; - src: url('/static/fonts/rasa/files/rasa-vietnamese-variable-wghtOnly-italic.woff2') format('woff2'); - unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB; -} diff --git a/web/static/fonts/rasa/variable.css b/web/static/fonts/rasa/variable.css deleted file mode 100644 index cb40a862..00000000 --- a/web/static/fonts/rasa/variable.css +++ /dev/null @@ -1,36 +0,0 @@ -/* rasa-gujarati-variable-wghtOnly-normal */ -@font-face { - font-family: 'RasaVariable'; - font-style: normal; - font-display: swap; - font-weight: 300 700; - src: url('/static/fonts/rasa/files/rasa-gujarati-variable-wghtOnly-normal.woff2') format('woff2'); - unicode-range: U+0964-0965,U+0A80-0AFF,U+200C-200D,U+20B9,U+25CC,U+A830-A839; -} -/* rasa-latin-variable-wghtOnly-normal */ -@font-face { - font-family: 'RasaVariable'; - font-style: normal; - font-display: swap; - font-weight: 300 700; - src: url('/static/fonts/rasa/files/rasa-latin-variable-wghtOnly-normal.woff2') format('woff2'); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; -} -/* rasa-latin-ext-variable-wghtOnly-normal */ -@font-face { - font-family: 'RasaVariable'; - font-style: normal; - font-display: swap; - font-weight: 300 700; - src: url('/static/fonts/rasa/files/rasa-latin-ext-variable-wghtOnly-normal.woff2') format('woff2'); - unicode-range: U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; -} -/* rasa-vietnamese-variable-wghtOnly-normal */ -@font-face { - font-family: 'RasaVariable'; - font-style: normal; - font-display: swap; - font-weight: 300 700; - src: url('/static/fonts/rasa/files/rasa-vietnamese-variable-wghtOnly-normal.woff2') format('woff2'); - unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB; -} diff --git a/web/static/js/project.js b/web/static/js/project.js index 2dd5993b..555b92ba 100644 --- a/web/static/js/project.js +++ b/web/static/js/project.js @@ -725,6 +725,7 @@ weekNumbers: true, time_24hr: true, }); + /*eslint no-unused-vars: ["error", { "caughtErrors": "none" }]*/ } catch (e) { // nothing } diff --git a/web/static/lib/codemirror/autorefresh.js b/web/static/lib/codemirror/autorefresh.js index b0d75853..b5e6ab0a 100644 --- a/web/static/lib/codemirror/autorefresh.js +++ b/web/static/lib/codemirror/autorefresh.js @@ -1,49 +1,47 @@ // CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: https://codemirror.net/LICENSE +// Distributed under an MIT license: https://codemirror.net/5/LICENSE -(function (mod) { - if (typeof exports == 'object' && typeof module == 'object') - // CommonJS - mod(require('../../lib/codemirror')); - else if (typeof define == 'function' && define.amd) - // AMD - define(['../../lib/codemirror'], mod); - // Plain browser env - else mod(CodeMirror); -})(function (CodeMirror) { - 'use strict'; +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")) + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod) + else // Plain browser env + mod(CodeMirror) +})(function(CodeMirror) { + "use strict" - CodeMirror.defineOption('autoRefresh', false, function (cm, val) { + CodeMirror.defineOption("autoRefresh", false, function(cm, val) { if (cm.state.autoRefresh) { - stopListening(cm, cm.state.autoRefresh); - cm.state.autoRefresh = null; + stopListening(cm, cm.state.autoRefresh) + cm.state.autoRefresh = null } if (val && cm.display.wrapper.offsetHeight == 0) - startListening(cm, (cm.state.autoRefresh = { delay: val.delay || 250 })); - }); + startListening(cm, cm.state.autoRefresh = {delay: val.delay || 250}) + }) function startListening(cm, state) { function check() { if (cm.display.wrapper.offsetHeight) { - stopListening(cm, state); + stopListening(cm, state) if (cm.display.lastWrapHeight != cm.display.wrapper.clientHeight) - cm.refresh(); + cm.refresh() } else { - state.timeout = setTimeout(check, state.delay); + state.timeout = setTimeout(check, state.delay) } } - state.timeout = setTimeout(check, state.delay); - state.hurry = function () { - clearTimeout(state.timeout); - state.timeout = setTimeout(check, 50); - }; - CodeMirror.on(window, 'mouseup', state.hurry); - CodeMirror.on(window, 'keyup', state.hurry); + state.timeout = setTimeout(check, state.delay) + state.hurry = function() { + clearTimeout(state.timeout) + state.timeout = setTimeout(check, 50) + } + CodeMirror.on(window, "mouseup", state.hurry) + CodeMirror.on(window, "keyup", state.hurry) } function stopListening(_cm, state) { - clearTimeout(state.timeout); - CodeMirror.off(window, 'mouseup', state.hurry); - CodeMirror.off(window, 'keyup', state.hurry); + clearTimeout(state.timeout) + CodeMirror.off(window, "mouseup", state.hurry) + CodeMirror.off(window, "keyup", state.hurry) } }); diff --git a/web/static/lib/codemirror/codemirror.js b/web/static/lib/codemirror/codemirror.js index 69aa3cfb..f4f5ec9d 100644 --- a/web/static/lib/codemirror/codemirror.js +++ b/web/static/lib/codemirror/codemirror.js @@ -1,20 +1,17 @@ // CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: https://codemirror.net/LICENSE +// Distributed under an MIT license: https://codemirror.net/5/LICENSE -// This is CodeMirror (https://codemirror.net), a code editor +// This is CodeMirror (https://codemirror.net/5), a code editor // implemented in JavaScript on top of the browser's DOM. // // You can find some technical background for some of the code below // at http://marijnhaverbeke.nl/blog/#cm-internals . (function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' - ? (module.exports = factory()) - : typeof define === 'function' && define.amd - ? define(factory) - : (global.CodeMirror = factory()); -})(this, function () { - 'use strict'; + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = global || self, global.CodeMirror = factory()); +}(this, (function () { 'use strict'; // Kludges for bugs and behavior differences that can't be feature // detected are enabled based on userAgent etc sniffing. @@ -26,207 +23,152 @@ var ie_11up = /Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(userAgent); var edge = /Edge\/(\d+)/.exec(userAgent); var ie = ie_upto10 || ie_11up || edge; - var ie_version = - ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]); + var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]); var webkit = !edge && /WebKit\//.test(userAgent); var qtwebkit = webkit && /Qt\/\d+\.\d+/.test(userAgent); - var chrome = !edge && /Chrome\//.test(userAgent); + var chrome = !edge && /Chrome\/(\d+)/.exec(userAgent); + var chrome_version = chrome && +chrome[1]; var presto = /Opera\//.test(userAgent); var safari = /Apple Computer/.test(navigator.vendor); var mac_geMountainLion = /Mac OS X 1\d\D([8-9]|\d\d)\D/.test(userAgent); var phantom = /PhantomJS/.test(userAgent); - var ios = - !edge && /AppleWebKit/.test(userAgent) && /Mobile\/\w+/.test(userAgent); + var ios = safari && (/Mobile\/\w+/.test(userAgent) || navigator.maxTouchPoints > 2); var android = /Android/.test(userAgent); // This is woefully incomplete. Suggestions for alternative methods welcome. - var mobile = - ios || - android || - /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent); + var mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent); var mac = ios || /Mac/.test(platform); var chromeOS = /\bCrOS\b/.test(userAgent); var windows = /win/i.test(platform); var presto_version = presto && userAgent.match(/Version\/(\d*\.\d*)/); - if (presto_version) { - presto_version = Number(presto_version[1]); - } - if (presto_version && presto_version >= 15) { - presto = false; - webkit = true; - } + if (presto_version) { presto_version = Number(presto_version[1]); } + if (presto_version && presto_version >= 15) { presto = false; webkit = true; } // Some browsers use the wrong event properties to signal cmd/ctrl on OS X - var flipCtrlCmd = - mac && - (qtwebkit || - (presto && (presto_version == null || presto_version < 12.11))); + var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11)); var captureRightClick = gecko || (ie && ie_version >= 9); - function classTest(cls) { - return new RegExp('(^|\\s)' + cls + '(?:$|\\s)\\s*'); - } + function classTest(cls) { return new RegExp("(^|\\s)" + cls + "(?:$|\\s)\\s*") } - var rmClass = function (node, cls) { + var rmClass = function(node, cls) { var current = node.className; var match = classTest(cls).exec(current); if (match) { var after = current.slice(match.index + match[0].length); - node.className = - current.slice(0, match.index) + (after ? match[1] + after : ''); + node.className = current.slice(0, match.index) + (after ? match[1] + after : ""); } }; function removeChildren(e) { - for (var count = e.childNodes.length; count > 0; --count) { - e.removeChild(e.firstChild); - } - return e; + for (var count = e.childNodes.length; count > 0; --count) + { e.removeChild(e.firstChild); } + return e } function removeChildrenAndAdd(parent, e) { - return removeChildren(parent).appendChild(e); + return removeChildren(parent).appendChild(e) } function elt(tag, content, className, style) { var e = document.createElement(tag); - if (className) { - e.className = className; - } - if (style) { - e.style.cssText = style; - } - if (typeof content == 'string') { - e.appendChild(document.createTextNode(content)); - } else if (content) { - for (var i = 0; i < content.length; ++i) { - e.appendChild(content[i]); - } - } - return e; + if (className) { e.className = className; } + if (style) { e.style.cssText = style; } + if (typeof content == "string") { e.appendChild(document.createTextNode(content)); } + else if (content) { for (var i = 0; i < content.length; ++i) { e.appendChild(content[i]); } } + return e } // wrapper for elt, which removes the elt from the accessibility tree function eltP(tag, content, className, style) { var e = elt(tag, content, className, style); - e.setAttribute('role', 'presentation'); - return e; + e.setAttribute("role", "presentation"); + return e } var range; - if (document.createRange) { - range = function (node, start, end, endNode) { - var r = document.createRange(); - r.setEnd(endNode || node, end); - r.setStart(node, start); - return r; - }; - } else { - range = function (node, start, end) { - var r = document.body.createTextRange(); - try { - r.moveToElementText(node.parentNode); - } catch (e) { - return r; - } - r.collapse(true); - r.moveEnd('character', end); - r.moveStart('character', start); - return r; - }; - } + if (document.createRange) { range = function(node, start, end, endNode) { + var r = document.createRange(); + r.setEnd(endNode || node, end); + r.setStart(node, start); + return r + }; } + else { range = function(node, start, end) { + var r = document.body.createTextRange(); + try { r.moveToElementText(node.parentNode); } + catch(e) { return r } + r.collapse(true); + r.moveEnd("character", end); + r.moveStart("character", start); + return r + }; } function contains(parent, child) { - if (child.nodeType == 3) { - // Android browser always returns false when child is a textnode - child = child.parentNode; - } - if (parent.contains) { - return parent.contains(child); - } + if (child.nodeType == 3) // Android browser always returns false when child is a textnode + { child = child.parentNode; } + if (parent.contains) + { return parent.contains(child) } do { - if (child.nodeType == 11) { - child = child.host; - } - if (child == parent) { - return true; - } - } while ((child = child.parentNode)); + if (child.nodeType == 11) { child = child.host; } + if (child == parent) { return true } + } while (child = child.parentNode) } - function activeElt() { + function activeElt(rootNode) { // IE and Edge may throw an "Unspecified Error" when accessing document.activeElement. // IE < 10 will throw when accessed while the page is loading or in an iframe. // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable. + var doc = rootNode.ownerDocument || rootNode; var activeElement; try { - activeElement = document.activeElement; - } catch (e) { - activeElement = document.body || null; + activeElement = rootNode.activeElement; + } catch(e) { + activeElement = doc.body || null; } - while ( - activeElement && - activeElement.shadowRoot && - activeElement.shadowRoot.activeElement - ) { - activeElement = activeElement.shadowRoot.activeElement; - } - return activeElement; + while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement) + { activeElement = activeElement.shadowRoot.activeElement; } + return activeElement } function addClass(node, cls) { var current = node.className; - if (!classTest(cls).test(current)) { - node.className += (current ? ' ' : '') + cls; - } + if (!classTest(cls).test(current)) { node.className += (current ? " " : "") + cls; } } function joinClasses(a, b) { - var as = a.split(' '); - for (var i = 0; i < as.length; i++) { - if (as[i] && !classTest(as[i]).test(b)) { - b += ' ' + as[i]; - } - } - return b; + var as = a.split(" "); + for (var i = 0; i < as.length; i++) + { if (as[i] && !classTest(as[i]).test(b)) { b += " " + as[i]; } } + return b } - var selectInput = function (node) { - node.select(); - }; - if (ios) { - // Mobile Safari apparently has a bug where select() is broken. - selectInput = function (node) { - node.selectionStart = 0; - node.selectionEnd = node.value.length; - }; - } else if (ie) { - // Suppress mysterious IE10 errors - selectInput = function (node) { - try { - node.select(); - } catch (_e) {} - }; + var selectInput = function(node) { node.select(); }; + if (ios) // Mobile Safari apparently has a bug where select() is broken. + { selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; }; } + else if (ie) // Suppress mysterious IE10 errors + { selectInput = function(node) { try { node.select(); } catch(_e) {} }; } + + function doc(cm) { return cm.display.wrapper.ownerDocument } + + function root(cm) { + return rootNode(cm.display.wrapper) + } + + function rootNode(element) { + // Detect modern browsers (2017+). + return element.getRootNode ? element.getRootNode() : element.ownerDocument } + function win(cm) { return doc(cm).defaultView } + function bind(f) { var args = Array.prototype.slice.call(arguments, 1); - return function () { - return f.apply(null, args); - }; + return function(){return f.apply(null, args)} } function copyObj(obj, target, overwrite) { - if (!target) { - target = {}; - } - for (var prop in obj) { - if ( - obj.hasOwnProperty(prop) && - (overwrite !== false || !target.hasOwnProperty(prop)) - ) { - target[prop] = obj[prop]; - } - } - return target; + if (!target) { target = {}; } + for (var prop in obj) + { if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop))) + { target[prop] = obj[prop]; } } + return target } // Counts the column offset in a string, taking tabs into account. @@ -234,22 +176,19 @@ function countColumn(string, end, tabSize, startIndex, startValue) { if (end == null) { end = string.search(/[^\s\u00a0]/); - if (end == -1) { - end = string.length; - } + if (end == -1) { end = string.length; } } - for (var i = startIndex || 0, n = startValue || 0; ; ) { - var nextTab = string.indexOf('\t', i); - if (nextTab < 0 || nextTab >= end) { - return n + (end - i); - } + for (var i = startIndex || 0, n = startValue || 0;;) { + var nextTab = string.indexOf("\t", i); + if (nextTab < 0 || nextTab >= end) + { return n + (end - i) } n += nextTab - i; n += tabSize - (n % tabSize); i = nextTab + 1; } } - var Delayed = function () { + var Delayed = function() { this.id = null; this.f = null; this.time = 0; @@ -257,15 +196,15 @@ }; Delayed.prototype.onTimeout = function (self) { self.id = 0; - if (self.time <= +new Date()) { + if (self.time <= +new Date) { self.f(); } else { - setTimeout(self.handler, self.time - +new Date()); + setTimeout(self.handler, self.time - +new Date); } }; Delayed.prototype.set = function (ms, f) { this.f = f; - var time = +new Date() + ms; + var time = +new Date + ms; if (!this.id || time < this.time) { clearTimeout(this.id); this.id = setTimeout(this.handler, ms); @@ -274,77 +213,55 @@ }; function indexOf(array, elt) { - for (var i = 0; i < array.length; ++i) { - if (array[i] == elt) { - return i; - } - } - return -1; + for (var i = 0; i < array.length; ++i) + { if (array[i] == elt) { return i } } + return -1 } // Number of pixels added to scroller and sizer to hide scrollbar - var scrollerGap = 30; + var scrollerGap = 50; // Returned or thrown by various protocols to signal 'I'm not // handling this'. - var Pass = { - toString: function () { - return 'CodeMirror.Pass'; - }, - }; + var Pass = {toString: function(){return "CodeMirror.Pass"}}; // Reused option objects for setSelection & friends - var sel_dontScroll = { scroll: false }, - sel_mouse = { origin: '*mouse' }, - sel_move = { origin: '+move' }; + var sel_dontScroll = {scroll: false}, sel_mouse = {origin: "*mouse"}, sel_move = {origin: "+move"}; // The inverse of countColumn -- find the offset that corresponds to // a particular column. function findColumn(string, goal, tabSize) { - for (var pos = 0, col = 0; ; ) { - var nextTab = string.indexOf('\t', pos); - if (nextTab == -1) { - nextTab = string.length; - } + for (var pos = 0, col = 0;;) { + var nextTab = string.indexOf("\t", pos); + if (nextTab == -1) { nextTab = string.length; } var skipped = nextTab - pos; - if (nextTab == string.length || col + skipped >= goal) { - return pos + Math.min(skipped, goal - col); - } + if (nextTab == string.length || col + skipped >= goal) + { return pos + Math.min(skipped, goal - col) } col += nextTab - pos; col += tabSize - (col % tabSize); pos = nextTab + 1; - if (col >= goal) { - return pos; - } + if (col >= goal) { return pos } } } - var spaceStrs = ['']; + var spaceStrs = [""]; function spaceStr(n) { - while (spaceStrs.length <= n) { - spaceStrs.push(lst(spaceStrs) + ' '); - } - return spaceStrs[n]; + while (spaceStrs.length <= n) + { spaceStrs.push(lst(spaceStrs) + " "); } + return spaceStrs[n] } - function lst(arr) { - return arr[arr.length - 1]; - } + function lst(arr) { return arr[arr.length-1] } function map(array, f) { var out = []; - for (var i = 0; i < array.length; i++) { - out[i] = f(array[i], i); - } - return out; + for (var i = 0; i < array.length; i++) { out[i] = f(array[i], i); } + return out } function insertSorted(array, value, score) { - var pos = 0, - priority = score(value); - while (pos < array.length && score(array[pos]) <= priority) { - pos++; - } + var pos = 0, priority = score(value); + while (pos < array.length && score(array[pos]) <= priority) { pos++; } array.splice(pos, 0, value); } @@ -358,39 +275,24 @@ nothing.prototype = base; inst = new nothing(); } - if (props) { - copyObj(props, inst); - } - return inst; + if (props) { copyObj(props, inst); } + return inst } - var nonASCIISingleCaseWordChar = - /[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/; + var nonASCIISingleCaseWordChar = /[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/; function isWordCharBasic(ch) { - return ( - /\w/.test(ch) || - (ch > '\x80' && - (ch.toUpperCase() != ch.toLowerCase() || - nonASCIISingleCaseWordChar.test(ch))) - ); + return /\w/.test(ch) || ch > "\x80" && + (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch)) } function isWordChar(ch, helper) { - if (!helper) { - return isWordCharBasic(ch); - } - if (helper.source.indexOf('\\w') > -1 && isWordCharBasic(ch)) { - return true; - } - return helper.test(ch); + if (!helper) { return isWordCharBasic(ch) } + if (helper.source.indexOf("\\w") > -1 && isWordCharBasic(ch)) { return true } + return helper.test(ch) } function isEmpty(obj) { - for (var n in obj) { - if (obj.hasOwnProperty(n) && obj[n]) { - return false; - } - } - return true; + for (var n in obj) { if (obj.hasOwnProperty(n) && obj[n]) { return false } } + return true } // Extending unicode characters. A series of a non-extending char + @@ -398,21 +300,13 @@ // as editing and measuring is concerned. This is not fully correct, // since some scripts/fonts/browsers also treat other configurations // of code points as a group. - var extendingChars = - /[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/; - function isExtendingChar(ch) { - return ch.charCodeAt(0) >= 768 && extendingChars.test(ch); - } + var extendingChars = /[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/; + function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch) } // Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range. function skipExtendingChars(str, pos, dir) { - while ( - (dir < 0 ? pos > 0 : pos < str.length) && - isExtendingChar(str.charAt(pos)) - ) { - pos += dir; - } - return pos; + while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) { pos += dir; } + return pos } // Returns the value from the range [`from`; `to`] that satisfies @@ -423,47 +317,27 @@ // whether `from` does. var dir = from > to ? -1 : 1; for (;;) { - if (from == to) { - return from; - } - var midF = (from + to) / 2, - mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF); - if (mid == from) { - return pred(mid) ? from : to; - } - if (pred(mid)) { - to = mid; - } else { - from = mid + dir; - } + if (from == to) { return from } + var midF = (from + to) / 2, mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF); + if (mid == from) { return pred(mid) ? from : to } + if (pred(mid)) { to = mid; } + else { from = mid + dir; } } } // BIDI HELPERS function iterateBidiSections(order, from, to, f) { - if (!order) { - return f(from, to, 'ltr', 0); - } + if (!order) { return f(from, to, "ltr", 0) } var found = false; for (var i = 0; i < order.length; ++i) { var part = order[i]; - if ( - (part.from < to && part.to > from) || - (from == to && part.to == from) - ) { - f( - Math.max(part.from, from), - Math.min(part.to, to), - part.level == 1 ? 'rtl' : 'ltr', - i, - ); + if (part.from < to && part.to > from || from == to && part.to == from) { + f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? "rtl" : "ltr", i); found = true; } } - if (!found) { - f(from, to, 'ltr'); - } + if (!found) { f(from, to, "ltr"); } } var bidiOther = null; @@ -472,25 +346,17 @@ bidiOther = null; for (var i = 0; i < order.length; ++i) { var cur = order[i]; - if (cur.from < ch && cur.to > ch) { - return i; - } + if (cur.from < ch && cur.to > ch) { return i } if (cur.to == ch) { - if (cur.from != cur.to && sticky == 'before') { - found = i; - } else { - bidiOther = i; - } + if (cur.from != cur.to && sticky == "before") { found = i; } + else { bidiOther = i; } } if (cur.from == ch) { - if (cur.from != cur.to && sticky != 'before') { - found = i; - } else { - bidiOther = i; - } + if (cur.from != cur.to && sticky != "before") { found = i; } + else { bidiOther = i; } } } - return found != null ? found : bidiOther; + return found != null ? found : bidiOther } // Bidirectional ordering algorithm @@ -516,54 +382,36 @@ // Returns null if characters are ordered as they appear // (left-to-right), or an array of sections ({from, to, level} // objects) in the order in which they occur visually. - var bidiOrdering = (function () { + var bidiOrdering = (function() { // Character types for codepoints 0 to 0xff - var lowTypes = - 'bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN'; + var lowTypes = "bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN"; // Character types for codepoints 0x600 to 0x6f9 - var arabicTypes = - 'nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111'; + var arabicTypes = "nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111"; function charType(code) { - if (code <= 0xf7) { - return lowTypes.charAt(code); - } else if (0x590 <= code && code <= 0x5f4) { - return 'R'; - } else if (0x600 <= code && code <= 0x6f9) { - return arabicTypes.charAt(code - 0x600); - } else if (0x6ee <= code && code <= 0x8ac) { - return 'r'; - } else if (0x2000 <= code && code <= 0x200b) { - return 'w'; - } else if (code == 0x200c) { - return 'b'; - } else { - return 'L'; - } + if (code <= 0xf7) { return lowTypes.charAt(code) } + else if (0x590 <= code && code <= 0x5f4) { return "R" } + else if (0x600 <= code && code <= 0x6f9) { return arabicTypes.charAt(code - 0x600) } + else if (0x6ee <= code && code <= 0x8ac) { return "r" } + else if (0x2000 <= code && code <= 0x200b) { return "w" } + else if (code == 0x200c) { return "b" } + else { return "L" } } var bidiRE = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/; - var isNeutral = /[stwN]/, - isStrong = /[LRr]/, - countsAsLeft = /[Lb1n]/, - countsAsNum = /[1n]/; + var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/; function BidiSpan(level, from, to) { this.level = level; - this.from = from; - this.to = to; + this.from = from; this.to = to; } - return function (str, direction) { - var outerType = direction == 'ltr' ? 'L' : 'R'; + return function(str, direction) { + var outerType = direction == "ltr" ? "L" : "R"; - if (str.length == 0 || (direction == 'ltr' && !bidiRE.test(str))) { - return false; - } - var len = str.length, - types = []; - for (var i = 0; i < len; ++i) { - types.push(charType(str.charCodeAt(i))); - } + if (str.length == 0 || direction == "ltr" && !bidiRE.test(str)) { return false } + var len = str.length, types = []; + for (var i = 0; i < len; ++i) + { types.push(charType(str.charCodeAt(i))); } // W1. Examine each non-spacing mark (NSM) in the level run, and // change the type of the NSM to the type of the previous @@ -571,11 +419,8 @@ // get the type of sor. for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) { var type = types[i$1]; - if (type == 'm') { - types[i$1] = prev; - } else { - prev = type; - } + if (type == "m") { types[i$1] = prev; } + else { prev = type; } } // W2. Search backwards from each instance of a European number @@ -585,14 +430,8 @@ // W3. Change all ALs to R. for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) { var type$1 = types[i$2]; - if (type$1 == '1' && cur == 'r') { - types[i$2] = 'n'; - } else if (isStrong.test(type$1)) { - cur = type$1; - if (type$1 == 'r') { - types[i$2] = 'R'; - } - } + if (type$1 == "1" && cur == "r") { types[i$2] = "n"; } + else if (isStrong.test(type$1)) { cur = type$1; if (type$1 == "r") { types[i$2] = "R"; } } } // W4. A single European separator between two European numbers @@ -600,15 +439,9 @@ // two numbers of the same type changes to that type. for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) { var type$2 = types[i$3]; - if (type$2 == '+' && prev$1 == '1' && types[i$3 + 1] == '1') { - types[i$3] = '1'; - } else if ( - type$2 == ',' && - prev$1 == types[i$3 + 1] && - (prev$1 == '1' || prev$1 == 'n') - ) { - types[i$3] = prev$1; - } + if (type$2 == "+" && prev$1 == "1" && types[i$3+1] == "1") { types[i$3] = "1"; } + else if (type$2 == "," && prev$1 == types[i$3+1] && + (prev$1 == "1" || prev$1 == "n")) { types[i$3] = prev$1; } prev$1 = type$2; } @@ -618,18 +451,12 @@ // Neutral. for (var i$4 = 0; i$4 < len; ++i$4) { var type$3 = types[i$4]; - if (type$3 == ',') { - types[i$4] = 'N'; - } else if (type$3 == '%') { - var end = void 0; - for (end = i$4 + 1; end < len && types[end] == '%'; ++end) {} - var replace = - (i$4 && types[i$4 - 1] == '!') || (end < len && types[end] == '1') - ? '1' - : 'N'; - for (var j = i$4; j < end; ++j) { - types[j] = replace; - } + if (type$3 == ",") { types[i$4] = "N"; } + else if (type$3 == "%") { + var end = (void 0); + for (end = i$4 + 1; end < len && types[end] == "%"; ++end) {} + var replace = (i$4 && types[i$4-1] == "!") || (end < len && types[end] == "1") ? "1" : "N"; + for (var j = i$4; j < end; ++j) { types[j] = replace; } i$4 = end - 1; } } @@ -639,11 +466,8 @@ // found, then change the type of the European number to L. for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) { var type$4 = types[i$5]; - if (cur$1 == 'L' && type$4 == '1') { - types[i$5] = 'L'; - } else if (isStrong.test(type$4)) { - cur$1 = type$4; - } + if (cur$1 == "L" && type$4 == "1") { types[i$5] = "L"; } + else if (isStrong.test(type$4)) { cur$1 = type$4; } } // N1. A sequence of neutrals takes the direction of the @@ -654,18 +478,12 @@ // N2. Any remaining neutrals take the embedding direction. for (var i$6 = 0; i$6 < len; ++i$6) { if (isNeutral.test(types[i$6])) { - var end$1 = void 0; - for ( - end$1 = i$6 + 1; - end$1 < len && isNeutral.test(types[end$1]); - ++end$1 - ) {} - var before = (i$6 ? types[i$6 - 1] : outerType) == 'L'; - var after = (end$1 < len ? types[end$1] : outerType) == 'L'; - var replace$1 = before == after ? (before ? 'L' : 'R') : outerType; - for (var j$1 = i$6; j$1 < end$1; ++j$1) { - types[j$1] = replace$1; - } + var end$1 = (void 0); + for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {} + var before = (i$6 ? types[i$6-1] : outerType) == "L"; + var after = (end$1 < len ? types[end$1] : outerType) == "L"; + var replace$1 = before == after ? (before ? "L" : "R") : outerType; + for (var j$1 = i$6; j$1 < end$1; ++j$1) { types[j$1] = replace$1; } i$6 = end$1 - 1; } } @@ -675,36 +493,29 @@ // levels (0, 1, 2) in an implementation that doesn't take // explicit embedding into account, we can build up the order on // the fly, without following the level-based algorithm. - var order = [], - m; - for (var i$7 = 0; i$7 < len; ) { + var order = [], m; + for (var i$7 = 0; i$7 < len;) { if (countsAsLeft.test(types[i$7])) { var start = i$7; for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {} order.push(new BidiSpan(0, start, i$7)); } else { - var pos = i$7, - at = order.length; - for (++i$7; i$7 < len && types[i$7] != 'L'; ++i$7) {} - for (var j$2 = pos; j$2 < i$7; ) { + var pos = i$7, at = order.length, isRTL = direction == "rtl" ? 1 : 0; + for (++i$7; i$7 < len && types[i$7] != "L"; ++i$7) {} + for (var j$2 = pos; j$2 < i$7;) { if (countsAsNum.test(types[j$2])) { - if (pos < j$2) { - order.splice(at, 0, new BidiSpan(1, pos, j$2)); - } + if (pos < j$2) { order.splice(at, 0, new BidiSpan(1, pos, j$2)); at += isRTL; } var nstart = j$2; for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {} order.splice(at, 0, new BidiSpan(2, nstart, j$2)); + at += isRTL; pos = j$2; - } else { - ++j$2; - } - } - if (pos < i$7) { - order.splice(at, 0, new BidiSpan(1, pos, i$7)); + } else { ++j$2; } } + if (pos < i$7) { order.splice(at, 0, new BidiSpan(1, pos, i$7)); } } } - if (direction == 'ltr') { + if (direction == "ltr") { if (order[0].level == 1 && (m = str.match(/^\s+/))) { order[0].from = m[0].length; order.unshift(new BidiSpan(0, 0, m[0].length)); @@ -715,8 +526,8 @@ } } - return direction == 'rtl' ? order.reverse() : order; - }; + return direction == "rtl" ? order.reverse() : order + } })(); // Get the bidi ordering for the given line (and cache it). Returns @@ -724,10 +535,8 @@ // BidiSpan objects otherwise. function getOrder(line, direction) { var order = line.order; - if (order == null) { - order = line.order = bidiOrdering(line.text, direction); - } - return order; + if (order == null) { order = line.order = bidiOrdering(line.text, direction); } + return order } // EVENT HANDLING @@ -737,280 +546,191 @@ var noHandlers = []; - var on = function (emitter, type, f) { + var on = function(emitter, type, f) { if (emitter.addEventListener) { emitter.addEventListener(type, f, false); } else if (emitter.attachEvent) { - emitter.attachEvent('on' + type, f); + emitter.attachEvent("on" + type, f); } else { - var map$$1 = emitter._handlers || (emitter._handlers = {}); - map$$1[type] = (map$$1[type] || noHandlers).concat(f); + var map = emitter._handlers || (emitter._handlers = {}); + map[type] = (map[type] || noHandlers).concat(f); } }; function getHandlers(emitter, type) { - return (emitter._handlers && emitter._handlers[type]) || noHandlers; + return emitter._handlers && emitter._handlers[type] || noHandlers } function off(emitter, type, f) { if (emitter.removeEventListener) { emitter.removeEventListener(type, f, false); } else if (emitter.detachEvent) { - emitter.detachEvent('on' + type, f); + emitter.detachEvent("on" + type, f); } else { - var map$$1 = emitter._handlers, - arr = map$$1 && map$$1[type]; + var map = emitter._handlers, arr = map && map[type]; if (arr) { var index = indexOf(arr, f); - if (index > -1) { - map$$1[type] = arr.slice(0, index).concat(arr.slice(index + 1)); - } + if (index > -1) + { map[type] = arr.slice(0, index).concat(arr.slice(index + 1)); } } } } function signal(emitter, type /*, values...*/) { var handlers = getHandlers(emitter, type); - if (!handlers.length) { - return; - } + if (!handlers.length) { return } var args = Array.prototype.slice.call(arguments, 2); - for (var i = 0; i < handlers.length; ++i) { - handlers[i].apply(null, args); - } + for (var i = 0; i < handlers.length; ++i) { handlers[i].apply(null, args); } } // The DOM events that CodeMirror handles can be overridden by // registering a (non-DOM) handler on the editor for the event name, // and preventDefault-ing the event in that handler. function signalDOMEvent(cm, e, override) { - if (typeof e == 'string') { - e = { - type: e, - preventDefault: function () { - this.defaultPrevented = true; - }, - }; - } + if (typeof e == "string") + { e = {type: e, preventDefault: function() { this.defaultPrevented = true; }}; } signal(cm, override || e.type, cm, e); - return e_defaultPrevented(e) || e.codemirrorIgnore; + return e_defaultPrevented(e) || e.codemirrorIgnore } function signalCursorActivity(cm) { var arr = cm._handlers && cm._handlers.cursorActivity; - if (!arr) { - return; - } - var set = - cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []); - for (var i = 0; i < arr.length; ++i) { - if (indexOf(set, arr[i]) == -1) { - set.push(arr[i]); - } - } + if (!arr) { return } + var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []); + for (var i = 0; i < arr.length; ++i) { if (indexOf(set, arr[i]) == -1) + { set.push(arr[i]); } } } function hasHandler(emitter, type) { - return getHandlers(emitter, type).length > 0; + return getHandlers(emitter, type).length > 0 } // Add on and off methods to a constructor's prototype, to make // registering events on such objects more convenient. function eventMixin(ctor) { - ctor.prototype.on = function (type, f) { - on(this, type, f); - }; - ctor.prototype.off = function (type, f) { - off(this, type, f); - }; + ctor.prototype.on = function(type, f) {on(this, type, f);}; + ctor.prototype.off = function(type, f) {off(this, type, f);}; } // Due to the fact that we still support jurassic IE versions, some // compatibility wrappers are needed. function e_preventDefault(e) { - if (e.preventDefault) { - e.preventDefault(); - } else { - e.returnValue = false; - } + if (e.preventDefault) { e.preventDefault(); } + else { e.returnValue = false; } } function e_stopPropagation(e) { - if (e.stopPropagation) { - e.stopPropagation(); - } else { - e.cancelBubble = true; - } + if (e.stopPropagation) { e.stopPropagation(); } + else { e.cancelBubble = true; } } function e_defaultPrevented(e) { - return e.defaultPrevented != null - ? e.defaultPrevented - : e.returnValue == false; - } - function e_stop(e) { - e_preventDefault(e); - e_stopPropagation(e); + return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false } + function e_stop(e) {e_preventDefault(e); e_stopPropagation(e);} - function e_target(e) { - return e.target || e.srcElement; - } + function e_target(e) {return e.target || e.srcElement} function e_button(e) { var b = e.which; if (b == null) { - if (e.button & 1) { - b = 1; - } else if (e.button & 2) { - b = 3; - } else if (e.button & 4) { - b = 2; - } + if (e.button & 1) { b = 1; } + else if (e.button & 2) { b = 3; } + else if (e.button & 4) { b = 2; } } - if (mac && e.ctrlKey && b == 1) { - b = 3; - } - return b; + if (mac && e.ctrlKey && b == 1) { b = 3; } + return b } // Detect drag-and-drop - var dragAndDrop = (function () { + var dragAndDrop = function() { // There is *some* kind of drag-and-drop support in IE6-8, but I // couldn't get it to work yet. - if (ie && ie_version < 9) { - return false; - } + if (ie && ie_version < 9) { return false } var div = elt('div'); - return 'draggable' in div || 'dragDrop' in div; - })(); + return "draggable" in div || "dragDrop" in div + }(); var zwspSupported; function zeroWidthElement(measure) { if (zwspSupported == null) { - var test = elt('span', '\u200b'); - removeChildrenAndAdd( - measure, - elt('span', [test, document.createTextNode('x')]), - ); - if (measure.firstChild.offsetHeight != 0) { - zwspSupported = - test.offsetWidth <= 1 && - test.offsetHeight > 2 && - !(ie && ie_version < 8); - } - } - var node = zwspSupported - ? elt('span', '\u200b') - : elt( - 'span', - '\u00a0', - null, - 'display: inline-block; width: 1px; margin-right: -1px', - ); - node.setAttribute('cm-text', ''); - return node; + var test = elt("span", "\u200b"); + removeChildrenAndAdd(measure, elt("span", [test, document.createTextNode("x")])); + if (measure.firstChild.offsetHeight != 0) + { zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8); } + } + var node = zwspSupported ? elt("span", "\u200b") : + elt("span", "\u00a0", null, "display: inline-block; width: 1px; margin-right: -1px"); + node.setAttribute("cm-text", ""); + return node } // Feature-detect IE's crummy client rect reporting for bidi text var badBidiRects; function hasBadBidiRects(measure) { - if (badBidiRects != null) { - return badBidiRects; - } - var txt = removeChildrenAndAdd( - measure, - document.createTextNode('A\u062eA'), - ); + if (badBidiRects != null) { return badBidiRects } + var txt = removeChildrenAndAdd(measure, document.createTextNode("A\u062eA")); var r0 = range(txt, 0, 1).getBoundingClientRect(); var r1 = range(txt, 1, 2).getBoundingClientRect(); removeChildren(measure); - if (!r0 || r0.left == r0.right) { - return false; - } // Safari returns null in some cases (#2780) - return (badBidiRects = r1.right - r0.right < 3); + if (!r0 || r0.left == r0.right) { return false } // Safari returns null in some cases (#2780) + return badBidiRects = (r1.right - r0.right < 3) } // See if "".split is the broken IE version, if so, provide an // alternative way to split lines. - var splitLinesAuto = - '\n\nb'.split(/\n/).length != 3 - ? function (string) { - var pos = 0, - result = [], - l = string.length; - while (pos <= l) { - var nl = string.indexOf('\n', pos); - if (nl == -1) { - nl = string.length; - } - var line = string.slice( - pos, - string.charAt(nl - 1) == '\r' ? nl - 1 : nl, - ); - var rt = line.indexOf('\r'); - if (rt != -1) { - result.push(line.slice(0, rt)); - pos += rt + 1; - } else { - result.push(line); - pos = nl + 1; - } - } - return result; - } - : function (string) { - return string.split(/\r\n?|\n/); - }; - - var hasSelection = window.getSelection - ? function (te) { - try { - return te.selectionStart != te.selectionEnd; - } catch (e) { - return false; - } + var splitLinesAuto = "\n\nb".split(/\n/).length != 3 ? function (string) { + var pos = 0, result = [], l = string.length; + while (pos <= l) { + var nl = string.indexOf("\n", pos); + if (nl == -1) { nl = string.length; } + var line = string.slice(pos, string.charAt(nl - 1) == "\r" ? nl - 1 : nl); + var rt = line.indexOf("\r"); + if (rt != -1) { + result.push(line.slice(0, rt)); + pos += rt + 1; + } else { + result.push(line); + pos = nl + 1; } - : function (te) { - var range$$1; - try { - range$$1 = te.ownerDocument.selection.createRange(); - } catch (e) {} - if (!range$$1 || range$$1.parentElement() != te) { - return false; - } - return range$$1.compareEndPoints('StartToEnd', range$$1) != 0; - }; + } + return result + } : function (string) { return string.split(/\r\n?|\n/); }; + + var hasSelection = window.getSelection ? function (te) { + try { return te.selectionStart != te.selectionEnd } + catch(e) { return false } + } : function (te) { + var range; + try {range = te.ownerDocument.selection.createRange();} + catch(e) {} + if (!range || range.parentElement() != te) { return false } + return range.compareEndPoints("StartToEnd", range) != 0 + }; var hasCopyEvent = (function () { - var e = elt('div'); - if ('oncopy' in e) { - return true; - } - e.setAttribute('oncopy', 'return;'); - return typeof e.oncopy == 'function'; + var e = elt("div"); + if ("oncopy" in e) { return true } + e.setAttribute("oncopy", "return;"); + return typeof e.oncopy == "function" })(); var badZoomedRects = null; function hasBadZoomedRects(measure) { - if (badZoomedRects != null) { - return badZoomedRects; - } - var node = removeChildrenAndAdd(measure, elt('span', 'x')); + if (badZoomedRects != null) { return badZoomedRects } + var node = removeChildrenAndAdd(measure, elt("span", "x")); var normal = node.getBoundingClientRect(); var fromRange = range(node, 0, 1).getBoundingClientRect(); - return (badZoomedRects = Math.abs(normal.left - fromRange.left) > 1); + return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1 } // Known modes, by name and by MIME - var modes = {}, - mimeModes = {}; + var modes = {}, mimeModes = {}; // Extra arguments are stored as the mode's dependencies, which is // used by (legacy) mechanisms like loadmode.js to automatically // load a mode. (Preferred mechanism is the require/define calls.) function defineMode(name, mode) { - if (arguments.length > 2) { - mode.dependencies = Array.prototype.slice.call(arguments, 2); - } + if (arguments.length > 2) + { mode.dependencies = Array.prototype.slice.call(arguments, 2); } modes[name] = mode; } @@ -1021,35 +741,20 @@ // Given a MIME type, a {name, ...options} config object, or a name // string, return a mode config object. function resolveMode(spec) { - if (typeof spec == 'string' && mimeModes.hasOwnProperty(spec)) { + if (typeof spec == "string" && mimeModes.hasOwnProperty(spec)) { spec = mimeModes[spec]; - } else if ( - spec && - typeof spec.name == 'string' && - mimeModes.hasOwnProperty(spec.name) - ) { + } else if (spec && typeof spec.name == "string" && mimeModes.hasOwnProperty(spec.name)) { var found = mimeModes[spec.name]; - if (typeof found == 'string') { - found = { name: found }; - } + if (typeof found == "string") { found = {name: found}; } spec = createObj(found, spec); spec.name = found.name; - } else if ( - typeof spec == 'string' && - /^[\w\-]+\/[\w\-]+\+xml$/.test(spec) - ) { - return resolveMode('application/xml'); - } else if ( - typeof spec == 'string' && - /^[\w\-]+\/[\w\-]+\+json$/.test(spec) - ) { - return resolveMode('application/json'); - } - if (typeof spec == 'string') { - return { name: spec }; - } else { - return spec || { name: 'null' }; + } else if (typeof spec == "string" && /^[\w\-]+\/[\w\-]+\+xml$/.test(spec)) { + return resolveMode("application/xml") + } else if (typeof spec == "string" && /^[\w\-]+\/[\w\-]+\+json$/.test(spec)) { + return resolveMode("application/json") } + if (typeof spec == "string") { return {name: spec} } + else { return spec || {name: "null"} } } // Given a mode spec (anything that resolveMode accepts), find and @@ -1057,61 +762,42 @@ function getMode(options, spec) { spec = resolveMode(spec); var mfactory = modes[spec.name]; - if (!mfactory) { - return getMode(options, 'text/plain'); - } + if (!mfactory) { return getMode(options, "text/plain") } var modeObj = mfactory(options, spec); if (modeExtensions.hasOwnProperty(spec.name)) { var exts = modeExtensions[spec.name]; for (var prop in exts) { - if (!exts.hasOwnProperty(prop)) { - continue; - } - if (modeObj.hasOwnProperty(prop)) { - modeObj['_' + prop] = modeObj[prop]; - } + if (!exts.hasOwnProperty(prop)) { continue } + if (modeObj.hasOwnProperty(prop)) { modeObj["_" + prop] = modeObj[prop]; } modeObj[prop] = exts[prop]; } } modeObj.name = spec.name; - if (spec.helperType) { - modeObj.helperType = spec.helperType; - } - if (spec.modeProps) { - for (var prop$1 in spec.modeProps) { - modeObj[prop$1] = spec.modeProps[prop$1]; - } - } + if (spec.helperType) { modeObj.helperType = spec.helperType; } + if (spec.modeProps) { for (var prop$1 in spec.modeProps) + { modeObj[prop$1] = spec.modeProps[prop$1]; } } - return modeObj; + return modeObj } // This can be used to attach properties to mode objects from // outside the actual mode definition. var modeExtensions = {}; function extendMode(mode, properties) { - var exts = modeExtensions.hasOwnProperty(mode) - ? modeExtensions[mode] - : (modeExtensions[mode] = {}); + var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {}); copyObj(properties, exts); } function copyState(mode, state) { - if (state === true) { - return state; - } - if (mode.copyState) { - return mode.copyState(state); - } + if (state === true) { return state } + if (mode.copyState) { return mode.copyState(state) } var nstate = {}; for (var n in state) { var val = state[n]; - if (val instanceof Array) { - val = val.concat([]); - } + if (val instanceof Array) { val = val.concat([]); } nstate[n] = val; } - return nstate; + return nstate } // Given a mode and a state (for that mode), find the inner mode and @@ -1120,17 +806,15 @@ var info; while (mode.innerMode) { info = mode.innerMode(state); - if (!info || info.mode == mode) { - break; - } + if (!info || info.mode == mode) { break } state = info.state; mode = info.mode; } - return info || { mode: mode, state: state }; + return info || {mode: mode, state: state} } function startState(mode, a1, a2) { - return mode.startState ? mode.startState(a1, a2) : true; + return mode.startState ? mode.startState(a1, a2) : true } // STRING STREAM @@ -1138,7 +822,7 @@ // Fed to the mode parsers, provides helper functions to make // parsers more succinct. - var StringStream = function (string, tabSize, lineOracle) { + var StringStream = function(string, tabSize, lineOracle) { this.pos = this.start = 0; this.string = string; this.tabSize = tabSize || 8; @@ -1147,207 +831,131 @@ this.lineOracle = lineOracle; }; - StringStream.prototype.eol = function () { - return this.pos >= this.string.length; - }; - StringStream.prototype.sol = function () { - return this.pos == this.lineStart; - }; - StringStream.prototype.peek = function () { - return this.string.charAt(this.pos) || undefined; - }; + StringStream.prototype.eol = function () {return this.pos >= this.string.length}; + StringStream.prototype.sol = function () {return this.pos == this.lineStart}; + StringStream.prototype.peek = function () {return this.string.charAt(this.pos) || undefined}; StringStream.prototype.next = function () { - if (this.pos < this.string.length) { - return this.string.charAt(this.pos++); - } + if (this.pos < this.string.length) + { return this.string.charAt(this.pos++) } }; StringStream.prototype.eat = function (match) { var ch = this.string.charAt(this.pos); var ok; - if (typeof match == 'string') { - ok = ch == match; - } else { - ok = ch && (match.test ? match.test(ch) : match(ch)); - } - if (ok) { - ++this.pos; - return ch; - } + if (typeof match == "string") { ok = ch == match; } + else { ok = ch && (match.test ? match.test(ch) : match(ch)); } + if (ok) {++this.pos; return ch} }; StringStream.prototype.eatWhile = function (match) { var start = this.pos; - while (this.eat(match)) {} - return this.pos > start; + while (this.eat(match)){} + return this.pos > start }; StringStream.prototype.eatSpace = function () { - var this$1 = this; - var start = this.pos; - while (/[\s\u00a0]/.test(this.string.charAt(this.pos))) { - ++this$1.pos; - } - return this.pos > start; - }; - StringStream.prototype.skipToEnd = function () { - this.pos = this.string.length; + while (/[\s\u00a0]/.test(this.string.charAt(this.pos))) { ++this.pos; } + return this.pos > start }; + StringStream.prototype.skipToEnd = function () {this.pos = this.string.length;}; StringStream.prototype.skipTo = function (ch) { var found = this.string.indexOf(ch, this.pos); - if (found > -1) { - this.pos = found; - return true; - } - }; - StringStream.prototype.backUp = function (n) { - this.pos -= n; + if (found > -1) {this.pos = found; return true} }; + StringStream.prototype.backUp = function (n) {this.pos -= n;}; StringStream.prototype.column = function () { if (this.lastColumnPos < this.start) { - this.lastColumnValue = countColumn( - this.string, - this.start, - this.tabSize, - this.lastColumnPos, - this.lastColumnValue, - ); + this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue); this.lastColumnPos = this.start; } - return ( - this.lastColumnValue - - (this.lineStart - ? countColumn(this.string, this.lineStart, this.tabSize) - : 0) - ); + return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0) }; StringStream.prototype.indentation = function () { - return ( - countColumn(this.string, null, this.tabSize) - - (this.lineStart - ? countColumn(this.string, this.lineStart, this.tabSize) - : 0) - ); + return countColumn(this.string, null, this.tabSize) - + (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0) }; StringStream.prototype.match = function (pattern, consume, caseInsensitive) { - if (typeof pattern == 'string') { - var cased = function (str) { - return caseInsensitive ? str.toLowerCase() : str; - }; + if (typeof pattern == "string") { + var cased = function (str) { return caseInsensitive ? str.toLowerCase() : str; }; var substr = this.string.substr(this.pos, pattern.length); if (cased(substr) == cased(pattern)) { - if (consume !== false) { - this.pos += pattern.length; - } - return true; + if (consume !== false) { this.pos += pattern.length; } + return true } } else { var match = this.string.slice(this.pos).match(pattern); - if (match && match.index > 0) { - return null; - } - if (match && consume !== false) { - this.pos += match[0].length; - } - return match; + if (match && match.index > 0) { return null } + if (match && consume !== false) { this.pos += match[0].length; } + return match } }; - StringStream.prototype.current = function () { - return this.string.slice(this.start, this.pos); - }; + StringStream.prototype.current = function (){return this.string.slice(this.start, this.pos)}; StringStream.prototype.hideFirstChars = function (n, inner) { this.lineStart += n; - try { - return inner(); - } finally { - this.lineStart -= n; - } + try { return inner() } + finally { this.lineStart -= n; } }; StringStream.prototype.lookAhead = function (n) { var oracle = this.lineOracle; - return oracle && oracle.lookAhead(n); + return oracle && oracle.lookAhead(n) }; StringStream.prototype.baseToken = function () { var oracle = this.lineOracle; - return oracle && oracle.baseToken(this.pos); + return oracle && oracle.baseToken(this.pos) }; // Find the line object corresponding to the given line number. function getLine(doc, n) { n -= doc.first; - if (n < 0 || n >= doc.size) { - throw new Error( - 'There is no line ' + (n + doc.first) + ' in the document.', - ); - } + if (n < 0 || n >= doc.size) { throw new Error("There is no line " + (n + doc.first) + " in the document.") } var chunk = doc; while (!chunk.lines) { - for (var i = 0; ; ++i) { - var child = chunk.children[i], - sz = child.chunkSize(); - if (n < sz) { - chunk = child; - break; - } + for (var i = 0;; ++i) { + var child = chunk.children[i], sz = child.chunkSize(); + if (n < sz) { chunk = child; break } n -= sz; } } - return chunk.lines[n]; + return chunk.lines[n] } // Get the part of a document between two positions, as an array of // strings. function getBetween(doc, start, end) { - var out = [], - n = start.line; + var out = [], n = start.line; doc.iter(start.line, end.line + 1, function (line) { var text = line.text; - if (n == end.line) { - text = text.slice(0, end.ch); - } - if (n == start.line) { - text = text.slice(start.ch); - } + if (n == end.line) { text = text.slice(0, end.ch); } + if (n == start.line) { text = text.slice(start.ch); } out.push(text); ++n; }); - return out; + return out } // Get the lines between from and to, as array of strings. function getLines(doc, from, to) { var out = []; - doc.iter(from, to, function (line) { - out.push(line.text); - }); // iter aborts when callback returns truthy value - return out; + doc.iter(from, to, function (line) { out.push(line.text); }); // iter aborts when callback returns truthy value + return out } // Update the height of a line, propagating the height change // upwards to parent nodes. function updateLineHeight(line, height) { var diff = height - line.height; - if (diff) { - for (var n = line; n; n = n.parent) { - n.height += diff; - } - } + if (diff) { for (var n = line; n; n = n.parent) { n.height += diff; } } } // Given a line object, find its line number by walking up through // its parent links. function lineNo(line) { - if (line.parent == null) { - return null; - } - var cur = line.parent, - no = indexOf(cur.lines, line); + if (line.parent == null) { return null } + var cur = line.parent, no = indexOf(cur.lines, line); for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) { - for (var i = 0; ; ++i) { - if (chunk.children[i] == cur) { - break; - } + for (var i = 0;; ++i) { + if (chunk.children[i] == cur) { break } no += chunk.children[i].chunkSize(); } } - return no + cur.first; + return no + cur.first } // Find the line at the given vertical position, using the height @@ -1356,44 +964,33 @@ var n = chunk.first; outer: do { for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) { - var child = chunk.children[i$1], - ch = child.height; - if (h < ch) { - chunk = child; - continue outer; - } + var child = chunk.children[i$1], ch = child.height; + if (h < ch) { chunk = child; continue outer } h -= ch; n += child.chunkSize(); } - return n; - } while (!chunk.lines); + return n + } while (!chunk.lines) var i = 0; for (; i < chunk.lines.length; ++i) { - var line = chunk.lines[i], - lh = line.height; - if (h < lh) { - break; - } + var line = chunk.lines[i], lh = line.height; + if (h < lh) { break } h -= lh; } - return n + i; + return n + i } - function isLine(doc, l) { - return l >= doc.first && l < doc.first + doc.size; - } + function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size} function lineNumberFor(options, i) { - return String(options.lineNumberFormatter(i + options.firstLineNumber)); + return String(options.lineNumberFormatter(i + options.firstLineNumber)) } // A Pos instance represents a position within the text. function Pos(line, ch, sticky) { - if (sticky === void 0) sticky = null; + if ( sticky === void 0 ) sticky = null; - if (!(this instanceof Pos)) { - return new Pos(line, ch, sticky); - } + if (!(this instanceof Pos)) { return new Pos(line, ch, sticky) } this.line = line; this.ch = ch; this.sticky = sticky; @@ -1401,63 +998,41 @@ // Compare two positions, return 0 if they are the same, a negative // number when a is less, and a positive number otherwise. - function cmp(a, b) { - return a.line - b.line || a.ch - b.ch; - } + function cmp(a, b) { return a.line - b.line || a.ch - b.ch } - function equalCursorPos(a, b) { - return a.sticky == b.sticky && cmp(a, b) == 0; - } + function equalCursorPos(a, b) { return a.sticky == b.sticky && cmp(a, b) == 0 } - function copyPos(x) { - return Pos(x.line, x.ch); - } - function maxPos(a, b) { - return cmp(a, b) < 0 ? b : a; - } - function minPos(a, b) { - return cmp(a, b) < 0 ? a : b; - } + function copyPos(x) {return Pos(x.line, x.ch)} + function maxPos(a, b) { return cmp(a, b) < 0 ? b : a } + function minPos(a, b) { return cmp(a, b) < 0 ? a : b } // Most of the external API clips given positions to make sure they // actually exist within the document. - function clipLine(doc, n) { - return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1)); - } + function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1))} function clipPos(doc, pos) { - if (pos.line < doc.first) { - return Pos(doc.first, 0); - } + if (pos.line < doc.first) { return Pos(doc.first, 0) } var last = doc.first + doc.size - 1; - if (pos.line > last) { - return Pos(last, getLine(doc, last).text.length); - } - return clipToLen(pos, getLine(doc, pos.line).text.length); + if (pos.line > last) { return Pos(last, getLine(doc, last).text.length) } + return clipToLen(pos, getLine(doc, pos.line).text.length) } function clipToLen(pos, linelen) { var ch = pos.ch; - if (ch == null || ch > linelen) { - return Pos(pos.line, linelen); - } else if (ch < 0) { - return Pos(pos.line, 0); - } else { - return pos; - } + if (ch == null || ch > linelen) { return Pos(pos.line, linelen) } + else if (ch < 0) { return Pos(pos.line, 0) } + else { return pos } } function clipPosArray(doc, array) { var out = []; - for (var i = 0; i < array.length; i++) { - out[i] = clipPos(doc, array[i]); - } - return out; + for (var i = 0; i < array.length; i++) { out[i] = clipPos(doc, array[i]); } + return out } - var SavedContext = function (state, lookAhead) { + var SavedContext = function(state, lookAhead) { this.state = state; this.lookAhead = lookAhead; }; - var Context = function (doc, state, line, lookAhead) { + var Context = function(doc, state, line, lookAhead) { this.state = state; this.doc = doc; this.line = line; @@ -1468,56 +1043,37 @@ Context.prototype.lookAhead = function (n) { var line = this.doc.getLine(this.line + n); - if (line != null && n > this.maxLookAhead) { - this.maxLookAhead = n; - } - return line; + if (line != null && n > this.maxLookAhead) { this.maxLookAhead = n; } + return line }; Context.prototype.baseToken = function (n) { - var this$1 = this; - - if (!this.baseTokens) { - return null; - } - while (this.baseTokens[this.baseTokenPos] <= n) { - this$1.baseTokenPos += 2; - } + if (!this.baseTokens) { return null } + while (this.baseTokens[this.baseTokenPos] <= n) + { this.baseTokenPos += 2; } var type = this.baseTokens[this.baseTokenPos + 1]; - return { - type: type && type.replace(/( |^)overlay .*/, ''), - size: this.baseTokens[this.baseTokenPos] - n, - }; + return {type: type && type.replace(/( |^)overlay .*/, ""), + size: this.baseTokens[this.baseTokenPos] - n} }; Context.prototype.nextLine = function () { this.line++; - if (this.maxLookAhead > 0) { - this.maxLookAhead--; - } + if (this.maxLookAhead > 0) { this.maxLookAhead--; } }; Context.fromSaved = function (doc, saved, line) { - if (saved instanceof SavedContext) { - return new Context( - doc, - copyState(doc.mode, saved.state), - line, - saved.lookAhead, - ); - } else { - return new Context(doc, copyState(doc.mode, saved), line); - } + if (saved instanceof SavedContext) + { return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead) } + else + { return new Context(doc, copyState(doc.mode, saved), line) } }; Context.prototype.save = function (copy) { - var state = - copy !== false ? copyState(this.doc.mode, this.state) : this.state; - return this.maxLookAhead > 0 - ? new SavedContext(state, this.maxLookAhead) - : state; + var state = copy !== false ? copyState(this.doc.mode, this.state) : this.state; + return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state }; + // Compute a style array (an array starting with a mode generation // -- for invalidation -- followed by pairs of end positions and // style strings), which is used to highlight the tokens on the @@ -1525,128 +1081,79 @@ function highlightLine(cm, line, context, forceToEnd) { // A styles array always starts with a number identifying the // mode/overlays that it is based on (for easy invalidation). - var st = [cm.state.modeGen], - lineClasses = {}; + var st = [cm.state.modeGen], lineClasses = {}; // Compute the base array of styles - runMode( - cm, - line.text, - cm.doc.mode, - context, - function (end, style) { - return st.push(end, style); - }, - lineClasses, - forceToEnd, - ); + runMode(cm, line.text, cm.doc.mode, context, function (end, style) { return st.push(end, style); }, + lineClasses, forceToEnd); var state = context.state; // Run overlays, adjust style array. - var loop = function (o) { + var loop = function ( o ) { context.baseTokens = st; - var overlay = cm.state.overlays[o], - i = 1, - at = 0; + var overlay = cm.state.overlays[o], i = 1, at = 0; context.state = true; - runMode( - cm, - line.text, - overlay.mode, - context, - function (end, style) { - var start = i; - // Ensure there's a token end at the current position, and that i points at it - while (at < end) { - var i_end = st[i]; - if (i_end > end) { - st.splice(i, 1, end, st[i + 1], i_end); - } - i += 2; - at = Math.min(end, i_end); - } - if (!style) { - return; - } - if (overlay.opaque) { - st.splice(start, i - start, end, 'overlay ' + style); - i = start + 2; - } else { - for (; start < i; start += 2) { - var cur = st[start + 1]; - st[start + 1] = (cur ? cur + ' ' : '') + 'overlay ' + style; - } + runMode(cm, line.text, overlay.mode, context, function (end, style) { + var start = i; + // Ensure there's a token end at the current position, and that i points at it + while (at < end) { + var i_end = st[i]; + if (i_end > end) + { st.splice(i, 1, end, st[i+1], i_end); } + i += 2; + at = Math.min(end, i_end); + } + if (!style) { return } + if (overlay.opaque) { + st.splice(start, i - start, end, "overlay " + style); + i = start + 2; + } else { + for (; start < i; start += 2) { + var cur = st[start+1]; + st[start+1] = (cur ? cur + " " : "") + "overlay " + style; } - }, - lineClasses, - ); + } + }, lineClasses); context.state = state; context.baseTokens = null; context.baseTokenPos = 1; }; - for (var o = 0; o < cm.state.overlays.length; ++o) loop(o); + for (var o = 0; o < cm.state.overlays.length; ++o) loop( o ); - return { - styles: st, - classes: - lineClasses.bgClass || lineClasses.textClass ? lineClasses : null, - }; + return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null} } function getLineStyles(cm, line, updateFrontier) { if (!line.styles || line.styles[0] != cm.state.modeGen) { var context = getContextBefore(cm, lineNo(line)); - var resetState = - line.text.length > cm.options.maxHighlightLength && - copyState(cm.doc.mode, context.state); + var resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state); var result = highlightLine(cm, line, context); - if (resetState) { - context.state = resetState; - } + if (resetState) { context.state = resetState; } line.stateAfter = context.save(!resetState); line.styles = result.styles; - if (result.classes) { - line.styleClasses = result.classes; - } else if (line.styleClasses) { - line.styleClasses = null; - } - if (updateFrontier === cm.doc.highlightFrontier) { - cm.doc.modeFrontier = Math.max( - cm.doc.modeFrontier, - ++cm.doc.highlightFrontier, - ); - } + if (result.classes) { line.styleClasses = result.classes; } + else if (line.styleClasses) { line.styleClasses = null; } + if (updateFrontier === cm.doc.highlightFrontier) + { cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier); } } - return line.styles; + return line.styles } function getContextBefore(cm, n, precise) { - var doc = cm.doc, - display = cm.display; - if (!doc.mode.startState) { - return new Context(doc, true, n); - } + var doc = cm.doc, display = cm.display; + if (!doc.mode.startState) { return new Context(doc, true, n) } var start = findStartLine(cm, n, precise); var saved = start > doc.first && getLine(doc, start - 1).stateAfter; - var context = saved - ? Context.fromSaved(doc, saved, start) - : new Context(doc, startState(doc.mode), start); + var context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start); doc.iter(start, n, function (line) { processLine(cm, line.text, context); var pos = context.line; - line.stateAfter = - pos == n - 1 || - pos % 5 == 0 || - (pos >= display.viewFrom && pos < display.viewTo) - ? context.save() - : null; + line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null; context.nextLine(); }); - if (precise) { - doc.modeFrontier = context.line; - } - return context; + if (precise) { doc.modeFrontier = context.line; } + return context } // Lightweight form of highlight -- proceed over this line and @@ -1656,9 +1163,7 @@ var mode = cm.doc.mode; var stream = new StringStream(text, cm.options.tabSize, context); stream.start = stream.pos = startAt || 0; - if (text == '') { - callBlankLine(mode, context.state); - } + if (text == "") { callBlankLine(mode, context.state); } while (!stream.eol()) { readToken(mode, stream, context.state); stream.start = stream.pos; @@ -1666,34 +1171,23 @@ } function callBlankLine(mode, state) { - if (mode.blankLine) { - return mode.blankLine(state); - } - if (!mode.innerMode) { - return; - } + if (mode.blankLine) { return mode.blankLine(state) } + if (!mode.innerMode) { return } var inner = innerMode(mode, state); - if (inner.mode.blankLine) { - return inner.mode.blankLine(inner.state); - } + if (inner.mode.blankLine) { return inner.mode.blankLine(inner.state) } } function readToken(mode, stream, state, inner) { for (var i = 0; i < 10; i++) { - if (inner) { - inner[0] = innerMode(mode, state).mode; - } + if (inner) { inner[0] = innerMode(mode, state).mode; } var style = mode.token(stream, state); - if (stream.pos > stream.start) { - return style; - } + if (stream.pos > stream.start) { return style } } - throw new Error('Mode ' + mode.name + ' failed to advance stream.'); + throw new Error("Mode " + mode.name + " failed to advance stream.") } - var Token = function (stream, type, state) { - this.start = stream.start; - this.end = stream.pos; + var Token = function(stream, type, state) { + this.start = stream.start; this.end = stream.pos; this.string = stream.current(); this.type = type || null; this.state = state; @@ -1701,85 +1195,53 @@ // Utility for getTokenAt and getLineTokens function takeToken(cm, pos, precise, asArray) { - var doc = cm.doc, - mode = doc.mode, - style; + var doc = cm.doc, mode = doc.mode, style; pos = clipPos(doc, pos); - var line = getLine(doc, pos.line), - context = getContextBefore(cm, pos.line, precise); - var stream = new StringStream(line.text, cm.options.tabSize, context), - tokens; - if (asArray) { - tokens = []; - } + var line = getLine(doc, pos.line), context = getContextBefore(cm, pos.line, precise); + var stream = new StringStream(line.text, cm.options.tabSize, context), tokens; + if (asArray) { tokens = []; } while ((asArray || stream.pos < pos.ch) && !stream.eol()) { stream.start = stream.pos; style = readToken(mode, stream, context.state); - if (asArray) { - tokens.push( - new Token(stream, style, copyState(doc.mode, context.state)), - ); - } + if (asArray) { tokens.push(new Token(stream, style, copyState(doc.mode, context.state))); } } - return asArray ? tokens : new Token(stream, style, context.state); + return asArray ? tokens : new Token(stream, style, context.state) } function extractLineClasses(type, output) { - if (type) { - for (;;) { - var lineClass = type.match(/(?:^|\s+)line-(background-)?(\S+)/); - if (!lineClass) { - break; - } - type = - type.slice(0, lineClass.index) + - type.slice(lineClass.index + lineClass[0].length); - var prop = lineClass[1] ? 'bgClass' : 'textClass'; - if (output[prop] == null) { - output[prop] = lineClass[2]; - } else if ( - !new RegExp('(?:^|s)' + lineClass[2] + '(?:$|s)').test(output[prop]) - ) { - output[prop] += ' ' + lineClass[2]; - } - } - } - return type; + if (type) { for (;;) { + var lineClass = type.match(/(?:^|\s+)line-(background-)?(\S+)/); + if (!lineClass) { break } + type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length); + var prop = lineClass[1] ? "bgClass" : "textClass"; + if (output[prop] == null) + { output[prop] = lineClass[2]; } + else if (!(new RegExp("(?:^|\\s)" + lineClass[2] + "(?:$|\\s)")).test(output[prop])) + { output[prop] += " " + lineClass[2]; } + } } + return type } // Run the given mode's parser over a line, calling f for each token. function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) { var flattenSpans = mode.flattenSpans; - if (flattenSpans == null) { - flattenSpans = cm.options.flattenSpans; - } - var curStart = 0, - curStyle = null; - var stream = new StringStream(text, cm.options.tabSize, context), - style; + if (flattenSpans == null) { flattenSpans = cm.options.flattenSpans; } + var curStart = 0, curStyle = null; + var stream = new StringStream(text, cm.options.tabSize, context), style; var inner = cm.options.addModeClass && [null]; - if (text == '') { - extractLineClasses(callBlankLine(mode, context.state), lineClasses); - } + if (text == "") { extractLineClasses(callBlankLine(mode, context.state), lineClasses); } while (!stream.eol()) { if (stream.pos > cm.options.maxHighlightLength) { flattenSpans = false; - if (forceToEnd) { - processLine(cm, text, context, stream.pos); - } + if (forceToEnd) { processLine(cm, text, context, stream.pos); } stream.pos = text.length; style = null; } else { - style = extractLineClasses( - readToken(mode, stream, context.state, inner), - lineClasses, - ); + style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses); } if (inner) { var mName = inner[0].name; - if (mName) { - style = 'm-' + (style ? mName + ' ' + style : mName); - } + if (mName) { style = "m-" + (style ? mName + " " + style : mName); } } if (!flattenSpans || curStyle != style) { while (curStart < stream.start) { @@ -1806,58 +1268,41 @@ // smallest indentation, which tends to need the least context to // parse correctly. function findStartLine(cm, n, precise) { - var minindent, - minline, - doc = cm.doc; + var minindent, minline, doc = cm.doc; var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100); for (var search = n; search > lim; --search) { - if (search <= doc.first) { - return doc.first; - } - var line = getLine(doc, search - 1), - after = line.stateAfter; - if ( - after && - (!precise || - search + (after instanceof SavedContext ? after.lookAhead : 0) <= - doc.modeFrontier) - ) { - return search; - } + if (search <= doc.first) { return doc.first } + var line = getLine(doc, search - 1), after = line.stateAfter; + if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier)) + { return search } var indented = countColumn(line.text, null, cm.options.tabSize); if (minline == null || minindent > indented) { minline = search - 1; minindent = indented; } } - return minline; + return minline } function retreatFrontier(doc, n) { doc.modeFrontier = Math.min(doc.modeFrontier, n); - if (doc.highlightFrontier < n - 10) { - return; - } + if (doc.highlightFrontier < n - 10) { return } var start = doc.first; for (var line = n - 1; line > start; line--) { var saved = getLine(doc, line).stateAfter; // change is on 3 // state on line 1 looked ahead 2 -- so saw 3 // test 1 + 2 < 3 should cover this - if ( - saved && - (!(saved instanceof SavedContext) || line + saved.lookAhead < n) - ) { + if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) { start = line + 1; - break; + break } } doc.highlightFrontier = Math.min(doc.highlightFrontier, start); } // Optimize some code when these features are not used. - var sawReadOnlySpans = false, - sawCollapsedSpans = false; + var sawReadOnlySpans = false, sawCollapsedSpans = false; function seeReadOnlySpans() { sawReadOnlySpans = true; @@ -1871,37 +1316,35 @@ function MarkedSpan(marker, from, to) { this.marker = marker; - this.from = from; - this.to = to; + this.from = from; this.to = to; } // Search an array of spans for a span matching the given marker. function getMarkedSpanFor(spans, marker) { - if (spans) { - for (var i = 0; i < spans.length; ++i) { - var span = spans[i]; - if (span.marker == marker) { - return span; - } - } - } + if (spans) { for (var i = 0; i < spans.length; ++i) { + var span = spans[i]; + if (span.marker == marker) { return span } + } } } + // Remove a span from an array, returning undefined if no spans are // left (we don't store arrays for lines without spans). function removeMarkedSpan(spans, span) { var r; - for (var i = 0; i < spans.length; ++i) { - if (spans[i] != span) { - (r || (r = [])).push(spans[i]); - } - } - return r; + for (var i = 0; i < spans.length; ++i) + { if (spans[i] != span) { (r || (r = [])).push(spans[i]); } } + return r } + // Add a span to a line. - function addMarkedSpan(line, span) { - line.markedSpans = line.markedSpans - ? line.markedSpans.concat([span]) - : [span]; + function addMarkedSpan(line, span, op) { + var inThisOp = op && window.WeakSet && (op.markedSpans || (op.markedSpans = new WeakSet)); + if (inThisOp && line.markedSpans && inThisOp.has(line.markedSpans)) { + line.markedSpans.push(span); + } else { + line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span]; + if (inThisOp) { inThisOp.add(line.markedSpans); } + } span.marker.attachLine(line); } @@ -1911,59 +1354,28 @@ // undefined if nothing remains). function markedSpansBefore(old, startCh, isInsert) { var nw; - if (old) { - for (var i = 0; i < old.length; ++i) { - var span = old[i], - marker = span.marker; - var startsBefore = - span.from == null || - (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh); - if ( - startsBefore || - (span.from == startCh && - marker.type == 'bookmark' && - (!isInsert || !span.marker.insertLeft)) - ) { - var endsAfter = - span.to == null || - (marker.inclusiveRight ? span.to >= startCh : span.to > startCh); - (nw || (nw = [])).push( - new MarkedSpan(marker, span.from, endsAfter ? null : span.to), - ); - } + if (old) { for (var i = 0; i < old.length; ++i) { + var span = old[i], marker = span.marker; + var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh); + if (startsBefore || span.from == startCh && marker.type == "bookmark" && (!isInsert || !span.marker.insertLeft)) { + var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh) + ;(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to)); } - } - return nw; + } } + return nw } function markedSpansAfter(old, endCh, isInsert) { var nw; - if (old) { - for (var i = 0; i < old.length; ++i) { - var span = old[i], - marker = span.marker; - var endsAfter = - span.to == null || - (marker.inclusiveRight ? span.to >= endCh : span.to > endCh); - if ( - endsAfter || - (span.from == endCh && - marker.type == 'bookmark' && - (!isInsert || span.marker.insertLeft)) - ) { - var startsBefore = - span.from == null || - (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh); - (nw || (nw = [])).push( - new MarkedSpan( - marker, - startsBefore ? null : span.from - endCh, - span.to == null ? null : span.to - endCh, - ), - ); - } + if (old) { for (var i = 0; i < old.length; ++i) { + var span = old[i], marker = span.marker; + var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh); + if (endsAfter || span.from == endCh && marker.type == "bookmark" && (!isInsert || span.marker.insertLeft)) { + var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh) + ;(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh, + span.to == null ? null : span.to - endCh)); } - } - return nw; + } } + return nw } // Given a change object, compute the new set of marker spans that @@ -1973,39 +1385,26 @@ // spans partially within the change. Returns an array of span // arrays with one element for each line in (after) the change. function stretchSpansOverChange(doc, change) { - if (change.full) { - return null; - } - var oldFirst = - isLine(doc, change.from.line) && - getLine(doc, change.from.line).markedSpans; - var oldLast = - isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans; - if (!oldFirst && !oldLast) { - return null; - } + if (change.full) { return null } + var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans; + var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans; + if (!oldFirst && !oldLast) { return null } - var startCh = change.from.ch, - endCh = change.to.ch, - isInsert = cmp(change.from, change.to) == 0; + var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0; // Get the spans that 'stick out' on both sides var first = markedSpansBefore(oldFirst, startCh, isInsert); var last = markedSpansAfter(oldLast, endCh, isInsert); // Next, merge those two ends - var sameLine = change.text.length == 1, - offset = lst(change.text).length + (sameLine ? startCh : 0); + var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0); if (first) { // Fix up .to properties of first for (var i = 0; i < first.length; ++i) { var span = first[i]; if (span.to == null) { var found = getMarkedSpanFor(last, span.marker); - if (!found) { - span.to = startCh; - } else if (sameLine) { - span.to = found.to == null ? null : found.to + offset; - } + if (!found) { span.to = startCh; } + else if (sameLine) { span.to = found.to == null ? null : found.to + offset; } } } } @@ -2013,53 +1412,36 @@ // Fix up .from in last (or move them into first in case of sameLine) for (var i$1 = 0; i$1 < last.length; ++i$1) { var span$1 = last[i$1]; - if (span$1.to != null) { - span$1.to += offset; - } + if (span$1.to != null) { span$1.to += offset; } if (span$1.from == null) { var found$1 = getMarkedSpanFor(first, span$1.marker); if (!found$1) { span$1.from = offset; - if (sameLine) { - (first || (first = [])).push(span$1); - } + if (sameLine) { (first || (first = [])).push(span$1); } } } else { span$1.from += offset; - if (sameLine) { - (first || (first = [])).push(span$1); - } + if (sameLine) { (first || (first = [])).push(span$1); } } } } // Make sure we didn't create any zero-length spans - if (first) { - first = clearEmptySpans(first); - } - if (last && last != first) { - last = clearEmptySpans(last); - } + if (first) { first = clearEmptySpans(first); } + if (last && last != first) { last = clearEmptySpans(last); } var newMarkers = [first]; if (!sameLine) { // Fill gap with whole-line-spans - var gap = change.text.length - 2, - gapMarkers; - if (gap > 0 && first) { - for (var i$2 = 0; i$2 < first.length; ++i$2) { - if (first[i$2].to == null) { - (gapMarkers || (gapMarkers = [])).push( - new MarkedSpan(first[i$2].marker, null, null), - ); - } - } - } - for (var i$3 = 0; i$3 < gap; ++i$3) { - newMarkers.push(gapMarkers); - } + var gap = change.text.length - 2, gapMarkers; + if (gap > 0 && first) + { for (var i$2 = 0; i$2 < first.length; ++i$2) + { if (first[i$2].to == null) + { (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null)); } } } + for (var i$3 = 0; i$3 < gap; ++i$3) + { newMarkers.push(gapMarkers); } newMarkers.push(last); } - return newMarkers; + return newMarkers } // Remove spans that are empty and don't have a clearWhenEmpty @@ -2067,191 +1449,118 @@ function clearEmptySpans(spans) { for (var i = 0; i < spans.length; ++i) { var span = spans[i]; - if ( - span.from != null && - span.from == span.to && - span.marker.clearWhenEmpty !== false - ) { - spans.splice(i--, 1); - } + if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false) + { spans.splice(i--, 1); } } - if (!spans.length) { - return null; - } - return spans; + if (!spans.length) { return null } + return spans } // Used to 'clip' out readOnly ranges when making a change. function removeReadOnlyRanges(doc, from, to) { var markers = null; doc.iter(from.line, to.line + 1, function (line) { - if (line.markedSpans) { - for (var i = 0; i < line.markedSpans.length; ++i) { - var mark = line.markedSpans[i].marker; - if (mark.readOnly && (!markers || indexOf(markers, mark) == -1)) { - (markers || (markers = [])).push(mark); - } - } - } + if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) { + var mark = line.markedSpans[i].marker; + if (mark.readOnly && (!markers || indexOf(markers, mark) == -1)) + { (markers || (markers = [])).push(mark); } + } } }); - if (!markers) { - return null; - } - var parts = [{ from: from, to: to }]; + if (!markers) { return null } + var parts = [{from: from, to: to}]; for (var i = 0; i < markers.length; ++i) { - var mk = markers[i], - m = mk.find(0); + var mk = markers[i], m = mk.find(0); for (var j = 0; j < parts.length; ++j) { var p = parts[j]; - if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) { - continue; - } - var newParts = [j, 1], - dfrom = cmp(p.from, m.from), - dto = cmp(p.to, m.to); - if (dfrom < 0 || (!mk.inclusiveLeft && !dfrom)) { - newParts.push({ from: p.from, to: m.from }); - } - if (dto > 0 || (!mk.inclusiveRight && !dto)) { - newParts.push({ from: m.to, to: p.to }); - } + if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) { continue } + var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to); + if (dfrom < 0 || !mk.inclusiveLeft && !dfrom) + { newParts.push({from: p.from, to: m.from}); } + if (dto > 0 || !mk.inclusiveRight && !dto) + { newParts.push({from: m.to, to: p.to}); } parts.splice.apply(parts, newParts); j += newParts.length - 3; } } - return parts; + return parts } // Connect or disconnect spans from a line. function detachMarkedSpans(line) { var spans = line.markedSpans; - if (!spans) { - return; - } - for (var i = 0; i < spans.length; ++i) { - spans[i].marker.detachLine(line); - } + if (!spans) { return } + for (var i = 0; i < spans.length; ++i) + { spans[i].marker.detachLine(line); } line.markedSpans = null; } function attachMarkedSpans(line, spans) { - if (!spans) { - return; - } - for (var i = 0; i < spans.length; ++i) { - spans[i].marker.attachLine(line); - } + if (!spans) { return } + for (var i = 0; i < spans.length; ++i) + { spans[i].marker.attachLine(line); } line.markedSpans = spans; } // Helpers used when computing which overlapping collapsed span // counts as the larger one. - function extraLeft(marker) { - return marker.inclusiveLeft ? -1 : 0; - } - function extraRight(marker) { - return marker.inclusiveRight ? 1 : 0; - } + function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0 } + function extraRight(marker) { return marker.inclusiveRight ? 1 : 0 } // Returns a number indicating which of two overlapping collapsed // spans is larger (and thus includes the other). Falls back to // comparing ids when the spans cover exactly the same range. function compareCollapsedMarkers(a, b) { var lenDiff = a.lines.length - b.lines.length; - if (lenDiff != 0) { - return lenDiff; - } - var aPos = a.find(), - bPos = b.find(); + if (lenDiff != 0) { return lenDiff } + var aPos = a.find(), bPos = b.find(); var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b); - if (fromCmp) { - return -fromCmp; - } + if (fromCmp) { return -fromCmp } var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b); - if (toCmp) { - return toCmp; - } - return b.id - a.id; + if (toCmp) { return toCmp } + return b.id - a.id } // Find out whether a line ends or starts in a collapsed span. If // so, return the marker for that span. function collapsedSpanAtSide(line, start) { - var sps = sawCollapsedSpans && line.markedSpans, - found; - if (sps) { - for (var sp = void 0, i = 0; i < sps.length; ++i) { - sp = sps[i]; - if ( - sp.marker.collapsed && - (start ? sp.from : sp.to) == null && - (!found || compareCollapsedMarkers(found, sp.marker) < 0) - ) { - found = sp.marker; - } - } - } - return found; - } - function collapsedSpanAtStart(line) { - return collapsedSpanAtSide(line, true); - } - function collapsedSpanAtEnd(line) { - return collapsedSpanAtSide(line, false); - } + var sps = sawCollapsedSpans && line.markedSpans, found; + if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) { + sp = sps[i]; + if (sp.marker.collapsed && (start ? sp.from : sp.to) == null && + (!found || compareCollapsedMarkers(found, sp.marker) < 0)) + { found = sp.marker; } + } } + return found + } + function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true) } + function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false) } function collapsedSpanAround(line, ch) { - var sps = sawCollapsedSpans && line.markedSpans, - found; - if (sps) { - for (var i = 0; i < sps.length; ++i) { - var sp = sps[i]; - if ( - sp.marker.collapsed && - (sp.from == null || sp.from < ch) && - (sp.to == null || sp.to > ch) && - (!found || compareCollapsedMarkers(found, sp.marker) < 0) - ) { - found = sp.marker; - } - } - } - return found; + var sps = sawCollapsedSpans && line.markedSpans, found; + if (sps) { for (var i = 0; i < sps.length; ++i) { + var sp = sps[i]; + if (sp.marker.collapsed && (sp.from == null || sp.from < ch) && (sp.to == null || sp.to > ch) && + (!found || compareCollapsedMarkers(found, sp.marker) < 0)) { found = sp.marker; } + } } + return found } // Test whether there exists a collapsed span that partially // overlaps (covers the start or end, but not both) of a new span. // Such overlap is not allowed. - function conflictingCollapsedRange(doc, lineNo$$1, from, to, marker) { - var line = getLine(doc, lineNo$$1); + function conflictingCollapsedRange(doc, lineNo, from, to, marker) { + var line = getLine(doc, lineNo); var sps = sawCollapsedSpans && line.markedSpans; - if (sps) { - for (var i = 0; i < sps.length; ++i) { - var sp = sps[i]; - if (!sp.marker.collapsed) { - continue; - } - var found = sp.marker.find(0); - var fromCmp = - cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker); - var toCmp = - cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker); - if ((fromCmp >= 0 && toCmp <= 0) || (fromCmp <= 0 && toCmp >= 0)) { - continue; - } - if ( - (fromCmp <= 0 && - (sp.marker.inclusiveRight && marker.inclusiveLeft - ? cmp(found.to, from) >= 0 - : cmp(found.to, from) > 0)) || - (fromCmp >= 0 && - (sp.marker.inclusiveRight && marker.inclusiveLeft - ? cmp(found.from, to) <= 0 - : cmp(found.from, to) < 0)) - ) { - return true; - } - } - } + if (sps) { for (var i = 0; i < sps.length; ++i) { + var sp = sps[i]; + if (!sp.marker.collapsed) { continue } + var found = sp.marker.find(0); + var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker); + var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker); + if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) { continue } + if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) || + fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0)) + { return true } + } } } // A visual line is a line as drawn on the screen. Folding, for @@ -2260,57 +1569,46 @@ // given line is part of (usually that is the line itself). function visualLine(line) { var merged; - while ((merged = collapsedSpanAtStart(line))) { - line = merged.find(-1, true).line; - } - return line; + while (merged = collapsedSpanAtStart(line)) + { line = merged.find(-1, true).line; } + return line } function visualLineEnd(line) { var merged; - while ((merged = collapsedSpanAtEnd(line))) { - line = merged.find(1, true).line; - } - return line; + while (merged = collapsedSpanAtEnd(line)) + { line = merged.find(1, true).line; } + return line } // Returns an array of logical lines that continue the visual line // started by the argument, or undefined if there are no such lines. function visualLineContinued(line) { var merged, lines; - while ((merged = collapsedSpanAtEnd(line))) { - line = merged.find(1, true).line; - (lines || (lines = [])).push(line); + while (merged = collapsedSpanAtEnd(line)) { + line = merged.find(1, true).line + ;(lines || (lines = [])).push(line); } - return lines; + return lines } // Get the line number of the start of the visual line that the // given line number is part of. function visualLineNo(doc, lineN) { - var line = getLine(doc, lineN), - vis = visualLine(line); - if (line == vis) { - return lineN; - } - return lineNo(vis); + var line = getLine(doc, lineN), vis = visualLine(line); + if (line == vis) { return lineN } + return lineNo(vis) } // Get the line number of the start of the next visual line after // the given line. function visualLineEndNo(doc, lineN) { - if (lineN > doc.lastLine()) { - return lineN; - } - var line = getLine(doc, lineN), - merged; - if (!lineIsHidden(doc, line)) { - return lineN; - } - while ((merged = collapsedSpanAtEnd(line))) { - line = merged.find(1, true).line; - } - return lineNo(line) + 1; + if (lineN > doc.lastLine()) { return lineN } + var line = getLine(doc, lineN), merged; + if (!lineIsHidden(doc, line)) { return lineN } + while (merged = collapsedSpanAtEnd(line)) + { line = merged.find(1, true).line; } + return lineNo(line) + 1 } // Compute whether a line is hidden. Lines count as hidden when they @@ -2318,52 +1616,28 @@ // they are entirely covered by collapsed, non-widget span. function lineIsHidden(doc, line) { var sps = sawCollapsedSpans && line.markedSpans; - if (sps) { - for (var sp = void 0, i = 0; i < sps.length; ++i) { - sp = sps[i]; - if (!sp.marker.collapsed) { - continue; - } - if (sp.from == null) { - return true; - } - if (sp.marker.widgetNode) { - continue; - } - if ( - sp.from == 0 && - sp.marker.inclusiveLeft && - lineIsHiddenInner(doc, line, sp) - ) { - return true; - } - } - } + if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) { + sp = sps[i]; + if (!sp.marker.collapsed) { continue } + if (sp.from == null) { return true } + if (sp.marker.widgetNode) { continue } + if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp)) + { return true } + } } } function lineIsHiddenInner(doc, line, span) { if (span.to == null) { var end = span.marker.find(1, true); - return lineIsHiddenInner( - doc, - end.line, - getMarkedSpanFor(end.line.markedSpans, span.marker), - ); - } - if (span.marker.inclusiveRight && span.to == line.text.length) { - return true; + return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker)) } - for (var sp = void 0, i = 0; i < line.markedSpans.length; ++i) { + if (span.marker.inclusiveRight && span.to == line.text.length) + { return true } + for (var sp = (void 0), i = 0; i < line.markedSpans.length; ++i) { sp = line.markedSpans[i]; - if ( - sp.marker.collapsed && - !sp.marker.widgetNode && - sp.from == span.to && - (sp.to == null || sp.to != span.from) && - (sp.marker.inclusiveLeft || span.marker.inclusiveRight) && - lineIsHiddenInner(doc, line, sp) - ) { - return true; - } + if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to && + (sp.to == null || sp.to != span.from) && + (sp.marker.inclusiveLeft || span.marker.inclusiveRight) && + lineIsHiddenInner(doc, line, sp)) { return true } } } @@ -2371,58 +1645,46 @@ function heightAtLine(lineObj) { lineObj = visualLine(lineObj); - var h = 0, - chunk = lineObj.parent; + var h = 0, chunk = lineObj.parent; for (var i = 0; i < chunk.lines.length; ++i) { var line = chunk.lines[i]; - if (line == lineObj) { - break; - } else { - h += line.height; - } + if (line == lineObj) { break } + else { h += line.height; } } for (var p = chunk.parent; p; chunk = p, p = chunk.parent) { for (var i$1 = 0; i$1 < p.children.length; ++i$1) { var cur = p.children[i$1]; - if (cur == chunk) { - break; - } else { - h += cur.height; - } + if (cur == chunk) { break } + else { h += cur.height; } } } - return h; + return h } // Compute the character length of a line, taking into account // collapsed ranges (see markText) that might hide parts, and join // other lines onto it. function lineLength(line) { - if (line.height == 0) { - return 0; - } - var len = line.text.length, - merged, - cur = line; - while ((merged = collapsedSpanAtStart(cur))) { + if (line.height == 0) { return 0 } + var len = line.text.length, merged, cur = line; + while (merged = collapsedSpanAtStart(cur)) { var found = merged.find(0, true); cur = found.from.line; len += found.from.ch - found.to.ch; } cur = line; - while ((merged = collapsedSpanAtEnd(cur))) { + while (merged = collapsedSpanAtEnd(cur)) { var found$1 = merged.find(0, true); len -= cur.text.length - found$1.from.ch; cur = found$1.to.line; len += cur.text.length - found$1.to.ch; } - return len; + return len } // Find the longest line in the document. function findMaxLine(cm) { - var d = cm.display, - doc = cm.doc; + var d = cm.display, doc = cm.doc; d.maxLine = getLine(doc, doc.first); d.maxLineLength = lineLength(d.maxLine); d.maxLineChanged = true; @@ -2439,15 +1701,13 @@ // Line objects. These hold state related to a line, including // highlighting info (the styles array). - var Line = function (text, markedSpans, estimateHeight) { + var Line = function(text, markedSpans, estimateHeight) { this.text = text; attachMarkedSpans(this, markedSpans); this.height = estimateHeight ? estimateHeight(this) : 1; }; - Line.prototype.lineNo = function () { - return lineNo(this); - }; + Line.prototype.lineNo = function () { return lineNo(this) }; eventMixin(Line); // Change the content (text, markers) of a line. Automatically @@ -2455,21 +1715,13 @@ // line's height. function updateLine(line, text, markedSpans, estimateHeight) { line.text = text; - if (line.stateAfter) { - line.stateAfter = null; - } - if (line.styles) { - line.styles = null; - } - if (line.order != null) { - line.order = null; - } + if (line.stateAfter) { line.stateAfter = null; } + if (line.styles) { line.styles = null; } + if (line.order != null) { line.order = null; } detachMarkedSpans(line); attachMarkedSpans(line, markedSpans); var estHeight = estimateHeight ? estimateHeight(line) : 1; - if (estHeight != line.height) { - updateLineHeight(line, estHeight); - } + if (estHeight != line.height) { updateLineHeight(line, estHeight); } } // Detach a line from the document tree and its markers. @@ -2481,16 +1733,12 @@ // Convert a style as returned by a mode (either null, or a string // containing one or more styles) to a CSS style. This is cached, // and also looks for line-wide styles. - var styleToClassCache = {}, - styleToClassCacheWithMode = {}; + var styleToClassCache = {}, styleToClassCacheWithMode = {}; function interpretTokenStyle(style, options) { - if (!style || /^\s*$/.test(style)) { - return null; - } - var cache = options.addModeClass - ? styleToClassCacheWithMode - : styleToClassCache; - return cache[style] || (cache[style] = style.replace(/\S+/g, 'cm-$&')); + if (!style || /^\s*$/.test(style)) { return null } + var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache; + return cache[style] || + (cache[style] = style.replace(/\S+/g, "cm-$&")) } // Render the DOM representation of the text of a line. Also builds @@ -2502,137 +1750,79 @@ // The padding-right forces the element to have a 'border', which // is needed on Webkit to be able to get line-level bounding // rectangles for it (in measureChar). - var content = eltP( - 'span', - null, - null, - webkit ? 'padding-right: .1px' : null, - ); - var builder = { - pre: eltP('pre', [content], 'CodeMirror-line'), - content: content, - col: 0, - pos: 0, - cm: cm, - trailingSpace: false, - splitSpaces: cm.getOption('lineWrapping'), - }; + var content = eltP("span", null, null, webkit ? "padding-right: .1px" : null); + var builder = {pre: eltP("pre", [content], "CodeMirror-line"), content: content, + col: 0, pos: 0, cm: cm, + trailingSpace: false, + splitSpaces: cm.getOption("lineWrapping")}; lineView.measure = {}; // Iterate over the logical lines that make up this visual line. for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) { - var line = i ? lineView.rest[i - 1] : lineView.line, - order = void 0; + var line = i ? lineView.rest[i - 1] : lineView.line, order = (void 0); builder.pos = 0; builder.addToken = buildToken; // Optionally wire in some hacks into the token-rendering // algorithm, to deal with browser quirks. - if ( - hasBadBidiRects(cm.display.measure) && - (order = getOrder(line, cm.doc.direction)) - ) { - builder.addToken = buildTokenBadBidi(builder.addToken, order); - } + if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction))) + { builder.addToken = buildTokenBadBidi(builder.addToken, order); } builder.map = []; - var allowFrontierUpdate = - lineView != cm.display.externalMeasured && lineNo(line); - insertLineContent( - line, - builder, - getLineStyles(cm, line, allowFrontierUpdate), - ); + var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line); + insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate)); if (line.styleClasses) { - if (line.styleClasses.bgClass) { - builder.bgClass = joinClasses( - line.styleClasses.bgClass, - builder.bgClass || '', - ); - } - if (line.styleClasses.textClass) { - builder.textClass = joinClasses( - line.styleClasses.textClass, - builder.textClass || '', - ); - } + if (line.styleClasses.bgClass) + { builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || ""); } + if (line.styleClasses.textClass) + { builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || ""); } } // Ensure at least a single node is present, for measuring. - if (builder.map.length == 0) { - builder.map.push( - 0, - 0, - builder.content.appendChild(zeroWidthElement(cm.display.measure)), - ); - } + if (builder.map.length == 0) + { builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))); } // Store the map and a cache object for the current logical line if (i == 0) { lineView.measure.map = builder.map; lineView.measure.cache = {}; } else { - (lineView.measure.maps || (lineView.measure.maps = [])).push( - builder.map, - ); - (lineView.measure.caches || (lineView.measure.caches = [])).push({}); + (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map) + ;(lineView.measure.caches || (lineView.measure.caches = [])).push({}); } } // See issue #2901 if (webkit) { var last = builder.content.lastChild; - if ( - /\bcm-tab\b/.test(last.className) || - (last.querySelector && last.querySelector('.cm-tab')) - ) { - builder.content.className = 'cm-tab-wrap-hack'; - } + if (/\bcm-tab\b/.test(last.className) || (last.querySelector && last.querySelector(".cm-tab"))) + { builder.content.className = "cm-tab-wrap-hack"; } } - signal(cm, 'renderLine', cm, lineView.line, builder.pre); - if (builder.pre.className) { - builder.textClass = joinClasses( - builder.pre.className, - builder.textClass || '', - ); - } + signal(cm, "renderLine", cm, lineView.line, builder.pre); + if (builder.pre.className) + { builder.textClass = joinClasses(builder.pre.className, builder.textClass || ""); } - return builder; + return builder } function defaultSpecialCharPlaceholder(ch) { - var token = elt('span', '\u2022', 'cm-invalidchar'); - token.title = '\\u' + ch.charCodeAt(0).toString(16); - token.setAttribute('aria-label', token.title); - return token; + var token = elt("span", "\u2022", "cm-invalidchar"); + token.title = "\\u" + ch.charCodeAt(0).toString(16); + token.setAttribute("aria-label", token.title); + return token } // Build up the DOM representation for a single token, and add it to // the line map. Takes care to render special characters separately. - function buildToken( - builder, - text, - style, - startStyle, - endStyle, - css, - attributes, - ) { - if (!text) { - return; - } - var displayText = builder.splitSpaces - ? splitSpaces(text, builder.trailingSpace) - : text; - var special = builder.cm.state.specialChars, - mustWrap = false; + function buildToken(builder, text, style, startStyle, endStyle, css, attributes) { + if (!text) { return } + var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text; + var special = builder.cm.state.specialChars, mustWrap = false; var content; if (!special.test(text)) { builder.col += text.length; content = document.createTextNode(displayText); builder.map.push(builder.pos, builder.pos + text.length, content); - if (ie && ie_version < 9) { - mustWrap = true; - } + if (ie && ie_version < 9) { mustWrap = true; } builder.pos += text.length; } else { content = document.createDocumentFragment(); @@ -2642,46 +1832,31 @@ var m = special.exec(text); var skipped = m ? m.index - pos : text.length - pos; if (skipped) { - var txt = document.createTextNode( - displayText.slice(pos, pos + skipped), - ); - if (ie && ie_version < 9) { - content.appendChild(elt('span', [txt])); - } else { - content.appendChild(txt); - } + var txt = document.createTextNode(displayText.slice(pos, pos + skipped)); + if (ie && ie_version < 9) { content.appendChild(elt("span", [txt])); } + else { content.appendChild(txt); } builder.map.push(builder.pos, builder.pos + skipped, txt); builder.col += skipped; builder.pos += skipped; } - if (!m) { - break; - } + if (!m) { break } pos += skipped + 1; - var txt$1 = void 0; - if (m[0] == '\t') { - var tabSize = builder.cm.options.tabSize, - tabWidth = tabSize - (builder.col % tabSize); - txt$1 = content.appendChild( - elt('span', spaceStr(tabWidth), 'cm-tab'), - ); - txt$1.setAttribute('role', 'presentation'); - txt$1.setAttribute('cm-text', '\t'); + var txt$1 = (void 0); + if (m[0] == "\t") { + var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize; + txt$1 = content.appendChild(elt("span", spaceStr(tabWidth), "cm-tab")); + txt$1.setAttribute("role", "presentation"); + txt$1.setAttribute("cm-text", "\t"); builder.col += tabWidth; - } else if (m[0] == '\r' || m[0] == '\n') { - txt$1 = content.appendChild( - elt('span', m[0] == '\r' ? '\u240d' : '\u2424', 'cm-invalidchar'), - ); - txt$1.setAttribute('cm-text', m[0]); + } else if (m[0] == "\r" || m[0] == "\n") { + txt$1 = content.appendChild(elt("span", m[0] == "\r" ? "\u240d" : "\u2424", "cm-invalidchar")); + txt$1.setAttribute("cm-text", m[0]); builder.col += 1; } else { txt$1 = builder.cm.options.specialCharPlaceholder(m[0]); - txt$1.setAttribute('cm-text', m[0]); - if (ie && ie_version < 9) { - content.appendChild(elt('span', [txt$1])); - } else { - content.appendChild(txt$1); - } + txt$1.setAttribute("cm-text", m[0]); + if (ie && ie_version < 9) { content.appendChild(elt("span", [txt$1])); } + else { content.appendChild(txt$1); } builder.col += 1; } builder.map.push(builder.pos, builder.pos + 1, txt$1); @@ -2689,27 +1864,16 @@ } } builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32; - if (style || startStyle || endStyle || mustWrap || css) { - var fullStyle = style || ''; - if (startStyle) { - fullStyle += startStyle; - } - if (endStyle) { - fullStyle += endStyle; - } - var token = elt('span', [content], fullStyle, css); + if (style || startStyle || endStyle || mustWrap || css || attributes) { + var fullStyle = style || ""; + if (startStyle) { fullStyle += startStyle; } + if (endStyle) { fullStyle += endStyle; } + var token = elt("span", [content], fullStyle, css); if (attributes) { - for (var attr in attributes) { - if ( - attributes.hasOwnProperty(attr) && - attr != 'style' && - attr != 'class' - ) { - token.setAttribute(attr, attributes[attr]); - } - } + for (var attr in attributes) { if (attributes.hasOwnProperty(attr) && attr != "style" && attr != "class") + { token.setAttribute(attr, attributes[attr]); } } } - return builder.content.appendChild(token); + return builder.content.appendChild(token) } builder.content.appendChild(content); } @@ -2717,87 +1881,47 @@ // Change some spaces to NBSP to prevent the browser from collapsing // trailing spaces at the end of a line when rendering text (issue #1362). function splitSpaces(text, trailingBefore) { - if (text.length > 1 && !/ /.test(text)) { - return text; - } - var spaceBefore = trailingBefore, - result = ''; + if (text.length > 1 && !/ /.test(text)) { return text } + var spaceBefore = trailingBefore, result = ""; for (var i = 0; i < text.length; i++) { var ch = text.charAt(i); - if ( - ch == ' ' && - spaceBefore && - (i == text.length - 1 || text.charCodeAt(i + 1) == 32) - ) { - ch = '\u00a0'; - } + if (ch == " " && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32)) + { ch = "\u00a0"; } result += ch; - spaceBefore = ch == ' '; + spaceBefore = ch == " "; } - return result; + return result } // Work around nonsense dimensions being reported for stretches of // right-to-left text. function buildTokenBadBidi(inner, order) { - return function ( - builder, - text, - style, - startStyle, - endStyle, - css, - attributes, - ) { - style = style ? style + ' cm-force-border' : 'cm-force-border'; - var start = builder.pos, - end = start + text.length; + return function (builder, text, style, startStyle, endStyle, css, attributes) { + style = style ? style + " cm-force-border" : "cm-force-border"; + var start = builder.pos, end = start + text.length; for (;;) { // Find the part that overlaps with the start of this text - var part = void 0; + var part = (void 0); for (var i = 0; i < order.length; i++) { part = order[i]; - if (part.to > start && part.from <= start) { - break; - } + if (part.to > start && part.from <= start) { break } } - if (part.to >= end) { - return inner( - builder, - text, - style, - startStyle, - endStyle, - css, - attributes, - ); - } - inner( - builder, - text.slice(0, part.to - start), - style, - startStyle, - null, - css, - attributes, - ); + if (part.to >= end) { return inner(builder, text, style, startStyle, endStyle, css, attributes) } + inner(builder, text.slice(0, part.to - start), style, startStyle, null, css, attributes); startStyle = null; text = text.slice(part.to - start); start = part.to; } - }; + } } function buildCollapsedSpan(builder, size, marker, ignoreWidget) { var widget = !ignoreWidget && marker.widgetNode; - if (widget) { - builder.map.push(builder.pos, builder.pos + size, widget); - } + if (widget) { builder.map.push(builder.pos, builder.pos + size, widget); } if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) { - if (!widget) { - widget = builder.content.appendChild(document.createElement('span')); - } - widget.setAttribute('cm-marker', marker.id); + if (!widget) + { widget = builder.content.appendChild(document.createElement("span")); } + widget.setAttribute("cm-marker", marker.id); } if (widget) { builder.cm.display.input.setUneditable(widget); @@ -2810,119 +1934,60 @@ // Outputs a number of spans to make up a line, taking highlighting // and marked text into account. function insertLineContent(line, builder, styles) { - var spans = line.markedSpans, - allText = line.text, - at = 0; + var spans = line.markedSpans, allText = line.text, at = 0; if (!spans) { - for (var i$1 = 1; i$1 < styles.length; i$1 += 2) { - builder.addToken( - builder, - allText.slice(at, (at = styles[i$1])), - interpretTokenStyle(styles[i$1 + 1], builder.cm.options), - ); - } - return; - } - - var len = allText.length, - pos = 0, - i = 1, - text = '', - style, - css; - var nextChange = 0, - spanStyle, - spanEndStyle, - spanStartStyle, - collapsed, - attributes; + for (var i$1 = 1; i$1 < styles.length; i$1+=2) + { builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1+1], builder.cm.options)); } + return + } + + var len = allText.length, pos = 0, i = 1, text = "", style, css; + var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, collapsed, attributes; for (;;) { - if (nextChange == pos) { - // Update current marker set - spanStyle = spanEndStyle = spanStartStyle = css = ''; + if (nextChange == pos) { // Update current marker set + spanStyle = spanEndStyle = spanStartStyle = css = ""; attributes = null; - collapsed = null; - nextChange = Infinity; - var foundBookmarks = [], - endStyles = void 0; + collapsed = null; nextChange = Infinity; + var foundBookmarks = [], endStyles = (void 0); for (var j = 0; j < spans.length; ++j) { - var sp = spans[j], - m = sp.marker; - if (m.type == 'bookmark' && sp.from == pos && m.widgetNode) { + var sp = spans[j], m = sp.marker; + if (m.type == "bookmark" && sp.from == pos && m.widgetNode) { foundBookmarks.push(m); - } else if ( - sp.from <= pos && - (sp.to == null || - sp.to > pos || - (m.collapsed && sp.to == pos && sp.from == pos)) - ) { + } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) { if (sp.to != null && sp.to != pos && nextChange > sp.to) { nextChange = sp.to; - spanEndStyle = ''; - } - if (m.className) { - spanStyle += ' ' + m.className; - } - if (m.css) { - css = (css ? css + ';' : '') + m.css; - } - if (m.startStyle && sp.from == pos) { - spanStartStyle += ' ' + m.startStyle; - } - if (m.endStyle && sp.to == nextChange) { - (endStyles || (endStyles = [])).push(m.endStyle, sp.to); + spanEndStyle = ""; } + if (m.className) { spanStyle += " " + m.className; } + if (m.css) { css = (css ? css + ";" : "") + m.css; } + if (m.startStyle && sp.from == pos) { spanStartStyle += " " + m.startStyle; } + if (m.endStyle && sp.to == nextChange) { (endStyles || (endStyles = [])).push(m.endStyle, sp.to); } // support for the old title property // https://github.com/codemirror/CodeMirror/pull/5673 - if (m.title) { - (attributes || (attributes = {})).title = m.title; - } + if (m.title) { (attributes || (attributes = {})).title = m.title; } if (m.attributes) { - for (var attr in m.attributes) { - (attributes || (attributes = {}))[attr] = m.attributes[attr]; - } - } - if ( - m.collapsed && - (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0) - ) { - collapsed = sp; + for (var attr in m.attributes) + { (attributes || (attributes = {}))[attr] = m.attributes[attr]; } } + if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0)) + { collapsed = sp; } } else if (sp.from > pos && nextChange > sp.from) { nextChange = sp.from; } } - if (endStyles) { - for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2) { - if (endStyles[j$1 + 1] == nextChange) { - spanEndStyle += ' ' + endStyles[j$1]; - } - } - } + if (endStyles) { for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2) + { if (endStyles[j$1 + 1] == nextChange) { spanEndStyle += " " + endStyles[j$1]; } } } - if (!collapsed || collapsed.from == pos) { - for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2) { - buildCollapsedSpan(builder, 0, foundBookmarks[j$2]); - } - } + if (!collapsed || collapsed.from == pos) { for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2) + { buildCollapsedSpan(builder, 0, foundBookmarks[j$2]); } } if (collapsed && (collapsed.from || 0) == pos) { - buildCollapsedSpan( - builder, - (collapsed.to == null ? len + 1 : collapsed.to) - pos, - collapsed.marker, - collapsed.from == null, - ); - if (collapsed.to == null) { - return; - } - if (collapsed.to == pos) { - collapsed = false; - } + buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos, + collapsed.marker, collapsed.from == null); + if (collapsed.to == null) { return } + if (collapsed.to == pos) { collapsed = false; } } } - if (pos >= len) { - break; - } + if (pos >= len) { break } var upto = Math.min(len, nextChange); while (true) { @@ -2930,30 +1995,20 @@ var end = pos + text.length; if (!collapsed) { var tokenText = end > upto ? text.slice(0, upto - pos) : text; - builder.addToken( - builder, - tokenText, - style ? style + spanStyle : spanStyle, - spanStartStyle, - pos + tokenText.length == nextChange ? spanEndStyle : '', - css, - attributes, - ); - } - if (end >= upto) { - text = text.slice(upto - pos); - pos = upto; - break; + builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle, + spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : "", css, attributes); } + if (end >= upto) {text = text.slice(upto - pos); pos = upto; break} pos = end; - spanStartStyle = ''; + spanStartStyle = ""; } - text = allText.slice(at, (at = styles[i++])); + text = allText.slice(at, at = styles[i++]); style = interpretTokenStyle(styles[i++], builder.cm.options); } } } + // These objects are used to represent the visible (currently drawn) // part of the document. A LineView may correspond to multiple // logical lines, if those are connected by collapsed ranges. @@ -2970,14 +2025,13 @@ // Create a range of LineView objects for the given lines. function buildViewArray(cm, from, to) { - var array = [], - nextPos; + var array = [], nextPos; for (var pos = from; pos < to; pos = nextPos) { var view = new LineView(cm.doc, getLine(cm.doc, pos), pos); nextPos = pos + view.size; array.push(view); } - return array; + return array } var operationGroup = null; @@ -2988,7 +2042,7 @@ } else { op.ownsGroup = operationGroup = { ops: [op], - delayedCallbacks: [], + delayedCallbacks: [] }; } } @@ -2996,35 +2050,25 @@ function fireCallbacksForOps(group) { // Calls delayed callbacks and cursorActivity handlers until no // new ones appear - var callbacks = group.delayedCallbacks, - i = 0; + var callbacks = group.delayedCallbacks, i = 0; do { - for (; i < callbacks.length; i++) { - callbacks[i].call(null); - } + for (; i < callbacks.length; i++) + { callbacks[i].call(null); } for (var j = 0; j < group.ops.length; j++) { var op = group.ops[j]; - if (op.cursorActivityHandlers) { - while (op.cursorActivityCalled < op.cursorActivityHandlers.length) { - op.cursorActivityHandlers[op.cursorActivityCalled++].call( - null, - op.cm, - ); - } - } + if (op.cursorActivityHandlers) + { while (op.cursorActivityCalled < op.cursorActivityHandlers.length) + { op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm); } } } - } while (i < callbacks.length); + } while (i < callbacks.length) } function finishOperation(op, endCb) { var group = op.ownsGroup; - if (!group) { - return; - } + if (!group) { return } - try { - fireCallbacksForOps(group); - } finally { + try { fireCallbacksForOps(group); } + finally { operationGroup = null; endCb(group); } @@ -3041,11 +2085,8 @@ // operation is active, when a timeout fires. function signalLater(emitter, type /*, values...*/) { var arr = getHandlers(emitter, type); - if (!arr.length) { - return; - } - var args = Array.prototype.slice.call(arguments, 2), - list; + if (!arr.length) { return } + var args = Array.prototype.slice.call(arguments, 2), list; if (operationGroup) { list = operationGroup.delayedCallbacks; } else if (orphanDelayedCallbacks) { @@ -3054,21 +2095,18 @@ list = orphanDelayedCallbacks = []; setTimeout(fireOrphanDelayed, 0); } - var loop = function (i) { - list.push(function () { - return arr[i].apply(null, args); - }); + var loop = function ( i ) { + list.push(function () { return arr[i].apply(null, args); }); }; - for (var i = 0; i < arr.length; ++i) loop(i); + for (var i = 0; i < arr.length; ++i) + loop( i ); } function fireOrphanDelayed() { var delayed = orphanDelayedCallbacks; orphanDelayedCallbacks = null; - for (var i = 0; i < delayed.length; ++i) { - delayed[i](); - } + for (var i = 0; i < delayed.length; ++i) { delayed[i](); } } // When an aspect of a line changes, a string is added to @@ -3077,15 +2115,10 @@ function updateLineForChanges(cm, lineView, lineN, dims) { for (var j = 0; j < lineView.changes.length; j++) { var type = lineView.changes[j]; - if (type == 'text') { - updateLineText(cm, lineView); - } else if (type == 'gutter') { - updateLineGutter(cm, lineView, lineN, dims); - } else if (type == 'class') { - updateLineClasses(cm, lineView); - } else if (type == 'widget') { - updateLineWidgets(cm, lineView, dims); - } + if (type == "text") { updateLineText(cm, lineView); } + else if (type == "gutter") { updateLineGutter(cm, lineView, lineN, dims); } + else if (type == "class") { updateLineClasses(cm, lineView); } + else if (type == "widget") { updateLineWidgets(cm, lineView, dims); } } lineView.changes = null; } @@ -3094,38 +2127,24 @@ // be wrapped, and have the extra elements added to the wrapper div function ensureLineWrapped(lineView) { if (lineView.node == lineView.text) { - lineView.node = elt('div', null, null, 'position: relative'); - if (lineView.text.parentNode) { - lineView.text.parentNode.replaceChild(lineView.node, lineView.text); - } + lineView.node = elt("div", null, null, "position: relative"); + if (lineView.text.parentNode) + { lineView.text.parentNode.replaceChild(lineView.node, lineView.text); } lineView.node.appendChild(lineView.text); - if (ie && ie_version < 8) { - lineView.node.style.zIndex = 2; - } + if (ie && ie_version < 8) { lineView.node.style.zIndex = 2; } } - return lineView.node; + return lineView.node } function updateLineBackground(cm, lineView) { - var cls = lineView.bgClass - ? lineView.bgClass + ' ' + (lineView.line.bgClass || '') - : lineView.line.bgClass; - if (cls) { - cls += ' CodeMirror-linebackground'; - } + var cls = lineView.bgClass ? lineView.bgClass + " " + (lineView.line.bgClass || "") : lineView.line.bgClass; + if (cls) { cls += " CodeMirror-linebackground"; } if (lineView.background) { - if (cls) { - lineView.background.className = cls; - } else { - lineView.background.parentNode.removeChild(lineView.background); - lineView.background = null; - } + if (cls) { lineView.background.className = cls; } + else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; } } else if (cls) { var wrap = ensureLineWrapped(lineView); - lineView.background = wrap.insertBefore( - elt('div', null, cls), - wrap.firstChild, - ); + lineView.background = wrap.insertBefore(elt("div", null, cls), wrap.firstChild); cm.display.input.setUneditable(lineView.background); } } @@ -3137,9 +2156,9 @@ if (ext && ext.line == lineView.line) { cm.display.externalMeasured = null; lineView.measure = ext.measure; - return ext.built; + return ext.built } - return buildLineContent(cm, lineView); + return buildLineContent(cm, lineView) } // Redraw the line's text. Interacts with the background and text @@ -3148,15 +2167,10 @@ function updateLineText(cm, lineView) { var cls = lineView.text.className; var built = getLineContent(cm, lineView); - if (lineView.text == lineView.node) { - lineView.node = built.pre; - } + if (lineView.text == lineView.node) { lineView.node = built.pre; } lineView.text.parentNode.replaceChild(built.pre, lineView.text); lineView.text = built.pre; - if ( - built.bgClass != lineView.bgClass || - built.textClass != lineView.textClass - ) { + if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) { lineView.bgClass = built.bgClass; lineView.textClass = built.textClass; updateLineClasses(cm, lineView); @@ -3167,15 +2181,12 @@ function updateLineClasses(cm, lineView) { updateLineBackground(cm, lineView); - if (lineView.line.wrapClass) { - ensureLineWrapped(lineView).className = lineView.line.wrapClass; - } else if (lineView.node != lineView.text) { - lineView.node.className = ''; - } - var textClass = lineView.textClass - ? lineView.textClass + ' ' + (lineView.line.textClass || '') - : lineView.line.textClass; - lineView.text.className = textClass || ''; + if (lineView.line.wrapClass) + { ensureLineWrapped(lineView).className = lineView.line.wrapClass; } + else if (lineView.node != lineView.text) + { lineView.node.className = ""; } + var textClass = lineView.textClass ? lineView.textClass + " " + (lineView.line.textClass || "") : lineView.line.textClass; + lineView.text.className = textClass || ""; } function updateLineGutter(cm, lineView, lineN, dims) { @@ -3189,89 +2200,40 @@ } if (lineView.line.gutterClass) { var wrap = ensureLineWrapped(lineView); - lineView.gutterBackground = elt( - 'div', - null, - 'CodeMirror-gutter-background ' + lineView.line.gutterClass, - 'left: ' + - (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + - 'px; width: ' + - dims.gutterTotalWidth + - 'px', - ); + lineView.gutterBackground = elt("div", null, "CodeMirror-gutter-background " + lineView.line.gutterClass, + ("left: " + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + "px; width: " + (dims.gutterTotalWidth) + "px")); cm.display.input.setUneditable(lineView.gutterBackground); wrap.insertBefore(lineView.gutterBackground, lineView.text); } var markers = lineView.line.gutterMarkers; if (cm.options.lineNumbers || markers) { var wrap$1 = ensureLineWrapped(lineView); - var gutterWrap = (lineView.gutter = elt( - 'div', - null, - 'CodeMirror-gutter-wrapper', - 'left: ' + - (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + - 'px', - )); + var gutterWrap = lineView.gutter = elt("div", null, "CodeMirror-gutter-wrapper", ("left: " + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + "px")); + gutterWrap.setAttribute("aria-hidden", "true"); cm.display.input.setUneditable(gutterWrap); wrap$1.insertBefore(gutterWrap, lineView.text); - if (lineView.line.gutterClass) { - gutterWrap.className += ' ' + lineView.line.gutterClass; - } - if ( - cm.options.lineNumbers && - (!markers || !markers['CodeMirror-linenumbers']) - ) { - lineView.lineNumber = gutterWrap.appendChild( - elt( - 'div', - lineNumberFor(cm.options, lineN), - 'CodeMirror-linenumber CodeMirror-gutter-elt', - 'left: ' + - dims.gutterLeft['CodeMirror-linenumbers'] + - 'px; width: ' + - cm.display.lineNumInnerWidth + - 'px', - ), - ); - } - if (markers) { - for (var k = 0; k < cm.display.gutterSpecs.length; ++k) { - var id = cm.display.gutterSpecs[k].className, - found = markers.hasOwnProperty(id) && markers[id]; - if (found) { - gutterWrap.appendChild( - elt( - 'div', - [found], - 'CodeMirror-gutter-elt', - 'left: ' + - dims.gutterLeft[id] + - 'px; width: ' + - dims.gutterWidth[id] + - 'px', - ), - ); - } - } - } + if (lineView.line.gutterClass) + { gutterWrap.className += " " + lineView.line.gutterClass; } + if (cm.options.lineNumbers && (!markers || !markers["CodeMirror-linenumbers"])) + { lineView.lineNumber = gutterWrap.appendChild( + elt("div", lineNumberFor(cm.options, lineN), + "CodeMirror-linenumber CodeMirror-gutter-elt", + ("left: " + (dims.gutterLeft["CodeMirror-linenumbers"]) + "px; width: " + (cm.display.lineNumInnerWidth) + "px"))); } + if (markers) { for (var k = 0; k < cm.display.gutterSpecs.length; ++k) { + var id = cm.display.gutterSpecs[k].className, found = markers.hasOwnProperty(id) && markers[id]; + if (found) + { gutterWrap.appendChild(elt("div", [found], "CodeMirror-gutter-elt", + ("left: " + (dims.gutterLeft[id]) + "px; width: " + (dims.gutterWidth[id]) + "px"))); } + } } } } function updateLineWidgets(cm, lineView, dims) { - if (lineView.alignable) { - lineView.alignable = null; - } - var isWidget = classTest('CodeMirror-linewidget'); - for ( - var node = lineView.node.firstChild, next = void 0; - node; - node = next - ) { + if (lineView.alignable) { lineView.alignable = null; } + var isWidget = classTest("CodeMirror-linewidget"); + for (var node = lineView.node.firstChild, next = (void 0); node; node = next) { next = node.nextSibling; - if (isWidget.test(node.className)) { - lineView.node.removeChild(node); - } + if (isWidget.test(node.className)) { lineView.node.removeChild(node); } } insertLineWidgets(cm, lineView, dims); } @@ -3280,156 +2242,100 @@ function buildLineElement(cm, lineView, lineN, dims) { var built = getLineContent(cm, lineView); lineView.text = lineView.node = built.pre; - if (built.bgClass) { - lineView.bgClass = built.bgClass; - } - if (built.textClass) { - lineView.textClass = built.textClass; - } + if (built.bgClass) { lineView.bgClass = built.bgClass; } + if (built.textClass) { lineView.textClass = built.textClass; } updateLineClasses(cm, lineView); updateLineGutter(cm, lineView, lineN, dims); insertLineWidgets(cm, lineView, dims); - return lineView.node; + return lineView.node } // A lineView may contain multiple logical lines (when merged by // collapsed spans). The widgets for all of them need to be drawn. function insertLineWidgets(cm, lineView, dims) { insertLineWidgetsFor(cm, lineView.line, lineView, dims, true); - if (lineView.rest) { - for (var i = 0; i < lineView.rest.length; i++) { - insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false); - } - } + if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++) + { insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false); } } } function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) { - if (!line.widgets) { - return; - } + if (!line.widgets) { return } var wrap = ensureLineWrapped(lineView); for (var i = 0, ws = line.widgets; i < ws.length; ++i) { - var widget = ws[i], - node = elt( - 'div', - [widget.node], - 'CodeMirror-linewidget' + - (widget.className ? ' ' + widget.className : ''), - ); - if (!widget.handleMouseEvents) { - node.setAttribute('cm-ignore-events', 'true'); - } + var widget = ws[i], node = elt("div", [widget.node], "CodeMirror-linewidget" + (widget.className ? " " + widget.className : "")); + if (!widget.handleMouseEvents) { node.setAttribute("cm-ignore-events", "true"); } positionLineWidget(widget, node, lineView, dims); cm.display.input.setUneditable(node); - if (allowAbove && widget.above) { - wrap.insertBefore(node, lineView.gutter || lineView.text); - } else { - wrap.appendChild(node); - } - signalLater(widget, 'redraw'); + if (allowAbove && widget.above) + { wrap.insertBefore(node, lineView.gutter || lineView.text); } + else + { wrap.appendChild(node); } + signalLater(widget, "redraw"); } } function positionLineWidget(widget, node, lineView, dims) { if (widget.noHScroll) { - (lineView.alignable || (lineView.alignable = [])).push(node); + (lineView.alignable || (lineView.alignable = [])).push(node); var width = dims.wrapperWidth; - node.style.left = dims.fixedPos + 'px'; + node.style.left = dims.fixedPos + "px"; if (!widget.coverGutter) { width -= dims.gutterTotalWidth; - node.style.paddingLeft = dims.gutterTotalWidth + 'px'; + node.style.paddingLeft = dims.gutterTotalWidth + "px"; } - node.style.width = width + 'px'; + node.style.width = width + "px"; } if (widget.coverGutter) { node.style.zIndex = 5; - node.style.position = 'relative'; - if (!widget.noHScroll) { - node.style.marginLeft = -dims.gutterTotalWidth + 'px'; - } + node.style.position = "relative"; + if (!widget.noHScroll) { node.style.marginLeft = -dims.gutterTotalWidth + "px"; } } } function widgetHeight(widget) { - if (widget.height != null) { - return widget.height; - } + if (widget.height != null) { return widget.height } var cm = widget.doc.cm; - if (!cm) { - return 0; - } + if (!cm) { return 0 } if (!contains(document.body, widget.node)) { - var parentStyle = 'position: relative;'; - if (widget.coverGutter) { - parentStyle += - 'margin-left: -' + cm.display.gutters.offsetWidth + 'px;'; - } - if (widget.noHScroll) { - parentStyle += 'width: ' + cm.display.wrapper.clientWidth + 'px;'; - } - removeChildrenAndAdd( - cm.display.measure, - elt('div', [widget.node], null, parentStyle), - ); + var parentStyle = "position: relative;"; + if (widget.coverGutter) + { parentStyle += "margin-left: -" + cm.display.gutters.offsetWidth + "px;"; } + if (widget.noHScroll) + { parentStyle += "width: " + cm.display.wrapper.clientWidth + "px;"; } + removeChildrenAndAdd(cm.display.measure, elt("div", [widget.node], null, parentStyle)); } - return (widget.height = widget.node.parentNode.offsetHeight); + return widget.height = widget.node.parentNode.offsetHeight } // Return true when the given mouse event happened in a widget function eventInWidget(display, e) { for (var n = e_target(e); n != display.wrapper; n = n.parentNode) { - if ( - !n || - (n.nodeType == 1 && n.getAttribute('cm-ignore-events') == 'true') || - (n.parentNode == display.sizer && n != display.mover) - ) { - return true; - } + if (!n || (n.nodeType == 1 && n.getAttribute("cm-ignore-events") == "true") || + (n.parentNode == display.sizer && n != display.mover)) + { return true } } } // POSITION MEASUREMENT - function paddingTop(display) { - return display.lineSpace.offsetTop; - } - function paddingVert(display) { - return display.mover.offsetHeight - display.lineSpace.offsetHeight; - } + function paddingTop(display) {return display.lineSpace.offsetTop} + function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight} function paddingH(display) { - if (display.cachedPaddingH) { - return display.cachedPaddingH; - } - var e = removeChildrenAndAdd( - display.measure, - elt('pre', 'x', 'CodeMirror-line-like'), - ); - var style = window.getComputedStyle - ? window.getComputedStyle(e) - : e.currentStyle; - var data = { - left: parseInt(style.paddingLeft), - right: parseInt(style.paddingRight), - }; - if (!isNaN(data.left) && !isNaN(data.right)) { - display.cachedPaddingH = data; - } - return data; + if (display.cachedPaddingH) { return display.cachedPaddingH } + var e = removeChildrenAndAdd(display.measure, elt("pre", "x", "CodeMirror-line-like")); + var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle; + var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)}; + if (!isNaN(data.left) && !isNaN(data.right)) { display.cachedPaddingH = data; } + return data } - function scrollGap(cm) { - return scrollerGap - cm.display.nativeBarWidth; - } + function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth } function displayWidth(cm) { - return ( - cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth - ); + return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth } function displayHeight(cm) { - return ( - cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight - ); + return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight } // Ensure the lineView.wrapping.heights array is populated. This is @@ -3439,20 +2345,15 @@ function ensureLineHeights(cm, lineView, rect) { var wrapping = cm.options.lineWrapping; var curWidth = wrapping && displayWidth(cm); - if ( - !lineView.measure.heights || - (wrapping && lineView.measure.width != curWidth) - ) { - var heights = (lineView.measure.heights = []); + if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) { + var heights = lineView.measure.heights = []; if (wrapping) { lineView.measure.width = curWidth; var rects = lineView.text.firstChild.getClientRects(); for (var i = 0; i < rects.length - 1; i++) { - var cur = rects[i], - next = rects[i + 1]; - if (Math.abs(cur.bottom - next.bottom) > 2) { - heights.push((cur.bottom + next.top) / 2 - rect.top); - } + var cur = rects[i], next = rects[i + 1]; + if (Math.abs(cur.bottom - next.bottom) > 2) + { heights.push((cur.bottom + next.top) / 2 - rect.top); } } } heights.push(rect.bottom - rect.top); @@ -3463,25 +2364,15 @@ // measurement cache for the given line number. (A line view might // contain multiple lines when collapsed ranges are present.) function mapFromLineView(lineView, line, lineN) { - if (lineView.line == line) { - return { map: lineView.measure.map, cache: lineView.measure.cache }; - } - for (var i = 0; i < lineView.rest.length; i++) { - if (lineView.rest[i] == line) { - return { - map: lineView.measure.maps[i], - cache: lineView.measure.caches[i], - }; - } - } - for (var i$1 = 0; i$1 < lineView.rest.length; i$1++) { - if (lineNo(lineView.rest[i$1]) > lineN) { - return { - map: lineView.measure.maps[i$1], - cache: lineView.measure.caches[i$1], - before: true, - }; - } + if (lineView.line == line) + { return {map: lineView.measure.map, cache: lineView.measure.cache} } + if (lineView.rest) { + for (var i = 0; i < lineView.rest.length; i++) + { if (lineView.rest[i] == line) + { return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]} } } + for (var i$1 = 0; i$1 < lineView.rest.length; i$1++) + { if (lineNo(lineView.rest[i$1]) > lineN) + { return {map: lineView.measure.maps[i$1], cache: lineView.measure.caches[i$1], before: true} } } } } @@ -3490,33 +2381,27 @@ function updateExternalMeasurement(cm, line) { line = visualLine(line); var lineN = lineNo(line); - var view = (cm.display.externalMeasured = new LineView( - cm.doc, - line, - lineN, - )); + var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN); view.lineN = lineN; - var built = (view.built = buildLineContent(cm, view)); + var built = view.built = buildLineContent(cm, view); view.text = built.pre; removeChildrenAndAdd(cm.display.lineMeasure, built.pre); - return view; + return view } // Get a {top, bottom, left, right} box (in line-local coordinates) // for a given character. function measureChar(cm, line, ch, bias) { - return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias); + return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias) } // Find a line view that corresponds to the given line number. function findViewForLine(cm, lineN) { - if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo) { - return cm.display.view[findViewIndex(cm, lineN)]; - } + if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo) + { return cm.display.view[findViewIndex(cm, lineN)] } var ext = cm.display.externalMeasured; - if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size) { - return ext; - } + if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size) + { return ext } } // Measurement can be split in two steps, the set-up work that @@ -3533,330 +2418,194 @@ updateLineForChanges(cm, view, lineN, getDimensions(cm)); cm.curOp.forceUpdate = true; } - if (!view) { - view = updateExternalMeasurement(cm, line); - } + if (!view) + { view = updateExternalMeasurement(cm, line); } var info = mapFromLineView(view, line, lineN); return { - line: line, - view: view, - rect: null, - map: info.map, - cache: info.cache, - before: info.before, - hasHeights: false, - }; + line: line, view: view, rect: null, + map: info.map, cache: info.cache, before: info.before, + hasHeights: false + } } // Given a prepared measurement object, measures the position of an // actual character (or fetches it from the cache). function measureCharPrepared(cm, prepared, ch, bias, varHeight) { - if (prepared.before) { - ch = -1; - } - var key = ch + (bias || ''), - found; + if (prepared.before) { ch = -1; } + var key = ch + (bias || ""), found; if (prepared.cache.hasOwnProperty(key)) { found = prepared.cache[key]; } else { - if (!prepared.rect) { - prepared.rect = prepared.view.text.getBoundingClientRect(); - } + if (!prepared.rect) + { prepared.rect = prepared.view.text.getBoundingClientRect(); } if (!prepared.hasHeights) { ensureLineHeights(cm, prepared.view, prepared.rect); prepared.hasHeights = true; } found = measureCharInner(cm, prepared, ch, bias); - if (!found.bogus) { - prepared.cache[key] = found; - } + if (!found.bogus) { prepared.cache[key] = found; } } - return { - left: found.left, - right: found.right, - top: varHeight ? found.rtop : found.top, - bottom: varHeight ? found.rbottom : found.bottom, - }; + return {left: found.left, right: found.right, + top: varHeight ? found.rtop : found.top, + bottom: varHeight ? found.rbottom : found.bottom} } - var nullRect = { left: 0, right: 0, top: 0, bottom: 0 }; + var nullRect = {left: 0, right: 0, top: 0, bottom: 0}; - function nodeAndOffsetInLineMap(map$$1, ch, bias) { + function nodeAndOffsetInLineMap(map, ch, bias) { var node, start, end, collapse, mStart, mEnd; // First, search the line map for the text node corresponding to, // or closest to, the target character. - for (var i = 0; i < map$$1.length; i += 3) { - mStart = map$$1[i]; - mEnd = map$$1[i + 1]; + for (var i = 0; i < map.length; i += 3) { + mStart = map[i]; + mEnd = map[i + 1]; if (ch < mStart) { - start = 0; - end = 1; - collapse = 'left'; + start = 0; end = 1; + collapse = "left"; } else if (ch < mEnd) { start = ch - mStart; end = start + 1; - } else if (i == map$$1.length - 3 || (ch == mEnd && map$$1[i + 3] > ch)) { + } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) { end = mEnd - mStart; start = end - 1; - if (ch >= mEnd) { - collapse = 'right'; - } + if (ch >= mEnd) { collapse = "right"; } } if (start != null) { - node = map$$1[i + 2]; - if (mStart == mEnd && bias == (node.insertLeft ? 'left' : 'right')) { - collapse = bias; - } - if (bias == 'left' && start == 0) { - while ( - i && - map$$1[i - 2] == map$$1[i - 3] && - map$$1[i - 1].insertLeft - ) { - node = map$$1[(i -= 3) + 2]; - collapse = 'left'; - } - } - if (bias == 'right' && start == mEnd - mStart) { - while ( - i < map$$1.length - 3 && - map$$1[i + 3] == map$$1[i + 4] && - !map$$1[i + 5].insertLeft - ) { - node = map$$1[(i += 3) + 2]; - collapse = 'right'; - } - } - break; + node = map[i + 2]; + if (mStart == mEnd && bias == (node.insertLeft ? "left" : "right")) + { collapse = bias; } + if (bias == "left" && start == 0) + { while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) { + node = map[(i -= 3) + 2]; + collapse = "left"; + } } + if (bias == "right" && start == mEnd - mStart) + { while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) { + node = map[(i += 3) + 2]; + collapse = "right"; + } } + break } } - return { - node: node, - start: start, - end: end, - collapse: collapse, - coverStart: mStart, - coverEnd: mEnd, - }; + return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd} } function getUsefulRect(rects, bias) { var rect = nullRect; - if (bias == 'left') { - for (var i = 0; i < rects.length; i++) { - if ((rect = rects[i]).left != rect.right) { - break; - } - } - } else { - for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) { - if ((rect = rects[i$1]).left != rect.right) { - break; - } - } - } - return rect; + if (bias == "left") { for (var i = 0; i < rects.length; i++) { + if ((rect = rects[i]).left != rect.right) { break } + } } else { for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) { + if ((rect = rects[i$1]).left != rect.right) { break } + } } + return rect } function measureCharInner(cm, prepared, ch, bias) { var place = nodeAndOffsetInLineMap(prepared.map, ch, bias); - var node = place.node, - start = place.start, - end = place.end, - collapse = place.collapse; + var node = place.node, start = place.start, end = place.end, collapse = place.collapse; var rect; - if (node.nodeType == 3) { - // If it is a text node, use a range to retrieve the coordinates. - for (var i$1 = 0; i$1 < 4; i$1++) { - // Retry a maximum of 4 times when nonsense rectangles are returned - while ( - start && - isExtendingChar(prepared.line.text.charAt(place.coverStart + start)) - ) { - --start; - } - while ( - place.coverStart + end < place.coverEnd && - isExtendingChar(prepared.line.text.charAt(place.coverStart + end)) - ) { - ++end; - } - if ( - ie && - ie_version < 9 && - start == 0 && - end == place.coverEnd - place.coverStart - ) { - rect = node.parentNode.getBoundingClientRect(); - } else { - rect = getUsefulRect(range(node, start, end).getClientRects(), bias); - } - if (rect.left || rect.right || start == 0) { - break; - } + if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates. + for (var i$1 = 0; i$1 < 4; i$1++) { // Retry a maximum of 4 times when nonsense rectangles are returned + while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) { --start; } + while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) { ++end; } + if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart) + { rect = node.parentNode.getBoundingClientRect(); } + else + { rect = getUsefulRect(range(node, start, end).getClientRects(), bias); } + if (rect.left || rect.right || start == 0) { break } end = start; start = start - 1; - collapse = 'right'; - } - if (ie && ie_version < 11) { - rect = maybeUpdateRectForZooming(cm.display.measure, rect); - } - } else { - // If it is a widget, simply get the box for the whole widget. - if (start > 0) { - collapse = bias = 'right'; + collapse = "right"; } + if (ie && ie_version < 11) { rect = maybeUpdateRectForZooming(cm.display.measure, rect); } + } else { // If it is a widget, simply get the box for the whole widget. + if (start > 0) { collapse = bias = "right"; } var rects; - if ( - cm.options.lineWrapping && - (rects = node.getClientRects()).length > 1 - ) { - rect = rects[bias == 'right' ? rects.length - 1 : 0]; - } else { - rect = node.getBoundingClientRect(); - } + if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1) + { rect = rects[bias == "right" ? rects.length - 1 : 0]; } + else + { rect = node.getBoundingClientRect(); } } - if ( - ie && - ie_version < 9 && - !start && - (!rect || (!rect.left && !rect.right)) - ) { + if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) { var rSpan = node.parentNode.getClientRects()[0]; - if (rSpan) { - rect = { - left: rSpan.left, - right: rSpan.left + charWidth(cm.display), - top: rSpan.top, - bottom: rSpan.bottom, - }; - } else { - rect = nullRect; - } + if (rSpan) + { rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; } + else + { rect = nullRect; } } - var rtop = rect.top - prepared.rect.top, - rbot = rect.bottom - prepared.rect.top; + var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top; var mid = (rtop + rbot) / 2; var heights = prepared.view.measure.heights; var i = 0; - for (; i < heights.length - 1; i++) { - if (mid < heights[i]) { - break; - } - } - var top = i ? heights[i - 1] : 0, - bot = heights[i]; - var result = { - left: (collapse == 'right' ? rect.right : rect.left) - prepared.rect.left, - right: (collapse == 'left' ? rect.left : rect.right) - prepared.rect.left, - top: top, - bottom: bot, - }; - if (!rect.left && !rect.right) { - result.bogus = true; - } - if (!cm.options.singleCursorHeightPerLine) { - result.rtop = rtop; - result.rbottom = rbot; - } + for (; i < heights.length - 1; i++) + { if (mid < heights[i]) { break } } + var top = i ? heights[i - 1] : 0, bot = heights[i]; + var result = {left: (collapse == "right" ? rect.right : rect.left) - prepared.rect.left, + right: (collapse == "left" ? rect.left : rect.right) - prepared.rect.left, + top: top, bottom: bot}; + if (!rect.left && !rect.right) { result.bogus = true; } + if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; } - return result; + return result } // Work around problem with bounding client rects on ranges being // returned incorrectly when zoomed on IE10 and below. function maybeUpdateRectForZooming(measure, rect) { - if ( - !window.screen || - screen.logicalXDPI == null || - screen.logicalXDPI == screen.deviceXDPI || - !hasBadZoomedRects(measure) - ) { - return rect; - } + if (!window.screen || screen.logicalXDPI == null || + screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure)) + { return rect } var scaleX = screen.logicalXDPI / screen.deviceXDPI; var scaleY = screen.logicalYDPI / screen.deviceYDPI; - return { - left: rect.left * scaleX, - right: rect.right * scaleX, - top: rect.top * scaleY, - bottom: rect.bottom * scaleY, - }; + return {left: rect.left * scaleX, right: rect.right * scaleX, + top: rect.top * scaleY, bottom: rect.bottom * scaleY} } function clearLineMeasurementCacheFor(lineView) { if (lineView.measure) { lineView.measure.cache = {}; lineView.measure.heights = null; - if (lineView.rest) { - for (var i = 0; i < lineView.rest.length; i++) { - lineView.measure.caches[i] = {}; - } - } + if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++) + { lineView.measure.caches[i] = {}; } } } } function clearLineMeasurementCache(cm) { cm.display.externalMeasure = null; removeChildren(cm.display.lineMeasure); - for (var i = 0; i < cm.display.view.length; i++) { - clearLineMeasurementCacheFor(cm.display.view[i]); - } + for (var i = 0; i < cm.display.view.length; i++) + { clearLineMeasurementCacheFor(cm.display.view[i]); } } function clearCaches(cm) { clearLineMeasurementCache(cm); - cm.display.cachedCharWidth = - cm.display.cachedTextHeight = - cm.display.cachedPaddingH = - null; - if (!cm.options.lineWrapping) { - cm.display.maxLineChanged = true; - } + cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null; + if (!cm.options.lineWrapping) { cm.display.maxLineChanged = true; } cm.display.lineNumChars = null; } - function pageScrollX() { + function pageScrollX(doc) { // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206 // which causes page_Offset and bounding client rects to use // different reference viewports and invalidate our calculations. - if (chrome && android) { - return -( - document.body.getBoundingClientRect().left - - parseInt(getComputedStyle(document.body).marginLeft) - ); - } - return ( - window.pageXOffset || - (document.documentElement || document.body).scrollLeft - ); - } - function pageScrollY() { - if (chrome && android) { - return -( - document.body.getBoundingClientRect().top - - parseInt(getComputedStyle(document.body).marginTop) - ); - } - return ( - window.pageYOffset || - (document.documentElement || document.body).scrollTop - ); + if (chrome && android) { return -(doc.body.getBoundingClientRect().left - parseInt(getComputedStyle(doc.body).marginLeft)) } + return doc.defaultView.pageXOffset || (doc.documentElement || doc.body).scrollLeft + } + function pageScrollY(doc) { + if (chrome && android) { return -(doc.body.getBoundingClientRect().top - parseInt(getComputedStyle(doc.body).marginTop)) } + return doc.defaultView.pageYOffset || (doc.documentElement || doc.body).scrollTop } function widgetTopHeight(lineObj) { + var ref = visualLine(lineObj); + var widgets = ref.widgets; var height = 0; - if (lineObj.widgets) { - for (var i = 0; i < lineObj.widgets.length; ++i) { - if (lineObj.widgets[i].above) { - height += widgetHeight(lineObj.widgets[i]); - } - } - } - return height; + if (widgets) { for (var i = 0; i < widgets.length; ++i) { if (widgets[i].above) + { height += widgetHeight(widgets[i]); } } } + return height } // Converts a {top, bottom, left, right} box from line-local @@ -3866,65 +2615,45 @@ function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) { if (!includeWidgets) { var height = widgetTopHeight(lineObj); - rect.top += height; - rect.bottom += height; - } - if (context == 'line') { - return rect; - } - if (!context) { - context = 'local'; + rect.top += height; rect.bottom += height; } + if (context == "line") { return rect } + if (!context) { context = "local"; } var yOff = heightAtLine(lineObj); - if (context == 'local') { - yOff += paddingTop(cm.display); - } else { - yOff -= cm.display.viewOffset; - } - if (context == 'page' || context == 'window') { + if (context == "local") { yOff += paddingTop(cm.display); } + else { yOff -= cm.display.viewOffset; } + if (context == "page" || context == "window") { var lOff = cm.display.lineSpace.getBoundingClientRect(); - yOff += lOff.top + (context == 'window' ? 0 : pageScrollY()); - var xOff = lOff.left + (context == 'window' ? 0 : pageScrollX()); - rect.left += xOff; - rect.right += xOff; + yOff += lOff.top + (context == "window" ? 0 : pageScrollY(doc(cm))); + var xOff = lOff.left + (context == "window" ? 0 : pageScrollX(doc(cm))); + rect.left += xOff; rect.right += xOff; } - rect.top += yOff; - rect.bottom += yOff; - return rect; + rect.top += yOff; rect.bottom += yOff; + return rect } // Coverts a box from "div" coords to another coordinate system. // Context may be "window", "page", "div", or "local"./null. function fromCoordSystem(cm, coords, context) { - if (context == 'div') { - return coords; - } - var left = coords.left, - top = coords.top; + if (context == "div") { return coords } + var left = coords.left, top = coords.top; // First move into "page" coordinate system - if (context == 'page') { - left -= pageScrollX(); - top -= pageScrollY(); - } else if (context == 'local' || !context) { + if (context == "page") { + left -= pageScrollX(doc(cm)); + top -= pageScrollY(doc(cm)); + } else if (context == "local" || !context) { var localBox = cm.display.sizer.getBoundingClientRect(); left += localBox.left; top += localBox.top; } var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect(); - return { left: left - lineSpaceBox.left, top: top - lineSpaceBox.top }; + return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top} } function charCoords(cm, pos, context, lineObj, bias) { - if (!lineObj) { - lineObj = getLine(cm.doc, pos.line); - } - return intoCoordSystem( - cm, - lineObj, - measureChar(cm, lineObj, pos.ch, bias), - context, - ); + if (!lineObj) { lineObj = getLine(cm.doc, pos.line); } + return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context) } // Returns a box for a given cursor position, which may have an @@ -3945,50 +2674,31 @@ // to the last character on the line. function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) { lineObj = lineObj || getLine(cm.doc, pos.line); - if (!preparedMeasure) { - preparedMeasure = prepareMeasureForLine(cm, lineObj); - } + if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); } function get(ch, right) { - var m = measureCharPrepared( - cm, - preparedMeasure, - ch, - right ? 'right' : 'left', - varHeight, - ); - if (right) { - m.left = m.right; - } else { - m.right = m.left; - } - return intoCoordSystem(cm, lineObj, m, context); + var m = measureCharPrepared(cm, preparedMeasure, ch, right ? "right" : "left", varHeight); + if (right) { m.left = m.right; } else { m.right = m.left; } + return intoCoordSystem(cm, lineObj, m, context) } - var order = getOrder(lineObj, cm.doc.direction), - ch = pos.ch, - sticky = pos.sticky; + var order = getOrder(lineObj, cm.doc.direction), ch = pos.ch, sticky = pos.sticky; if (ch >= lineObj.text.length) { ch = lineObj.text.length; - sticky = 'before'; + sticky = "before"; } else if (ch <= 0) { ch = 0; - sticky = 'after'; - } - if (!order) { - return get(sticky == 'before' ? ch - 1 : ch, sticky == 'before'); + sticky = "after"; } + if (!order) { return get(sticky == "before" ? ch - 1 : ch, sticky == "before") } function getBidi(ch, partPos, invert) { - var part = order[partPos], - right = part.level == 1; - return get(invert ? ch - 1 : ch, right != invert); + var part = order[partPos], right = part.level == 1; + return get(invert ? ch - 1 : ch, right != invert) } var partPos = getBidiPartAt(order, ch, sticky); var other = bidiOther; - var val = getBidi(ch, partPos, sticky == 'before'); - if (other != null) { - val.other = getBidi(ch, other, sticky != 'before'); - } - return val; + var val = getBidi(ch, partPos, sticky == "before"); + if (other != null) { val.other = getBidi(ch, other, sticky != "before"); } + return val } // Used to cheaply estimate the coordinates for a position. Used for @@ -3996,12 +2706,10 @@ function estimateCoords(cm, pos) { var left = 0; pos = clipPos(cm.doc, pos); - if (!cm.options.lineWrapping) { - left = charWidth(cm.display) * pos.ch; - } + if (!cm.options.lineWrapping) { left = charWidth(cm.display) * pos.ch; } var lineObj = getLine(cm.doc, pos.line); var top = heightAtLine(lineObj) + paddingTop(cm.display); - return { left: left, right: left, top: top, bottom: top + lineObj.height }; + return {left: left, right: left, top: top, bottom: top + lineObj.height} } // Positions returned by coordsChar contain some extra information. @@ -4013,10 +2721,8 @@ function PosWithInfo(line, ch, sticky, outside, xRel) { var pos = Pos(line, ch, sticky); pos.xRel = xRel; - if (outside) { - pos.outside = outside; - } - return pos; + if (outside) { pos.outside = outside; } + return pos } // Compute the character position closest to the given coordinates. @@ -4024,103 +2730,58 @@ function coordsChar(cm, x, y) { var doc = cm.doc; y += cm.display.viewOffset; - if (y < 0) { - return PosWithInfo(doc.first, 0, null, -1, -1); - } - var lineN = lineAtHeight(doc, y), - last = doc.first + doc.size - 1; - if (lineN > last) { - return PosWithInfo( - doc.first + doc.size - 1, - getLine(doc, last).text.length, - null, - 1, - 1, - ); - } - if (x < 0) { - x = 0; - } + if (y < 0) { return PosWithInfo(doc.first, 0, null, -1, -1) } + var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1; + if (lineN > last) + { return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, 1, 1) } + if (x < 0) { x = 0; } var lineObj = getLine(doc, lineN); for (;;) { var found = coordsCharInner(cm, lineObj, lineN, x, y); - var collapsed = collapsedSpanAround( - lineObj, - found.ch + (found.xRel > 0 || found.outside > 0 ? 1 : 0), - ); - if (!collapsed) { - return found; - } + var collapsed = collapsedSpanAround(lineObj, found.ch + (found.xRel > 0 || found.outside > 0 ? 1 : 0)); + if (!collapsed) { return found } var rangeEnd = collapsed.find(1); - if (rangeEnd.line == lineN) { - return rangeEnd; - } - lineObj = getLine(doc, (lineN = rangeEnd.line)); + if (rangeEnd.line == lineN) { return rangeEnd } + lineObj = getLine(doc, lineN = rangeEnd.line); } } function wrappedLineExtent(cm, lineObj, preparedMeasure, y) { y -= widgetTopHeight(lineObj); var end = lineObj.text.length; - var begin = findFirst( - function (ch) { - return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y; - }, - end, - 0, - ); - end = findFirst( - function (ch) { - return measureCharPrepared(cm, preparedMeasure, ch).top > y; - }, - begin, - end, - ); - return { begin: begin, end: end }; + var begin = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y; }, end, 0); + end = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch).top > y; }, begin, end); + return {begin: begin, end: end} } function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) { - if (!preparedMeasure) { - preparedMeasure = prepareMeasureForLine(cm, lineObj); - } - var targetTop = intoCoordSystem( - cm, - lineObj, - measureCharPrepared(cm, preparedMeasure, target), - 'line', - ).top; - return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop); + if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); } + var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), "line").top; + return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop) } // Returns true if the given side of a box is after the given // coordinates, in top-to-bottom, left-to-right order. function boxIsAfter(box, x, y, left) { - return box.bottom <= y - ? false - : box.top > y - ? true - : (left ? box.left : box.right) > x; + return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x } - function coordsCharInner(cm, lineObj, lineNo$$1, x, y) { + function coordsCharInner(cm, lineObj, lineNo, x, y) { // Move y into line-local coordinate space y -= heightAtLine(lineObj); var preparedMeasure = prepareMeasureForLine(cm, lineObj); // When directly calling `measureCharPrepared`, we have to adjust // for the widgets at this line. - var widgetHeight$$1 = widgetTopHeight(lineObj); - var begin = 0, - end = lineObj.text.length, - ltr = true; + var widgetHeight = widgetTopHeight(lineObj); + var begin = 0, end = lineObj.text.length, ltr = true; var order = getOrder(lineObj, cm.doc.direction); // If the line isn't plain left-to-right text, first figure out // which bidi section the coordinates fall into. if (order) { - var part = ( - cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart - )(cm, lineObj, lineNo$$1, preparedMeasure, order, x, y); + var part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart) + (cm, lineObj, lineNo, preparedMeasure, order, x, y); ltr = part.level != 1; // The awkward -1 offsets are needed because findFirst (called // on these below) will treat its first bound as inclusive, @@ -4133,136 +2794,71 @@ // A binary search to find the first character whose bounding box // starts after the coordinates. If we run across any whose box wrap // the coordinates, store that. - var chAround = null, - boxAround = null; - var ch = findFirst( - function (ch) { - var box = measureCharPrepared(cm, preparedMeasure, ch); - box.top += widgetHeight$$1; - box.bottom += widgetHeight$$1; - if (!boxIsAfter(box, x, y, false)) { - return false; - } - if (box.top <= y && box.left <= x) { - chAround = ch; - boxAround = box; - } - return true; - }, - begin, - end, - ); - - var baseX, - sticky, - outside = false; + var chAround = null, boxAround = null; + var ch = findFirst(function (ch) { + var box = measureCharPrepared(cm, preparedMeasure, ch); + box.top += widgetHeight; box.bottom += widgetHeight; + if (!boxIsAfter(box, x, y, false)) { return false } + if (box.top <= y && box.left <= x) { + chAround = ch; + boxAround = box; + } + return true + }, begin, end); + + var baseX, sticky, outside = false; // If a box around the coordinates was found, use that if (boxAround) { // Distinguish coordinates nearer to the left or right side of the box - var atLeft = x - boxAround.left < boxAround.right - x, - atStart = atLeft == ltr; + var atLeft = x - boxAround.left < boxAround.right - x, atStart = atLeft == ltr; ch = chAround + (atStart ? 0 : 1); - sticky = atStart ? 'after' : 'before'; + sticky = atStart ? "after" : "before"; baseX = atLeft ? boxAround.left : boxAround.right; } else { // (Adjust for extended bound, if necessary.) - if (!ltr && (ch == end || ch == begin)) { - ch++; - } + if (!ltr && (ch == end || ch == begin)) { ch++; } // To determine which side to associate with, get the box to the // left of the character and compare it's vertical position to the // coordinates - sticky = - ch == 0 - ? 'after' - : ch == lineObj.text.length - ? 'before' - : measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)) - .bottom + - widgetHeight$$1 <= - y == - ltr - ? 'after' - : 'before'; + sticky = ch == 0 ? "after" : ch == lineObj.text.length ? "before" : + (measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight <= y) == ltr ? + "after" : "before"; // Now get accurate coordinates for this place, in order to get a // base X position - var coords = cursorCoords( - cm, - Pos(lineNo$$1, ch, sticky), - 'line', - lineObj, - preparedMeasure, - ); + var coords = cursorCoords(cm, Pos(lineNo, ch, sticky), "line", lineObj, preparedMeasure); baseX = coords.left; outside = y < coords.top ? -1 : y >= coords.bottom ? 1 : 0; } ch = skipExtendingChars(lineObj.text, ch, 1); - return PosWithInfo(lineNo$$1, ch, sticky, outside, x - baseX); - } - - function coordsBidiPart( - cm, - lineObj, - lineNo$$1, - preparedMeasure, - order, - x, - y, - ) { + return PosWithInfo(lineNo, ch, sticky, outside, x - baseX) + } + + function coordsBidiPart(cm, lineObj, lineNo, preparedMeasure, order, x, y) { // Bidi parts are sorted left-to-right, and in a non-line-wrapping // situation, we can take this ordering to correspond to the visual // ordering. This finds the first part whose end is after the given // coordinates. - var index = findFirst( - function (i) { - var part = order[i], - ltr = part.level != 1; - return boxIsAfter( - cursorCoords( - cm, - Pos(lineNo$$1, ltr ? part.to : part.from, ltr ? 'before' : 'after'), - 'line', - lineObj, - preparedMeasure, - ), - x, - y, - true, - ); - }, - 0, - order.length - 1, - ); + var index = findFirst(function (i) { + var part = order[i], ltr = part.level != 1; + return boxIsAfter(cursorCoords(cm, Pos(lineNo, ltr ? part.to : part.from, ltr ? "before" : "after"), + "line", lineObj, preparedMeasure), x, y, true) + }, 0, order.length - 1); var part = order[index]; // If this isn't the first part, the part's start is also after // the coordinates, and the coordinates aren't on the same line as // that start, move one part back. if (index > 0) { var ltr = part.level != 1; - var start = cursorCoords( - cm, - Pos(lineNo$$1, ltr ? part.from : part.to, ltr ? 'after' : 'before'), - 'line', - lineObj, - preparedMeasure, - ); - if (boxIsAfter(start, x, y, true) && start.top > y) { - part = order[index - 1]; - } - } - return part; - } - - function coordsBidiPartWrapped( - cm, - lineObj, - _lineNo, - preparedMeasure, - order, - x, - y, - ) { + var start = cursorCoords(cm, Pos(lineNo, ltr ? part.from : part.to, ltr ? "after" : "before"), + "line", lineObj, preparedMeasure); + if (boxIsAfter(start, x, y, true) && start.top > y) + { part = order[index - 1]; } + } + return part + } + + function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order, x, y) { // In a wrapped line, rtl text on wrapping boundaries can do things // that don't correspond to the ordering in our `order` array at // all, so a binary search doesn't work, and we want to return a @@ -4273,22 +2869,13 @@ var ref = wrappedLineExtent(cm, lineObj, preparedMeasure, y); var begin = ref.begin; var end = ref.end; - if (/\s/.test(lineObj.text.charAt(end - 1))) { - end--; - } - var part = null, - closestDist = null; + if (/\s/.test(lineObj.text.charAt(end - 1))) { end--; } + var part = null, closestDist = null; for (var i = 0; i < order.length; i++) { var p = order[i]; - if (p.from >= end || p.to <= begin) { - continue; - } + if (p.from >= end || p.to <= begin) { continue } var ltr = p.level != 1; - var endX = measureCharPrepared( - cm, - preparedMeasure, - ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from), - ).right; + var endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right; // Weigh against spans ending before this, so that they are only // picked if nothing ends after var dist = endX < x ? x - endX + 1e9 : endX - x; @@ -4297,132 +2884,95 @@ closestDist = dist; } } - if (!part) { - part = order[order.length - 1]; - } + if (!part) { part = order[order.length - 1]; } // Clip the part to the wrapped line. - if (part.from < begin) { - part = { from: begin, to: part.to, level: part.level }; - } - if (part.to > end) { - part = { from: part.from, to: end, level: part.level }; - } - return part; + if (part.from < begin) { part = {from: begin, to: part.to, level: part.level}; } + if (part.to > end) { part = {from: part.from, to: end, level: part.level}; } + return part } var measureText; // Compute the default text height. function textHeight(display) { - if (display.cachedTextHeight != null) { - return display.cachedTextHeight; - } + if (display.cachedTextHeight != null) { return display.cachedTextHeight } if (measureText == null) { - measureText = elt('pre', null, 'CodeMirror-line-like'); + measureText = elt("pre", null, "CodeMirror-line-like"); // Measure a bunch of lines, for browsers that compute // fractional heights. for (var i = 0; i < 49; ++i) { - measureText.appendChild(document.createTextNode('x')); - measureText.appendChild(elt('br')); + measureText.appendChild(document.createTextNode("x")); + measureText.appendChild(elt("br")); } - measureText.appendChild(document.createTextNode('x')); + measureText.appendChild(document.createTextNode("x")); } removeChildrenAndAdd(display.measure, measureText); var height = measureText.offsetHeight / 50; - if (height > 3) { - display.cachedTextHeight = height; - } + if (height > 3) { display.cachedTextHeight = height; } removeChildren(display.measure); - return height || 1; + return height || 1 } // Compute the default character width. function charWidth(display) { - if (display.cachedCharWidth != null) { - return display.cachedCharWidth; - } - var anchor = elt('span', 'xxxxxxxxxx'); - var pre = elt('pre', [anchor], 'CodeMirror-line-like'); + if (display.cachedCharWidth != null) { return display.cachedCharWidth } + var anchor = elt("span", "xxxxxxxxxx"); + var pre = elt("pre", [anchor], "CodeMirror-line-like"); removeChildrenAndAdd(display.measure, pre); - var rect = anchor.getBoundingClientRect(), - width = (rect.right - rect.left) / 10; - if (width > 2) { - display.cachedCharWidth = width; - } - return width || 10; + var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10; + if (width > 2) { display.cachedCharWidth = width; } + return width || 10 } // Do a bulk-read of the DOM positions and sizes needed to draw the // view, so that we don't interleave reading and writing to the DOM. function getDimensions(cm) { - var d = cm.display, - left = {}, - width = {}; + var d = cm.display, left = {}, width = {}; var gutterLeft = d.gutters.clientLeft; for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) { var id = cm.display.gutterSpecs[i].className; left[id] = n.offsetLeft + n.clientLeft + gutterLeft; width[id] = n.clientWidth; } - return { - fixedPos: compensateForHScroll(d), - gutterTotalWidth: d.gutters.offsetWidth, - gutterLeft: left, - gutterWidth: width, - wrapperWidth: d.wrapper.clientWidth, - }; + return {fixedPos: compensateForHScroll(d), + gutterTotalWidth: d.gutters.offsetWidth, + gutterLeft: left, + gutterWidth: width, + wrapperWidth: d.wrapper.clientWidth} } // Computes display.scroller.scrollLeft + display.gutters.offsetWidth, // but using getBoundingClientRect to get a sub-pixel-accurate // result. function compensateForHScroll(display) { - return ( - display.scroller.getBoundingClientRect().left - - display.sizer.getBoundingClientRect().left - ); + return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left } // Returns a function that estimates the height of a line, to use as // first approximation until the line becomes visible (and is thus // properly measurable). function estimateHeight(cm) { - var th = textHeight(cm.display), - wrapping = cm.options.lineWrapping; - var perLine = - wrapping && - Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3); + var th = textHeight(cm.display), wrapping = cm.options.lineWrapping; + var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3); return function (line) { - if (lineIsHidden(cm.doc, line)) { - return 0; - } + if (lineIsHidden(cm.doc, line)) { return 0 } var widgetsHeight = 0; - if (line.widgets) { - for (var i = 0; i < line.widgets.length; i++) { - if (line.widgets[i].height) { - widgetsHeight += line.widgets[i].height; - } - } - } + if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) { + if (line.widgets[i].height) { widgetsHeight += line.widgets[i].height; } + } } - if (wrapping) { - return ( - widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th - ); - } else { - return widgetsHeight + th; - } - }; + if (wrapping) + { return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th } + else + { return widgetsHeight + th } + } } function estimateLineHeights(cm) { - var doc = cm.doc, - est = estimateHeight(cm); + var doc = cm.doc, est = estimateHeight(cm); doc.iter(function (line) { var estHeight = est(line); - if (estHeight != line.height) { - updateLineHeight(line, estHeight); - } + if (estHeight != line.height) { updateLineHeight(line, estHeight); } }); } @@ -4433,57 +2983,30 @@ // coordinates beyond the right of the text. function posFromMouse(cm, e, liberal, forRect) { var display = cm.display; - if (!liberal && e_target(e).getAttribute('cm-not-content') == 'true') { - return null; - } + if (!liberal && e_target(e).getAttribute("cm-not-content") == "true") { return null } - var x, - y, - space = display.lineSpace.getBoundingClientRect(); + var x, y, space = display.lineSpace.getBoundingClientRect(); // Fails unpredictably on IE[67] when mouse is dragged around quickly. - try { - x = e.clientX - space.left; - y = e.clientY - space.top; - } catch (e) { - return null; - } - var coords = coordsChar(cm, x, y), - line; - if ( - forRect && - coords.xRel > 0 && - (line = getLine(cm.doc, coords.line).text).length == coords.ch - ) { - var colDiff = - countColumn(line, line.length, cm.options.tabSize) - line.length; - coords = Pos( - coords.line, - Math.max( - 0, - Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - - colDiff, - ), - ); - } - return coords; + try { x = e.clientX - space.left; y = e.clientY - space.top; } + catch (e$1) { return null } + var coords = coordsChar(cm, x, y), line; + if (forRect && coords.xRel > 0 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) { + var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length; + coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff)); + } + return coords } // Find the view element corresponding to a given line. Return null // when the line isn't visible. function findViewIndex(cm, n) { - if (n >= cm.display.viewTo) { - return null; - } + if (n >= cm.display.viewTo) { return null } n -= cm.display.viewFrom; - if (n < 0) { - return null; - } + if (n < 0) { return null } var view = cm.display.view; for (var i = 0; i < view.length; i++) { n -= view[i].size; - if (n < 0) { - return i; - } + if (n < 0) { return i } } } @@ -4494,48 +3017,30 @@ // lines are divided into visual lines. regLineChange (below) // registers single-line changes. function regChange(cm, from, to, lendiff) { - if (from == null) { - from = cm.doc.first; - } - if (to == null) { - to = cm.doc.first + cm.doc.size; - } - if (!lendiff) { - lendiff = 0; - } + if (from == null) { from = cm.doc.first; } + if (to == null) { to = cm.doc.first + cm.doc.size; } + if (!lendiff) { lendiff = 0; } var display = cm.display; - if ( - lendiff && - to < display.viewTo && - (display.updateLineNumbers == null || display.updateLineNumbers > from) - ) { - display.updateLineNumbers = from; - } + if (lendiff && to < display.viewTo && + (display.updateLineNumbers == null || display.updateLineNumbers > from)) + { display.updateLineNumbers = from; } cm.curOp.viewChanged = true; - if (from >= display.viewTo) { - // Change after - if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo) { - resetView(cm); - } - } else if (to <= display.viewFrom) { - // Change before - if ( - sawCollapsedSpans && - visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom - ) { + if (from >= display.viewTo) { // Change after + if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo) + { resetView(cm); } + } else if (to <= display.viewFrom) { // Change before + if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) { resetView(cm); } else { display.viewFrom += lendiff; display.viewTo += lendiff; } - } else if (from <= display.viewFrom && to >= display.viewTo) { - // Full overlap + } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap resetView(cm); - } else if (from <= display.viewFrom) { - // Top overlap + } else if (from <= display.viewFrom) { // Top overlap var cut = viewCuttingPoint(cm, to, to + lendiff, 1); if (cut) { display.view = display.view.slice(cut.index); @@ -4544,8 +3049,7 @@ } else { resetView(cm); } - } else if (to >= display.viewTo) { - // Bottom overlap + } else if (to >= display.viewTo) { // Bottom overlap var cut$1 = viewCuttingPoint(cm, from, from, -1); if (cut$1) { display.view = display.view.slice(0, cut$1.index); @@ -4553,13 +3057,11 @@ } else { resetView(cm); } - } else { - // Gap in the middle + } else { // Gap in the middle var cutTop = viewCuttingPoint(cm, from, from, -1); var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1); if (cutTop && cutBot) { - display.view = display.view - .slice(0, cutTop.index) + display.view = display.view.slice(0, cutTop.index) .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN)) .concat(display.view.slice(cutBot.index)); display.viewTo += lendiff; @@ -4570,11 +3072,10 @@ var ext = display.externalMeasured; if (ext) { - if (to < ext.lineN) { - ext.lineN += lendiff; - } else if (from < ext.lineN + ext.size) { - display.externalMeasured = null; - } + if (to < ext.lineN) + { ext.lineN += lendiff; } + else if (from < ext.lineN + ext.size) + { display.externalMeasured = null; } } } @@ -4582,23 +3083,15 @@ // "gutter", "class", "widget" function regLineChange(cm, line, type) { cm.curOp.viewChanged = true; - var display = cm.display, - ext = cm.display.externalMeasured; - if (ext && line >= ext.lineN && line < ext.lineN + ext.size) { - display.externalMeasured = null; - } + var display = cm.display, ext = cm.display.externalMeasured; + if (ext && line >= ext.lineN && line < ext.lineN + ext.size) + { display.externalMeasured = null; } - if (line < display.viewFrom || line >= display.viewTo) { - return; - } + if (line < display.viewFrom || line >= display.viewTo) { return } var lineView = display.view[findViewIndex(cm, line)]; - if (lineView.node == null) { - return; - } + if (lineView.node == null) { return } var arr = lineView.changes || (lineView.changes = []); - if (indexOf(arr, type) == -1) { - arr.push(type); - } + if (indexOf(arr, type) == -1) { arr.push(type); } } // Clear the view. @@ -4609,63 +3102,47 @@ } function viewCuttingPoint(cm, oldN, newN, dir) { - var index = findViewIndex(cm, oldN), - diff, - view = cm.display.view; - if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size) { - return { index: index, lineN: newN }; - } + var index = findViewIndex(cm, oldN), diff, view = cm.display.view; + if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size) + { return {index: index, lineN: newN} } var n = cm.display.viewFrom; - for (var i = 0; i < index; i++) { - n += view[i].size; - } + for (var i = 0; i < index; i++) + { n += view[i].size; } if (n != oldN) { if (dir > 0) { - if (index == view.length - 1) { - return null; - } - diff = n + view[index].size - oldN; + if (index == view.length - 1) { return null } + diff = (n + view[index].size) - oldN; index++; } else { diff = n - oldN; } - oldN += diff; - newN += diff; + oldN += diff; newN += diff; } while (visualLineNo(cm.doc, newN) != newN) { - if (index == (dir < 0 ? 0 : view.length - 1)) { - return null; - } + if (index == (dir < 0 ? 0 : view.length - 1)) { return null } newN += dir * view[index - (dir < 0 ? 1 : 0)].size; index += dir; } - return { index: index, lineN: newN }; + return {index: index, lineN: newN} } // Force the view to cover a given range, adding empty view element // or clipping off existing ones as needed. function adjustView(cm, from, to) { - var display = cm.display, - view = display.view; + var display = cm.display, view = display.view; if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) { display.view = buildViewArray(cm, from, to); display.viewFrom = from; } else { - if (display.viewFrom > from) { - display.view = buildViewArray(cm, from, display.viewFrom).concat( - display.view, - ); - } else if (display.viewFrom < from) { - display.view = display.view.slice(findViewIndex(cm, from)); - } + if (display.viewFrom > from) + { display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view); } + else if (display.viewFrom < from) + { display.view = display.view.slice(findViewIndex(cm, from)); } display.viewFrom = from; - if (display.viewTo < to) { - display.view = display.view.concat( - buildViewArray(cm, display.viewTo, to), - ); - } else if (display.viewTo > to) { - display.view = display.view.slice(0, findViewIndex(cm, to)); - } + if (display.viewTo < to) + { display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)); } + else if (display.viewTo > to) + { display.view = display.view.slice(0, findViewIndex(cm, to)); } } display.viewTo = to; } @@ -4673,15 +3150,12 @@ // Count the number of lines in the view whose DOM representation is // out of date (or nonexistent). function countDirtyView(cm) { - var view = cm.display.view, - dirty = 0; + var view = cm.display.view, dirty = 0; for (var i = 0; i < view.length; i++) { var lineView = view[i]; - if (!lineView.hidden && (!lineView.node || lineView.changes)) { - ++dirty; - } + if (!lineView.hidden && (!lineView.node || lineView.changes)) { ++dirty; } } - return dirty; + return dirty } function updateSelection(cm) { @@ -4689,105 +3163,71 @@ } function prepareSelection(cm, primary) { - if (primary === void 0) primary = true; + if ( primary === void 0 ) primary = true; - var doc = cm.doc, - result = {}; - var curFragment = (result.cursors = document.createDocumentFragment()); - var selFragment = (result.selection = document.createDocumentFragment()); + var doc = cm.doc, result = {}; + var curFragment = result.cursors = document.createDocumentFragment(); + var selFragment = result.selection = document.createDocumentFragment(); + var customCursor = cm.options.$customCursor; + if (customCursor) { primary = true; } for (var i = 0; i < doc.sel.ranges.length; i++) { - if (!primary && i == doc.sel.primIndex) { - continue; - } - var range$$1 = doc.sel.ranges[i]; - if ( - range$$1.from().line >= cm.display.viewTo || - range$$1.to().line < cm.display.viewFrom - ) { - continue; - } - var collapsed = range$$1.empty(); - if (collapsed || cm.options.showCursorWhenSelecting) { - drawSelectionCursor(cm, range$$1.head, curFragment); - } - if (!collapsed) { - drawSelectionRange(cm, range$$1, selFragment); + if (!primary && i == doc.sel.primIndex) { continue } + var range = doc.sel.ranges[i]; + if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) { continue } + var collapsed = range.empty(); + if (customCursor) { + var head = customCursor(cm, range); + if (head) { drawSelectionCursor(cm, head, curFragment); } + } else if (collapsed || cm.options.showCursorWhenSelecting) { + drawSelectionCursor(cm, range.head, curFragment); } + if (!collapsed) + { drawSelectionRange(cm, range, selFragment); } } - return result; + return result } // Draws a cursor for the given range function drawSelectionCursor(cm, head, output) { - var pos = cursorCoords( - cm, - head, - 'div', - null, - null, - !cm.options.singleCursorHeightPerLine, - ); - - var cursor = output.appendChild(elt('div', '\u00a0', 'CodeMirror-cursor')); - cursor.style.left = pos.left + 'px'; - cursor.style.top = pos.top + 'px'; - cursor.style.height = - Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + 'px'; + var pos = cursorCoords(cm, head, "div", null, null, !cm.options.singleCursorHeightPerLine); + + var cursor = output.appendChild(elt("div", "\u00a0", "CodeMirror-cursor")); + cursor.style.left = pos.left + "px"; + cursor.style.top = pos.top + "px"; + cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + "px"; + + if (/\bcm-fat-cursor\b/.test(cm.getWrapperElement().className)) { + var charPos = charCoords(cm, head, "div", null, null); + var width = charPos.right - charPos.left; + cursor.style.width = (width > 0 ? width : cm.defaultCharWidth()) + "px"; + } if (pos.other) { // Secondary cursor, shown when on a 'jump' in bi-directional text - var otherCursor = output.appendChild( - elt('div', '\u00a0', 'CodeMirror-cursor CodeMirror-secondarycursor'), - ); - otherCursor.style.display = ''; - otherCursor.style.left = pos.other.left + 'px'; - otherCursor.style.top = pos.other.top + 'px'; - otherCursor.style.height = - (pos.other.bottom - pos.other.top) * 0.85 + 'px'; + var otherCursor = output.appendChild(elt("div", "\u00a0", "CodeMirror-cursor CodeMirror-secondarycursor")); + otherCursor.style.display = ""; + otherCursor.style.left = pos.other.left + "px"; + otherCursor.style.top = pos.other.top + "px"; + otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + "px"; } } - function cmpCoords(a, b) { - return a.top - b.top || a.left - b.left; - } + function cmpCoords(a, b) { return a.top - b.top || a.left - b.left } // Draws the given range as a highlighted selection - function drawSelectionRange(cm, range$$1, output) { - var display = cm.display, - doc = cm.doc; + function drawSelectionRange(cm, range, output) { + var display = cm.display, doc = cm.doc; var fragment = document.createDocumentFragment(); - var padding = paddingH(cm.display), - leftSide = padding.left; - var rightSide = - Math.max( - display.sizerWidth, - displayWidth(cm) - display.sizer.offsetLeft, - ) - padding.right; - var docLTR = doc.direction == 'ltr'; + var padding = paddingH(cm.display), leftSide = padding.left; + var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right; + var docLTR = doc.direction == "ltr"; function add(left, top, width, bottom) { - if (top < 0) { - top = 0; - } + if (top < 0) { top = 0; } top = Math.round(top); bottom = Math.round(bottom); - fragment.appendChild( - elt( - 'div', - null, - 'CodeMirror-selected', - 'position: absolute; left: ' + - left + - 'px;\n top: ' + - top + - 'px; width: ' + - (width == null ? rightSide - left : width) + - 'px;\n height: ' + - (bottom - top) + - 'px', - ), - ); + fragment.appendChild(elt("div", null, "CodeMirror-selected", ("position: absolute; left: " + left + "px;\n top: " + top + "px; width: " + (width == null ? rightSide - left : width) + "px;\n height: " + (bottom - top) + "px"))); } function drawForLine(line, fromArg, toArg) { @@ -4795,114 +3235,74 @@ var lineLen = lineObj.text.length; var start, end; function coords(ch, bias) { - return charCoords(cm, Pos(line, ch), 'div', lineObj, bias); + return charCoords(cm, Pos(line, ch), "div", lineObj, bias) } function wrapX(pos, dir, side) { var extent = wrappedLineExtentChar(cm, lineObj, null, pos); - var prop = (dir == 'ltr') == (side == 'after') ? 'left' : 'right'; - var ch = - side == 'after' - ? extent.begin - : extent.end - - (/\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1); - return coords(ch, prop)[prop]; + var prop = (dir == "ltr") == (side == "after") ? "left" : "right"; + var ch = side == "after" ? extent.begin : extent.end - (/\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1); + return coords(ch, prop)[prop] } var order = getOrder(lineObj, doc.direction); - iterateBidiSections( - order, - fromArg || 0, - toArg == null ? lineLen : toArg, - function (from, to, dir, i) { - var ltr = dir == 'ltr'; - var fromPos = coords(from, ltr ? 'left' : 'right'); - var toPos = coords(to - 1, ltr ? 'right' : 'left'); - - var openStart = fromArg == null && from == 0, - openEnd = toArg == null && to == lineLen; - var first = i == 0, - last = !order || i == order.length - 1; - if (toPos.top - fromPos.top <= 3) { - // Single line - var openLeft = (docLTR ? openStart : openEnd) && first; - var openRight = (docLTR ? openEnd : openStart) && last; - var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left; - var right = openRight ? rightSide : (ltr ? toPos : fromPos).right; - add(left, fromPos.top, right - left, fromPos.bottom); + iterateBidiSections(order, fromArg || 0, toArg == null ? lineLen : toArg, function (from, to, dir, i) { + var ltr = dir == "ltr"; + var fromPos = coords(from, ltr ? "left" : "right"); + var toPos = coords(to - 1, ltr ? "right" : "left"); + + var openStart = fromArg == null && from == 0, openEnd = toArg == null && to == lineLen; + var first = i == 0, last = !order || i == order.length - 1; + if (toPos.top - fromPos.top <= 3) { // Single line + var openLeft = (docLTR ? openStart : openEnd) && first; + var openRight = (docLTR ? openEnd : openStart) && last; + var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left; + var right = openRight ? rightSide : (ltr ? toPos : fromPos).right; + add(left, fromPos.top, right - left, fromPos.bottom); + } else { // Multiple lines + var topLeft, topRight, botLeft, botRight; + if (ltr) { + topLeft = docLTR && openStart && first ? leftSide : fromPos.left; + topRight = docLTR ? rightSide : wrapX(from, dir, "before"); + botLeft = docLTR ? leftSide : wrapX(to, dir, "after"); + botRight = docLTR && openEnd && last ? rightSide : toPos.right; } else { - // Multiple lines - var topLeft, topRight, botLeft, botRight; - if (ltr) { - topLeft = docLTR && openStart && first ? leftSide : fromPos.left; - topRight = docLTR ? rightSide : wrapX(from, dir, 'before'); - botLeft = docLTR ? leftSide : wrapX(to, dir, 'after'); - botRight = docLTR && openEnd && last ? rightSide : toPos.right; - } else { - topLeft = !docLTR ? leftSide : wrapX(from, dir, 'before'); - topRight = - !docLTR && openStart && first ? rightSide : fromPos.right; - botLeft = !docLTR && openEnd && last ? leftSide : toPos.left; - botRight = !docLTR ? rightSide : wrapX(to, dir, 'after'); - } - add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom); - if (fromPos.bottom < toPos.top) { - add(leftSide, fromPos.bottom, null, toPos.top); - } - add(botLeft, toPos.top, botRight - botLeft, toPos.bottom); + topLeft = !docLTR ? leftSide : wrapX(from, dir, "before"); + topRight = !docLTR && openStart && first ? rightSide : fromPos.right; + botLeft = !docLTR && openEnd && last ? leftSide : toPos.left; + botRight = !docLTR ? rightSide : wrapX(to, dir, "after"); } + add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom); + if (fromPos.bottom < toPos.top) { add(leftSide, fromPos.bottom, null, toPos.top); } + add(botLeft, toPos.top, botRight - botLeft, toPos.bottom); + } - if (!start || cmpCoords(fromPos, start) < 0) { - start = fromPos; - } - if (cmpCoords(toPos, start) < 0) { - start = toPos; - } - if (!end || cmpCoords(fromPos, end) < 0) { - end = fromPos; - } - if (cmpCoords(toPos, end) < 0) { - end = toPos; - } - }, - ); - return { start: start, end: end }; + if (!start || cmpCoords(fromPos, start) < 0) { start = fromPos; } + if (cmpCoords(toPos, start) < 0) { start = toPos; } + if (!end || cmpCoords(fromPos, end) < 0) { end = fromPos; } + if (cmpCoords(toPos, end) < 0) { end = toPos; } + }); + return {start: start, end: end} } - var sFrom = range$$1.from(), - sTo = range$$1.to(); + var sFrom = range.from(), sTo = range.to(); if (sFrom.line == sTo.line) { drawForLine(sFrom.line, sFrom.ch, sTo.ch); } else { - var fromLine = getLine(doc, sFrom.line), - toLine = getLine(doc, sTo.line); + var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line); var singleVLine = visualLine(fromLine) == visualLine(toLine); - var leftEnd = drawForLine( - sFrom.line, - sFrom.ch, - singleVLine ? fromLine.text.length + 1 : null, - ).end; - var rightStart = drawForLine( - sTo.line, - singleVLine ? 0 : null, - sTo.ch, - ).start; + var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end; + var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start; if (singleVLine) { if (leftEnd.top < rightStart.top - 2) { add(leftEnd.right, leftEnd.top, null, leftEnd.bottom); add(leftSide, rightStart.top, rightStart.left, rightStart.bottom); } else { - add( - leftEnd.right, - leftEnd.top, - rightStart.left - leftEnd.right, - leftEnd.bottom, - ); + add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom); } } - if (leftEnd.bottom < rightStart.top) { - add(leftSide, leftEnd.bottom, null, rightStart.top); - } + if (leftEnd.bottom < rightStart.top) + { add(leftSide, leftEnd.bottom, null, rightStart.top); } } output.appendChild(fragment); @@ -4910,84 +3310,64 @@ // Cursor-blinking function restartBlink(cm) { - if (!cm.state.focused) { - return; - } + if (!cm.state.focused) { return } var display = cm.display; clearInterval(display.blinker); var on = true; - display.cursorDiv.style.visibility = ''; - if (cm.options.cursorBlinkRate > 0) { - display.blinker = setInterval(function () { - return (display.cursorDiv.style.visibility = (on = !on) - ? '' - : 'hidden'); - }, cm.options.cursorBlinkRate); - } else if (cm.options.cursorBlinkRate < 0) { - display.cursorDiv.style.visibility = 'hidden'; - } + display.cursorDiv.style.visibility = ""; + if (cm.options.cursorBlinkRate > 0) + { display.blinker = setInterval(function () { + if (!cm.hasFocus()) { onBlur(cm); } + display.cursorDiv.style.visibility = (on = !on) ? "" : "hidden"; + }, cm.options.cursorBlinkRate); } + else if (cm.options.cursorBlinkRate < 0) + { display.cursorDiv.style.visibility = "hidden"; } } function ensureFocus(cm) { - if (!cm.state.focused) { + if (!cm.hasFocus()) { cm.display.input.focus(); - onFocus(cm); + if (!cm.state.focused) { onFocus(cm); } } } function delayBlurEvent(cm) { cm.state.delayingBlurEvent = true; - setTimeout(function () { - if (cm.state.delayingBlurEvent) { - cm.state.delayingBlurEvent = false; - onBlur(cm); - } - }, 100); + setTimeout(function () { if (cm.state.delayingBlurEvent) { + cm.state.delayingBlurEvent = false; + if (cm.state.focused) { onBlur(cm); } + } }, 100); } function onFocus(cm, e) { - if (cm.state.delayingBlurEvent) { - cm.state.delayingBlurEvent = false; - } + if (cm.state.delayingBlurEvent && !cm.state.draggingText) { cm.state.delayingBlurEvent = false; } - if (cm.options.readOnly == 'nocursor') { - return; - } + if (cm.options.readOnly == "nocursor") { return } if (!cm.state.focused) { - signal(cm, 'focus', cm, e); + signal(cm, "focus", cm, e); cm.state.focused = true; - addClass(cm.display.wrapper, 'CodeMirror-focused'); + addClass(cm.display.wrapper, "CodeMirror-focused"); // This test prevents this from firing when a context // menu is closed (since the input reset would kill the // select-all detection hack) if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) { cm.display.input.reset(); - if (webkit) { - setTimeout(function () { - return cm.display.input.reset(true); - }, 20); - } // Issue #1730 + if (webkit) { setTimeout(function () { return cm.display.input.reset(true); }, 20); } // Issue #1730 } cm.display.input.receivedFocus(); } restartBlink(cm); } function onBlur(cm, e) { - if (cm.state.delayingBlurEvent) { - return; - } + if (cm.state.delayingBlurEvent) { return } if (cm.state.focused) { - signal(cm, 'blur', cm, e); + signal(cm, "blur", cm, e); cm.state.focused = false; - rmClass(cm.display.wrapper, 'CodeMirror-focused'); + rmClass(cm.display.wrapper, "CodeMirror-focused"); } clearInterval(cm.display.blinker); - setTimeout(function () { - if (!cm.state.focused) { - cm.display.shift = false; - } - }, 150); + setTimeout(function () { if (!cm.state.focused) { cm.display.shift = false; } }, 150); } // Read the actual heights of the rendered lines, and update their @@ -4995,14 +3375,14 @@ function updateHeightsInViewport(cm) { var display = cm.display; var prevBottom = display.lineDiv.offsetTop; + var viewTop = Math.max(0, display.scroller.getBoundingClientRect().top); + var oldHeight = display.lineDiv.getBoundingClientRect().top; + var mustScroll = 0; for (var i = 0; i < display.view.length; i++) { - var cur = display.view[i], - wrapping = cm.options.lineWrapping; - var height = void 0, - width = 0; - if (cur.hidden) { - continue; - } + var cur = display.view[i], wrapping = cm.options.lineWrapping; + var height = (void 0), width = 0; + if (cur.hidden) { continue } + oldHeight += cur.line.height; if (ie && ie_version < 8) { var bot = cur.node.offsetTop + cur.node.offsetHeight; height = bot - prevBottom; @@ -5012,20 +3392,16 @@ height = box.bottom - box.top; // Check that lines don't extend past the right of the current // editor width - if (!wrapping && cur.text.firstChild) { - width = - cur.text.firstChild.getBoundingClientRect().right - box.left - 1; - } + if (!wrapping && cur.text.firstChild) + { width = cur.text.firstChild.getBoundingClientRect().right - box.left - 1; } } var diff = cur.line.height - height; - if (diff > 0.005 || diff < -0.005) { + if (diff > .005 || diff < -.005) { + if (oldHeight < viewTop) { mustScroll -= diff; } updateLineHeight(cur.line, height); updateWidgetHeight(cur.line); - if (cur.rest) { - for (var j = 0; j < cur.rest.length; j++) { - updateWidgetHeight(cur.rest[j]); - } - } + if (cur.rest) { for (var j = 0; j < cur.rest.length; j++) + { updateWidgetHeight(cur.rest[j]); } } } if (width > cm.display.sizerWidth) { var chWidth = Math.ceil(width / charWidth(cm.display)); @@ -5036,58 +3412,40 @@ } } } + if (Math.abs(mustScroll) > 2) { display.scroller.scrollTop += mustScroll; } } // Read and store the height of line widgets associated with the // given line. function updateWidgetHeight(line) { - if (line.widgets) { - for (var i = 0; i < line.widgets.length; ++i) { - var w = line.widgets[i], - parent = w.node.parentNode; - if (parent) { - w.height = parent.offsetHeight; - } - } - } + if (line.widgets) { for (var i = 0; i < line.widgets.length; ++i) { + var w = line.widgets[i], parent = w.node.parentNode; + if (parent) { w.height = parent.offsetHeight; } + } } } // Compute the lines that are visible in a given viewport (defaults // the the current scroll position). viewport may contain top, // height, and ensure (see op.scrollToPos) properties. function visibleLines(display, doc, viewport) { - var top = - viewport && viewport.top != null - ? Math.max(0, viewport.top) - : display.scroller.scrollTop; + var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop; top = Math.floor(top - paddingTop(display)); - var bottom = - viewport && viewport.bottom != null - ? viewport.bottom - : top + display.wrapper.clientHeight; + var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight; - var from = lineAtHeight(doc, top), - to = lineAtHeight(doc, bottom); + var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom); // Ensure is a {from: {line, ch}, to: {line, ch}} object, and // forces those lines into the viewport (if possible). if (viewport && viewport.ensure) { - var ensureFrom = viewport.ensure.from.line, - ensureTo = viewport.ensure.to.line; + var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line; if (ensureFrom < from) { from = ensureFrom; - to = lineAtHeight( - doc, - heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight, - ); + to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight); } else if (Math.min(ensureTo, doc.lastLine()) >= to) { - from = lineAtHeight( - doc, - heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight, - ); + from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight); to = ensureTo; } } - return { from: from, to: Math.max(to, from + 1) }; + return {from: from, to: Math.max(to, from + 1)} } // SCROLLING THINGS INTO VIEW @@ -5095,36 +3453,14 @@ // If an editor sits on the top or bottom of the window, partially // scrolled out of view, this ensures that the cursor is visible. function maybeScrollWindow(cm, rect) { - if (signalDOMEvent(cm, 'scrollCursorIntoView')) { - return; - } + if (signalDOMEvent(cm, "scrollCursorIntoView")) { return } - var display = cm.display, - box = display.sizer.getBoundingClientRect(), - doScroll = null; - if (rect.top + box.top < 0) { - doScroll = true; - } else if ( - rect.bottom + box.top > - (window.innerHeight || document.documentElement.clientHeight) - ) { - doScroll = false; - } + var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null; + var doc = display.wrapper.ownerDocument; + if (rect.top + box.top < 0) { doScroll = true; } + else if (rect.bottom + box.top > (doc.defaultView.innerHeight || doc.documentElement.clientHeight)) { doScroll = false; } if (doScroll != null && !phantom) { - var scrollNode = elt( - 'div', - '\u200b', - null, - 'position: absolute;\n top: ' + - (rect.top - display.viewOffset - paddingTop(cm.display)) + - 'px;\n height: ' + - (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + - 'px;\n left: ' + - rect.left + - 'px; width: ' + - Math.max(2, rect.right - rect.left) + - 'px;', - ); + var scrollNode = elt("div", "\u200b", null, ("position: absolute;\n top: " + (rect.top - display.viewOffset - paddingTop(cm.display)) + "px;\n height: " + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + "px;\n left: " + (rect.left) + "px; width: " + (Math.max(2, rect.right - rect.left)) + "px;")); cm.display.lineSpace.appendChild(scrollNode); scrollNode.scrollIntoView(doScroll); cm.display.lineSpace.removeChild(scrollNode); @@ -5135,60 +3471,43 @@ // it actually became visible (as line heights are accurately // measured, the position of something may 'drift' during drawing). function scrollPosIntoView(cm, pos, end, margin) { - if (margin == null) { - margin = 0; - } + if (margin == null) { margin = 0; } var rect; if (!cm.options.lineWrapping && pos == end) { // Set pos and end to the cursor positions around the character pos sticks to // If pos.sticky == "before", that is around pos.ch - 1, otherwise around pos.ch // If pos == Pos(_, 0, "before"), pos and end are unchanged - pos = pos.ch - ? Pos(pos.line, pos.sticky == 'before' ? pos.ch - 1 : pos.ch, 'after') - : pos; - end = pos.sticky == 'before' ? Pos(pos.line, pos.ch + 1, 'before') : pos; + end = pos.sticky == "before" ? Pos(pos.line, pos.ch + 1, "before") : pos; + pos = pos.ch ? Pos(pos.line, pos.sticky == "before" ? pos.ch - 1 : pos.ch, "after") : pos; } for (var limit = 0; limit < 5; limit++) { var changed = false; var coords = cursorCoords(cm, pos); var endCoords = !end || end == pos ? coords : cursorCoords(cm, end); - rect = { - left: Math.min(coords.left, endCoords.left), - top: Math.min(coords.top, endCoords.top) - margin, - right: Math.max(coords.left, endCoords.left), - bottom: Math.max(coords.bottom, endCoords.bottom) + margin, - }; + rect = {left: Math.min(coords.left, endCoords.left), + top: Math.min(coords.top, endCoords.top) - margin, + right: Math.max(coords.left, endCoords.left), + bottom: Math.max(coords.bottom, endCoords.bottom) + margin}; var scrollPos = calculateScrollPos(cm, rect); - var startTop = cm.doc.scrollTop, - startLeft = cm.doc.scrollLeft; + var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft; if (scrollPos.scrollTop != null) { updateScrollTop(cm, scrollPos.scrollTop); - if (Math.abs(cm.doc.scrollTop - startTop) > 1) { - changed = true; - } + if (Math.abs(cm.doc.scrollTop - startTop) > 1) { changed = true; } } if (scrollPos.scrollLeft != null) { setScrollLeft(cm, scrollPos.scrollLeft); - if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) { - changed = true; - } - } - if (!changed) { - break; + if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) { changed = true; } } + if (!changed) { break } } - return rect; + return rect } // Scroll a given set of coordinates into view (immediately). function scrollIntoView(cm, rect) { var scrollPos = calculateScrollPos(cm, rect); - if (scrollPos.scrollTop != null) { - updateScrollTop(cm, scrollPos.scrollTop); - } - if (scrollPos.scrollLeft != null) { - setScrollLeft(cm, scrollPos.scrollLeft); - } + if (scrollPos.scrollTop != null) { updateScrollTop(cm, scrollPos.scrollTop); } + if (scrollPos.scrollLeft != null) { setScrollLeft(cm, scrollPos.scrollLeft); } } // Calculate a new scroll position needed to scroll the given @@ -5196,66 +3515,40 @@ // scrollLeft properties. When these are undefined, the // vertical/horizontal position does not need to be adjusted. function calculateScrollPos(cm, rect) { - var display = cm.display, - snapMargin = textHeight(cm.display); - if (rect.top < 0) { - rect.top = 0; - } - var screentop = - cm.curOp && cm.curOp.scrollTop != null - ? cm.curOp.scrollTop - : display.scroller.scrollTop; - var screen = displayHeight(cm), - result = {}; - if (rect.bottom - rect.top > screen) { - rect.bottom = rect.top + screen; - } + var display = cm.display, snapMargin = textHeight(cm.display); + if (rect.top < 0) { rect.top = 0; } + var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop; + var screen = displayHeight(cm), result = {}; + if (rect.bottom - rect.top > screen) { rect.bottom = rect.top + screen; } var docBottom = cm.doc.height + paddingVert(display); - var atTop = rect.top < snapMargin, - atBottom = rect.bottom > docBottom - snapMargin; + var atTop = rect.top < snapMargin, atBottom = rect.bottom > docBottom - snapMargin; if (rect.top < screentop) { result.scrollTop = atTop ? 0 : rect.top; } else if (rect.bottom > screentop + screen) { - var newTop = Math.min( - rect.top, - (atBottom ? docBottom : rect.bottom) - screen, - ); - if (newTop != screentop) { - result.scrollTop = newTop; - } - } - - var screenleft = - cm.curOp && cm.curOp.scrollLeft != null - ? cm.curOp.scrollLeft - : display.scroller.scrollLeft; - var screenw = - displayWidth(cm) - - (cm.options.fixedGutter ? display.gutters.offsetWidth : 0); - var tooWide = rect.right - rect.left > screenw; - if (tooWide) { - rect.right = rect.left + screenw; + var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen); + if (newTop != screentop) { result.scrollTop = newTop; } } - if (rect.left < 10) { - result.scrollLeft = 0; - } else if (rect.left < screenleft) { - result.scrollLeft = Math.max(0, rect.left - (tooWide ? 0 : 10)); - } else if (rect.right > screenw + screenleft - 3) { - result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw; - } - return result; + + var gutterSpace = cm.options.fixedGutter ? 0 : display.gutters.offsetWidth; + var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft - gutterSpace; + var screenw = displayWidth(cm) - display.gutters.offsetWidth; + var tooWide = rect.right - rect.left > screenw; + if (tooWide) { rect.right = rect.left + screenw; } + if (rect.left < 10) + { result.scrollLeft = 0; } + else if (rect.left < screenleft) + { result.scrollLeft = Math.max(0, rect.left + gutterSpace - (tooWide ? 0 : 10)); } + else if (rect.right > screenw + screenleft - 3) + { result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw; } + return result } // Store a relative adjustment to the scroll position in the current // operation (to be applied when the operation finishes). function addToScrollTop(cm, top) { - if (top == null) { - return; - } + if (top == null) { return } resolveScrollToPos(cm); - cm.curOp.scrollTop = - (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + - top; + cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top; } // Make sure that at the end of the operation the current cursor is @@ -5263,28 +3556,18 @@ function ensureCursorVisible(cm) { resolveScrollToPos(cm); var cur = cm.getCursor(); - cm.curOp.scrollToPos = { - from: cur, - to: cur, - margin: cm.options.cursorScrollMargin, - }; + cm.curOp.scrollToPos = {from: cur, to: cur, margin: cm.options.cursorScrollMargin}; } function scrollToCoords(cm, x, y) { - if (x != null || y != null) { - resolveScrollToPos(cm); - } - if (x != null) { - cm.curOp.scrollLeft = x; - } - if (y != null) { - cm.curOp.scrollTop = y; - } + if (x != null || y != null) { resolveScrollToPos(cm); } + if (x != null) { cm.curOp.scrollLeft = x; } + if (y != null) { cm.curOp.scrollTop = y; } } - function scrollToRange(cm, range$$1) { + function scrollToRange(cm, range) { resolveScrollToPos(cm); - cm.curOp.scrollToPos = range$$1; + cm.curOp.scrollToPos = range; } // When an operation has its scrollToPos property set, and another @@ -5292,12 +3575,11 @@ // 'simulates' scrolling that position into view in a cheap way, so // that the effect of intermediate scroll commands is not ignored. function resolveScrollToPos(cm) { - var range$$1 = cm.curOp.scrollToPos; - if (range$$1) { + var range = cm.curOp.scrollToPos; + if (range) { cm.curOp.scrollToPos = null; - var from = estimateCoords(cm, range$$1.from), - to = estimateCoords(cm, range$$1.to); - scrollToCoordsRange(cm, from, to, range$$1.margin); + var from = estimateCoords(cm, range.from), to = estimateCoords(cm, range.to); + scrollToCoordsRange(cm, from, to, range.margin); } } @@ -5306,7 +3588,7 @@ left: Math.min(from.left, to.left), top: Math.min(from.top, to.top) - margin, right: Math.max(from.right, to.right), - bottom: Math.max(from.bottom, to.bottom) + margin, + bottom: Math.max(from.bottom, to.bottom) + margin }); scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop); } @@ -5314,54 +3596,29 @@ // Sync the scrollable area and scrollbars, ensure the viewport // covers the visible area. function updateScrollTop(cm, val) { - if (Math.abs(cm.doc.scrollTop - val) < 2) { - return; - } - if (!gecko) { - updateDisplaySimple(cm, { top: val }); - } + if (Math.abs(cm.doc.scrollTop - val) < 2) { return } + if (!gecko) { updateDisplaySimple(cm, {top: val}); } setScrollTop(cm, val, true); - if (gecko) { - updateDisplaySimple(cm); - } + if (gecko) { updateDisplaySimple(cm); } startWorker(cm, 100); } function setScrollTop(cm, val, forceScroll) { - val = Math.min( - cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, - val, - ); - if (cm.display.scroller.scrollTop == val && !forceScroll) { - return; - } + val = Math.max(0, Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val)); + if (cm.display.scroller.scrollTop == val && !forceScroll) { return } cm.doc.scrollTop = val; cm.display.scrollbars.setScrollTop(val); - if (cm.display.scroller.scrollTop != val) { - cm.display.scroller.scrollTop = val; - } + if (cm.display.scroller.scrollTop != val) { cm.display.scroller.scrollTop = val; } } // Sync scroller and scrollbar, ensure the gutter elements are // aligned. function setScrollLeft(cm, val, isScroller, forceScroll) { - val = Math.min( - val, - cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth, - ); - if ( - (isScroller - ? val == cm.doc.scrollLeft - : Math.abs(cm.doc.scrollLeft - val) < 2) && - !forceScroll - ) { - return; - } + val = Math.max(0, Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth)); + if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) { return } cm.doc.scrollLeft = val; alignHorizontally(cm); - if (cm.display.scroller.scrollLeft != val) { - cm.display.scroller.scrollLeft = val; - } + if (cm.display.scroller.scrollLeft != val) { cm.display.scroller.scrollLeft = val; } cm.display.scrollbars.setScrollLeft(val); } @@ -5370,55 +3627,38 @@ // Prepare DOM reads needed to update the scrollbars. Done in one // shot to minimize update/measure roundtrips. function measureForScrollbars(cm) { - var d = cm.display, - gutterW = d.gutters.offsetWidth; + var d = cm.display, gutterW = d.gutters.offsetWidth; var docH = Math.round(cm.doc.height + paddingVert(cm.display)); return { clientHeight: d.scroller.clientHeight, viewHeight: d.wrapper.clientHeight, - scrollWidth: d.scroller.scrollWidth, - clientWidth: d.scroller.clientWidth, + scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth, viewWidth: d.wrapper.clientWidth, barLeft: cm.options.fixedGutter ? gutterW : 0, docHeight: docH, scrollHeight: docH + scrollGap(cm) + d.barHeight, nativeBarWidth: d.nativeBarWidth, - gutterWidth: gutterW, - }; + gutterWidth: gutterW + } } - var NativeScrollbars = function (place, scroll, cm) { + var NativeScrollbars = function(place, scroll, cm) { this.cm = cm; - var vert = (this.vert = elt( - 'div', - [elt('div', null, null, 'min-width: 1px')], - 'CodeMirror-vscrollbar', - )); - var horiz = (this.horiz = elt( - 'div', - [elt('div', null, null, 'height: 100%; min-height: 1px')], - 'CodeMirror-hscrollbar', - )); + var vert = this.vert = elt("div", [elt("div", null, null, "min-width: 1px")], "CodeMirror-vscrollbar"); + var horiz = this.horiz = elt("div", [elt("div", null, null, "height: 100%; min-height: 1px")], "CodeMirror-hscrollbar"); vert.tabIndex = horiz.tabIndex = -1; - place(vert); - place(horiz); + place(vert); place(horiz); - on(vert, 'scroll', function () { - if (vert.clientHeight) { - scroll(vert.scrollTop, 'vertical'); - } + on(vert, "scroll", function () { + if (vert.clientHeight) { scroll(vert.scrollTop, "vertical"); } }); - on(horiz, 'scroll', function () { - if (horiz.clientWidth) { - scroll(horiz.scrollLeft, 'horizontal'); - } + on(horiz, "scroll", function () { + if (horiz.clientWidth) { scroll(horiz.scrollLeft, "horizontal"); } }); this.checkedZeroWidth = false; // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8). - if (ie && ie_version < 8) { - this.horiz.style.minHeight = this.vert.style.minWidth = '18px'; - } + if (ie && ie_version < 8) { this.horiz.style.minHeight = this.vert.style.minWidth = "18px"; } }; NativeScrollbars.prototype.update = function (measure) { @@ -5427,70 +3667,58 @@ var sWidth = measure.nativeBarWidth; if (needsV) { - this.vert.style.display = 'block'; - this.vert.style.bottom = needsH ? sWidth + 'px' : '0'; + this.vert.style.display = "block"; + this.vert.style.bottom = needsH ? sWidth + "px" : "0"; var totalHeight = measure.viewHeight - (needsH ? sWidth : 0); // A bug in IE8 can cause this value to be negative, so guard it. this.vert.firstChild.style.height = - Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + - 'px'; + Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + "px"; } else { - this.vert.style.display = ''; - this.vert.firstChild.style.height = '0'; + this.vert.scrollTop = 0; + this.vert.style.display = ""; + this.vert.firstChild.style.height = "0"; } if (needsH) { - this.horiz.style.display = 'block'; - this.horiz.style.right = needsV ? sWidth + 'px' : '0'; - this.horiz.style.left = measure.barLeft + 'px'; - var totalWidth = - measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0); + this.horiz.style.display = "block"; + this.horiz.style.right = needsV ? sWidth + "px" : "0"; + this.horiz.style.left = measure.barLeft + "px"; + var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0); this.horiz.firstChild.style.width = - Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + - 'px'; + Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + "px"; } else { - this.horiz.style.display = ''; - this.horiz.firstChild.style.width = '0'; + this.horiz.style.display = ""; + this.horiz.firstChild.style.width = "0"; } if (!this.checkedZeroWidth && measure.clientHeight > 0) { - if (sWidth == 0) { - this.zeroWidthHack(); - } + if (sWidth == 0) { this.zeroWidthHack(); } this.checkedZeroWidth = true; } - return { right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0 }; + return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0} }; NativeScrollbars.prototype.setScrollLeft = function (pos) { - if (this.horiz.scrollLeft != pos) { - this.horiz.scrollLeft = pos; - } - if (this.disableHoriz) { - this.enableZeroWidthBar(this.horiz, this.disableHoriz, 'horiz'); - } + if (this.horiz.scrollLeft != pos) { this.horiz.scrollLeft = pos; } + if (this.disableHoriz) { this.enableZeroWidthBar(this.horiz, this.disableHoriz, "horiz"); } }; NativeScrollbars.prototype.setScrollTop = function (pos) { - if (this.vert.scrollTop != pos) { - this.vert.scrollTop = pos; - } - if (this.disableVert) { - this.enableZeroWidthBar(this.vert, this.disableVert, 'vert'); - } + if (this.vert.scrollTop != pos) { this.vert.scrollTop = pos; } + if (this.disableVert) { this.enableZeroWidthBar(this.vert, this.disableVert, "vert"); } }; NativeScrollbars.prototype.zeroWidthHack = function () { - var w = mac && !mac_geMountainLion ? '12px' : '18px'; + var w = mac && !mac_geMountainLion ? "12px" : "18px"; this.horiz.style.height = this.vert.style.width = w; - this.horiz.style.pointerEvents = this.vert.style.pointerEvents = 'none'; - this.disableHoriz = new Delayed(); - this.disableVert = new Delayed(); + this.horiz.style.visibility = this.vert.style.visibility = "hidden"; + this.disableHoriz = new Delayed; + this.disableVert = new Delayed; }; NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) { - bar.style.pointerEvents = 'auto'; + bar.style.visibility = ""; function maybeDisable() { // To find out whether the scrollbar is still visible, we // check whether the element under the pixel in the bottom @@ -5499,18 +3727,10 @@ // (when the bar is hidden). If it is still visible, we keep // it enabled, if it's hidden, we disable pointer events. var box = bar.getBoundingClientRect(); - var elt$$1 = - type == 'vert' - ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2) - : document.elementFromPoint( - (box.right + box.left) / 2, - box.bottom - 1, - ); - if (elt$$1 != bar) { - bar.style.pointerEvents = 'none'; - } else { - delay.set(1000, maybeDisable); - } + var elt = type == "vert" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2) + : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1); + if (elt != bar) { bar.style.visibility = "hidden"; } + else { delay.set(1000, maybeDisable); } } delay.set(1000, maybeDisable); }; @@ -5523,32 +3743,20 @@ var NullScrollbars = function () {}; - NullScrollbars.prototype.update = function () { - return { bottom: 0, right: 0 }; - }; + NullScrollbars.prototype.update = function () { return {bottom: 0, right: 0} }; NullScrollbars.prototype.setScrollLeft = function () {}; NullScrollbars.prototype.setScrollTop = function () {}; NullScrollbars.prototype.clear = function () {}; function updateScrollbars(cm, measure) { - if (!measure) { - measure = measureForScrollbars(cm); - } - var startWidth = cm.display.barWidth, - startHeight = cm.display.barHeight; + if (!measure) { measure = measureForScrollbars(cm); } + var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight; updateScrollbarsInner(cm, measure); - for ( - var i = 0; - (i < 4 && startWidth != cm.display.barWidth) || - startHeight != cm.display.barHeight; - i++ - ) { - if (startWidth != cm.display.barWidth && cm.options.lineWrapping) { - updateHeightsInViewport(cm); - } + for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) { + if (startWidth != cm.display.barWidth && cm.options.lineWrapping) + { updateHeightsInViewport(cm); } updateScrollbarsInner(cm, measureForScrollbars(cm)); - startWidth = cm.display.barWidth; - startHeight = cm.display.barHeight; + startWidth = cm.display.barWidth; startHeight = cm.display.barHeight; } } @@ -5558,65 +3766,44 @@ var d = cm.display; var sizes = d.scrollbars.update(measure); - d.sizer.style.paddingRight = (d.barWidth = sizes.right) + 'px'; - d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + 'px'; - d.heightForcer.style.borderBottom = sizes.bottom + 'px solid transparent'; + d.sizer.style.paddingRight = (d.barWidth = sizes.right) + "px"; + d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + "px"; + d.heightForcer.style.borderBottom = sizes.bottom + "px solid transparent"; if (sizes.right && sizes.bottom) { - d.scrollbarFiller.style.display = 'block'; - d.scrollbarFiller.style.height = sizes.bottom + 'px'; - d.scrollbarFiller.style.width = sizes.right + 'px'; - } else { - d.scrollbarFiller.style.display = ''; - } - if ( - sizes.bottom && - cm.options.coverGutterNextToScrollbar && - cm.options.fixedGutter - ) { - d.gutterFiller.style.display = 'block'; - d.gutterFiller.style.height = sizes.bottom + 'px'; - d.gutterFiller.style.width = measure.gutterWidth + 'px'; - } else { - d.gutterFiller.style.display = ''; - } + d.scrollbarFiller.style.display = "block"; + d.scrollbarFiller.style.height = sizes.bottom + "px"; + d.scrollbarFiller.style.width = sizes.right + "px"; + } else { d.scrollbarFiller.style.display = ""; } + if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) { + d.gutterFiller.style.display = "block"; + d.gutterFiller.style.height = sizes.bottom + "px"; + d.gutterFiller.style.width = measure.gutterWidth + "px"; + } else { d.gutterFiller.style.display = ""; } } - var scrollbarModel = { native: NativeScrollbars, null: NullScrollbars }; + var scrollbarModel = {"native": NativeScrollbars, "null": NullScrollbars}; function initScrollbars(cm) { if (cm.display.scrollbars) { cm.display.scrollbars.clear(); - if (cm.display.scrollbars.addClass) { - rmClass(cm.display.wrapper, cm.display.scrollbars.addClass); - } + if (cm.display.scrollbars.addClass) + { rmClass(cm.display.wrapper, cm.display.scrollbars.addClass); } } - cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle]( - function (node) { - cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller); - // Prevent clicks in the scrollbars from killing focus - on(node, 'mousedown', function () { - if (cm.state.focused) { - setTimeout(function () { - return cm.display.input.focus(); - }, 0); - } - }); - node.setAttribute('cm-not-content', 'true'); - }, - function (pos, axis) { - if (axis == 'horizontal') { - setScrollLeft(cm, pos); - } else { - updateScrollTop(cm, pos); - } - }, - cm, - ); - if (cm.display.scrollbars.addClass) { - addClass(cm.display.wrapper, cm.display.scrollbars.addClass); - } + cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) { + cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller); + // Prevent clicks in the scrollbars from killing focus + on(node, "mousedown", function () { + if (cm.state.focused) { setTimeout(function () { return cm.display.input.focus(); }, 0); } + }); + node.setAttribute("cm-not-content", "true"); + }, function (pos, axis) { + if (axis == "horizontal") { setScrollLeft(cm, pos); } + else { updateScrollTop(cm, pos); } + }, cm); + if (cm.display.scrollbars.addClass) + { addClass(cm.display.wrapper, cm.display.scrollbars.addClass); } } // Operations are used to wrap a series of changes to the editor @@ -5630,21 +3817,21 @@ function startOperation(cm) { cm.curOp = { cm: cm, - viewChanged: false, // Flag that indicates that lines might need to be redrawn + viewChanged: false, // Flag that indicates that lines might need to be redrawn startHeight: cm.doc.height, // Used to detect need to update scrollbar - forceUpdate: false, // Used to force a redraw - updateInput: 0, // Whether to reset the input textarea - typing: false, // Whether this reset should be careful to leave existing text (for compositing) - changeObjs: null, // Accumulated changes, for firing change events + forceUpdate: false, // Used to force a redraw + updateInput: 0, // Whether to reset the input textarea + typing: false, // Whether this reset should be careful to leave existing text (for compositing) + changeObjs: null, // Accumulated changes, for firing change events cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already selectionChanged: false, // Whether the selection needs to be redrawn - updateMaxLine: false, // Set when the widest line needs to be determined anew - scrollLeft: null, - scrollTop: null, // Intermediate scroll position, not pushed to DOM yet - scrollToPos: null, // Used to scroll to a specific position + updateMaxLine: false, // Set when the widest line needs to be determined anew + scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet + scrollToPos: null, // Used to scroll to a specific position focus: false, - id: ++nextOpId, // Unique ID + id: ++nextOpId, // Unique ID + markArrays: null // Used by addMarkedSpan }; pushOperation(cm.curOp); } @@ -5652,93 +3839,49 @@ // Finish an operation, updating the display and signalling delayed events function endOperation(cm) { var op = cm.curOp; - if (op) { - finishOperation(op, function (group) { - for (var i = 0; i < group.ops.length; i++) { - group.ops[i].cm.curOp = null; - } - endOperations(group); - }); - } + if (op) { finishOperation(op, function (group) { + for (var i = 0; i < group.ops.length; i++) + { group.ops[i].cm.curOp = null; } + endOperations(group); + }); } } // The DOM updates done when an operation finishes are batched so // that the minimum number of relayouts are required. function endOperations(group) { var ops = group.ops; - for ( - var i = 0; - i < ops.length; - i++ // Read DOM - ) { - endOperation_R1(ops[i]); - } - for ( - var i$1 = 0; - i$1 < ops.length; - i$1++ // Write DOM (maybe) - ) { - endOperation_W1(ops[i$1]); - } - for ( - var i$2 = 0; - i$2 < ops.length; - i$2++ // Read DOM - ) { - endOperation_R2(ops[i$2]); - } - for ( - var i$3 = 0; - i$3 < ops.length; - i$3++ // Write DOM (maybe) - ) { - endOperation_W2(ops[i$3]); - } - for ( - var i$4 = 0; - i$4 < ops.length; - i$4++ // Read DOM - ) { - endOperation_finish(ops[i$4]); - } + for (var i = 0; i < ops.length; i++) // Read DOM + { endOperation_R1(ops[i]); } + for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe) + { endOperation_W1(ops[i$1]); } + for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM + { endOperation_R2(ops[i$2]); } + for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe) + { endOperation_W2(ops[i$3]); } + for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM + { endOperation_finish(ops[i$4]); } } function endOperation_R1(op) { - var cm = op.cm, - display = cm.display; + var cm = op.cm, display = cm.display; maybeClipScrollbars(cm); - if (op.updateMaxLine) { - findMaxLine(cm); - } + if (op.updateMaxLine) { findMaxLine(cm); } - op.mustUpdate = - op.viewChanged || - op.forceUpdate || - op.scrollTop != null || - (op.scrollToPos && - (op.scrollToPos.from.line < display.viewFrom || - op.scrollToPos.to.line >= display.viewTo)) || - (display.maxLineChanged && cm.options.lineWrapping); - op.update = - op.mustUpdate && - new DisplayUpdate( - cm, - op.mustUpdate && { top: op.scrollTop, ensure: op.scrollToPos }, - op.forceUpdate, - ); + op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null || + op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom || + op.scrollToPos.to.line >= display.viewTo) || + display.maxLineChanged && cm.options.lineWrapping; + op.update = op.mustUpdate && + new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate); } function endOperation_W1(op) { - op.updatedDisplay = - op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update); + op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update); } function endOperation_R2(op) { - var cm = op.cm, - display = cm.display; - if (op.updatedDisplay) { - updateHeightsInViewport(cm); - } + var cm = op.cm, display = cm.display; + if (op.updatedDisplay) { updateHeightsInViewport(cm); } op.barMeasure = measureForScrollbars(cm); @@ -5746,272 +3889,168 @@ // and ensure the document's width matches it. // updateDisplay_W2 will use these properties to do the actual resizing if (display.maxLineChanged && !cm.options.lineWrapping) { - op.adjustWidthTo = - measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3; + op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3; cm.display.sizerWidth = op.adjustWidthTo; - op.barMeasure.scrollWidth = Math.max( - display.scroller.clientWidth, - display.sizer.offsetLeft + - op.adjustWidthTo + - scrollGap(cm) + - cm.display.barWidth, - ); - op.maxScrollLeft = Math.max( - 0, - display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm), - ); + op.barMeasure.scrollWidth = + Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth); + op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm)); } - if (op.updatedDisplay || op.selectionChanged) { - op.preparedSelection = display.input.prepareSelection(); - } + if (op.updatedDisplay || op.selectionChanged) + { op.preparedSelection = display.input.prepareSelection(); } } function endOperation_W2(op) { var cm = op.cm; if (op.adjustWidthTo != null) { - cm.display.sizer.style.minWidth = op.adjustWidthTo + 'px'; - if (op.maxScrollLeft < cm.doc.scrollLeft) { - setScrollLeft( - cm, - Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), - true, - ); - } + cm.display.sizer.style.minWidth = op.adjustWidthTo + "px"; + if (op.maxScrollLeft < cm.doc.scrollLeft) + { setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true); } cm.display.maxLineChanged = false; } - var takeFocus = op.focus && op.focus == activeElt(); - if (op.preparedSelection) { - cm.display.input.showSelection(op.preparedSelection, takeFocus); - } - if (op.updatedDisplay || op.startHeight != cm.doc.height) { - updateScrollbars(cm, op.barMeasure); - } - if (op.updatedDisplay) { - setDocumentHeight(cm, op.barMeasure); - } + var takeFocus = op.focus && op.focus == activeElt(root(cm)); + if (op.preparedSelection) + { cm.display.input.showSelection(op.preparedSelection, takeFocus); } + if (op.updatedDisplay || op.startHeight != cm.doc.height) + { updateScrollbars(cm, op.barMeasure); } + if (op.updatedDisplay) + { setDocumentHeight(cm, op.barMeasure); } - if (op.selectionChanged) { - restartBlink(cm); - } + if (op.selectionChanged) { restartBlink(cm); } - if (cm.state.focused && op.updateInput) { - cm.display.input.reset(op.typing); - } - if (takeFocus) { - ensureFocus(op.cm); - } + if (cm.state.focused && op.updateInput) + { cm.display.input.reset(op.typing); } + if (takeFocus) { ensureFocus(op.cm); } } function endOperation_finish(op) { - var cm = op.cm, - display = cm.display, - doc = cm.doc; + var cm = op.cm, display = cm.display, doc = cm.doc; - if (op.updatedDisplay) { - postUpdateDisplay(cm, op.update); - } + if (op.updatedDisplay) { postUpdateDisplay(cm, op.update); } // Abort mouse wheel delta measurement, when scrolling explicitly - if ( - display.wheelStartX != null && - (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos) - ) { - display.wheelStartX = display.wheelStartY = null; - } + if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos)) + { display.wheelStartX = display.wheelStartY = null; } // Propagate the scroll position to the actual DOM scroller - if (op.scrollTop != null) { - setScrollTop(cm, op.scrollTop, op.forceScroll); - } + if (op.scrollTop != null) { setScrollTop(cm, op.scrollTop, op.forceScroll); } - if (op.scrollLeft != null) { - setScrollLeft(cm, op.scrollLeft, true, true); - } + if (op.scrollLeft != null) { setScrollLeft(cm, op.scrollLeft, true, true); } // If we need to scroll a specific position into view, do so. if (op.scrollToPos) { - var rect = scrollPosIntoView( - cm, - clipPos(doc, op.scrollToPos.from), - clipPos(doc, op.scrollToPos.to), - op.scrollToPos.margin, - ); + var rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from), + clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin); maybeScrollWindow(cm, rect); } // Fire events for markers that are hidden/unidden by editing or // undoing - var hidden = op.maybeHiddenMarkers, - unhidden = op.maybeUnhiddenMarkers; - if (hidden) { - for (var i = 0; i < hidden.length; ++i) { - if (!hidden[i].lines.length) { - signal(hidden[i], 'hide'); - } - } - } - if (unhidden) { - for (var i$1 = 0; i$1 < unhidden.length; ++i$1) { - if (unhidden[i$1].lines.length) { - signal(unhidden[i$1], 'unhide'); - } - } - } + var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers; + if (hidden) { for (var i = 0; i < hidden.length; ++i) + { if (!hidden[i].lines.length) { signal(hidden[i], "hide"); } } } + if (unhidden) { for (var i$1 = 0; i$1 < unhidden.length; ++i$1) + { if (unhidden[i$1].lines.length) { signal(unhidden[i$1], "unhide"); } } } - if (display.wrapper.offsetHeight) { - doc.scrollTop = cm.display.scroller.scrollTop; - } + if (display.wrapper.offsetHeight) + { doc.scrollTop = cm.display.scroller.scrollTop; } // Fire change events, and delayed event handlers - if (op.changeObjs) { - signal(cm, 'changes', cm, op.changeObjs); - } - if (op.update) { - op.update.finish(); - } + if (op.changeObjs) + { signal(cm, "changes", cm, op.changeObjs); } + if (op.update) + { op.update.finish(); } } // Run the given function in an operation function runInOp(cm, f) { - if (cm.curOp) { - return f(); - } + if (cm.curOp) { return f() } startOperation(cm); - try { - return f(); - } finally { - endOperation(cm); - } + try { return f() } + finally { endOperation(cm); } } // Wraps a function in an operation. Returns the wrapped function. function operation(cm, f) { - return function () { - if (cm.curOp) { - return f.apply(cm, arguments); - } + return function() { + if (cm.curOp) { return f.apply(cm, arguments) } startOperation(cm); - try { - return f.apply(cm, arguments); - } finally { - endOperation(cm); - } - }; + try { return f.apply(cm, arguments) } + finally { endOperation(cm); } + } } // Used to add methods to editor and doc instances, wrapping them in // operations. function methodOp(f) { - return function () { - if (this.curOp) { - return f.apply(this, arguments); - } + return function() { + if (this.curOp) { return f.apply(this, arguments) } startOperation(this); - try { - return f.apply(this, arguments); - } finally { - endOperation(this); - } - }; + try { return f.apply(this, arguments) } + finally { endOperation(this); } + } } function docMethodOp(f) { - return function () { + return function() { var cm = this.cm; - if (!cm || cm.curOp) { - return f.apply(this, arguments); - } + if (!cm || cm.curOp) { return f.apply(this, arguments) } startOperation(cm); - try { - return f.apply(this, arguments); - } finally { - endOperation(cm); - } - }; + try { return f.apply(this, arguments) } + finally { endOperation(cm); } + } } // HIGHLIGHT WORKER function startWorker(cm, time) { - if (cm.doc.highlightFrontier < cm.display.viewTo) { - cm.state.highlight.set(time, bind(highlightWorker, cm)); - } + if (cm.doc.highlightFrontier < cm.display.viewTo) + { cm.state.highlight.set(time, bind(highlightWorker, cm)); } } function highlightWorker(cm) { var doc = cm.doc; - if (doc.highlightFrontier >= cm.display.viewTo) { - return; - } - var end = +new Date() + cm.options.workTime; + if (doc.highlightFrontier >= cm.display.viewTo) { return } + var end = +new Date + cm.options.workTime; var context = getContextBefore(cm, doc.highlightFrontier); var changedLines = []; - doc.iter( - context.line, - Math.min(doc.first + doc.size, cm.display.viewTo + 500), - function (line) { - if (context.line >= cm.display.viewFrom) { - // Visible - var oldStyles = line.styles; - var resetState = - line.text.length > cm.options.maxHighlightLength - ? copyState(doc.mode, context.state) - : null; - var highlighted = highlightLine(cm, line, context, true); - if (resetState) { - context.state = resetState; - } - line.styles = highlighted.styles; - var oldCls = line.styleClasses, - newCls = highlighted.classes; - if (newCls) { - line.styleClasses = newCls; - } else if (oldCls) { - line.styleClasses = null; - } - var ischange = - !oldStyles || - oldStyles.length != line.styles.length || - (oldCls != newCls && - (!oldCls || - !newCls || - oldCls.bgClass != newCls.bgClass || - oldCls.textClass != newCls.textClass)); - for (var i = 0; !ischange && i < oldStyles.length; ++i) { - ischange = oldStyles[i] != line.styles[i]; - } - if (ischange) { - changedLines.push(context.line); - } - line.stateAfter = context.save(); - context.nextLine(); - } else { - if (line.text.length <= cm.options.maxHighlightLength) { - processLine(cm, line.text, context); - } - line.stateAfter = context.line % 5 == 0 ? context.save() : null; - context.nextLine(); - } - if (+new Date() > end) { - startWorker(cm, cm.options.workDelay); - return true; - } - }, - ); + doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) { + if (context.line >= cm.display.viewFrom) { // Visible + var oldStyles = line.styles; + var resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null; + var highlighted = highlightLine(cm, line, context, true); + if (resetState) { context.state = resetState; } + line.styles = highlighted.styles; + var oldCls = line.styleClasses, newCls = highlighted.classes; + if (newCls) { line.styleClasses = newCls; } + else if (oldCls) { line.styleClasses = null; } + var ischange = !oldStyles || oldStyles.length != line.styles.length || + oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass); + for (var i = 0; !ischange && i < oldStyles.length; ++i) { ischange = oldStyles[i] != line.styles[i]; } + if (ischange) { changedLines.push(context.line); } + line.stateAfter = context.save(); + context.nextLine(); + } else { + if (line.text.length <= cm.options.maxHighlightLength) + { processLine(cm, line.text, context); } + line.stateAfter = context.line % 5 == 0 ? context.save() : null; + context.nextLine(); + } + if (+new Date > end) { + startWorker(cm, cm.options.workDelay); + return true + } + }); doc.highlightFrontier = context.line; doc.modeFrontier = Math.max(doc.modeFrontier, context.line); - if (changedLines.length) { - runInOp(cm, function () { - for (var i = 0; i < changedLines.length; i++) { - regLineChange(cm, changedLines[i], 'text'); - } - }); - } + if (changedLines.length) { runInOp(cm, function () { + for (var i = 0; i < changedLines.length; i++) + { regLineChange(cm, changedLines[i], "text"); } + }); } } // DISPLAY DRAWING - var DisplayUpdate = function (cm, viewport, force) { + var DisplayUpdate = function(cm, viewport, force) { var display = cm.display; this.viewport = viewport; @@ -6027,71 +4066,53 @@ }; DisplayUpdate.prototype.signal = function (emitter, type) { - if (hasHandler(emitter, type)) { - this.events.push(arguments); - } + if (hasHandler(emitter, type)) + { this.events.push(arguments); } }; DisplayUpdate.prototype.finish = function () { - var this$1 = this; - - for (var i = 0; i < this.events.length; i++) { - signal.apply(null, this$1.events[i]); - } + for (var i = 0; i < this.events.length; i++) + { signal.apply(null, this.events[i]); } }; function maybeClipScrollbars(cm) { var display = cm.display; if (!display.scrollbarsClipped && display.scroller.offsetWidth) { - display.nativeBarWidth = - display.scroller.offsetWidth - display.scroller.clientWidth; - display.heightForcer.style.height = scrollGap(cm) + 'px'; - display.sizer.style.marginBottom = -display.nativeBarWidth + 'px'; - display.sizer.style.borderRightWidth = scrollGap(cm) + 'px'; + display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth; + display.heightForcer.style.height = scrollGap(cm) + "px"; + display.sizer.style.marginBottom = -display.nativeBarWidth + "px"; + display.sizer.style.borderRightWidth = scrollGap(cm) + "px"; display.scrollbarsClipped = true; } } function selectionSnapshot(cm) { - if (cm.hasFocus()) { - return null; - } - var active = activeElt(); - if (!active || !contains(cm.display.lineDiv, active)) { - return null; - } - var result = { activeElt: active }; + if (cm.hasFocus()) { return null } + var active = activeElt(root(cm)); + if (!active || !contains(cm.display.lineDiv, active)) { return null } + var result = {activeElt: active}; if (window.getSelection) { - var sel = window.getSelection(); - if ( - sel.anchorNode && - sel.extend && - contains(cm.display.lineDiv, sel.anchorNode) - ) { + var sel = win(cm).getSelection(); + if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) { result.anchorNode = sel.anchorNode; result.anchorOffset = sel.anchorOffset; result.focusNode = sel.focusNode; result.focusOffset = sel.focusOffset; } } - return result; + return result } function restoreSelection(snapshot) { - if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt()) { - return; - } + if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt(rootNode(snapshot.activeElt))) { return } snapshot.activeElt.focus(); - if ( - snapshot.anchorNode && - contains(document.body, snapshot.anchorNode) && - contains(document.body, snapshot.focusNode) - ) { - var sel = window.getSelection(), - range$$1 = document.createRange(); - range$$1.setEnd(snapshot.anchorNode, snapshot.anchorOffset); - range$$1.collapse(false); + if (!/^(INPUT|TEXTAREA)$/.test(snapshot.activeElt.nodeName) && + snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) { + var doc = snapshot.activeElt.ownerDocument; + var sel = doc.defaultView.getSelection(), range = doc.createRange(); + range.setEnd(snapshot.anchorNode, snapshot.anchorOffset); + range.collapse(false); sel.removeAllRanges(); - sel.addRange(range$$1); + sel.addRange(range); sel.extend(snapshot.focusNode, snapshot.focusOffset); } } @@ -6100,26 +4121,19 @@ // (returning false) when there is nothing to be done and forced is // false. function updateDisplayIfNeeded(cm, update) { - var display = cm.display, - doc = cm.doc; + var display = cm.display, doc = cm.doc; if (update.editorIsHidden) { resetView(cm); - return false; + return false } // Bail out if the visible area is already rendered and nothing changed. - if ( - !update.force && - update.visible.from >= display.viewFrom && - update.visible.to <= display.viewTo && - (display.updateLineNumbers == null || - display.updateLineNumbers >= display.viewTo) && - display.renderedView == display.view && - countDirtyView(cm) == 0 - ) { - return false; - } + if (!update.force && + update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo && + (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) && + display.renderedView == display.view && countDirtyView(cm) == 0) + { return false } if (maybeUpdateLineNumberWidth(cm)) { resetView(cm); @@ -6128,55 +4142,34 @@ // Compute a suitable new viewport (from & to) var end = doc.first + doc.size; - var from = Math.max( - update.visible.from - cm.options.viewportMargin, - doc.first, - ); + var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first); var to = Math.min(end, update.visible.to + cm.options.viewportMargin); - if (display.viewFrom < from && from - display.viewFrom < 20) { - from = Math.max(doc.first, display.viewFrom); - } - if (display.viewTo > to && display.viewTo - to < 20) { - to = Math.min(end, display.viewTo); - } + if (display.viewFrom < from && from - display.viewFrom < 20) { from = Math.max(doc.first, display.viewFrom); } + if (display.viewTo > to && display.viewTo - to < 20) { to = Math.min(end, display.viewTo); } if (sawCollapsedSpans) { from = visualLineNo(cm.doc, from); to = visualLineEndNo(cm.doc, to); } - var different = - from != display.viewFrom || - to != display.viewTo || - display.lastWrapHeight != update.wrapperHeight || - display.lastWrapWidth != update.wrapperWidth; + var different = from != display.viewFrom || to != display.viewTo || + display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth; adjustView(cm, from, to); display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom)); // Position the mover div to align with the current scroll position - cm.display.mover.style.top = display.viewOffset + 'px'; + cm.display.mover.style.top = display.viewOffset + "px"; var toUpdate = countDirtyView(cm); - if ( - !different && - toUpdate == 0 && - !update.force && - display.renderedView == display.view && - (display.updateLineNumbers == null || - display.updateLineNumbers >= display.viewTo) - ) { - return false; - } + if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view && + (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo)) + { return false } // For big changes, we hide the enclosing element during the // update, since that speeds up the operations on most browsers. var selSnapshot = selectionSnapshot(cm); - if (toUpdate > 4) { - display.lineDiv.style.display = 'none'; - } + if (toUpdate > 4) { display.lineDiv.style.display = "none"; } patchDisplay(cm, display.updateLineNumbers, update.dims); - if (toUpdate > 4) { - display.lineDiv.style.display = ''; - } + if (toUpdate > 4) { display.lineDiv.style.display = ""; } display.renderedView = display.view; // There might have been a widget with a focused element that got // hidden or updated, if so re-focus it. @@ -6196,40 +4189,26 @@ display.updateLineNumbers = null; - return true; + return true } function postUpdateDisplay(cm, update) { var viewport = update.viewport; - for (var first = true; ; first = false) { - if ( - !first || - !cm.options.lineWrapping || - update.oldDisplayWidth == displayWidth(cm) - ) { + for (var first = true;; first = false) { + if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) { // Clip forced viewport to actual scrollable area. - if (viewport && viewport.top != null) { - viewport = { - top: Math.min( - cm.doc.height + paddingVert(cm.display) - displayHeight(cm), - viewport.top, - ), - }; - } + if (viewport && viewport.top != null) + { viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)}; } // Updated line heights might result in the drawn area not // actually covering the viewport. Keep looping until it does. update.visible = visibleLines(cm.display, cm.doc, viewport); - if ( - update.visible.from >= cm.display.viewFrom && - update.visible.to <= cm.display.viewTo - ) { - break; - } - } - if (!updateDisplayIfNeeded(cm, update)) { - break; + if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo) + { break } + } else if (first) { + update.visible = visibleLines(cm.display, cm.doc, viewport); } + if (!updateDisplayIfNeeded(cm, update)) { break } updateHeightsInViewport(cm); var barMeasure = measureForScrollbars(cm); updateSelection(cm); @@ -6238,20 +4217,10 @@ update.force = false; } - update.signal(cm, 'update', cm); - if ( - cm.display.viewFrom != cm.display.reportedViewFrom || - cm.display.viewTo != cm.display.reportedViewTo - ) { - update.signal( - cm, - 'viewportChange', - cm, - cm.display.viewFrom, - cm.display.viewTo, - ); - cm.display.reportedViewFrom = cm.display.viewFrom; - cm.display.reportedViewTo = cm.display.viewTo; + update.signal(cm, "update", cm); + if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) { + update.signal(cm, "viewportChange", cm, cm.display.viewFrom, cm.display.viewTo); + cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo; } } @@ -6273,196 +4242,135 @@ // that are not there yet, and updating the ones that are out of // date. function patchDisplay(cm, updateNumbersFrom, dims) { - var display = cm.display, - lineNumbers = cm.options.lineNumbers; - var container = display.lineDiv, - cur = container.firstChild; + var display = cm.display, lineNumbers = cm.options.lineNumbers; + var container = display.lineDiv, cur = container.firstChild; function rm(node) { var next = node.nextSibling; // Works around a throw-scroll bug in OS X Webkit - if (webkit && mac && cm.display.currentWheelTarget == node) { - node.style.display = 'none'; - } else { - node.parentNode.removeChild(node); - } - return next; + if (webkit && mac && cm.display.currentWheelTarget == node) + { node.style.display = "none"; } + else + { node.parentNode.removeChild(node); } + return next } - var view = display.view, - lineN = display.viewFrom; + var view = display.view, lineN = display.viewFrom; // Loop over the elements in the view, syncing cur (the DOM nodes // in display.lineDiv) with the view as we go. for (var i = 0; i < view.length; i++) { var lineView = view[i]; - if (lineView.hidden); - else if (!lineView.node || lineView.node.parentNode != container) { - // Not drawn yet + if (lineView.hidden) ; else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet var node = buildLineElement(cm, lineView, lineN, dims); container.insertBefore(node, cur); - } else { - // Already drawn - while (cur != lineView.node) { - cur = rm(cur); - } - var updateNumber = - lineNumbers && - updateNumbersFrom != null && - updateNumbersFrom <= lineN && - lineView.lineNumber; + } else { // Already drawn + while (cur != lineView.node) { cur = rm(cur); } + var updateNumber = lineNumbers && updateNumbersFrom != null && + updateNumbersFrom <= lineN && lineView.lineNumber; if (lineView.changes) { - if (indexOf(lineView.changes, 'gutter') > -1) { - updateNumber = false; - } + if (indexOf(lineView.changes, "gutter") > -1) { updateNumber = false; } updateLineForChanges(cm, lineView, lineN, dims); } if (updateNumber) { removeChildren(lineView.lineNumber); - lineView.lineNumber.appendChild( - document.createTextNode(lineNumberFor(cm.options, lineN)), - ); + lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN))); } cur = lineView.node.nextSibling; } lineN += lineView.size; } - while (cur) { - cur = rm(cur); - } + while (cur) { cur = rm(cur); } } function updateGutterSpace(display) { var width = display.gutters.offsetWidth; - display.sizer.style.marginLeft = width + 'px'; + display.sizer.style.marginLeft = width + "px"; + // Send an event to consumers responding to changes in gutter width. + signalLater(display, "gutterChanged", display); } function setDocumentHeight(cm, measure) { - cm.display.sizer.style.minHeight = measure.docHeight + 'px'; - cm.display.heightForcer.style.top = measure.docHeight + 'px'; - cm.display.gutters.style.height = - measure.docHeight + cm.display.barHeight + scrollGap(cm) + 'px'; + cm.display.sizer.style.minHeight = measure.docHeight + "px"; + cm.display.heightForcer.style.top = measure.docHeight + "px"; + cm.display.gutters.style.height = (measure.docHeight + cm.display.barHeight + scrollGap(cm)) + "px"; } // Re-align line numbers and gutter marks to compensate for // horizontal scrolling. function alignHorizontally(cm) { - var display = cm.display, - view = display.view; - if ( - !display.alignWidgets && - (!display.gutters.firstChild || !cm.options.fixedGutter) - ) { - return; - } - var comp = - compensateForHScroll(display) - - display.scroller.scrollLeft + - cm.doc.scrollLeft; - var gutterW = display.gutters.offsetWidth, - left = comp + 'px'; - for (var i = 0; i < view.length; i++) { - if (!view[i].hidden) { - if (cm.options.fixedGutter) { - if (view[i].gutter) { - view[i].gutter.style.left = left; - } - if (view[i].gutterBackground) { - view[i].gutterBackground.style.left = left; - } - } - var align = view[i].alignable; - if (align) { - for (var j = 0; j < align.length; j++) { - align[j].style.left = left; - } - } - } - } - if (cm.options.fixedGutter) { - display.gutters.style.left = comp + gutterW + 'px'; - } + var display = cm.display, view = display.view; + if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) { return } + var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft; + var gutterW = display.gutters.offsetWidth, left = comp + "px"; + for (var i = 0; i < view.length; i++) { if (!view[i].hidden) { + if (cm.options.fixedGutter) { + if (view[i].gutter) + { view[i].gutter.style.left = left; } + if (view[i].gutterBackground) + { view[i].gutterBackground.style.left = left; } + } + var align = view[i].alignable; + if (align) { for (var j = 0; j < align.length; j++) + { align[j].style.left = left; } } + } } + if (cm.options.fixedGutter) + { display.gutters.style.left = (comp + gutterW) + "px"; } } // Used to ensure that the line number gutter is still the right // size for the current document size. Returns true when an update // is needed. function maybeUpdateLineNumberWidth(cm) { - if (!cm.options.lineNumbers) { - return false; - } - var doc = cm.doc, - last = lineNumberFor(cm.options, doc.first + doc.size - 1), - display = cm.display; + if (!cm.options.lineNumbers) { return false } + var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display; if (last.length != display.lineNumChars) { - var test = display.measure.appendChild( - elt( - 'div', - [elt('div', last)], - 'CodeMirror-linenumber CodeMirror-gutter-elt', - ), - ); - var innerW = test.firstChild.offsetWidth, - padding = test.offsetWidth - innerW; - display.lineGutter.style.width = ''; - display.lineNumInnerWidth = - Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1; + var test = display.measure.appendChild(elt("div", [elt("div", last)], + "CodeMirror-linenumber CodeMirror-gutter-elt")); + var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW; + display.lineGutter.style.width = ""; + display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1; display.lineNumWidth = display.lineNumInnerWidth + padding; display.lineNumChars = display.lineNumInnerWidth ? last.length : -1; - display.lineGutter.style.width = display.lineNumWidth + 'px'; + display.lineGutter.style.width = display.lineNumWidth + "px"; updateGutterSpace(cm.display); - return true; + return true } - return false; + return false } function getGutters(gutters, lineNumbers) { - var result = [], - sawLineNumbers = false; + var result = [], sawLineNumbers = false; for (var i = 0; i < gutters.length; i++) { - var name = gutters[i], - style = null; - if (typeof name != 'string') { - style = name.style; - name = name.className; + var name = gutters[i], style = null; + if (typeof name != "string") { style = name.style; name = name.className; } + if (name == "CodeMirror-linenumbers") { + if (!lineNumbers) { continue } + else { sawLineNumbers = true; } } - if (name == 'CodeMirror-linenumbers') { - if (!lineNumbers) { - continue; - } else { - sawLineNumbers = true; - } - } - result.push({ className: name, style: style }); - } - if (lineNumbers && !sawLineNumbers) { - result.push({ className: 'CodeMirror-linenumbers', style: null }); + result.push({className: name, style: style}); } - return result; + if (lineNumbers && !sawLineNumbers) { result.push({className: "CodeMirror-linenumbers", style: null}); } + return result } // Rebuild the gutter elements, ensure the margin to the left of the // code matches their width. function renderGutters(display) { - var gutters = display.gutters, - specs = display.gutterSpecs; + var gutters = display.gutters, specs = display.gutterSpecs; removeChildren(gutters); display.lineGutter = null; for (var i = 0; i < specs.length; ++i) { var ref = specs[i]; var className = ref.className; var style = ref.style; - var gElt = gutters.appendChild( - elt('div', null, 'CodeMirror-gutter ' + className), - ); - if (style) { - gElt.style.cssText = style; - } - if (className == 'CodeMirror-linenumbers') { + var gElt = gutters.appendChild(elt("div", null, "CodeMirror-gutter " + className)); + if (style) { gElt.style.cssText = style; } + if (className == "CodeMirror-linenumbers") { display.lineGutter = gElt; - gElt.style.width = (display.lineNumWidth || 1) + 'px'; + gElt.style.width = (display.lineNumWidth || 1) + "px"; } } - gutters.style.display = specs.length ? '' : 'none'; + gutters.style.display = specs.length ? "" : "none"; updateGutterSpace(display); } @@ -6481,75 +4389,56 @@ this.input = input; // Covers bottom-right square when both scrollbars are present. - d.scrollbarFiller = elt('div', null, 'CodeMirror-scrollbar-filler'); - d.scrollbarFiller.setAttribute('cm-not-content', 'true'); + d.scrollbarFiller = elt("div", null, "CodeMirror-scrollbar-filler"); + d.scrollbarFiller.setAttribute("cm-not-content", "true"); // Covers bottom of gutter when coverGutterNextToScrollbar is on // and h scrollbar is present. - d.gutterFiller = elt('div', null, 'CodeMirror-gutter-filler'); - d.gutterFiller.setAttribute('cm-not-content', 'true'); + d.gutterFiller = elt("div", null, "CodeMirror-gutter-filler"); + d.gutterFiller.setAttribute("cm-not-content", "true"); // Will contain the actual code, positioned to cover the viewport. - d.lineDiv = eltP('div', null, 'CodeMirror-code'); + d.lineDiv = eltP("div", null, "CodeMirror-code"); // Elements are added to these to represent selection and cursors. - d.selectionDiv = elt('div', null, null, 'position: relative; z-index: 1'); - d.cursorDiv = elt('div', null, 'CodeMirror-cursors'); + d.selectionDiv = elt("div", null, null, "position: relative; z-index: 1"); + d.cursorDiv = elt("div", null, "CodeMirror-cursors"); // A visibility: hidden element used to find the size of things. - d.measure = elt('div', null, 'CodeMirror-measure'); + d.measure = elt("div", null, "CodeMirror-measure"); // When lines outside of the viewport are measured, they are drawn in this. - d.lineMeasure = elt('div', null, 'CodeMirror-measure'); + d.lineMeasure = elt("div", null, "CodeMirror-measure"); // Wraps everything that needs to exist inside the vertically-padded coordinate system - d.lineSpace = eltP( - 'div', - [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv], - null, - 'position: relative; outline: none', - ); - var lines = eltP('div', [d.lineSpace], 'CodeMirror-lines'); + d.lineSpace = eltP("div", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv], + null, "position: relative; outline: none"); + var lines = eltP("div", [d.lineSpace], "CodeMirror-lines"); // Moved around its parent to cover visible view. - d.mover = elt('div', [lines], null, 'position: relative'); + d.mover = elt("div", [lines], null, "position: relative"); // Set to the height of the document, allowing scrolling. - d.sizer = elt('div', [d.mover], 'CodeMirror-sizer'); + d.sizer = elt("div", [d.mover], "CodeMirror-sizer"); d.sizerWidth = null; // Behavior of elts with overflow: auto and padding is // inconsistent across browsers. This is used to ensure the // scrollable area is big enough. - d.heightForcer = elt( - 'div', - null, - null, - 'position: absolute; height: ' + scrollerGap + 'px; width: 1px;', - ); + d.heightForcer = elt("div", null, null, "position: absolute; height: " + scrollerGap + "px; width: 1px;"); // Will contain the gutters, if any. - d.gutters = elt('div', null, 'CodeMirror-gutters'); + d.gutters = elt("div", null, "CodeMirror-gutters"); d.lineGutter = null; // Actual scrollable element. - d.scroller = elt( - 'div', - [d.sizer, d.heightForcer, d.gutters], - 'CodeMirror-scroll', - ); - d.scroller.setAttribute('tabIndex', '-1'); + d.scroller = elt("div", [d.sizer, d.heightForcer, d.gutters], "CodeMirror-scroll"); + d.scroller.setAttribute("tabIndex", "-1"); // The element in which the editor lives. - d.wrapper = elt( - 'div', - [d.scrollbarFiller, d.gutterFiller, d.scroller], - 'CodeMirror', - ); + d.wrapper = elt("div", [d.scrollbarFiller, d.gutterFiller, d.scroller], "CodeMirror"); + // See #6982. FIXME remove when this has been fixed for a while in Chrome + if (chrome && chrome_version >= 105) { d.wrapper.style.clipPath = "inset(0px)"; } + + // This attribute is respected by automatic translation systems such as Google Translate, + // and may also be respected by tools used by human translators. + d.wrapper.setAttribute('translate', 'no'); // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported) - if (ie && ie_version < 8) { - d.gutters.style.zIndex = -1; - d.scroller.style.paddingRight = 0; - } - if (!webkit && !(gecko && mobile)) { - d.scroller.draggable = true; - } + if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; } + if (!webkit && !(gecko && mobile)) { d.scroller.draggable = true; } if (place) { - if (place.appendChild) { - place.appendChild(d.wrapper); - } else { - place(d.wrapper); - } + if (place.appendChild) { place.appendChild(d.wrapper); } + else { place(d.wrapper); } } // Current rendered range (may be bigger than the view window). @@ -6614,70 +4503,66 @@ // is that it gives us a chance to update the display before the // actual scrolling happens, reducing flickering. - var wheelSamples = 0, - wheelPixelsPerUnit = null; + var wheelSamples = 0, wheelPixelsPerUnit = null; // Fill in a browser-detected starting value on browsers where we // know one. These don't have to be accurate -- the result of them // being wrong would just be a slight flicker on the first wheel // scroll (if it is large enough). - if (ie) { - wheelPixelsPerUnit = -0.53; - } else if (gecko) { - wheelPixelsPerUnit = 15; - } else if (chrome) { - wheelPixelsPerUnit = -0.7; - } else if (safari) { - wheelPixelsPerUnit = -1 / 3; - } + if (ie) { wheelPixelsPerUnit = -.53; } + else if (gecko) { wheelPixelsPerUnit = 15; } + else if (chrome) { wheelPixelsPerUnit = -.7; } + else if (safari) { wheelPixelsPerUnit = -1/3; } function wheelEventDelta(e) { - var dx = e.wheelDeltaX, - dy = e.wheelDeltaY; - if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) { - dx = e.detail; - } - if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) { - dy = e.detail; - } else if (dy == null) { - dy = e.wheelDelta; - } - return { x: dx, y: dy }; + var dx = e.wheelDeltaX, dy = e.wheelDeltaY; + if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) { dx = e.detail; } + if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) { dy = e.detail; } + else if (dy == null) { dy = e.wheelDelta; } + return {x: dx, y: dy} } function wheelEventPixels(e) { var delta = wheelEventDelta(e); delta.x *= wheelPixelsPerUnit; delta.y *= wheelPixelsPerUnit; - return delta; + return delta } function onScrollWheel(cm, e) { - var delta = wheelEventDelta(e), - dx = delta.x, - dy = delta.y; - - var display = cm.display, - scroll = display.scroller; + // On Chrome 102, viewport updates somehow stop wheel-based + // scrolling. Turning off pointer events during the scroll seems + // to avoid the issue. + if (chrome && chrome_version == 102) { + if (cm.display.chromeScrollHack == null) { cm.display.sizer.style.pointerEvents = "none"; } + else { clearTimeout(cm.display.chromeScrollHack); } + cm.display.chromeScrollHack = setTimeout(function () { + cm.display.chromeScrollHack = null; + cm.display.sizer.style.pointerEvents = ""; + }, 100); + } + var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y; + var pixelsPerUnit = wheelPixelsPerUnit; + if (e.deltaMode === 0) { + dx = e.deltaX; + dy = e.deltaY; + pixelsPerUnit = 1; + } + + var display = cm.display, scroll = display.scroller; // Quit if there's nothing to scroll here var canScrollX = scroll.scrollWidth > scroll.clientWidth; var canScrollY = scroll.scrollHeight > scroll.clientHeight; - if (!((dx && canScrollX) || (dy && canScrollY))) { - return; - } + if (!(dx && canScrollX || dy && canScrollY)) { return } // Webkit browsers on OS X abort momentum scrolls when the target // of the scroll event is removed from the scrollable element. // This hack (see related code in patchDisplay) makes sure the // element is kept around. if (dy && mac && webkit) { - outer: for ( - var cur = e.target, view = display.view; - cur != scroll; - cur = cur.parentNode - ) { + outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) { for (var i = 0; i < view.length; i++) { if (view[i].node == cur) { cm.display.currentWheelTarget = cur; - break outer; + break outer } } } @@ -6689,68 +4574,47 @@ // estimated pixels/delta value, we just handle horizontal // scrolling entirely here. It'll be slightly off from native, but // better than glitching out. - if (dx && !gecko && !presto && wheelPixelsPerUnit != null) { - if (dy && canScrollY) { - updateScrollTop( - cm, - Math.max(0, scroll.scrollTop + dy * wheelPixelsPerUnit), - ); - } - setScrollLeft( - cm, - Math.max(0, scroll.scrollLeft + dx * wheelPixelsPerUnit), - ); + if (dx && !gecko && !presto && pixelsPerUnit != null) { + if (dy && canScrollY) + { updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * pixelsPerUnit)); } + setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * pixelsPerUnit)); // Only prevent default scrolling if vertical scrolling is // actually possible. Otherwise, it causes vertical scroll // jitter on OSX trackpads when deltaX is small and deltaY // is large (issue #3579) - if (!dy || (dy && canScrollY)) { - e_preventDefault(e); - } + if (!dy || (dy && canScrollY)) + { e_preventDefault(e); } display.wheelStartX = null; // Abort measurement, if in progress - return; + return } // 'Project' the visible viewport to cover the area that is being // scrolled into view (if we know enough to estimate it). - if (dy && wheelPixelsPerUnit != null) { - var pixels = dy * wheelPixelsPerUnit; - var top = cm.doc.scrollTop, - bot = top + display.wrapper.clientHeight; - if (pixels < 0) { - top = Math.max(0, top + pixels - 50); - } else { - bot = Math.min(cm.doc.height, bot + pixels + 50); - } - updateDisplaySimple(cm, { top: top, bottom: bot }); + if (dy && pixelsPerUnit != null) { + var pixels = dy * pixelsPerUnit; + var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight; + if (pixels < 0) { top = Math.max(0, top + pixels - 50); } + else { bot = Math.min(cm.doc.height, bot + pixels + 50); } + updateDisplaySimple(cm, {top: top, bottom: bot}); } - if (wheelSamples < 20) { + if (wheelSamples < 20 && e.deltaMode !== 0) { if (display.wheelStartX == null) { - display.wheelStartX = scroll.scrollLeft; - display.wheelStartY = scroll.scrollTop; - display.wheelDX = dx; - display.wheelDY = dy; + display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop; + display.wheelDX = dx; display.wheelDY = dy; setTimeout(function () { - if (display.wheelStartX == null) { - return; - } + if (display.wheelStartX == null) { return } var movedX = scroll.scrollLeft - display.wheelStartX; var movedY = scroll.scrollTop - display.wheelStartY; - var sample = - (movedY && display.wheelDY && movedY / display.wheelDY) || + var sample = (movedY && display.wheelDY && movedY / display.wheelDY) || (movedX && display.wheelDX && movedX / display.wheelDX); display.wheelStartX = display.wheelStartY = null; - if (!sample) { - return; - } - wheelPixelsPerUnit = - (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1); + if (!sample) { return } + wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1); ++wheelSamples; }, 200); } else { - display.wheelDX += dx; - display.wheelDY += dy; + display.wheelDX += dx; display.wheelDY += dy; } } } @@ -6760,93 +4624,53 @@ // (and non-touching) ranges, sorted, and an integer that indicates // which one is the primary selection (the one that's scrolled into // view, that getCursor returns, etc). - var Selection = function (ranges, primIndex) { + var Selection = function(ranges, primIndex) { this.ranges = ranges; this.primIndex = primIndex; }; - Selection.prototype.primary = function () { - return this.ranges[this.primIndex]; - }; + Selection.prototype.primary = function () { return this.ranges[this.primIndex] }; Selection.prototype.equals = function (other) { - var this$1 = this; - - if (other == this) { - return true; - } - if ( - other.primIndex != this.primIndex || - other.ranges.length != this.ranges.length - ) { - return false; - } + if (other == this) { return true } + if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) { return false } for (var i = 0; i < this.ranges.length; i++) { - var here = this$1.ranges[i], - there = other.ranges[i]; - if ( - !equalCursorPos(here.anchor, there.anchor) || - !equalCursorPos(here.head, there.head) - ) { - return false; - } + var here = this.ranges[i], there = other.ranges[i]; + if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) { return false } } - return true; + return true }; Selection.prototype.deepCopy = function () { - var this$1 = this; - var out = []; - for (var i = 0; i < this.ranges.length; i++) { - out[i] = new Range( - copyPos(this$1.ranges[i].anchor), - copyPos(this$1.ranges[i].head), - ); - } - return new Selection(out, this.primIndex); + for (var i = 0; i < this.ranges.length; i++) + { out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head)); } + return new Selection(out, this.primIndex) }; Selection.prototype.somethingSelected = function () { - var this$1 = this; - - for (var i = 0; i < this.ranges.length; i++) { - if (!this$1.ranges[i].empty()) { - return true; - } - } - return false; + for (var i = 0; i < this.ranges.length; i++) + { if (!this.ranges[i].empty()) { return true } } + return false }; Selection.prototype.contains = function (pos, end) { - var this$1 = this; - - if (!end) { - end = pos; - } + if (!end) { end = pos; } for (var i = 0; i < this.ranges.length; i++) { - var range = this$1.ranges[i]; - if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0) { - return i; - } + var range = this.ranges[i]; + if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0) + { return i } } - return -1; + return -1 }; - var Range = function (anchor, head) { - this.anchor = anchor; - this.head = head; + var Range = function(anchor, head) { + this.anchor = anchor; this.head = head; }; - Range.prototype.from = function () { - return minPos(this.anchor, this.head); - }; - Range.prototype.to = function () { - return maxPos(this.anchor, this.head); - }; - Range.prototype.empty = function () { - return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch; - }; + Range.prototype.from = function () { return minPos(this.anchor, this.head) }; + Range.prototype.to = function () { return maxPos(this.anchor, this.head) }; + Range.prototype.empty = function () { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch }; // Take an unsorted, potentially overlapping set of ranges, and // build a selection out of it. 'Consumes' ranges array (modifying @@ -6854,107 +4678,80 @@ function normalizeSelection(cm, ranges, primIndex) { var mayTouch = cm && cm.options.selectionsMayTouch; var prim = ranges[primIndex]; - ranges.sort(function (a, b) { - return cmp(a.from(), b.from()); - }); + ranges.sort(function (a, b) { return cmp(a.from(), b.from()); }); primIndex = indexOf(ranges, prim); for (var i = 1; i < ranges.length; i++) { - var cur = ranges[i], - prev = ranges[i - 1]; + var cur = ranges[i], prev = ranges[i - 1]; var diff = cmp(prev.to(), cur.from()); if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) { - var from = minPos(prev.from(), cur.from()), - to = maxPos(prev.to(), cur.to()); - var inv = prev.empty() - ? cur.from() == cur.head - : prev.from() == prev.head; - if (i <= primIndex) { - --primIndex; - } + var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to()); + var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head; + if (i <= primIndex) { --primIndex; } ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to)); } } - return new Selection(ranges, primIndex); + return new Selection(ranges, primIndex) } function simpleSelection(anchor, head) { - return new Selection([new Range(anchor, head || anchor)], 0); + return new Selection([new Range(anchor, head || anchor)], 0) } // Compute the position of the end of a change (its 'to' property // refers to the pre-change end). function changeEnd(change) { - if (!change.text) { - return change.to; - } - return Pos( - change.from.line + change.text.length - 1, - lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0), - ); + if (!change.text) { return change.to } + return Pos(change.from.line + change.text.length - 1, + lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0)) } // Adjust a position to refer to the post-change position of the // same text, or the end of the change if the change covers it. function adjustForChange(pos, change) { - if (cmp(pos, change.from) < 0) { - return pos; - } - if (cmp(pos, change.to) <= 0) { - return changeEnd(change); - } + if (cmp(pos, change.from) < 0) { return pos } + if (cmp(pos, change.to) <= 0) { return changeEnd(change) } - var line = - pos.line + change.text.length - (change.to.line - change.from.line) - 1, - ch = pos.ch; - if (pos.line == change.to.line) { - ch += changeEnd(change).ch - change.to.ch; - } - return Pos(line, ch); + var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch; + if (pos.line == change.to.line) { ch += changeEnd(change).ch - change.to.ch; } + return Pos(line, ch) } function computeSelAfterChange(doc, change) { var out = []; for (var i = 0; i < doc.sel.ranges.length; i++) { var range = doc.sel.ranges[i]; - out.push( - new Range( - adjustForChange(range.anchor, change), - adjustForChange(range.head, change), - ), - ); + out.push(new Range(adjustForChange(range.anchor, change), + adjustForChange(range.head, change))); } - return normalizeSelection(doc.cm, out, doc.sel.primIndex); + return normalizeSelection(doc.cm, out, doc.sel.primIndex) } function offsetPos(pos, old, nw) { - if (pos.line == old.line) { - return Pos(nw.line, pos.ch - old.ch + nw.ch); - } else { - return Pos(nw.line + (pos.line - old.line), pos.ch); - } + if (pos.line == old.line) + { return Pos(nw.line, pos.ch - old.ch + nw.ch) } + else + { return Pos(nw.line + (pos.line - old.line), pos.ch) } } // Used by replaceSelections to allow moving the selection to the // start or around the replaced test. Hint may be "start" or "around". function computeReplacedSel(doc, changes, hint) { var out = []; - var oldPrev = Pos(doc.first, 0), - newPrev = oldPrev; + var oldPrev = Pos(doc.first, 0), newPrev = oldPrev; for (var i = 0; i < changes.length; i++) { var change = changes[i]; var from = offsetPos(change.from, oldPrev, newPrev); var to = offsetPos(changeEnd(change), oldPrev, newPrev); oldPrev = change.to; newPrev = to; - if (hint == 'around') { - var range = doc.sel.ranges[i], - inv = cmp(range.head, range.anchor) < 0; + if (hint == "around") { + var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0; out[i] = new Range(inv ? to : from, inv ? from : to); } else { out[i] = new Range(from, from); } } - return new Selection(out, doc.sel.primIndex); + return new Selection(out, doc.sel.primIndex) } // Used to get the editor into a consistent state again when options change. @@ -6966,19 +4763,13 @@ function resetModeState(cm) { cm.doc.iter(function (line) { - if (line.stateAfter) { - line.stateAfter = null; - } - if (line.styles) { - line.styles = null; - } + if (line.stateAfter) { line.stateAfter = null; } + if (line.styles) { line.styles = null; } }); cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first; startWorker(cm, 100); cm.state.modeGen++; - if (cm.curOp) { - regChange(cm); - } + if (cm.curOp) { regChange(cm); } } // DOCUMENT DATA STRUCTURE @@ -6987,39 +4778,27 @@ // are treated specially, in order to make the association of line // widgets and marker elements with the text behave more intuitive. function isWholeLineUpdate(doc, change) { - return ( - change.from.ch == 0 && - change.to.ch == 0 && - lst(change.text) == '' && + return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == "" && (!doc.cm || doc.cm.options.wholeLineUpdateBefore) - ); } // Perform a change on the document data structure. - function updateDoc(doc, change, markedSpans, estimateHeight$$1) { - function spansFor(n) { - return markedSpans ? markedSpans[n] : null; - } + function updateDoc(doc, change, markedSpans, estimateHeight) { + function spansFor(n) {return markedSpans ? markedSpans[n] : null} function update(line, text, spans) { - updateLine(line, text, spans, estimateHeight$$1); - signalLater(line, 'change', line, change); + updateLine(line, text, spans, estimateHeight); + signalLater(line, "change", line, change); } function linesFor(start, end) { var result = []; - for (var i = start; i < end; ++i) { - result.push(new Line(text[i], spansFor(i), estimateHeight$$1)); - } - return result; + for (var i = start; i < end; ++i) + { result.push(new Line(text[i], spansFor(i), estimateHeight)); } + return result } - var from = change.from, - to = change.to, - text = change.text; - var firstLine = getLine(doc, from.line), - lastLine = getLine(doc, to.line); - var lastText = lst(text), - lastSpans = spansFor(text.length - 1), - nlines = to.line - from.line; + var from = change.from, to = change.to, text = change.text; + var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line); + var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line; // Adjust the line structure if (change.full) { @@ -7030,103 +4809,62 @@ // sure line objects move the way they are supposed to. var added = linesFor(0, text.length - 1); update(lastLine, lastLine.text, lastSpans); - if (nlines) { - doc.remove(from.line, nlines); - } - if (added.length) { - doc.insert(from.line, added); - } + if (nlines) { doc.remove(from.line, nlines); } + if (added.length) { doc.insert(from.line, added); } } else if (firstLine == lastLine) { if (text.length == 1) { - update( - firstLine, - firstLine.text.slice(0, from.ch) + - lastText + - firstLine.text.slice(to.ch), - lastSpans, - ); + update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans); } else { var added$1 = linesFor(1, text.length - 1); - added$1.push( - new Line( - lastText + firstLine.text.slice(to.ch), - lastSpans, - estimateHeight$$1, - ), - ); - update( - firstLine, - firstLine.text.slice(0, from.ch) + text[0], - spansFor(0), - ); + added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight)); + update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0)); doc.insert(from.line + 1, added$1); } } else if (text.length == 1) { - update( - firstLine, - firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), - spansFor(0), - ); + update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0)); doc.remove(from.line + 1, nlines); } else { - update( - firstLine, - firstLine.text.slice(0, from.ch) + text[0], - spansFor(0), - ); + update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0)); update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans); var added$2 = linesFor(1, text.length - 1); - if (nlines > 1) { - doc.remove(from.line + 1, nlines - 1); - } + if (nlines > 1) { doc.remove(from.line + 1, nlines - 1); } doc.insert(from.line + 1, added$2); } - signalLater(doc, 'change', doc, change); + signalLater(doc, "change", doc, change); } // Call f for all linked documents. function linkedDocs(doc, f, sharedHistOnly) { function propagate(doc, skip, sharedHist) { - if (doc.linked) { - for (var i = 0; i < doc.linked.length; ++i) { - var rel = doc.linked[i]; - if (rel.doc == skip) { - continue; - } - var shared = sharedHist && rel.sharedHist; - if (sharedHistOnly && !shared) { - continue; - } - f(rel.doc, shared); - propagate(rel.doc, doc, shared); - } - } + if (doc.linked) { for (var i = 0; i < doc.linked.length; ++i) { + var rel = doc.linked[i]; + if (rel.doc == skip) { continue } + var shared = sharedHist && rel.sharedHist; + if (sharedHistOnly && !shared) { continue } + f(rel.doc, shared); + propagate(rel.doc, doc, shared); + } } } propagate(doc, null, true); } // Attach a document to an editor. function attachDoc(cm, doc) { - if (doc.cm) { - throw new Error('This document is already in use.'); - } + if (doc.cm) { throw new Error("This document is already in use.") } cm.doc = doc; doc.cm = cm; estimateLineHeights(cm); loadMode(cm); setDirectionClass(cm); - if (!cm.options.lineWrapping) { - findMaxLine(cm); - } + cm.options.direction = doc.direction; + if (!cm.options.lineWrapping) { findMaxLine(cm); } cm.options.mode = doc.modeOption; regChange(cm); } function setDirectionClass(cm) { - (cm.doc.direction == 'rtl' - ? addClass - : rmClass)(cm.display.lineDiv, 'CodeMirror-rtl'); + (cm.doc.direction == "rtl" ? addClass : rmClass)(cm.display.lineDiv, "CodeMirror-rtl"); } function directionChanged(cm) { @@ -7136,44 +4874,28 @@ }); } - function History(startGen) { + function History(prev) { // Arrays of change events and selections. Doing something adds an // event to done and clears undo. Undoing moves events from done // to undone, redoing moves them in the other direction. - this.done = []; - this.undone = []; - this.undoDepth = Infinity; + this.done = []; this.undone = []; + this.undoDepth = prev ? prev.undoDepth : Infinity; // Used to track when changes can be merged into a single undo // event this.lastModTime = this.lastSelTime = 0; this.lastOp = this.lastSelOp = null; this.lastOrigin = this.lastSelOrigin = null; // Used by the isClean() method - this.generation = this.maxGeneration = startGen || 1; + this.generation = this.maxGeneration = prev ? prev.maxGeneration : 1; } // Create a history change event from an updateDoc-style change // object. function historyChangeFromChange(doc, change) { - var histChange = { - from: copyPos(change.from), - to: changeEnd(change), - text: getBetween(doc, change.from, change.to), - }; + var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)}; attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); - linkedDocs( - doc, - function (doc) { - return attachLocalSpans( - doc, - histChange, - change.from.line, - change.to.line + 1, - ); - }, - true, - ); - return histChange; + linkedDocs(doc, function (doc) { return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); }, true); + return histChange } // Pop all selection events off the end of a history array. Stop at @@ -7181,11 +4903,8 @@ function clearSelectionEvents(array) { while (array.length) { var last = lst(array); - if (last.ranges) { - array.pop(); - } else { - break; - } + if (last.ranges) { array.pop(); } + else { break } } } @@ -7194,15 +4913,12 @@ function lastChangeEvent(hist, force) { if (force) { clearSelectionEvents(hist.done); - return lst(hist.done); + return lst(hist.done) } else if (hist.done.length && !lst(hist.done).ranges) { - return lst(hist.done); - } else if ( - hist.done.length > 1 && - !hist.done[hist.done.length - 2].ranges - ) { + return lst(hist.done) + } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) { hist.done.pop(); - return lst(hist.done); + return lst(hist.done) } } @@ -7212,20 +4928,14 @@ function addChangeToHistory(doc, change, selAfter, opId) { var hist = doc.history; hist.undone.length = 0; - var time = +new Date(), - cur; + var time = +new Date, cur; var last; - if ( - (hist.lastOp == opId || - (hist.lastOrigin == change.origin && - change.origin && - ((change.origin.charAt(0) == '+' && - hist.lastModTime > - time - (doc.cm ? doc.cm.options.historyEventDelay : 500)) || - change.origin.charAt(0) == '*'))) && - (cur = lastChangeEvent(hist, hist.lastOp == opId)) - ) { + if ((hist.lastOp == opId || + hist.lastOrigin == change.origin && change.origin && + ((change.origin.charAt(0) == "+" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500)) || + change.origin.charAt(0) == "*")) && + (cur = lastChangeEvent(hist, hist.lastOp == opId))) { // Merge this change into the last event last = lst(cur.changes); if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) { @@ -7239,19 +4949,14 @@ } else { // Can not be merged, start a new event. var before = lst(hist.done); - if (!before || !before.ranges) { - pushSelectionToHistory(doc.sel, hist.done); - } - cur = { - changes: [historyChangeFromChange(doc, change)], - generation: hist.generation, - }; + if (!before || !before.ranges) + { pushSelectionToHistory(doc.sel, hist.done); } + cur = {changes: [historyChangeFromChange(doc, change)], + generation: hist.generation}; hist.done.push(cur); while (hist.done.length > hist.undoDepth) { hist.done.shift(); - if (!hist.done[0].ranges) { - hist.done.shift(); - } + if (!hist.done[0].ranges) { hist.done.shift(); } } } hist.done.push(selAfter); @@ -7260,21 +4965,16 @@ hist.lastOp = hist.lastSelOp = opId; hist.lastOrigin = hist.lastSelOrigin = change.origin; - if (!last) { - signal(doc, 'historyAdded'); - } + if (!last) { signal(doc, "historyAdded"); } } function selectionEventCanBeMerged(doc, origin, prev, sel) { var ch = origin.charAt(0); - return ( - ch == '*' || - (ch == '+' && - prev.ranges.length == sel.ranges.length && - prev.somethingSelected() == sel.somethingSelected() && - new Date() - doc.history.lastSelTime <= - (doc.cm ? doc.cm.options.historyEventDelay : 500)) - ); + return ch == "*" || + ch == "+" && + prev.ranges.length == sel.ranges.length && + prev.somethingSelected() == sel.somethingSelected() && + new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500) } // Called whenever the selection changes, sets the new selection as @@ -7282,87 +4982,63 @@ // selection into the 'done' array when it was significantly // different (in number of selected ranges, emptiness, or time). function addSelectionToHistory(doc, sel, opId, options) { - var hist = doc.history, - origin = options && options.origin; + var hist = doc.history, origin = options && options.origin; // A new event is started when the previous origin does not match // the current, or the origins don't allow matching. Origins // starting with * are always merged, those starting with + are // merged when similar and close together in time. - if ( - opId == hist.lastSelOp || - (origin && - hist.lastSelOrigin == origin && - ((hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin) || - selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))) - ) { - hist.done[hist.done.length - 1] = sel; - } else { - pushSelectionToHistory(sel, hist.done); - } - - hist.lastSelTime = +new Date(); + if (opId == hist.lastSelOp || + (origin && hist.lastSelOrigin == origin && + (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin || + selectionEventCanBeMerged(doc, origin, lst(hist.done), sel)))) + { hist.done[hist.done.length - 1] = sel; } + else + { pushSelectionToHistory(sel, hist.done); } + + hist.lastSelTime = +new Date; hist.lastSelOrigin = origin; hist.lastSelOp = opId; - if (options && options.clearRedo !== false) { - clearSelectionEvents(hist.undone); - } + if (options && options.clearRedo !== false) + { clearSelectionEvents(hist.undone); } } function pushSelectionToHistory(sel, dest) { var top = lst(dest); - if (!(top && top.ranges && top.equals(sel))) { - dest.push(sel); - } + if (!(top && top.ranges && top.equals(sel))) + { dest.push(sel); } } // Used to store marked span information in the history. function attachLocalSpans(doc, change, from, to) { - var existing = change['spans_' + doc.id], - n = 0; - doc.iter( - Math.max(doc.first, from), - Math.min(doc.first + doc.size, to), - function (line) { - if (line.markedSpans) { - (existing || (existing = change['spans_' + doc.id] = {}))[n] = - line.markedSpans; - } - ++n; - }, - ); + var existing = change["spans_" + doc.id], n = 0; + doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) { + if (line.markedSpans) + { (existing || (existing = change["spans_" + doc.id] = {}))[n] = line.markedSpans; } + ++n; + }); } // When un/re-doing restores text containing marked spans, those // that have been explicitly cleared should not be restored. function removeClearedSpans(spans) { - if (!spans) { - return null; - } + if (!spans) { return null } var out; for (var i = 0; i < spans.length; ++i) { - if (spans[i].marker.explicitlyCleared) { - if (!out) { - out = spans.slice(0, i); - } - } else if (out) { - out.push(spans[i]); - } + if (spans[i].marker.explicitlyCleared) { if (!out) { out = spans.slice(0, i); } } + else if (out) { out.push(spans[i]); } } - return !out ? spans : out.length ? out : null; + return !out ? spans : out.length ? out : null } // Retrieve and filter the old marked spans stored in a change event. function getOldSpans(doc, change) { - var found = change['spans_' + doc.id]; - if (!found) { - return null; - } + var found = change["spans_" + doc.id]; + if (!found) { return null } var nw = []; - for (var i = 0; i < change.text.length; ++i) { - nw.push(removeClearedSpans(found[i])); - } - return nw; + for (var i = 0; i < change.text.length; ++i) + { nw.push(removeClearedSpans(found[i])); } + return nw } // Used for un/re-doing changes from the history. Combines the @@ -7372,31 +5048,23 @@ function mergeOldSpans(doc, change) { var old = getOldSpans(doc, change); var stretched = stretchSpansOverChange(doc, change); - if (!old) { - return stretched; - } - if (!stretched) { - return old; - } + if (!old) { return stretched } + if (!stretched) { return old } for (var i = 0; i < old.length; ++i) { - var oldCur = old[i], - stretchCur = stretched[i]; + var oldCur = old[i], stretchCur = stretched[i]; if (oldCur && stretchCur) { spans: for (var j = 0; j < stretchCur.length; ++j) { var span = stretchCur[j]; - for (var k = 0; k < oldCur.length; ++k) { - if (oldCur[k].marker == span.marker) { - continue spans; - } - } + for (var k = 0; k < oldCur.length; ++k) + { if (oldCur[k].marker == span.marker) { continue spans } } oldCur.push(span); } } else if (stretchCur) { old[i] = stretchCur; } } - return old; + return old } // Used both to provide a JSON-safe object in .getHistory, and, when @@ -7406,35 +5074,23 @@ for (var i = 0; i < events.length; ++i) { var event = events[i]; if (event.ranges) { - copy.push( - instantiateSel ? Selection.prototype.deepCopy.call(event) : event, - ); - continue; - } - var changes = event.changes, - newChanges = []; - copy.push({ changes: newChanges }); + copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event); + continue + } + var changes = event.changes, newChanges = []; + copy.push({changes: newChanges}); for (var j = 0; j < changes.length; ++j) { - var change = changes[j], - m = void 0; - newChanges.push({ - from: change.from, - to: change.to, - text: change.text, - }); - if (newGroup) { - for (var prop in change) { - if ((m = prop.match(/^spans_(\d+)$/))) { - if (indexOf(newGroup, Number(m[1])) > -1) { - lst(newChanges)[prop] = change[prop]; - delete change[prop]; - } - } + var change = changes[j], m = (void 0); + newChanges.push({from: change.from, to: change.to, text: change.text}); + if (newGroup) { for (var prop in change) { if (m = prop.match(/^spans_(\d+)$/)) { + if (indexOf(newGroup, Number(m[1])) > -1) { + lst(newChanges)[prop] = change[prop]; + delete change[prop]; } - } + } } } } } - return copy; + return copy } // The 'scroll' parameter given to many of these indicated whether @@ -7450,29 +5106,23 @@ var anchor = range.anchor; if (other) { var posBefore = cmp(head, anchor) < 0; - if (posBefore != cmp(other, anchor) < 0) { + if (posBefore != (cmp(other, anchor) < 0)) { anchor = head; head = other; - } else if (posBefore != cmp(head, other) < 0) { + } else if (posBefore != (cmp(head, other) < 0)) { head = other; } } - return new Range(anchor, head); + return new Range(anchor, head) } else { - return new Range(other || head, head); + return new Range(other || head, head) } } // Extend the primary selection range, discard the rest. function extendSelection(doc, head, other, options, extend) { - if (extend == null) { - extend = doc.cm && (doc.cm.display.shift || doc.extend); - } - setSelection( - doc, - new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), - options, - ); + if (extend == null) { extend = doc.cm && (doc.cm.display.shift || doc.extend); } + setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options); } // Extend all selections (pos is an array of selections with length @@ -7480,9 +5130,8 @@ function extendSelections(doc, heads, options) { var out = []; var extend = doc.cm && (doc.cm.display.shift || doc.extend); - for (var i = 0; i < doc.sel.ranges.length; i++) { - out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend); - } + for (var i = 0; i < doc.sel.ranges.length; i++) + { out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend); } var newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex); setSelection(doc, newSel, options); } @@ -7491,11 +5140,7 @@ function replaceOneSelection(doc, i, range, options) { var ranges = doc.sel.ranges.slice(0); ranges[i] = range; - setSelection( - doc, - normalizeSelection(doc.cm, ranges, doc.sel.primIndex), - options, - ); + setSelection(doc, normalizeSelection(doc.cm, ranges, doc.sel.primIndex), options); } // Reset the selection to a single range. @@ -7508,33 +5153,22 @@ function filterSelectionChange(doc, sel, options) { var obj = { ranges: sel.ranges, - update: function (ranges) { - var this$1 = this; - + update: function(ranges) { this.ranges = []; - for (var i = 0; i < ranges.length; i++) { - this$1.ranges[i] = new Range( - clipPos(doc, ranges[i].anchor), - clipPos(doc, ranges[i].head), - ); - } + for (var i = 0; i < ranges.length; i++) + { this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor), + clipPos(doc, ranges[i].head)); } }, - origin: options && options.origin, + origin: options && options.origin }; - signal(doc, 'beforeSelectionChange', doc, obj); - if (doc.cm) { - signal(doc.cm, 'beforeSelectionChange', doc.cm, obj); - } - if (obj.ranges != sel.ranges) { - return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1); - } else { - return sel; - } + signal(doc, "beforeSelectionChange", doc, obj); + if (doc.cm) { signal(doc.cm, "beforeSelectionChange", doc.cm, obj); } + if (obj.ranges != sel.ranges) { return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1) } + else { return sel } } function setSelectionReplaceHistory(doc, sel, options) { - var done = doc.history.done, - last = lst(done); + var done = doc.history.done, last = lst(done); if (last && last.ranges) { done[done.length - 1] = sel; setSelectionNoUndo(doc, sel, options); @@ -7546,36 +5180,23 @@ // Set a new selection. function setSelection(doc, sel, options) { setSelectionNoUndo(doc, sel, options); - addSelectionToHistory( - doc, - doc.sel, - doc.cm ? doc.cm.curOp.id : NaN, - options, - ); + addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options); } function setSelectionNoUndo(doc, sel, options) { - if ( - hasHandler(doc, 'beforeSelectionChange') || - (doc.cm && hasHandler(doc.cm, 'beforeSelectionChange')) - ) { - sel = filterSelectionChange(doc, sel, options); - } + if (hasHandler(doc, "beforeSelectionChange") || doc.cm && hasHandler(doc.cm, "beforeSelectionChange")) + { sel = filterSelectionChange(doc, sel, options); } - var bias = - (options && options.bias) || + var bias = options && options.bias || (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1); setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true)); - if (!(options && options.scroll === false) && doc.cm) { - ensureCursorVisible(doc.cm); - } + if (!(options && options.scroll === false) && doc.cm && doc.cm.getOption("readOnly") != "nocursor") + { ensureCursorVisible(doc.cm); } } function setSelectionInner(doc, sel) { - if (sel.equals(doc.sel)) { - return; - } + if (sel.equals(doc.sel)) { return } doc.sel = sel; @@ -7584,7 +5205,7 @@ doc.cm.curOp.selectionChanged = true; signalCursorActivity(doc.cm); } - signalLater(doc, 'cursorActivity', doc); + signalLater(doc, "cursorActivity", doc); } // Verify that the selection does not partially select any atomic @@ -7600,131 +5221,78 @@ for (var i = 0; i < sel.ranges.length; i++) { var range = sel.ranges[i]; var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i]; - var newAnchor = skipAtomic( - doc, - range.anchor, - old && old.anchor, - bias, - mayClear, - ); - var newHead = skipAtomic( - doc, - range.head, - old && old.head, - bias, - mayClear, - ); + var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear); + var newHead = range.head == range.anchor ? newAnchor : skipAtomic(doc, range.head, old && old.head, bias, mayClear); if (out || newAnchor != range.anchor || newHead != range.head) { - if (!out) { - out = sel.ranges.slice(0, i); - } + if (!out) { out = sel.ranges.slice(0, i); } out[i] = new Range(newAnchor, newHead); } } - return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel; + return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel } function skipAtomicInner(doc, pos, oldPos, dir, mayClear) { var line = getLine(doc, pos.line); - if (line.markedSpans) { - for (var i = 0; i < line.markedSpans.length; ++i) { - var sp = line.markedSpans[i], - m = sp.marker; - - // Determine if we should prevent the cursor being placed to the left/right of an atomic marker - // Historically this was determined using the inclusiveLeft/Right option, but the new way to control it - // is with selectLeft/Right - var preventCursorLeft = - 'selectLeft' in m ? !m.selectLeft : m.inclusiveLeft; - var preventCursorRight = - 'selectRight' in m ? !m.selectRight : m.inclusiveRight; - - if ( - (sp.from == null || - (preventCursorLeft ? sp.from <= pos.ch : sp.from < pos.ch)) && - (sp.to == null || - (preventCursorRight ? sp.to >= pos.ch : sp.to > pos.ch)) - ) { - if (mayClear) { - signal(m, 'beforeCursorEnter'); - if (m.explicitlyCleared) { - if (!line.markedSpans) { - break; - } else { - --i; - continue; - } - } - } - if (!m.atomic) { - continue; - } - - if (oldPos) { - var near = m.find(dir < 0 ? 1 : -1), - diff = void 0; - if (dir < 0 ? preventCursorRight : preventCursorLeft) { - near = movePos( - doc, - near, - -dir, - near && near.line == pos.line ? line : null, - ); - } - if ( - near && - near.line == pos.line && - (diff = cmp(near, oldPos)) && - (dir < 0 ? diff < 0 : diff > 0) - ) { - return skipAtomicInner(doc, near, pos, dir, mayClear); - } + if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) { + var sp = line.markedSpans[i], m = sp.marker; + + // Determine if we should prevent the cursor being placed to the left/right of an atomic marker + // Historically this was determined using the inclusiveLeft/Right option, but the new way to control it + // is with selectLeft/Right + var preventCursorLeft = ("selectLeft" in m) ? !m.selectLeft : m.inclusiveLeft; + var preventCursorRight = ("selectRight" in m) ? !m.selectRight : m.inclusiveRight; + + if ((sp.from == null || (preventCursorLeft ? sp.from <= pos.ch : sp.from < pos.ch)) && + (sp.to == null || (preventCursorRight ? sp.to >= pos.ch : sp.to > pos.ch))) { + if (mayClear) { + signal(m, "beforeCursorEnter"); + if (m.explicitlyCleared) { + if (!line.markedSpans) { break } + else {--i; continue} } + } + if (!m.atomic) { continue } - var far = m.find(dir < 0 ? -1 : 1); - if (dir < 0 ? preventCursorLeft : preventCursorRight) { - far = movePos(doc, far, dir, far.line == pos.line ? line : null); - } - return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null; + if (oldPos) { + var near = m.find(dir < 0 ? 1 : -1), diff = (void 0); + if (dir < 0 ? preventCursorRight : preventCursorLeft) + { near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null); } + if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0)) + { return skipAtomicInner(doc, near, pos, dir, mayClear) } } + + var far = m.find(dir < 0 ? -1 : 1); + if (dir < 0 ? preventCursorLeft : preventCursorRight) + { far = movePos(doc, far, dir, far.line == pos.line ? line : null); } + return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null } - } - return pos; + } } + return pos } // Ensure a given position is not inside an atomic range. function skipAtomic(doc, pos, oldPos, bias, mayClear) { var dir = bias || 1; - var found = - skipAtomicInner(doc, pos, oldPos, dir, mayClear) || - (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) || - skipAtomicInner(doc, pos, oldPos, -dir, mayClear) || - (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true)); + var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) || + (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) || + skipAtomicInner(doc, pos, oldPos, -dir, mayClear) || + (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true)); if (!found) { doc.cantEdit = true; - return Pos(doc.first, 0); + return Pos(doc.first, 0) } - return found; + return found } function movePos(doc, pos, dir, line) { if (dir < 0 && pos.ch == 0) { - if (pos.line > doc.first) { - return clipPos(doc, Pos(pos.line - 1)); - } else { - return null; - } - } else if ( - dir > 0 && - pos.ch == (line || getLine(doc, pos.line)).text.length - ) { - if (pos.line < doc.first + doc.size - 1) { - return Pos(pos.line + 1, 0); - } else { - return null; - } + if (pos.line > doc.first) { return clipPos(doc, Pos(pos.line - 1)) } + else { return null } + } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) { + if (pos.line < doc.first + doc.size - 1) { return Pos(pos.line + 1, 0) } + else { return null } } else { - return new Pos(pos.line, pos.ch + dir); + return new Pos(pos.line, pos.ch + dir) } } @@ -7742,99 +5310,54 @@ to: change.to, text: change.text, origin: change.origin, - cancel: function () { - return (obj.canceled = true); - }, + cancel: function () { return obj.canceled = true; } }; - if (update) { - obj.update = function (from, to, text, origin) { - if (from) { - obj.from = clipPos(doc, from); - } - if (to) { - obj.to = clipPos(doc, to); - } - if (text) { - obj.text = text; - } - if (origin !== undefined) { - obj.origin = origin; - } - }; - } - signal(doc, 'beforeChange', doc, obj); - if (doc.cm) { - signal(doc.cm, 'beforeChange', doc.cm, obj); - } + if (update) { obj.update = function (from, to, text, origin) { + if (from) { obj.from = clipPos(doc, from); } + if (to) { obj.to = clipPos(doc, to); } + if (text) { obj.text = text; } + if (origin !== undefined) { obj.origin = origin; } + }; } + signal(doc, "beforeChange", doc, obj); + if (doc.cm) { signal(doc.cm, "beforeChange", doc.cm, obj); } if (obj.canceled) { - if (doc.cm) { - doc.cm.curOp.updateInput = 2; - } - return null; + if (doc.cm) { doc.cm.curOp.updateInput = 2; } + return null } - return { from: obj.from, to: obj.to, text: obj.text, origin: obj.origin }; + return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin} } // Apply a change to a document, and add it to the document's // history, and propagating it to all linked documents. function makeChange(doc, change, ignoreReadOnly) { if (doc.cm) { - if (!doc.cm.curOp) { - return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly); - } - if (doc.cm.state.suppressEdits) { - return; - } + if (!doc.cm.curOp) { return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly) } + if (doc.cm.state.suppressEdits) { return } } - if ( - hasHandler(doc, 'beforeChange') || - (doc.cm && hasHandler(doc.cm, 'beforeChange')) - ) { + if (hasHandler(doc, "beforeChange") || doc.cm && hasHandler(doc.cm, "beforeChange")) { change = filterChange(doc, change, true); - if (!change) { - return; - } + if (!change) { return } } // Possibly split or suppress the update based on the presence // of read-only spans in its range. - var split = - sawReadOnlySpans && - !ignoreReadOnly && - removeReadOnlyRanges(doc, change.from, change.to); + var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to); if (split) { - for (var i = split.length - 1; i >= 0; --i) { - makeChangeInner(doc, { - from: split[i].from, - to: split[i].to, - text: i ? [''] : change.text, - origin: change.origin, - }); - } + for (var i = split.length - 1; i >= 0; --i) + { makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [""] : change.text, origin: change.origin}); } } else { makeChangeInner(doc, change); } } function makeChangeInner(doc, change) { - if ( - change.text.length == 1 && - change.text[0] == '' && - cmp(change.from, change.to) == 0 - ) { - return; - } + if (change.text.length == 1 && change.text[0] == "" && cmp(change.from, change.to) == 0) { return } var selAfter = computeSelAfterChange(doc, change); addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN); - makeChangeSingleDoc( - doc, - change, - selAfter, - stretchSpansOverChange(doc, change), - ); + makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change)); var rebased = []; linkedDocs(doc, function (doc, sharedHist) { @@ -7842,44 +5365,27 @@ rebaseHist(doc.history, change); rebased.push(doc.history); } - makeChangeSingleDoc( - doc, - change, - null, - stretchSpansOverChange(doc, change), - ); + makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change)); }); } // Revert a change stored in a document's history. function makeChangeFromHistory(doc, type, allowSelectionOnly) { var suppress = doc.cm && doc.cm.state.suppressEdits; - if (suppress && !allowSelectionOnly) { - return; - } + if (suppress && !allowSelectionOnly) { return } - var hist = doc.history, - event, - selAfter = doc.sel; - var source = type == 'undo' ? hist.done : hist.undone, - dest = type == 'undo' ? hist.undone : hist.done; + var hist = doc.history, event, selAfter = doc.sel; + var source = type == "undo" ? hist.done : hist.undone, dest = type == "undo" ? hist.undone : hist.done; // Verify that there is a useable event (so that ctrl-z won't // needlessly clear selection events) var i = 0; for (; i < source.length; i++) { event = source[i]; - if ( - allowSelectionOnly - ? event.ranges && !event.equals(doc.sel) - : !event.ranges - ) { - break; - } - } - if (i == source.length) { - return; + if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges) + { break } } + if (i == source.length) { return } hist.lastOrigin = hist.lastSelOrigin = null; for (;;) { @@ -7887,44 +5393,38 @@ if (event.ranges) { pushSelectionToHistory(event, dest); if (allowSelectionOnly && !event.equals(doc.sel)) { - setSelection(doc, event, { clearRedo: false }); - return; + setSelection(doc, event, {clearRedo: false}); + return } selAfter = event; } else if (suppress) { source.push(event); - return; - } else { - break; - } + return + } else { break } } // Build up a reverse change object to add to the opposite history // stack (redo when undoing, and vice versa). var antiChanges = []; pushSelectionToHistory(selAfter, dest); - dest.push({ changes: antiChanges, generation: hist.generation }); + dest.push({changes: antiChanges, generation: hist.generation}); hist.generation = event.generation || ++hist.maxGeneration; - var filter = - hasHandler(doc, 'beforeChange') || - (doc.cm && hasHandler(doc.cm, 'beforeChange')); + var filter = hasHandler(doc, "beforeChange") || doc.cm && hasHandler(doc.cm, "beforeChange"); - var loop = function (i) { + var loop = function ( i ) { var change = event.changes[i]; change.origin = type; if (filter && !filterChange(doc, change, false)) { source.length = 0; - return {}; + return {} } antiChanges.push(historyChangeFromChange(doc, change)); var after = i ? computeSelAfterChange(doc, change) : lst(source); makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change)); - if (!i && doc.cm) { - doc.cm.scrollIntoView({ from: change.from, to: changeEnd(change) }); - } + if (!i && doc.cm) { doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}); } var rebased = []; // Propagate to the linked documents @@ -7938,140 +5438,96 @@ }; for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) { - var returned = loop(i$1); + var returned = loop( i$1 ); - if (returned) return returned.v; + if ( returned ) return returned.v; } } // Sub-views need their line numbers shifted when text is added // above or below them in the parent document. function shiftDoc(doc, distance) { - if (distance == 0) { - return; - } + if (distance == 0) { return } doc.first += distance; - doc.sel = new Selection( - map(doc.sel.ranges, function (range) { - return new Range( - Pos(range.anchor.line + distance, range.anchor.ch), - Pos(range.head.line + distance, range.head.ch), - ); - }), - doc.sel.primIndex, - ); + doc.sel = new Selection(map(doc.sel.ranges, function (range) { return new Range( + Pos(range.anchor.line + distance, range.anchor.ch), + Pos(range.head.line + distance, range.head.ch) + ); }), doc.sel.primIndex); if (doc.cm) { regChange(doc.cm, doc.first, doc.first - distance, distance); - for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++) { - regLineChange(doc.cm, l, 'gutter'); - } + for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++) + { regLineChange(doc.cm, l, "gutter"); } } } // More lower-level change function, handling only a single document // (not linked ones). function makeChangeSingleDoc(doc, change, selAfter, spans) { - if (doc.cm && !doc.cm.curOp) { - return operation(doc.cm, makeChangeSingleDoc)( - doc, - change, - selAfter, - spans, - ); - } + if (doc.cm && !doc.cm.curOp) + { return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans) } if (change.to.line < doc.first) { - shiftDoc( - doc, - change.text.length - 1 - (change.to.line - change.from.line), - ); - return; - } - if (change.from.line > doc.lastLine()) { - return; + shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line)); + return } + if (change.from.line > doc.lastLine()) { return } // Clip the change to the size of this doc if (change.from.line < doc.first) { var shift = change.text.length - 1 - (doc.first - change.from.line); shiftDoc(doc, shift); - change = { - from: Pos(doc.first, 0), - to: Pos(change.to.line + shift, change.to.ch), - text: [lst(change.text)], - origin: change.origin, - }; + change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch), + text: [lst(change.text)], origin: change.origin}; } var last = doc.lastLine(); if (change.to.line > last) { - change = { - from: change.from, - to: Pos(last, getLine(doc, last).text.length), - text: [change.text[0]], - origin: change.origin, - }; + change = {from: change.from, to: Pos(last, getLine(doc, last).text.length), + text: [change.text[0]], origin: change.origin}; } change.removed = getBetween(doc, change.from, change.to); - if (!selAfter) { - selAfter = computeSelAfterChange(doc, change); - } - if (doc.cm) { - makeChangeSingleDocInEditor(doc.cm, change, spans); - } else { - updateDoc(doc, change, spans); - } + if (!selAfter) { selAfter = computeSelAfterChange(doc, change); } + if (doc.cm) { makeChangeSingleDocInEditor(doc.cm, change, spans); } + else { updateDoc(doc, change, spans); } setSelectionNoUndo(doc, selAfter, sel_dontScroll); - if (doc.cantEdit && skipAtomic(doc, Pos(doc.firstLine(), 0))) { - doc.cantEdit = false; - } + if (doc.cantEdit && skipAtomic(doc, Pos(doc.firstLine(), 0))) + { doc.cantEdit = false; } } // Handle the interaction of a change to a document with the editor // that this document is part of. function makeChangeSingleDocInEditor(cm, change, spans) { - var doc = cm.doc, - display = cm.display, - from = change.from, - to = change.to; + var doc = cm.doc, display = cm.display, from = change.from, to = change.to; - var recomputeMaxLength = false, - checkWidthStart = from.line; + var recomputeMaxLength = false, checkWidthStart = from.line; if (!cm.options.lineWrapping) { checkWidthStart = lineNo(visualLine(getLine(doc, from.line))); doc.iter(checkWidthStart, to.line + 1, function (line) { if (line == display.maxLine) { recomputeMaxLength = true; - return true; + return true } }); } - if (doc.sel.contains(change.from, change.to) > -1) { - signalCursorActivity(cm); - } + if (doc.sel.contains(change.from, change.to) > -1) + { signalCursorActivity(cm); } updateDoc(doc, change, spans, estimateHeight(cm)); if (!cm.options.lineWrapping) { - doc.iter( - checkWidthStart, - from.line + change.text.length, - function (line) { - var len = lineLength(line); - if (len > display.maxLineLength) { - display.maxLine = line; - display.maxLineLength = len; - display.maxLineChanged = true; - recomputeMaxLength = false; - } - }, - ); - if (recomputeMaxLength) { - cm.curOp.updateMaxLine = true; - } + doc.iter(checkWidthStart, from.line + change.text.length, function (line) { + var len = lineLength(line); + if (len > display.maxLineLength) { + display.maxLine = line; + display.maxLineLength = len; + display.maxLineChanged = true; + recomputeMaxLength = false; + } + }); + if (recomputeMaxLength) { cm.curOp.updateMaxLine = true; } } retreatFrontier(doc, from.line); @@ -8079,34 +5535,23 @@ var lendiff = change.text.length - (to.line - from.line) - 1; // Remember that these lines changed, for updating the display - if (change.full) { - regChange(cm); - } else if ( - from.line == to.line && - change.text.length == 1 && - !isWholeLineUpdate(cm.doc, change) - ) { - regLineChange(cm, from.line, 'text'); - } else { - regChange(cm, from.line, to.line + 1, lendiff); - } - - var changesHandler = hasHandler(cm, 'changes'), - changeHandler = hasHandler(cm, 'change'); + if (change.full) + { regChange(cm); } + else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change)) + { regLineChange(cm, from.line, "text"); } + else + { regChange(cm, from.line, to.line + 1, lendiff); } + + var changesHandler = hasHandler(cm, "changes"), changeHandler = hasHandler(cm, "change"); if (changeHandler || changesHandler) { var obj = { - from: from, - to: to, + from: from, to: to, text: change.text, removed: change.removed, - origin: change.origin, + origin: change.origin }; - if (changeHandler) { - signalLater(cm, 'change', cm, obj); - } - if (changesHandler) { - (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); - } + if (changeHandler) { signalLater(cm, "change", cm, obj); } + if (changesHandler) { (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); } } cm.display.selForContextMenu = null; } @@ -8114,16 +5559,10 @@ function replaceRange(doc, code, from, to, origin) { var assign; - if (!to) { - to = from; - } - if (cmp(to, from) < 0) { - (assign = [to, from]), (from = assign[0]), (to = assign[1]); - } - if (typeof code == 'string') { - code = doc.splitLines(code); - } - makeChange(doc, { from: from, to: to, text: code, origin: origin }); + if (!to) { to = from; } + if (cmp(to, from) < 0) { (assign = [to, from], from = assign[0], to = assign[1]); } + if (typeof code == "string") { code = doc.splitLines(code); } + makeChange(doc, {from: from, to: to, text: code, origin: origin}); } // Rebasing/resetting history to deal with externally-sourced changes @@ -8146,18 +5585,14 @@ // shared position objects being unsafely updated. function rebaseHistArray(array, from, to, diff) { for (var i = 0; i < array.length; ++i) { - var sub = array[i], - ok = true; + var sub = array[i], ok = true; if (sub.ranges) { - if (!sub.copied) { - sub = array[i] = sub.deepCopy(); - sub.copied = true; - } + if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; } for (var j = 0; j < sub.ranges.length; j++) { rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff); rebaseHistSelSingle(sub.ranges[j].head, from, to, diff); } - continue; + continue } for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) { var cur = sub.changes[j$1]; @@ -8166,7 +5601,7 @@ cur.to = Pos(cur.to.line + diff, cur.to.ch); } else if (from <= cur.to.line) { ok = false; - break; + break } } if (!ok) { @@ -8177,9 +5612,7 @@ } function rebaseHist(hist, change) { - var from = change.from.line, - to = change.to.line, - diff = change.text.length - (to - from) - 1; + var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1; rebaseHistArray(hist.done, from, to, diff); rebaseHistArray(hist.undone, from, to, diff); } @@ -8188,20 +5621,12 @@ // returning the number and optionally registering the line as // changed. function changeLine(doc, handle, changeType, op) { - var no = handle, - line = handle; - if (typeof handle == 'number') { - line = getLine(doc, clipLine(doc, handle)); - } else { - no = lineNo(handle); - } - if (no == null) { - return null; - } - if (op(line, no) && doc.cm) { - regLineChange(doc.cm, no, changeType); - } - return line; + var no = handle, line = handle; + if (typeof handle == "number") { line = getLine(doc, clipLine(doc, handle)); } + else { no = lineNo(handle); } + if (no == null) { return null } + if (op(line, no) && doc.cm) { regLineChange(doc.cm, no, changeType); } + return line } // The document is represented as a BTree consisting of leaves, with @@ -8218,79 +5643,57 @@ // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html function LeafChunk(lines) { - var this$1 = this; - this.lines = lines; this.parent = null; var height = 0; for (var i = 0; i < lines.length; ++i) { - lines[i].parent = this$1; + lines[i].parent = this; height += lines[i].height; } this.height = height; } LeafChunk.prototype = { - chunkSize: function () { - return this.lines.length; - }, + chunkSize: function() { return this.lines.length }, // Remove the n lines at offset 'at'. - removeInner: function (at, n) { - var this$1 = this; - + removeInner: function(at, n) { for (var i = at, e = at + n; i < e; ++i) { - var line = this$1.lines[i]; - this$1.height -= line.height; + var line = this.lines[i]; + this.height -= line.height; cleanUpLine(line); - signalLater(line, 'delete'); + signalLater(line, "delete"); } this.lines.splice(at, n); }, // Helper used to collapse a small branch into a single leaf. - collapse: function (lines) { + collapse: function(lines) { lines.push.apply(lines, this.lines); }, // Insert the given array of lines at offset 'at', count them as // having the given height. - insertInner: function (at, lines, height) { - var this$1 = this; - + insertInner: function(at, lines, height) { this.height += height; - this.lines = this.lines - .slice(0, at) - .concat(lines) - .concat(this.lines.slice(at)); - for (var i = 0; i < lines.length; ++i) { - lines[i].parent = this$1; - } + this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at)); + for (var i = 0; i < lines.length; ++i) { lines[i].parent = this; } }, // Used to iterate over a part of the tree. - iterN: function (at, n, op) { - var this$1 = this; - - for (var e = at + n; at < e; ++at) { - if (op(this$1.lines[at])) { - return true; - } - } - }, + iterN: function(at, n, op) { + for (var e = at + n; at < e; ++at) + { if (op(this.lines[at])) { return true } } + } }; function BranchChunk(children) { - var this$1 = this; - this.children = children; - var size = 0, - height = 0; + var size = 0, height = 0; for (var i = 0; i < children.length; ++i) { var ch = children[i]; - size += ch.chunkSize(); - height += ch.height; - ch.parent = this$1; + size += ch.chunkSize(); height += ch.height; + ch.parent = this; } this.size = size; this.height = height; @@ -8298,40 +5701,25 @@ } BranchChunk.prototype = { - chunkSize: function () { - return this.size; - }, - - removeInner: function (at, n) { - var this$1 = this; + chunkSize: function() { return this.size }, + removeInner: function(at, n) { this.size -= n; for (var i = 0; i < this.children.length; ++i) { - var child = this$1.children[i], - sz = child.chunkSize(); + var child = this.children[i], sz = child.chunkSize(); if (at < sz) { - var rm = Math.min(n, sz - at), - oldHeight = child.height; + var rm = Math.min(n, sz - at), oldHeight = child.height; child.removeInner(at, rm); - this$1.height -= oldHeight - child.height; - if (sz == rm) { - this$1.children.splice(i--, 1); - child.parent = null; - } - if ((n -= rm) == 0) { - break; - } + this.height -= oldHeight - child.height; + if (sz == rm) { this.children.splice(i--, 1); child.parent = null; } + if ((n -= rm) == 0) { break } at = 0; - } else { - at -= sz; - } + } else { at -= sz; } } // If the result is smaller than 25 lines, ensure that it is a // single leaf node. - if ( - this.size - n < 25 && - (this.children.length > 1 || !(this.children[0] instanceof LeafChunk)) - ) { + if (this.size - n < 25 && + (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) { var lines = []; this.collapse(lines); this.children = [new LeafChunk(lines)]; @@ -8339,207 +5727,139 @@ } }, - collapse: function (lines) { - var this$1 = this; - - for (var i = 0; i < this.children.length; ++i) { - this$1.children[i].collapse(lines); - } + collapse: function(lines) { + for (var i = 0; i < this.children.length; ++i) { this.children[i].collapse(lines); } }, - insertInner: function (at, lines, height) { - var this$1 = this; - + insertInner: function(at, lines, height) { this.size += lines.length; this.height += height; for (var i = 0; i < this.children.length; ++i) { - var child = this$1.children[i], - sz = child.chunkSize(); + var child = this.children[i], sz = child.chunkSize(); if (at <= sz) { child.insertInner(at, lines, height); if (child.lines && child.lines.length > 50) { // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced. // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest. - var remaining = (child.lines.length % 25) + 25; - for (var pos = remaining; pos < child.lines.length; ) { - var leaf = new LeafChunk(child.lines.slice(pos, (pos += 25))); + var remaining = child.lines.length % 25 + 25; + for (var pos = remaining; pos < child.lines.length;) { + var leaf = new LeafChunk(child.lines.slice(pos, pos += 25)); child.height -= leaf.height; - this$1.children.splice(++i, 0, leaf); - leaf.parent = this$1; + this.children.splice(++i, 0, leaf); + leaf.parent = this; } child.lines = child.lines.slice(0, remaining); - this$1.maybeSpill(); + this.maybeSpill(); } - break; + break } at -= sz; } }, // When a node has grown, check whether it should be split. - maybeSpill: function () { - if (this.children.length <= 10) { - return; - } + maybeSpill: function() { + if (this.children.length <= 10) { return } var me = this; do { var spilled = me.children.splice(me.children.length - 5, 5); var sibling = new BranchChunk(spilled); - if (!me.parent) { - // Become the parent node + if (!me.parent) { // Become the parent node var copy = new BranchChunk(me.children); copy.parent = me; me.children = [copy, sibling]; me = copy; - } else { + } else { me.size -= sibling.size; me.height -= sibling.height; var myIndex = indexOf(me.parent.children, me); me.parent.children.splice(myIndex + 1, 0, sibling); } sibling.parent = me.parent; - } while (me.children.length > 10); + } while (me.children.length > 10) me.parent.maybeSpill(); }, - iterN: function (at, n, op) { - var this$1 = this; - + iterN: function(at, n, op) { for (var i = 0; i < this.children.length; ++i) { - var child = this$1.children[i], - sz = child.chunkSize(); + var child = this.children[i], sz = child.chunkSize(); if (at < sz) { var used = Math.min(n, sz - at); - if (child.iterN(at, used, op)) { - return true; - } - if ((n -= used) == 0) { - break; - } + if (child.iterN(at, used, op)) { return true } + if ((n -= used) == 0) { break } at = 0; - } else { - at -= sz; - } + } else { at -= sz; } } - }, + } }; // Line widgets are block elements displayed above or below a line. - var LineWidget = function (doc, node, options) { - var this$1 = this; - - if (options) { - for (var opt in options) { - if (options.hasOwnProperty(opt)) { - this$1[opt] = options[opt]; - } - } - } + var LineWidget = function(doc, node, options) { + if (options) { for (var opt in options) { if (options.hasOwnProperty(opt)) + { this[opt] = options[opt]; } } } this.doc = doc; this.node = node; }; LineWidget.prototype.clear = function () { - var this$1 = this; - - var cm = this.doc.cm, - ws = this.line.widgets, - line = this.line, - no = lineNo(line); - if (no == null || !ws) { - return; - } - for (var i = 0; i < ws.length; ++i) { - if (ws[i] == this$1) { - ws.splice(i--, 1); - } - } - if (!ws.length) { - line.widgets = null; - } + var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line); + if (no == null || !ws) { return } + for (var i = 0; i < ws.length; ++i) { if (ws[i] == this) { ws.splice(i--, 1); } } + if (!ws.length) { line.widgets = null; } var height = widgetHeight(this); updateLineHeight(line, Math.max(0, line.height - height)); if (cm) { runInOp(cm, function () { adjustScrollWhenAboveVisible(cm, line, -height); - regLineChange(cm, no, 'widget'); + regLineChange(cm, no, "widget"); }); - signalLater(cm, 'lineWidgetCleared', cm, this, no); + signalLater(cm, "lineWidgetCleared", cm, this, no); } }; LineWidget.prototype.changed = function () { - var this$1 = this; + var this$1 = this; - var oldH = this.height, - cm = this.doc.cm, - line = this.line; + var oldH = this.height, cm = this.doc.cm, line = this.line; this.height = null; var diff = widgetHeight(this) - oldH; - if (!diff) { - return; - } - if (!lineIsHidden(this.doc, line)) { - updateLineHeight(line, line.height + diff); - } + if (!diff) { return } + if (!lineIsHidden(this.doc, line)) { updateLineHeight(line, line.height + diff); } if (cm) { runInOp(cm, function () { cm.curOp.forceUpdate = true; adjustScrollWhenAboveVisible(cm, line, diff); - signalLater(cm, 'lineWidgetChanged', cm, this$1, lineNo(line)); + signalLater(cm, "lineWidgetChanged", cm, this$1, lineNo(line)); }); } }; eventMixin(LineWidget); function adjustScrollWhenAboveVisible(cm, line, diff) { - if ( - heightAtLine(line) < - ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop) - ) { - addToScrollTop(cm, diff); - } + if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop)) + { addToScrollTop(cm, diff); } } function addLineWidget(doc, handle, node, options) { var widget = new LineWidget(doc, node, options); var cm = doc.cm; - if (cm && widget.noHScroll) { - cm.display.alignWidgets = true; - } - changeLine(doc, handle, 'widget', function (line) { + if (cm && widget.noHScroll) { cm.display.alignWidgets = true; } + changeLine(doc, handle, "widget", function (line) { var widgets = line.widgets || (line.widgets = []); - if (widget.insertAt == null) { - widgets.push(widget); - } else { - widgets.splice( - Math.min(widgets.length - 1, Math.max(0, widget.insertAt)), - 0, - widget, - ); - } + if (widget.insertAt == null) { widgets.push(widget); } + else { widgets.splice(Math.min(widgets.length, Math.max(0, widget.insertAt)), 0, widget); } widget.line = line; if (cm && !lineIsHidden(doc, line)) { var aboveVisible = heightAtLine(line) < doc.scrollTop; updateLineHeight(line, line.height + widgetHeight(widget)); - if (aboveVisible) { - addToScrollTop(cm, widget.height); - } + if (aboveVisible) { addToScrollTop(cm, widget.height); } cm.curOp.forceUpdate = true; } - return true; + return true }); - if (cm) { - signalLater( - cm, - 'lineWidgetAdded', - cm, - widget, - typeof handle == 'number' ? handle : lineNo(handle), - ); - } - return widget; + if (cm) { signalLater(cm, "lineWidgetAdded", cm, widget, typeof handle == "number" ? handle : lineNo(handle)); } + return widget } // TEXTMARKERS @@ -8559,7 +5879,7 @@ // when they overlap (they may nest, but not partially overlap). var nextMarkerId = 0; - var TextMarker = function (doc, type) { + var TextMarker = function(doc, type) { this.lines = []; this.type = type; this.doc = doc; @@ -8568,79 +5888,45 @@ // Clear the marker. TextMarker.prototype.clear = function () { - var this$1 = this; - - if (this.explicitlyCleared) { - return; - } - var cm = this.doc.cm, - withOp = cm && !cm.curOp; - if (withOp) { - startOperation(cm); - } - if (hasHandler(this, 'clear')) { + if (this.explicitlyCleared) { return } + var cm = this.doc.cm, withOp = cm && !cm.curOp; + if (withOp) { startOperation(cm); } + if (hasHandler(this, "clear")) { var found = this.find(); - if (found) { - signalLater(this, 'clear', found.from, found.to); - } + if (found) { signalLater(this, "clear", found.from, found.to); } } - var min = null, - max = null; + var min = null, max = null; for (var i = 0; i < this.lines.length; ++i) { - var line = this$1.lines[i]; - var span = getMarkedSpanFor(line.markedSpans, this$1); - if (cm && !this$1.collapsed) { - regLineChange(cm, lineNo(line), 'text'); - } else if (cm) { - if (span.to != null) { - max = lineNo(line); - } - if (span.from != null) { - min = lineNo(line); - } + var line = this.lines[i]; + var span = getMarkedSpanFor(line.markedSpans, this); + if (cm && !this.collapsed) { regLineChange(cm, lineNo(line), "text"); } + else if (cm) { + if (span.to != null) { max = lineNo(line); } + if (span.from != null) { min = lineNo(line); } } line.markedSpans = removeMarkedSpan(line.markedSpans, span); - if ( - span.from == null && - this$1.collapsed && - !lineIsHidden(this$1.doc, line) && - cm - ) { - updateLineHeight(line, textHeight(cm.display)); - } - } - if (cm && this.collapsed && !cm.options.lineWrapping) { - for (var i$1 = 0; i$1 < this.lines.length; ++i$1) { - var visual = visualLine(this$1.lines[i$1]), - len = lineLength(visual); - if (len > cm.display.maxLineLength) { - cm.display.maxLine = visual; - cm.display.maxLineLength = len; - cm.display.maxLineChanged = true; - } - } + if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm) + { updateLineHeight(line, textHeight(cm.display)); } } + if (cm && this.collapsed && !cm.options.lineWrapping) { for (var i$1 = 0; i$1 < this.lines.length; ++i$1) { + var visual = visualLine(this.lines[i$1]), len = lineLength(visual); + if (len > cm.display.maxLineLength) { + cm.display.maxLine = visual; + cm.display.maxLineLength = len; + cm.display.maxLineChanged = true; + } + } } - if (min != null && cm && this.collapsed) { - regChange(cm, min, max + 1); - } + if (min != null && cm && this.collapsed) { regChange(cm, min, max + 1); } this.lines.length = 0; this.explicitlyCleared = true; if (this.atomic && this.doc.cantEdit) { this.doc.cantEdit = false; - if (cm) { - reCheckSelection(cm.doc); - } - } - if (cm) { - signalLater(cm, 'markerCleared', cm, this, min, max); - } - if (withOp) { - endOperation(cm); - } - if (this.parent) { - this.parent.clear(); + if (cm) { reCheckSelection(cm.doc); } } + if (cm) { signalLater(cm, "markerCleared", cm, this, min, max); } + if (withOp) { endOperation(cm); } + if (this.parent) { this.parent.clear(); } }; // Find the position of the marker in the document. Returns a {from, @@ -8649,45 +5935,32 @@ // Pos objects returned contain a line object, rather than a line // number (used to prevent looking up the same line twice). TextMarker.prototype.find = function (side, lineObj) { - var this$1 = this; - - if (side == null && this.type == 'bookmark') { - side = 1; - } + if (side == null && this.type == "bookmark") { side = 1; } var from, to; for (var i = 0; i < this.lines.length; ++i) { - var line = this$1.lines[i]; - var span = getMarkedSpanFor(line.markedSpans, this$1); + var line = this.lines[i]; + var span = getMarkedSpanFor(line.markedSpans, this); if (span.from != null) { from = Pos(lineObj ? line : lineNo(line), span.from); - if (side == -1) { - return from; - } + if (side == -1) { return from } } if (span.to != null) { to = Pos(lineObj ? line : lineNo(line), span.to); - if (side == 1) { - return to; - } + if (side == 1) { return to } } } - return from && { from: from, to: to }; + return from && {from: from, to: to} }; // Signals that the marker's widget changed, and surrounding layout // should be recomputed. TextMarker.prototype.changed = function () { - var this$1 = this; + var this$1 = this; - var pos = this.find(-1, true), - widget = this, - cm = this.doc.cm; - if (!pos || !cm) { - return; - } + var pos = this.find(-1, true), widget = this, cm = this.doc.cm; + if (!pos || !cm) { return } runInOp(cm, function () { - var line = pos.line, - lineN = lineNo(pos.line); + var line = pos.line, lineN = lineNo(pos.line); var view = findViewForLine(cm, lineN); if (view) { clearLineMeasurementCacheFor(view); @@ -8698,23 +5971,18 @@ var oldHeight = widget.height; widget.height = null; var dHeight = widgetHeight(widget) - oldHeight; - if (dHeight) { - updateLineHeight(line, line.height + dHeight); - } + if (dHeight) + { updateLineHeight(line, line.height + dHeight); } } - signalLater(cm, 'markerChanged', cm, this$1); + signalLater(cm, "markerChanged", cm, this$1); }); }; TextMarker.prototype.attachLine = function (line) { if (!this.lines.length && this.doc.cm) { var op = this.doc.cm.curOp; - if ( - !op.maybeHiddenMarkers || - indexOf(op.maybeHiddenMarkers, this) == -1 - ) { - (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); - } + if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1) + { (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); } } this.lines.push(line); }; @@ -8722,8 +5990,8 @@ TextMarker.prototype.detachLine = function (line) { this.lines.splice(indexOf(this.lines, line), 1); if (!this.lines.length && this.doc.cm) { - var op = this.doc.cm.curOp; - (op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this); + var op = this.doc.cm.curOp + ;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this); } }; eventMixin(TextMarker); @@ -8733,105 +6001,53 @@ // Shared markers (across linked documents) are handled separately // (markTextShared will call out to this again, once per // document). - if (options && options.shared) { - return markTextShared(doc, from, to, options, type); - } + if (options && options.shared) { return markTextShared(doc, from, to, options, type) } // Ensure we are in an operation. - if (doc.cm && !doc.cm.curOp) { - return operation(doc.cm, markText)(doc, from, to, options, type); - } + if (doc.cm && !doc.cm.curOp) { return operation(doc.cm, markText)(doc, from, to, options, type) } - var marker = new TextMarker(doc, type), - diff = cmp(from, to); - if (options) { - copyObj(options, marker, false); - } + var marker = new TextMarker(doc, type), diff = cmp(from, to); + if (options) { copyObj(options, marker, false); } // Don't connect empty markers unless clearWhenEmpty is false - if (diff > 0 || (diff == 0 && marker.clearWhenEmpty !== false)) { - return marker; - } + if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false) + { return marker } if (marker.replacedWith) { // Showing up as a widget implies collapsed (widget replaces text) marker.collapsed = true; - marker.widgetNode = eltP( - 'span', - [marker.replacedWith], - 'CodeMirror-widget', - ); - if (!options.handleMouseEvents) { - marker.widgetNode.setAttribute('cm-ignore-events', 'true'); - } - if (options.insertLeft) { - marker.widgetNode.insertLeft = true; - } + marker.widgetNode = eltP("span", [marker.replacedWith], "CodeMirror-widget"); + if (!options.handleMouseEvents) { marker.widgetNode.setAttribute("cm-ignore-events", "true"); } + if (options.insertLeft) { marker.widgetNode.insertLeft = true; } } if (marker.collapsed) { - if ( - conflictingCollapsedRange(doc, from.line, from, to, marker) || - (from.line != to.line && - conflictingCollapsedRange(doc, to.line, from, to, marker)) - ) { - throw new Error( - 'Inserting collapsed marker partially overlapping an existing one', - ); - } + if (conflictingCollapsedRange(doc, from.line, from, to, marker) || + from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker)) + { throw new Error("Inserting collapsed marker partially overlapping an existing one") } seeCollapsedSpans(); } - if (marker.addToHistory) { - addChangeToHistory( - doc, - { from: from, to: to, origin: 'markText' }, - doc.sel, - NaN, - ); - } + if (marker.addToHistory) + { addChangeToHistory(doc, {from: from, to: to, origin: "markText"}, doc.sel, NaN); } - var curLine = from.line, - cm = doc.cm, - updateMaxLine; + var curLine = from.line, cm = doc.cm, updateMaxLine; doc.iter(curLine, to.line + 1, function (line) { - if ( - cm && - marker.collapsed && - !cm.options.lineWrapping && - visualLine(line) == cm.display.maxLine - ) { - updateMaxLine = true; - } - if (marker.collapsed && curLine != from.line) { - updateLineHeight(line, 0); - } - addMarkedSpan( - line, - new MarkedSpan( - marker, - curLine == from.line ? from.ch : null, - curLine == to.line ? to.ch : null, - ), - ); + if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine) + { updateMaxLine = true; } + if (marker.collapsed && curLine != from.line) { updateLineHeight(line, 0); } + addMarkedSpan(line, new MarkedSpan(marker, + curLine == from.line ? from.ch : null, + curLine == to.line ? to.ch : null), doc.cm && doc.cm.curOp); ++curLine; }); // lineIsHidden depends on the presence of the spans, so needs a second pass - if (marker.collapsed) { - doc.iter(from.line, to.line + 1, function (line) { - if (lineIsHidden(doc, line)) { - updateLineHeight(line, 0); - } - }); - } + if (marker.collapsed) { doc.iter(from.line, to.line + 1, function (line) { + if (lineIsHidden(doc, line)) { updateLineHeight(line, 0); } + }); } - if (marker.clearOnEnter) { - on(marker, 'beforeCursorEnter', function () { - return marker.clear(); - }); - } + if (marker.clearOnEnter) { on(marker, "beforeCursorEnter", function () { return marker.clear(); }); } if (marker.readOnly) { seeReadOnlySpans(); - if (doc.history.done.length || doc.history.undone.length) { - doc.clearHistory(); - } + if (doc.history.done.length || doc.history.undone.length) + { doc.clearHistory(); } } if (marker.collapsed) { marker.id = ++nextMarkerId; @@ -8839,29 +6055,16 @@ } if (cm) { // Sync editor state - if (updateMaxLine) { - cm.curOp.updateMaxLine = true; - } - if (marker.collapsed) { - regChange(cm, from.line, to.line + 1); - } else if ( - marker.className || - marker.startStyle || - marker.endStyle || - marker.css || - marker.attributes || - marker.title - ) { - for (var i = from.line; i <= to.line; i++) { - regLineChange(cm, i, 'text'); - } - } - if (marker.atomic) { - reCheckSelection(cm.doc); - } - signalLater(cm, 'markerAdded', cm, marker); + if (updateMaxLine) { cm.curOp.updateMaxLine = true; } + if (marker.collapsed) + { regChange(cm, from.line, to.line + 1); } + else if (marker.className || marker.startStyle || marker.endStyle || marker.css || + marker.attributes || marker.title) + { for (var i = from.line; i <= to.line; i++) { regLineChange(cm, i, "text"); } } + if (marker.atomic) { reCheckSelection(cm.doc); } + signalLater(cm, "markerAdded", cm, marker); } - return marker; + return marker } // SHARED TEXTMARKERS @@ -8869,81 +6072,51 @@ // A shared marker spans multiple linked documents. It is // implemented as a meta-marker-object controlling multiple normal // markers. - var SharedTextMarker = function (markers, primary) { - var this$1 = this; - + var SharedTextMarker = function(markers, primary) { this.markers = markers; this.primary = primary; - for (var i = 0; i < markers.length; ++i) { - markers[i].parent = this$1; - } + for (var i = 0; i < markers.length; ++i) + { markers[i].parent = this; } }; SharedTextMarker.prototype.clear = function () { - var this$1 = this; - - if (this.explicitlyCleared) { - return; - } + if (this.explicitlyCleared) { return } this.explicitlyCleared = true; - for (var i = 0; i < this.markers.length; ++i) { - this$1.markers[i].clear(); - } - signalLater(this, 'clear'); + for (var i = 0; i < this.markers.length; ++i) + { this.markers[i].clear(); } + signalLater(this, "clear"); }; SharedTextMarker.prototype.find = function (side, lineObj) { - return this.primary.find(side, lineObj); + return this.primary.find(side, lineObj) }; eventMixin(SharedTextMarker); function markTextShared(doc, from, to, options, type) { options = copyObj(options); options.shared = false; - var markers = [markText(doc, from, to, options, type)], - primary = markers[0]; + var markers = [markText(doc, from, to, options, type)], primary = markers[0]; var widget = options.widgetNode; linkedDocs(doc, function (doc) { - if (widget) { - options.widgetNode = widget.cloneNode(true); - } - markers.push( - markText(doc, clipPos(doc, from), clipPos(doc, to), options, type), - ); - for (var i = 0; i < doc.linked.length; ++i) { - if (doc.linked[i].isParent) { - return; - } - } + if (widget) { options.widgetNode = widget.cloneNode(true); } + markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type)); + for (var i = 0; i < doc.linked.length; ++i) + { if (doc.linked[i].isParent) { return } } primary = lst(markers); }); - return new SharedTextMarker(markers, primary); + return new SharedTextMarker(markers, primary) } function findSharedMarkers(doc) { - return doc.findMarks( - Pos(doc.first, 0), - doc.clipPos(Pos(doc.lastLine())), - function (m) { - return m.parent; - }, - ); + return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function (m) { return m.parent; }) } function copySharedMarkers(doc, markers) { for (var i = 0; i < markers.length; i++) { - var marker = markers[i], - pos = marker.find(); - var mFrom = doc.clipPos(pos.from), - mTo = doc.clipPos(pos.to); + var marker = markers[i], pos = marker.find(); + var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to); if (cmp(mFrom, mTo)) { - var subMark = markText( - doc, - mFrom, - mTo, - marker.primary, - marker.primary.type, - ); + var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type); marker.markers.push(subMark); subMark.parent = marker; } @@ -8951,12 +6124,9 @@ } function detachSharedMarkers(markers) { - var loop = function (i) { - var marker = markers[i], - linked = [marker.primary.doc]; - linkedDocs(marker.primary.doc, function (d) { - return linked.push(d); - }); + var loop = function ( i ) { + var marker = markers[i], linked = [marker.primary.doc]; + linkedDocs(marker.primary.doc, function (d) { return linked.push(d); }); for (var j = 0; j < marker.markers.length; j++) { var subMarker = marker.markers[j]; if (indexOf(linked, subMarker.doc) == -1) { @@ -8966,19 +6136,15 @@ } }; - for (var i = 0; i < markers.length; i++) loop(i); + for (var i = 0; i < markers.length; i++) loop( i ); } var nextDocId = 0; - var Doc = function (text, mode, firstLine, lineSep, direction) { - if (!(this instanceof Doc)) { - return new Doc(text, mode, firstLine, lineSep, direction); - } - if (firstLine == null) { - firstLine = 0; - } + var Doc = function(text, mode, firstLine, lineSep, direction) { + if (!(this instanceof Doc)) { return new Doc(text, mode, firstLine, lineSep, direction) } + if (firstLine == null) { firstLine = 0; } - BranchChunk.call(this, [new LeafChunk([new Line('', null)])]); + BranchChunk.call(this, [new LeafChunk([new Line("", null)])]); this.first = firstLine; this.scrollTop = this.scrollLeft = 0; this.cantEdit = false; @@ -8990,13 +6156,11 @@ this.id = ++nextDocId; this.modeOption = mode; this.lineSep = lineSep; - this.direction = direction == 'rtl' ? 'rtl' : 'ltr'; + this.direction = (direction == "rtl") ? "rtl" : "ltr"; this.extend = false; - if (typeof text == 'string') { - text = this.splitLines(text); - } - updateDoc(this, { from: start, to: start, text: text }); + if (typeof text == "string") { text = this.splitLines(text); } + updateDoc(this, {from: start, to: start, text: text}); setSelection(this, simpleSelection(start), sel_dontScroll); }; @@ -9006,680 +6170,388 @@ // argument, it calls that for each line in the document. With // three, it iterates over the range given by the first two (with // the second being non-inclusive). - iter: function (from, to, op) { - if (op) { - this.iterN(from - this.first, to - from, op); - } else { - this.iterN(this.first, this.first + this.size, from); - } + iter: function(from, to, op) { + if (op) { this.iterN(from - this.first, to - from, op); } + else { this.iterN(this.first, this.first + this.size, from); } }, // Non-public interface for adding and removing lines. - insert: function (at, lines) { + insert: function(at, lines) { var height = 0; - for (var i = 0; i < lines.length; ++i) { - height += lines[i].height; - } + for (var i = 0; i < lines.length; ++i) { height += lines[i].height; } this.insertInner(at - this.first, lines, height); }, - remove: function (at, n) { - this.removeInner(at - this.first, n); - }, + remove: function(at, n) { this.removeInner(at - this.first, n); }, // From here, the methods are part of the public interface. Most // are also available from CodeMirror (editor) instances. - getValue: function (lineSep) { + getValue: function(lineSep) { var lines = getLines(this, this.first, this.first + this.size); - if (lineSep === false) { - return lines; - } - return lines.join(lineSep || this.lineSeparator()); + if (lineSep === false) { return lines } + return lines.join(lineSep || this.lineSeparator()) }, - setValue: docMethodOp(function (code) { - var top = Pos(this.first, 0), - last = this.first + this.size - 1; - makeChange( - this, - { - from: top, - to: Pos(last, getLine(this, last).text.length), - text: this.splitLines(code), - origin: 'setValue', - full: true, - }, - true, - ); - if (this.cm) { - scrollToCoords(this.cm, 0, 0); - } + setValue: docMethodOp(function(code) { + var top = Pos(this.first, 0), last = this.first + this.size - 1; + makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length), + text: this.splitLines(code), origin: "setValue", full: true}, true); + if (this.cm) { scrollToCoords(this.cm, 0, 0); } setSelection(this, simpleSelection(top), sel_dontScroll); }), - replaceRange: function (code, from, to, origin) { + replaceRange: function(code, from, to, origin) { from = clipPos(this, from); to = to ? clipPos(this, to) : from; replaceRange(this, code, from, to, origin); }, - getRange: function (from, to, lineSep) { + getRange: function(from, to, lineSep) { var lines = getBetween(this, clipPos(this, from), clipPos(this, to)); - if (lineSep === false) { - return lines; - } - return lines.join(lineSep || this.lineSeparator()); + if (lineSep === false) { return lines } + if (lineSep === '') { return lines.join('') } + return lines.join(lineSep || this.lineSeparator()) }, - getLine: function (line) { - var l = this.getLineHandle(line); - return l && l.text; - }, + getLine: function(line) {var l = this.getLineHandle(line); return l && l.text}, - getLineHandle: function (line) { - if (isLine(this, line)) { - return getLine(this, line); - } - }, - getLineNumber: function (line) { - return lineNo(line); - }, + getLineHandle: function(line) {if (isLine(this, line)) { return getLine(this, line) }}, + getLineNumber: function(line) {return lineNo(line)}, - getLineHandleVisualStart: function (line) { - if (typeof line == 'number') { - line = getLine(this, line); - } - return visualLine(line); + getLineHandleVisualStart: function(line) { + if (typeof line == "number") { line = getLine(this, line); } + return visualLine(line) }, - lineCount: function () { - return this.size; - }, - firstLine: function () { - return this.first; - }, - lastLine: function () { - return this.first + this.size - 1; - }, + lineCount: function() {return this.size}, + firstLine: function() {return this.first}, + lastLine: function() {return this.first + this.size - 1}, - clipPos: function (pos) { - return clipPos(this, pos); - }, + clipPos: function(pos) {return clipPos(this, pos)}, - getCursor: function (start) { - var range$$1 = this.sel.primary(), - pos; - if (start == null || start == 'head') { - pos = range$$1.head; - } else if (start == 'anchor') { - pos = range$$1.anchor; - } else if (start == 'end' || start == 'to' || start === false) { - pos = range$$1.to(); - } else { - pos = range$$1.from(); - } - return pos; - }, - listSelections: function () { - return this.sel.ranges; - }, - somethingSelected: function () { - return this.sel.somethingSelected(); + getCursor: function(start) { + var range = this.sel.primary(), pos; + if (start == null || start == "head") { pos = range.head; } + else if (start == "anchor") { pos = range.anchor; } + else if (start == "end" || start == "to" || start === false) { pos = range.to(); } + else { pos = range.from(); } + return pos }, + listSelections: function() { return this.sel.ranges }, + somethingSelected: function() {return this.sel.somethingSelected()}, - setCursor: docMethodOp(function (line, ch, options) { - setSimpleSelection( - this, - clipPos(this, typeof line == 'number' ? Pos(line, ch || 0) : line), - null, - options, - ); + setCursor: docMethodOp(function(line, ch, options) { + setSimpleSelection(this, clipPos(this, typeof line == "number" ? Pos(line, ch || 0) : line), null, options); }), - setSelection: docMethodOp(function (anchor, head, options) { - setSimpleSelection( - this, - clipPos(this, anchor), - clipPos(this, head || anchor), - options, - ); + setSelection: docMethodOp(function(anchor, head, options) { + setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options); }), - extendSelection: docMethodOp(function (head, other, options) { - extendSelection( - this, - clipPos(this, head), - other && clipPos(this, other), - options, - ); + extendSelection: docMethodOp(function(head, other, options) { + extendSelection(this, clipPos(this, head), other && clipPos(this, other), options); }), - extendSelections: docMethodOp(function (heads, options) { + extendSelections: docMethodOp(function(heads, options) { extendSelections(this, clipPosArray(this, heads), options); }), - extendSelectionsBy: docMethodOp(function (f, options) { + extendSelectionsBy: docMethodOp(function(f, options) { var heads = map(this.sel.ranges, f); extendSelections(this, clipPosArray(this, heads), options); }), - setSelections: docMethodOp(function (ranges, primary, options) { - var this$1 = this; - - if (!ranges.length) { - return; - } + setSelections: docMethodOp(function(ranges, primary, options) { + if (!ranges.length) { return } var out = []; - for (var i = 0; i < ranges.length; i++) { - out[i] = new Range( - clipPos(this$1, ranges[i].anchor), - clipPos(this$1, ranges[i].head), - ); - } - if (primary == null) { - primary = Math.min(ranges.length - 1, this.sel.primIndex); - } + for (var i = 0; i < ranges.length; i++) + { out[i] = new Range(clipPos(this, ranges[i].anchor), + clipPos(this, ranges[i].head || ranges[i].anchor)); } + if (primary == null) { primary = Math.min(ranges.length - 1, this.sel.primIndex); } setSelection(this, normalizeSelection(this.cm, out, primary), options); }), - addSelection: docMethodOp(function (anchor, head, options) { + addSelection: docMethodOp(function(anchor, head, options) { var ranges = this.sel.ranges.slice(0); - ranges.push( - new Range(clipPos(this, anchor), clipPos(this, head || anchor)), - ); - setSelection( - this, - normalizeSelection(this.cm, ranges, ranges.length - 1), - options, - ); + ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor))); + setSelection(this, normalizeSelection(this.cm, ranges, ranges.length - 1), options); }), - getSelection: function (lineSep) { - var this$1 = this; - - var ranges = this.sel.ranges, - lines; + getSelection: function(lineSep) { + var ranges = this.sel.ranges, lines; for (var i = 0; i < ranges.length; i++) { - var sel = getBetween(this$1, ranges[i].from(), ranges[i].to()); + var sel = getBetween(this, ranges[i].from(), ranges[i].to()); lines = lines ? lines.concat(sel) : sel; } - if (lineSep === false) { - return lines; - } else { - return lines.join(lineSep || this.lineSeparator()); - } + if (lineSep === false) { return lines } + else { return lines.join(lineSep || this.lineSeparator()) } }, - getSelections: function (lineSep) { - var this$1 = this; - - var parts = [], - ranges = this.sel.ranges; + getSelections: function(lineSep) { + var parts = [], ranges = this.sel.ranges; for (var i = 0; i < ranges.length; i++) { - var sel = getBetween(this$1, ranges[i].from(), ranges[i].to()); - if (lineSep !== false) { - sel = sel.join(lineSep || this$1.lineSeparator()); - } + var sel = getBetween(this, ranges[i].from(), ranges[i].to()); + if (lineSep !== false) { sel = sel.join(lineSep || this.lineSeparator()); } parts[i] = sel; } - return parts; + return parts }, - replaceSelection: function (code, collapse, origin) { + replaceSelection: function(code, collapse, origin) { var dup = []; - for (var i = 0; i < this.sel.ranges.length; i++) { - dup[i] = code; - } - this.replaceSelections(dup, collapse, origin || '+input'); + for (var i = 0; i < this.sel.ranges.length; i++) + { dup[i] = code; } + this.replaceSelections(dup, collapse, origin || "+input"); }, - replaceSelections: docMethodOp(function (code, collapse, origin) { - var this$1 = this; - - var changes = [], - sel = this.sel; + replaceSelections: docMethodOp(function(code, collapse, origin) { + var changes = [], sel = this.sel; for (var i = 0; i < sel.ranges.length; i++) { - var range$$1 = sel.ranges[i]; - changes[i] = { - from: range$$1.from(), - to: range$$1.to(), - text: this$1.splitLines(code[i]), - origin: origin, - }; - } - var newSel = - collapse && - collapse != 'end' && - computeReplacedSel(this, changes, collapse); - for (var i$1 = changes.length - 1; i$1 >= 0; i$1--) { - makeChange(this$1, changes[i$1]); - } - if (newSel) { - setSelectionReplaceHistory(this, newSel); - } else if (this.cm) { - ensureCursorVisible(this.cm); - } - }), - undo: docMethodOp(function () { - makeChangeFromHistory(this, 'undo'); - }), - redo: docMethodOp(function () { - makeChangeFromHistory(this, 'redo'); - }), - undoSelection: docMethodOp(function () { - makeChangeFromHistory(this, 'undo', true); + var range = sel.ranges[i]; + changes[i] = {from: range.from(), to: range.to(), text: this.splitLines(code[i]), origin: origin}; + } + var newSel = collapse && collapse != "end" && computeReplacedSel(this, changes, collapse); + for (var i$1 = changes.length - 1; i$1 >= 0; i$1--) + { makeChange(this, changes[i$1]); } + if (newSel) { setSelectionReplaceHistory(this, newSel); } + else if (this.cm) { ensureCursorVisible(this.cm); } }), - redoSelection: docMethodOp(function () { - makeChangeFromHistory(this, 'redo', true); - }), - - setExtending: function (val) { - this.extend = val; - }, - getExtending: function () { - return this.extend; - }, - - historySize: function () { - var hist = this.history, - done = 0, - undone = 0; - for (var i = 0; i < hist.done.length; i++) { - if (!hist.done[i].ranges) { - ++done; - } - } - for (var i$1 = 0; i$1 < hist.undone.length; i$1++) { - if (!hist.undone[i$1].ranges) { - ++undone; - } - } - return { undo: done, redo: undone }; + undo: docMethodOp(function() {makeChangeFromHistory(this, "undo");}), + redo: docMethodOp(function() {makeChangeFromHistory(this, "redo");}), + undoSelection: docMethodOp(function() {makeChangeFromHistory(this, "undo", true);}), + redoSelection: docMethodOp(function() {makeChangeFromHistory(this, "redo", true);}), + + setExtending: function(val) {this.extend = val;}, + getExtending: function() {return this.extend}, + + historySize: function() { + var hist = this.history, done = 0, undone = 0; + for (var i = 0; i < hist.done.length; i++) { if (!hist.done[i].ranges) { ++done; } } + for (var i$1 = 0; i$1 < hist.undone.length; i$1++) { if (!hist.undone[i$1].ranges) { ++undone; } } + return {undo: done, redo: undone} }, - clearHistory: function () { + clearHistory: function() { var this$1 = this; - this.history = new History(this.history.maxGeneration); - linkedDocs( - this, - function (doc) { - return (doc.history = this$1.history); - }, - true, - ); + this.history = new History(this.history); + linkedDocs(this, function (doc) { return doc.history = this$1.history; }, true); }, - markClean: function () { + markClean: function() { this.cleanGeneration = this.changeGeneration(true); }, - changeGeneration: function (forceSplit) { - if (forceSplit) { - this.history.lastOp = - this.history.lastSelOp = - this.history.lastOrigin = - null; - } - return this.history.generation; + changeGeneration: function(forceSplit) { + if (forceSplit) + { this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null; } + return this.history.generation }, isClean: function (gen) { - return this.history.generation == (gen || this.cleanGeneration); + return this.history.generation == (gen || this.cleanGeneration) }, - getHistory: function () { - return { - done: copyHistoryArray(this.history.done), - undone: copyHistoryArray(this.history.undone), - }; + getHistory: function() { + return {done: copyHistoryArray(this.history.done), + undone: copyHistoryArray(this.history.undone)} }, - setHistory: function (histData) { - var hist = (this.history = new History(this.history.maxGeneration)); + setHistory: function(histData) { + var hist = this.history = new History(this.history); hist.done = copyHistoryArray(histData.done.slice(0), null, true); hist.undone = copyHistoryArray(histData.undone.slice(0), null, true); }, - setGutterMarker: docMethodOp(function (line, gutterID, value) { - return changeLine(this, line, 'gutter', function (line) { + setGutterMarker: docMethodOp(function(line, gutterID, value) { + return changeLine(this, line, "gutter", function (line) { var markers = line.gutterMarkers || (line.gutterMarkers = {}); markers[gutterID] = value; - if (!value && isEmpty(markers)) { - line.gutterMarkers = null; - } - return true; - }); + if (!value && isEmpty(markers)) { line.gutterMarkers = null; } + return true + }) }), - clearGutter: docMethodOp(function (gutterID) { + clearGutter: docMethodOp(function(gutterID) { var this$1 = this; this.iter(function (line) { if (line.gutterMarkers && line.gutterMarkers[gutterID]) { - changeLine(this$1, line, 'gutter', function () { + changeLine(this$1, line, "gutter", function () { line.gutterMarkers[gutterID] = null; - if (isEmpty(line.gutterMarkers)) { - line.gutterMarkers = null; - } - return true; + if (isEmpty(line.gutterMarkers)) { line.gutterMarkers = null; } + return true }); } }); }), - lineInfo: function (line) { + lineInfo: function(line) { var n; - if (typeof line == 'number') { - if (!isLine(this, line)) { - return null; - } + if (typeof line == "number") { + if (!isLine(this, line)) { return null } n = line; line = getLine(this, line); - if (!line) { - return null; - } + if (!line) { return null } } else { n = lineNo(line); - if (n == null) { - return null; - } + if (n == null) { return null } } - return { - line: n, - handle: line, - text: line.text, - gutterMarkers: line.gutterMarkers, - textClass: line.textClass, - bgClass: line.bgClass, - wrapClass: line.wrapClass, - widgets: line.widgets, - }; + return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers, + textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass, + widgets: line.widgets} }, - addLineClass: docMethodOp(function (handle, where, cls) { - return changeLine( - this, - handle, - where == 'gutter' ? 'gutter' : 'class', - function (line) { - var prop = - where == 'text' - ? 'textClass' - : where == 'background' - ? 'bgClass' - : where == 'gutter' - ? 'gutterClass' - : 'wrapClass'; - if (!line[prop]) { - line[prop] = cls; - } else if (classTest(cls).test(line[prop])) { - return false; - } else { - line[prop] += ' ' + cls; - } - return true; - }, - ); + addLineClass: docMethodOp(function(handle, where, cls) { + return changeLine(this, handle, where == "gutter" ? "gutter" : "class", function (line) { + var prop = where == "text" ? "textClass" + : where == "background" ? "bgClass" + : where == "gutter" ? "gutterClass" : "wrapClass"; + if (!line[prop]) { line[prop] = cls; } + else if (classTest(cls).test(line[prop])) { return false } + else { line[prop] += " " + cls; } + return true + }) }), - removeLineClass: docMethodOp(function (handle, where, cls) { - return changeLine( - this, - handle, - where == 'gutter' ? 'gutter' : 'class', - function (line) { - var prop = - where == 'text' - ? 'textClass' - : where == 'background' - ? 'bgClass' - : where == 'gutter' - ? 'gutterClass' - : 'wrapClass'; - var cur = line[prop]; - if (!cur) { - return false; - } else if (cls == null) { - line[prop] = null; - } else { - var found = cur.match(classTest(cls)); - if (!found) { - return false; - } - var end = found.index + found[0].length; - line[prop] = - cur.slice(0, found.index) + - (!found.index || end == cur.length ? '' : ' ') + - cur.slice(end) || null; - } - return true; - }, - ); + removeLineClass: docMethodOp(function(handle, where, cls) { + return changeLine(this, handle, where == "gutter" ? "gutter" : "class", function (line) { + var prop = where == "text" ? "textClass" + : where == "background" ? "bgClass" + : where == "gutter" ? "gutterClass" : "wrapClass"; + var cur = line[prop]; + if (!cur) { return false } + else if (cls == null) { line[prop] = null; } + else { + var found = cur.match(classTest(cls)); + if (!found) { return false } + var end = found.index + found[0].length; + line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? "" : " ") + cur.slice(end) || null; + } + return true + }) }), - addLineWidget: docMethodOp(function (handle, node, options) { - return addLineWidget(this, handle, node, options); + addLineWidget: docMethodOp(function(handle, node, options) { + return addLineWidget(this, handle, node, options) }), - removeLineWidget: function (widget) { - widget.clear(); - }, + removeLineWidget: function(widget) { widget.clear(); }, - markText: function (from, to, options) { - return markText( - this, - clipPos(this, from), - clipPos(this, to), - options, - (options && options.type) || 'range', - ); + markText: function(from, to, options) { + return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || "range") }, - setBookmark: function (pos, options) { - var realOpts = { - replacedWith: - options && (options.nodeType == null ? options.widget : options), - insertLeft: options && options.insertLeft, - clearWhenEmpty: false, - shared: options && options.shared, - handleMouseEvents: options && options.handleMouseEvents, - }; + setBookmark: function(pos, options) { + var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options), + insertLeft: options && options.insertLeft, + clearWhenEmpty: false, shared: options && options.shared, + handleMouseEvents: options && options.handleMouseEvents}; pos = clipPos(this, pos); - return markText(this, pos, pos, realOpts, 'bookmark'); + return markText(this, pos, pos, realOpts, "bookmark") }, - findMarksAt: function (pos) { + findMarksAt: function(pos) { pos = clipPos(this, pos); - var markers = [], - spans = getLine(this, pos.line).markedSpans; - if (spans) { - for (var i = 0; i < spans.length; ++i) { - var span = spans[i]; - if ( - (span.from == null || span.from <= pos.ch) && - (span.to == null || span.to >= pos.ch) - ) { - markers.push(span.marker.parent || span.marker); - } - } - } - return markers; + var markers = [], spans = getLine(this, pos.line).markedSpans; + if (spans) { for (var i = 0; i < spans.length; ++i) { + var span = spans[i]; + if ((span.from == null || span.from <= pos.ch) && + (span.to == null || span.to >= pos.ch)) + { markers.push(span.marker.parent || span.marker); } + } } + return markers }, - findMarks: function (from, to, filter) { - from = clipPos(this, from); - to = clipPos(this, to); - var found = [], - lineNo$$1 = from.line; + findMarks: function(from, to, filter) { + from = clipPos(this, from); to = clipPos(this, to); + var found = [], lineNo = from.line; this.iter(from.line, to.line + 1, function (line) { var spans = line.markedSpans; - if (spans) { - for (var i = 0; i < spans.length; i++) { - var span = spans[i]; - if ( - !( - (span.to != null && - lineNo$$1 == from.line && - from.ch >= span.to) || - (span.from == null && lineNo$$1 != from.line) || - (span.from != null && - lineNo$$1 == to.line && - span.from >= to.ch) - ) && - (!filter || filter(span.marker)) - ) { - found.push(span.marker.parent || span.marker); - } - } - } - ++lineNo$$1; + if (spans) { for (var i = 0; i < spans.length; i++) { + var span = spans[i]; + if (!(span.to != null && lineNo == from.line && from.ch >= span.to || + span.from == null && lineNo != from.line || + span.from != null && lineNo == to.line && span.from >= to.ch) && + (!filter || filter(span.marker))) + { found.push(span.marker.parent || span.marker); } + } } + ++lineNo; }); - return found; + return found }, - getAllMarks: function () { + getAllMarks: function() { var markers = []; this.iter(function (line) { var sps = line.markedSpans; - if (sps) { - for (var i = 0; i < sps.length; ++i) { - if (sps[i].from != null) { - markers.push(sps[i].marker); - } - } - } + if (sps) { for (var i = 0; i < sps.length; ++i) + { if (sps[i].from != null) { markers.push(sps[i].marker); } } } }); - return markers; + return markers }, - posFromIndex: function (off) { - var ch, - lineNo$$1 = this.first, - sepSize = this.lineSeparator().length; + posFromIndex: function(off) { + var ch, lineNo = this.first, sepSize = this.lineSeparator().length; this.iter(function (line) { var sz = line.text.length + sepSize; - if (sz > off) { - ch = off; - return true; - } + if (sz > off) { ch = off; return true } off -= sz; - ++lineNo$$1; + ++lineNo; }); - return clipPos(this, Pos(lineNo$$1, ch)); + return clipPos(this, Pos(lineNo, ch)) }, indexFromPos: function (coords) { coords = clipPos(this, coords); var index = coords.ch; - if (coords.line < this.first || coords.ch < 0) { - return 0; - } + if (coords.line < this.first || coords.ch < 0) { return 0 } var sepSize = this.lineSeparator().length; - this.iter(this.first, coords.line, function (line) { - // iter aborts when callback returns a truthy value + this.iter(this.first, coords.line, function (line) { // iter aborts when callback returns a truthy value index += line.text.length + sepSize; }); - return index; + return index }, - copy: function (copyHistory) { - var doc = new Doc( - getLines(this, this.first, this.first + this.size), - this.modeOption, - this.first, - this.lineSep, - this.direction, - ); - doc.scrollTop = this.scrollTop; - doc.scrollLeft = this.scrollLeft; + copy: function(copyHistory) { + var doc = new Doc(getLines(this, this.first, this.first + this.size), + this.modeOption, this.first, this.lineSep, this.direction); + doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft; doc.sel = this.sel; doc.extend = false; if (copyHistory) { doc.history.undoDepth = this.history.undoDepth; doc.setHistory(this.getHistory()); } - return doc; + return doc }, - linkedDoc: function (options) { - if (!options) { - options = {}; - } - var from = this.first, - to = this.first + this.size; - if (options.from != null && options.from > from) { - from = options.from; - } - if (options.to != null && options.to < to) { - to = options.to; - } - var copy = new Doc( - getLines(this, from, to), - options.mode || this.modeOption, - from, - this.lineSep, - this.direction, - ); - if (options.sharedHist) { - copy.history = this.history; - } - (this.linked || (this.linked = [])).push({ - doc: copy, - sharedHist: options.sharedHist, - }); - copy.linked = [ - { doc: this, isParent: true, sharedHist: options.sharedHist }, - ]; + linkedDoc: function(options) { + if (!options) { options = {}; } + var from = this.first, to = this.first + this.size; + if (options.from != null && options.from > from) { from = options.from; } + if (options.to != null && options.to < to) { to = options.to; } + var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction); + if (options.sharedHist) { copy.history = this.history + ; }(this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist}); + copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}]; copySharedMarkers(copy, findSharedMarkers(this)); - return copy; + return copy }, - unlinkDoc: function (other) { - var this$1 = this; - - if (other instanceof CodeMirror) { - other = other.doc; - } - if (this.linked) { - for (var i = 0; i < this.linked.length; ++i) { - var link = this$1.linked[i]; - if (link.doc != other) { - continue; - } - this$1.linked.splice(i, 1); - other.unlinkDoc(this$1); - detachSharedMarkers(findSharedMarkers(this$1)); - break; - } - } + unlinkDoc: function(other) { + if (other instanceof CodeMirror) { other = other.doc; } + if (this.linked) { for (var i = 0; i < this.linked.length; ++i) { + var link = this.linked[i]; + if (link.doc != other) { continue } + this.linked.splice(i, 1); + other.unlinkDoc(this); + detachSharedMarkers(findSharedMarkers(this)); + break + } } // If the histories were shared, split them again if (other.history == this.history) { var splitIds = [other.id]; - linkedDocs( - other, - function (doc) { - return splitIds.push(doc.id); - }, - true, - ); + linkedDocs(other, function (doc) { return splitIds.push(doc.id); }, true); other.history = new History(null); other.history.done = copyHistoryArray(this.history.done, splitIds); other.history.undone = copyHistoryArray(this.history.undone, splitIds); } }, - iterLinkedDocs: function (f) { - linkedDocs(this, f); - }, + iterLinkedDocs: function(f) {linkedDocs(this, f);}, - getMode: function () { - return this.mode; - }, - getEditor: function () { - return this.cm; - }, + getMode: function() {return this.mode}, + getEditor: function() {return this.cm}, - splitLines: function (str) { - if (this.lineSep) { - return str.split(this.lineSep); - } - return splitLinesAuto(str); - }, - lineSeparator: function () { - return this.lineSep || '\n'; + splitLines: function(str) { + if (this.lineSep) { return str.split(this.lineSep) } + return splitLinesAuto(str) }, + lineSeparator: function() { return this.lineSep || "\n" }, setDirection: docMethodOp(function (dir) { - if (dir != 'rtl') { - dir = 'ltr'; - } - if (dir == this.direction) { - return; - } + if (dir != "rtl") { dir = "ltr"; } + if (dir == this.direction) { return } this.direction = dir; - this.iter(function (line) { - return (line.order = null); - }); - if (this.cm) { - directionChanged(this.cm); - } - }), + this.iter(function (line) { return line.order = null; }); + if (this.cm) { directionChanged(this.cm); } + }) }); // Public alias. @@ -9692,129 +6564,86 @@ function onDrop(e) { var cm = this; clearDragCursor(cm); - if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) { - return; - } + if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) + { return } e_preventDefault(e); - if (ie) { - lastDrop = +new Date(); - } - var pos = posFromMouse(cm, e, true), - files = e.dataTransfer.files; - if (!pos || cm.isReadOnly()) { - return; - } + if (ie) { lastDrop = +new Date; } + var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files; + if (!pos || cm.isReadOnly()) { return } // Might be a file drop, in which case we simply extract the text // and insert it. if (files && files.length && window.FileReader && window.File) { - var n = files.length, - text = Array(n), - read = 0; + var n = files.length, text = Array(n), read = 0; var markAsReadAndPasteIfAllFilesAreRead = function () { if (++read == n) { operation(cm, function () { pos = clipPos(cm.doc, pos); - var change = { - from: pos, - to: pos, - text: cm.doc.splitLines( - text - .filter(function (t) { - return t != null; - }) - .join(cm.doc.lineSeparator()), - ), - origin: 'paste', - }; + var change = {from: pos, to: pos, + text: cm.doc.splitLines( + text.filter(function (t) { return t != null; }).join(cm.doc.lineSeparator())), + origin: "paste"}; makeChange(cm.doc, change); - setSelectionReplaceHistory( - cm.doc, - simpleSelection(pos, changeEnd(change)), - ); + setSelectionReplaceHistory(cm.doc, simpleSelection(clipPos(cm.doc, pos), clipPos(cm.doc, changeEnd(change)))); })(); } }; var readTextFromFile = function (file, i) { - if ( - cm.options.allowDropFileTypes && - indexOf(cm.options.allowDropFileTypes, file.type) == -1 - ) { + if (cm.options.allowDropFileTypes && + indexOf(cm.options.allowDropFileTypes, file.type) == -1) { markAsReadAndPasteIfAllFilesAreRead(); - return; + return } - var reader = new FileReader(); - reader.onerror = function () { - return markAsReadAndPasteIfAllFilesAreRead(); - }; + var reader = new FileReader; + reader.onerror = function () { return markAsReadAndPasteIfAllFilesAreRead(); }; reader.onload = function () { var content = reader.result; if (/[\x00-\x08\x0e-\x1f]{2}/.test(content)) { markAsReadAndPasteIfAllFilesAreRead(); - return; + return } text[i] = content; markAsReadAndPasteIfAllFilesAreRead(); }; reader.readAsText(file); }; - for (var i = 0; i < files.length; i++) { - readTextFromFile(files[i], i); - } - } else { - // Normal drop + for (var i = 0; i < files.length; i++) { readTextFromFile(files[i], i); } + } else { // Normal drop // Don't do a replace if the drop happened inside of the selected text. if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) { cm.state.draggingText(e); // Ensure the editor is re-focused - setTimeout(function () { - return cm.display.input.focus(); - }, 20); - return; + setTimeout(function () { return cm.display.input.focus(); }, 20); + return } try { - var text$1 = e.dataTransfer.getData('Text'); + var text$1 = e.dataTransfer.getData("Text"); if (text$1) { var selected; - if (cm.state.draggingText && !cm.state.draggingText.copy) { - selected = cm.listSelections(); - } + if (cm.state.draggingText && !cm.state.draggingText.copy) + { selected = cm.listSelections(); } setSelectionNoUndo(cm.doc, simpleSelection(pos, pos)); - if (selected) { - for (var i$1 = 0; i$1 < selected.length; ++i$1) { - replaceRange( - cm.doc, - '', - selected[i$1].anchor, - selected[i$1].head, - 'drag', - ); - } - } - cm.replaceSelection(text$1, 'around', 'paste'); + if (selected) { for (var i$1 = 0; i$1 < selected.length; ++i$1) + { replaceRange(cm.doc, "", selected[i$1].anchor, selected[i$1].head, "drag"); } } + cm.replaceSelection(text$1, "around", "paste"); cm.display.input.focus(); } - } catch (e) {} + } + catch(e$1){} } } function onDragStart(cm, e) { - if (ie && (!cm.state.draggingText || +new Date() - lastDrop < 100)) { - e_stop(e); - return; - } - if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) { - return; - } + if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return } + if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) { return } - e.dataTransfer.setData('Text', cm.getSelection()); - e.dataTransfer.effectAllowed = 'copyMove'; + e.dataTransfer.setData("Text", cm.getSelection()); + e.dataTransfer.effectAllowed = "copyMove"; // Use dummy image instead of default browsers image. // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there. if (e.dataTransfer.setDragImage && !safari) { - var img = elt('img', null, null, 'position: fixed; left: 0; top: 0;'); - img.src = - 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=='; + var img = elt("img", null, null, "position: fixed; left: 0; top: 0;"); + img.src = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="; if (presto) { img.width = img.height = 1; cm.display.wrapper.appendChild(img); @@ -9822,29 +6651,18 @@ img._top = img.offsetTop; } e.dataTransfer.setDragImage(img, 0, 0); - if (presto) { - img.parentNode.removeChild(img); - } + if (presto) { img.parentNode.removeChild(img); } } } function onDragOver(cm, e) { var pos = posFromMouse(cm, e); - if (!pos) { - return; - } + if (!pos) { return } var frag = document.createDocumentFragment(); drawSelectionCursor(cm, pos, frag); if (!cm.display.dragCursor) { - cm.display.dragCursor = elt( - 'div', - null, - 'CodeMirror-cursors CodeMirror-dragcursors', - ); - cm.display.lineSpace.insertBefore( - cm.display.dragCursor, - cm.display.cursorDiv, - ); + cm.display.dragCursor = elt("div", null, "CodeMirror-cursors CodeMirror-dragcursors"); + cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv); } removeChildrenAndAdd(cm.display.dragCursor, frag); } @@ -9861,49 +6679,34 @@ // garbage collected. function forEachCodeMirror(f) { - if (!document.getElementsByClassName) { - return; - } - var byClass = document.getElementsByClassName('CodeMirror'), - editors = []; + if (!document.getElementsByClassName) { return } + var byClass = document.getElementsByClassName("CodeMirror"), editors = []; for (var i = 0; i < byClass.length; i++) { var cm = byClass[i].CodeMirror; - if (cm) { - editors.push(cm); - } - } - if (editors.length) { - editors[0].operation(function () { - for (var i = 0; i < editors.length; i++) { - f(editors[i]); - } - }); + if (cm) { editors.push(cm); } } + if (editors.length) { editors[0].operation(function () { + for (var i = 0; i < editors.length; i++) { f(editors[i]); } + }); } } var globalsRegistered = false; function ensureGlobalHandlers() { - if (globalsRegistered) { - return; - } + if (globalsRegistered) { return } registerGlobalHandlers(); globalsRegistered = true; } function registerGlobalHandlers() { // When the window resizes, we need to refresh active editors. var resizeTimer; - on(window, 'resize', function () { - if (resizeTimer == null) { - resizeTimer = setTimeout(function () { - resizeTimer = null; - forEachCodeMirror(onResize); - }, 100); - } + on(window, "resize", function () { + if (resizeTimer == null) { resizeTimer = setTimeout(function () { + resizeTimer = null; + forEachCodeMirror(onResize); + }, 100); } }); // When the window loses focus, we want to show the editor as blurred - on(window, 'blur', function () { - return forEachCodeMirror(onBlur); - }); + on(window, "blur", function () { return forEachCodeMirror(onBlur); }); } // Called when the window resizes function onResize(cm) { @@ -9915,182 +6718,64 @@ } var keyNames = { - 3: 'Pause', - 8: 'Backspace', - 9: 'Tab', - 13: 'Enter', - 16: 'Shift', - 17: 'Ctrl', - 18: 'Alt', - 19: 'Pause', - 20: 'CapsLock', - 27: 'Esc', - 32: 'Space', - 33: 'PageUp', - 34: 'PageDown', - 35: 'End', - 36: 'Home', - 37: 'Left', - 38: 'Up', - 39: 'Right', - 40: 'Down', - 44: 'PrintScrn', - 45: 'Insert', - 46: 'Delete', - 59: ';', - 61: '=', - 91: 'Mod', - 92: 'Mod', - 93: 'Mod', - 106: '*', - 107: '=', - 109: '-', - 110: '.', - 111: '/', - 145: 'ScrollLock', - 173: '-', - 186: ';', - 187: '=', - 188: ',', - 189: '-', - 190: '.', - 191: '/', - 192: '`', - 219: '[', - 220: '\\', - 221: ']', - 222: "'", - 63232: 'Up', - 63233: 'Down', - 63234: 'Left', - 63235: 'Right', - 63272: 'Delete', - 63273: 'Home', - 63275: 'End', - 63276: 'PageUp', - 63277: 'PageDown', - 63302: 'Insert', + 3: "Pause", 8: "Backspace", 9: "Tab", 13: "Enter", 16: "Shift", 17: "Ctrl", 18: "Alt", + 19: "Pause", 20: "CapsLock", 27: "Esc", 32: "Space", 33: "PageUp", 34: "PageDown", 35: "End", + 36: "Home", 37: "Left", 38: "Up", 39: "Right", 40: "Down", 44: "PrintScrn", 45: "Insert", + 46: "Delete", 59: ";", 61: "=", 91: "Mod", 92: "Mod", 93: "Mod", + 106: "*", 107: "=", 109: "-", 110: ".", 111: "/", 145: "ScrollLock", + 173: "-", 186: ";", 187: "=", 188: ",", 189: "-", 190: ".", 191: "/", 192: "`", 219: "[", 220: "\\", + 221: "]", 222: "'", 224: "Mod", 63232: "Up", 63233: "Down", 63234: "Left", 63235: "Right", 63272: "Delete", + 63273: "Home", 63275: "End", 63276: "PageUp", 63277: "PageDown", 63302: "Insert" }; // Number keys - for (var i = 0; i < 10; i++) { - keyNames[i + 48] = keyNames[i + 96] = String(i); - } + for (var i = 0; i < 10; i++) { keyNames[i + 48] = keyNames[i + 96] = String(i); } // Alphabetic keys - for (var i$1 = 65; i$1 <= 90; i$1++) { - keyNames[i$1] = String.fromCharCode(i$1); - } + for (var i$1 = 65; i$1 <= 90; i$1++) { keyNames[i$1] = String.fromCharCode(i$1); } // Function keys - for (var i$2 = 1; i$2 <= 12; i$2++) { - keyNames[i$2 + 111] = keyNames[i$2 + 63235] = 'F' + i$2; - } + for (var i$2 = 1; i$2 <= 12; i$2++) { keyNames[i$2 + 111] = keyNames[i$2 + 63235] = "F" + i$2; } var keyMap = {}; keyMap.basic = { - Left: 'goCharLeft', - Right: 'goCharRight', - Up: 'goLineUp', - Down: 'goLineDown', - End: 'goLineEnd', - Home: 'goLineStartSmart', - PageUp: 'goPageUp', - PageDown: 'goPageDown', - Delete: 'delCharAfter', - Backspace: 'delCharBefore', - 'Shift-Backspace': 'delCharBefore', - Tab: 'defaultTab', - 'Shift-Tab': 'indentAuto', - Enter: 'newlineAndIndent', - Insert: 'toggleOverwrite', - Esc: 'singleSelection', + "Left": "goCharLeft", "Right": "goCharRight", "Up": "goLineUp", "Down": "goLineDown", + "End": "goLineEnd", "Home": "goLineStartSmart", "PageUp": "goPageUp", "PageDown": "goPageDown", + "Delete": "delCharAfter", "Backspace": "delCharBefore", "Shift-Backspace": "delCharBefore", + "Tab": "defaultTab", "Shift-Tab": "indentAuto", + "Enter": "newlineAndIndent", "Insert": "toggleOverwrite", + "Esc": "singleSelection" }; // Note that the save and find-related commands aren't defined by // default. User code or addons can define them. Unknown commands // are simply ignored. keyMap.pcDefault = { - 'Ctrl-A': 'selectAll', - 'Ctrl-D': 'deleteLine', - 'Ctrl-Z': 'undo', - 'Shift-Ctrl-Z': 'redo', - 'Ctrl-Y': 'redo', - 'Ctrl-Home': 'goDocStart', - 'Ctrl-End': 'goDocEnd', - 'Ctrl-Up': 'goLineUp', - 'Ctrl-Down': 'goLineDown', - 'Ctrl-Left': 'goGroupLeft', - 'Ctrl-Right': 'goGroupRight', - 'Alt-Left': 'goLineStart', - 'Alt-Right': 'goLineEnd', - 'Ctrl-Backspace': 'delGroupBefore', - 'Ctrl-Delete': 'delGroupAfter', - 'Ctrl-S': 'save', - 'Ctrl-F': 'find', - 'Ctrl-G': 'findNext', - 'Shift-Ctrl-G': 'findPrev', - 'Shift-Ctrl-F': 'replace', - 'Shift-Ctrl-R': 'replaceAll', - 'Ctrl-[': 'indentLess', - 'Ctrl-]': 'indentMore', - 'Ctrl-U': 'undoSelection', - 'Shift-Ctrl-U': 'redoSelection', - 'Alt-U': 'redoSelection', - fallthrough: 'basic', + "Ctrl-A": "selectAll", "Ctrl-D": "deleteLine", "Ctrl-Z": "undo", "Shift-Ctrl-Z": "redo", "Ctrl-Y": "redo", + "Ctrl-Home": "goDocStart", "Ctrl-End": "goDocEnd", "Ctrl-Up": "goLineUp", "Ctrl-Down": "goLineDown", + "Ctrl-Left": "goGroupLeft", "Ctrl-Right": "goGroupRight", "Alt-Left": "goLineStart", "Alt-Right": "goLineEnd", + "Ctrl-Backspace": "delGroupBefore", "Ctrl-Delete": "delGroupAfter", "Ctrl-S": "save", "Ctrl-F": "find", + "Ctrl-G": "findNext", "Shift-Ctrl-G": "findPrev", "Shift-Ctrl-F": "replace", "Shift-Ctrl-R": "replaceAll", + "Ctrl-[": "indentLess", "Ctrl-]": "indentMore", + "Ctrl-U": "undoSelection", "Shift-Ctrl-U": "redoSelection", "Alt-U": "redoSelection", + "fallthrough": "basic" }; // Very basic readline/emacs-style bindings, which are standard on Mac. keyMap.emacsy = { - 'Ctrl-F': 'goCharRight', - 'Ctrl-B': 'goCharLeft', - 'Ctrl-P': 'goLineUp', - 'Ctrl-N': 'goLineDown', - 'Alt-F': 'goWordRight', - 'Alt-B': 'goWordLeft', - 'Ctrl-A': 'goLineStart', - 'Ctrl-E': 'goLineEnd', - 'Ctrl-V': 'goPageDown', - 'Shift-Ctrl-V': 'goPageUp', - 'Ctrl-D': 'delCharAfter', - 'Ctrl-H': 'delCharBefore', - 'Alt-D': 'delWordAfter', - 'Alt-Backspace': 'delWordBefore', - 'Ctrl-K': 'killLine', - 'Ctrl-T': 'transposeChars', - 'Ctrl-O': 'openLine', + "Ctrl-F": "goCharRight", "Ctrl-B": "goCharLeft", "Ctrl-P": "goLineUp", "Ctrl-N": "goLineDown", + "Ctrl-A": "goLineStart", "Ctrl-E": "goLineEnd", "Ctrl-V": "goPageDown", "Shift-Ctrl-V": "goPageUp", + "Ctrl-D": "delCharAfter", "Ctrl-H": "delCharBefore", "Alt-Backspace": "delWordBefore", "Ctrl-K": "killLine", + "Ctrl-T": "transposeChars", "Ctrl-O": "openLine" }; keyMap.macDefault = { - 'Cmd-A': 'selectAll', - 'Cmd-D': 'deleteLine', - 'Cmd-Z': 'undo', - 'Shift-Cmd-Z': 'redo', - 'Cmd-Y': 'redo', - 'Cmd-Home': 'goDocStart', - 'Cmd-Up': 'goDocStart', - 'Cmd-End': 'goDocEnd', - 'Cmd-Down': 'goDocEnd', - 'Alt-Left': 'goGroupLeft', - 'Alt-Right': 'goGroupRight', - 'Cmd-Left': 'goLineLeft', - 'Cmd-Right': 'goLineRight', - 'Alt-Backspace': 'delGroupBefore', - 'Ctrl-Alt-Backspace': 'delGroupAfter', - 'Alt-Delete': 'delGroupAfter', - 'Cmd-S': 'save', - 'Cmd-F': 'find', - 'Cmd-G': 'findNext', - 'Shift-Cmd-G': 'findPrev', - 'Cmd-Alt-F': 'replace', - 'Shift-Cmd-Alt-F': 'replaceAll', - 'Cmd-[': 'indentLess', - 'Cmd-]': 'indentMore', - 'Cmd-Backspace': 'delWrappedLineLeft', - 'Cmd-Delete': 'delWrappedLineRight', - 'Cmd-U': 'undoSelection', - 'Shift-Cmd-U': 'redoSelection', - 'Ctrl-Up': 'goDocStart', - 'Ctrl-Down': 'goDocEnd', - fallthrough: ['basic', 'emacsy'], + "Cmd-A": "selectAll", "Cmd-D": "deleteLine", "Cmd-Z": "undo", "Shift-Cmd-Z": "redo", "Cmd-Y": "redo", + "Cmd-Home": "goDocStart", "Cmd-Up": "goDocStart", "Cmd-End": "goDocEnd", "Cmd-Down": "goDocEnd", "Alt-Left": "goGroupLeft", + "Alt-Right": "goGroupRight", "Cmd-Left": "goLineLeft", "Cmd-Right": "goLineRight", "Alt-Backspace": "delGroupBefore", + "Ctrl-Alt-Backspace": "delGroupAfter", "Alt-Delete": "delGroupAfter", "Cmd-S": "save", "Cmd-F": "find", + "Cmd-G": "findNext", "Shift-Cmd-G": "findPrev", "Cmd-Alt-F": "replace", "Shift-Cmd-Alt-F": "replaceAll", + "Cmd-[": "indentLess", "Cmd-]": "indentMore", "Cmd-Backspace": "delWrappedLineLeft", "Cmd-Delete": "delWrappedLineRight", + "Cmd-U": "undoSelection", "Shift-Cmd-U": "redoSelection", "Ctrl-Up": "goDocStart", "Ctrl-Down": "goDocEnd", + "fallthrough": ["basic", "emacsy"] }; - keyMap['default'] = mac ? keyMap.macDefault : keyMap.pcDefault; + keyMap["default"] = mac ? keyMap.macDefault : keyMap.pcDefault; // KEYMAP DISPATCH @@ -10100,31 +6785,17 @@ var alt, ctrl, shift, cmd; for (var i = 0; i < parts.length - 1; i++) { var mod = parts[i]; - if (/^(cmd|meta|m)$/i.test(mod)) { - cmd = true; - } else if (/^a(lt)?$/i.test(mod)) { - alt = true; - } else if (/^(c|ctrl|control)$/i.test(mod)) { - ctrl = true; - } else if (/^s(hift)?$/i.test(mod)) { - shift = true; - } else { - throw new Error('Unrecognized modifier name: ' + mod); - } - } - if (alt) { - name = 'Alt-' + name; - } - if (ctrl) { - name = 'Ctrl-' + name; + if (/^(cmd|meta|m)$/i.test(mod)) { cmd = true; } + else if (/^a(lt)?$/i.test(mod)) { alt = true; } + else if (/^(c|ctrl|control)$/i.test(mod)) { ctrl = true; } + else if (/^s(hift)?$/i.test(mod)) { shift = true; } + else { throw new Error("Unrecognized modifier name: " + mod) } } - if (cmd) { - name = 'Cmd-' + name; - } - if (shift) { - name = 'Shift-' + name; - } - return name; + if (alt) { name = "Alt-" + name; } + if (ctrl) { name = "Ctrl-" + name; } + if (cmd) { name = "Cmd-" + name; } + if (shift) { name = "Shift-" + name; } + return name } // This is a kludge to keep keymaps mostly working as raw objects @@ -10134,68 +6805,44 @@ // this. function normalizeKeyMap(keymap) { var copy = {}; - for (var keyname in keymap) { - if (keymap.hasOwnProperty(keyname)) { - var value = keymap[keyname]; - if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) { - continue; - } - if (value == '...') { - delete keymap[keyname]; - continue; - } - - var keys = map(keyname.split(' '), normalizeKeyName); - for (var i = 0; i < keys.length; i++) { - var val = void 0, - name = void 0; - if (i == keys.length - 1) { - name = keys.join(' '); - val = value; - } else { - name = keys.slice(0, i + 1).join(' '); - val = '...'; - } - var prev = copy[name]; - if (!prev) { - copy[name] = val; - } else if (prev != val) { - throw new Error('Inconsistent bindings for ' + name); - } + for (var keyname in keymap) { if (keymap.hasOwnProperty(keyname)) { + var value = keymap[keyname]; + if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) { continue } + if (value == "...") { delete keymap[keyname]; continue } + + var keys = map(keyname.split(" "), normalizeKeyName); + for (var i = 0; i < keys.length; i++) { + var val = (void 0), name = (void 0); + if (i == keys.length - 1) { + name = keys.join(" "); + val = value; + } else { + name = keys.slice(0, i + 1).join(" "); + val = "..."; } - delete keymap[keyname]; + var prev = copy[name]; + if (!prev) { copy[name] = val; } + else if (prev != val) { throw new Error("Inconsistent bindings for " + name) } } - } - for (var prop in copy) { - keymap[prop] = copy[prop]; - } - return keymap; + delete keymap[keyname]; + } } + for (var prop in copy) { keymap[prop] = copy[prop]; } + return keymap } - function lookupKey(key, map$$1, handle, context) { - map$$1 = getKeyMap(map$$1); - var found = map$$1.call ? map$$1.call(key, context) : map$$1[key]; - if (found === false) { - return 'nothing'; - } - if (found === '...') { - return 'multi'; - } - if (found != null && handle(found)) { - return 'handled'; - } + function lookupKey(key, map, handle, context) { + map = getKeyMap(map); + var found = map.call ? map.call(key, context) : map[key]; + if (found === false) { return "nothing" } + if (found === "...") { return "multi" } + if (found != null && handle(found)) { return "handled" } - if (map$$1.fallthrough) { - if ( - Object.prototype.toString.call(map$$1.fallthrough) != '[object Array]' - ) { - return lookupKey(key, map$$1.fallthrough, handle, context); - } - for (var i = 0; i < map$$1.fallthrough.length; i++) { - var result = lookupKey(key, map$$1.fallthrough[i], handle, context); - if (result) { - return result; - } + if (map.fallthrough) { + if (Object.prototype.toString.call(map.fallthrough) != "[object Array]") + { return lookupKey(key, map.fallthrough, handle, context) } + for (var i = 0; i < map.fallthrough.length; i++) { + var result = lookupKey(key, map.fallthrough[i], handle, context); + if (result) { return result } } } } @@ -10203,53 +6850,38 @@ // Modifier key presses don't count as 'real' key presses for the // purpose of keymap fallthrough. function isModifierKey(value) { - var name = typeof value == 'string' ? value : keyNames[value.keyCode]; - return name == 'Ctrl' || name == 'Alt' || name == 'Shift' || name == 'Mod'; + var name = typeof value == "string" ? value : keyNames[value.keyCode]; + return name == "Ctrl" || name == "Alt" || name == "Shift" || name == "Mod" } function addModifierNames(name, event, noShift) { var base = name; - if (event.altKey && base != 'Alt') { - name = 'Alt-' + name; - } - if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != 'Ctrl') { - name = 'Ctrl-' + name; - } - if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != 'Cmd') { - name = 'Cmd-' + name; - } - if (!noShift && event.shiftKey && base != 'Shift') { - name = 'Shift-' + name; - } - return name; + if (event.altKey && base != "Alt") { name = "Alt-" + name; } + if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != "Ctrl") { name = "Ctrl-" + name; } + if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != "Mod") { name = "Cmd-" + name; } + if (!noShift && event.shiftKey && base != "Shift") { name = "Shift-" + name; } + return name } // Look up the name of a key as indicated by an event object. function keyName(event, noShift) { - if (presto && event.keyCode == 34 && event['char']) { - return false; - } + if (presto && event.keyCode == 34 && event["char"]) { return false } var name = keyNames[event.keyCode]; - if (name == null || event.altGraphKey) { - return false; - } + if (name == null || event.altGraphKey) { return false } // Ctrl-ScrollLock has keyCode 3, same as Ctrl-Pause, // so we'll use event.code when available (Chrome 48+, FF 38+, Safari 10.1+) - if (event.keyCode == 3 && event.code) { - name = event.code; - } - return addModifierNames(name, event, noShift); + if (event.keyCode == 3 && event.code) { name = event.code; } + return addModifierNames(name, event, noShift) } function getKeyMap(val) { - return typeof val == 'string' ? keyMap[val] : val; + return typeof val == "string" ? keyMap[val] : val } // Helper for deleting text near the selection(s), used to implement // backspace, delete, and similar functionality. function deleteNearSelection(cm, compute) { - var ranges = cm.doc.sel.ranges, - kill = []; + var ranges = cm.doc.sel.ranges, kill = []; // Build up a set of ranges to kill first, merging overlapping // ranges. for (var i = 0; i < ranges.length; i++) { @@ -10258,42 +6890,37 @@ var replaced = kill.pop(); if (cmp(replaced.from, toKill.from) < 0) { toKill.from = replaced.from; - break; + break } } kill.push(toKill); } // Next, remove those actual ranges. runInOp(cm, function () { - for (var i = kill.length - 1; i >= 0; i--) { - replaceRange(cm.doc, '', kill[i].from, kill[i].to, '+delete'); - } + for (var i = kill.length - 1; i >= 0; i--) + { replaceRange(cm.doc, "", kill[i].from, kill[i].to, "+delete"); } ensureCursorVisible(cm); }); } function moveCharLogically(line, ch, dir) { var target = skipExtendingChars(line.text, ch + dir, dir); - return target < 0 || target > line.text.length ? null : target; + return target < 0 || target > line.text.length ? null : target } function moveLogically(line, start, dir) { var ch = moveCharLogically(line, start.ch, dir); - return ch == null - ? null - : new Pos(start.line, ch, dir < 0 ? 'after' : 'before'); + return ch == null ? null : new Pos(start.line, ch, dir < 0 ? "after" : "before") } function endOfLine(visually, cm, lineObj, lineNo, dir) { if (visually) { - if (cm.getOption('direction') == 'rtl') { - dir = -dir; - } + if (cm.doc.direction == "rtl") { dir = -dir; } var order = getOrder(lineObj, cm.doc.direction); if (order) { var part = dir < 0 ? lst(order) : order[0]; - var moveInStorageOrder = dir < 0 == (part.level == 1); - var sticky = moveInStorageOrder ? 'after' : 'before'; + var moveInStorageOrder = (dir < 0) == (part.level == 1); + var sticky = moveInStorageOrder ? "after" : "before"; var ch; // With a wrapped rtl chunk (possibly spanning multiple bidi parts), // it could be that the last bidi part is not on the last visual line, @@ -10301,84 +6928,52 @@ // Thus, in rtl, we are looking for the first (content-order) character // in the rtl chunk that is on the last line (that is, the same line // as the last (content-order) character). - if (part.level > 0 || cm.doc.direction == 'rtl') { + if (part.level > 0 || cm.doc.direction == "rtl") { var prep = prepareMeasureForLine(cm, lineObj); ch = dir < 0 ? lineObj.text.length - 1 : 0; var targetTop = measureCharPrepared(cm, prep, ch).top; - ch = findFirst( - function (ch) { - return measureCharPrepared(cm, prep, ch).top == targetTop; - }, - dir < 0 == (part.level == 1) ? part.from : part.to - 1, - ch, - ); - if (sticky == 'before') { - ch = moveCharLogically(lineObj, ch, 1); - } - } else { - ch = dir < 0 ? part.to : part.from; - } - return new Pos(lineNo, ch, sticky); + ch = findFirst(function (ch) { return measureCharPrepared(cm, prep, ch).top == targetTop; }, (dir < 0) == (part.level == 1) ? part.from : part.to - 1, ch); + if (sticky == "before") { ch = moveCharLogically(lineObj, ch, 1); } + } else { ch = dir < 0 ? part.to : part.from; } + return new Pos(lineNo, ch, sticky) } } - return new Pos( - lineNo, - dir < 0 ? lineObj.text.length : 0, - dir < 0 ? 'before' : 'after', - ); + return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0 ? "before" : "after") } function moveVisually(cm, line, start, dir) { var bidi = getOrder(line, cm.doc.direction); - if (!bidi) { - return moveLogically(line, start, dir); - } + if (!bidi) { return moveLogically(line, start, dir) } if (start.ch >= line.text.length) { start.ch = line.text.length; - start.sticky = 'before'; + start.sticky = "before"; } else if (start.ch <= 0) { start.ch = 0; - start.sticky = 'after'; - } - var partPos = getBidiPartAt(bidi, start.ch, start.sticky), - part = bidi[partPos]; - if ( - cm.doc.direction == 'ltr' && - part.level % 2 == 0 && - (dir > 0 ? part.to > start.ch : part.from < start.ch) - ) { + start.sticky = "after"; + } + var partPos = getBidiPartAt(bidi, start.ch, start.sticky), part = bidi[partPos]; + if (cm.doc.direction == "ltr" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) { // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines, // nothing interesting happens. - return moveLogically(line, start, dir); + return moveLogically(line, start, dir) } - var mv = function (pos, dir) { - return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir); - }; + var mv = function (pos, dir) { return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir); }; var prep; var getWrappedLineExtent = function (ch) { - if (!cm.options.lineWrapping) { - return { begin: 0, end: line.text.length }; - } + if (!cm.options.lineWrapping) { return {begin: 0, end: line.text.length} } prep = prep || prepareMeasureForLine(cm, line); - return wrappedLineExtentChar(cm, line, prep, ch); + return wrappedLineExtentChar(cm, line, prep, ch) }; - var wrappedLineExtent = getWrappedLineExtent( - start.sticky == 'before' ? mv(start, -1) : start.ch, - ); + var wrappedLineExtent = getWrappedLineExtent(start.sticky == "before" ? mv(start, -1) : start.ch); - if (cm.doc.direction == 'rtl' || part.level == 1) { - var moveInStorageOrder = (part.level == 1) == dir < 0; + if (cm.doc.direction == "rtl" || part.level == 1) { + var moveInStorageOrder = (part.level == 1) == (dir < 0); var ch = mv(start, moveInStorageOrder ? 1 : -1); - if ( - ch != null && - (!moveInStorageOrder - ? ch >= part.from && ch >= wrappedLineExtent.begin - : ch <= part.to && ch <= wrappedLineExtent.end) - ) { + if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent.begin : ch <= part.to && ch <= wrappedLineExtent.end)) { // Case 2: We move within an rtl part or in an rtl editor on the same visual line - var sticky = moveInStorageOrder ? 'before' : 'after'; - return new Pos(start.line, ch, sticky); + var sticky = moveInStorageOrder ? "before" : "after"; + return new Pos(start.line, ch, sticky) } } @@ -10386,260 +6981,131 @@ // the current bidi part var searchInVisualLine = function (partPos, dir, wrappedLineExtent) { - var getRes = function (ch, moveInStorageOrder) { - return moveInStorageOrder - ? new Pos(start.line, mv(ch, 1), 'before') - : new Pos(start.line, ch, 'after'); - }; + var getRes = function (ch, moveInStorageOrder) { return moveInStorageOrder + ? new Pos(start.line, mv(ch, 1), "before") + : new Pos(start.line, ch, "after"); }; for (; partPos >= 0 && partPos < bidi.length; partPos += dir) { var part = bidi[partPos]; - var moveInStorageOrder = dir > 0 == (part.level != 1); - var ch = moveInStorageOrder - ? wrappedLineExtent.begin - : mv(wrappedLineExtent.end, -1); - if (part.from <= ch && ch < part.to) { - return getRes(ch, moveInStorageOrder); - } + var moveInStorageOrder = (dir > 0) == (part.level != 1); + var ch = moveInStorageOrder ? wrappedLineExtent.begin : mv(wrappedLineExtent.end, -1); + if (part.from <= ch && ch < part.to) { return getRes(ch, moveInStorageOrder) } ch = moveInStorageOrder ? part.from : mv(part.to, -1); - if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) { - return getRes(ch, moveInStorageOrder); - } + if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) { return getRes(ch, moveInStorageOrder) } } }; // Case 3a: Look for other bidi parts on the same visual line var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent); - if (res) { - return res; - } + if (res) { return res } // Case 3b: Look for other bidi parts on the next visual line - var nextCh = - dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1); + var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1); if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) { - res = searchInVisualLine( - dir > 0 ? 0 : bidi.length - 1, - dir, - getWrappedLineExtent(nextCh), - ); - if (res) { - return res; - } + res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh)); + if (res) { return res } } // Case 4: Nowhere to move - return null; + return null } // Commands are parameter-less actions that can be performed on an // editor, mostly used for keybindings. var commands = { selectAll: selectAll, - singleSelection: function (cm) { - return cm.setSelection( - cm.getCursor('anchor'), - cm.getCursor('head'), - sel_dontScroll, - ); - }, - killLine: function (cm) { - return deleteNearSelection(cm, function (range) { - if (range.empty()) { - var len = getLine(cm.doc, range.head.line).text.length; - if (range.head.ch == len && range.head.line < cm.lastLine()) { - return { from: range.head, to: Pos(range.head.line + 1, 0) }; - } else { - return { from: range.head, to: Pos(range.head.line, len) }; - } - } else { - return { from: range.from(), to: range.to() }; - } - }); - }, - deleteLine: function (cm) { - return deleteNearSelection(cm, function (range) { - return { - from: Pos(range.from().line, 0), - to: clipPos(cm.doc, Pos(range.to().line + 1, 0)), - }; - }); - }, - delLineLeft: function (cm) { - return deleteNearSelection(cm, function (range) { - return { - from: Pos(range.from().line, 0), - to: range.from(), - }; - }); - }, - delWrappedLineLeft: function (cm) { - return deleteNearSelection(cm, function (range) { - var top = cm.charCoords(range.head, 'div').top + 5; - var leftPos = cm.coordsChar({ left: 0, top: top }, 'div'); - return { from: leftPos, to: range.from() }; - }); - }, - delWrappedLineRight: function (cm) { - return deleteNearSelection(cm, function (range) { - var top = cm.charCoords(range.head, 'div').top + 5; - var rightPos = cm.coordsChar( - { left: cm.display.lineDiv.offsetWidth + 100, top: top }, - 'div', - ); - return { from: range.from(), to: rightPos }; - }); - }, - undo: function (cm) { - return cm.undo(); - }, - redo: function (cm) { - return cm.redo(); - }, - undoSelection: function (cm) { - return cm.undoSelection(); - }, - redoSelection: function (cm) { - return cm.redoSelection(); - }, - goDocStart: function (cm) { - return cm.extendSelection(Pos(cm.firstLine(), 0)); - }, - goDocEnd: function (cm) { - return cm.extendSelection(Pos(cm.lastLine())); - }, - goLineStart: function (cm) { - return cm.extendSelectionsBy( - function (range) { - return lineStart(cm, range.head.line); - }, - { origin: '+move', bias: 1 }, - ); - }, - goLineStartSmart: function (cm) { - return cm.extendSelectionsBy( - function (range) { - return lineStartSmart(cm, range.head); - }, - { origin: '+move', bias: 1 }, - ); - }, - goLineEnd: function (cm) { - return cm.extendSelectionsBy( - function (range) { - return lineEnd(cm, range.head.line); - }, - { origin: '+move', bias: -1 }, - ); - }, - goLineRight: function (cm) { - return cm.extendSelectionsBy(function (range) { - var top = cm.cursorCoords(range.head, 'div').top + 5; - return cm.coordsChar( - { left: cm.display.lineDiv.offsetWidth + 100, top: top }, - 'div', - ); - }, sel_move); - }, - goLineLeft: function (cm) { - return cm.extendSelectionsBy(function (range) { - var top = cm.cursorCoords(range.head, 'div').top + 5; - return cm.coordsChar({ left: 0, top: top }, 'div'); - }, sel_move); - }, - goLineLeftSmart: function (cm) { - return cm.extendSelectionsBy(function (range) { - var top = cm.cursorCoords(range.head, 'div').top + 5; - var pos = cm.coordsChar({ left: 0, top: top }, 'div'); - if (pos.ch < cm.getLine(pos.line).search(/\S/)) { - return lineStartSmart(cm, range.head); - } - return pos; - }, sel_move); - }, - goLineUp: function (cm) { - return cm.moveV(-1, 'line'); - }, - goLineDown: function (cm) { - return cm.moveV(1, 'line'); - }, - goPageUp: function (cm) { - return cm.moveV(-1, 'page'); - }, - goPageDown: function (cm) { - return cm.moveV(1, 'page'); - }, - goCharLeft: function (cm) { - return cm.moveH(-1, 'char'); - }, - goCharRight: function (cm) { - return cm.moveH(1, 'char'); - }, - goColumnLeft: function (cm) { - return cm.moveH(-1, 'column'); - }, - goColumnRight: function (cm) { - return cm.moveH(1, 'column'); - }, - goWordLeft: function (cm) { - return cm.moveH(-1, 'word'); - }, - goGroupRight: function (cm) { - return cm.moveH(1, 'group'); - }, - goGroupLeft: function (cm) { - return cm.moveH(-1, 'group'); - }, - goWordRight: function (cm) { - return cm.moveH(1, 'word'); - }, - delCharBefore: function (cm) { - return cm.deleteH(-1, 'char'); - }, - delCharAfter: function (cm) { - return cm.deleteH(1, 'char'); - }, - delWordBefore: function (cm) { - return cm.deleteH(-1, 'word'); - }, - delWordAfter: function (cm) { - return cm.deleteH(1, 'word'); - }, - delGroupBefore: function (cm) { - return cm.deleteH(-1, 'group'); - }, - delGroupAfter: function (cm) { - return cm.deleteH(1, 'group'); - }, - indentAuto: function (cm) { - return cm.indentSelection('smart'); - }, - indentMore: function (cm) { - return cm.indentSelection('add'); - }, - indentLess: function (cm) { - return cm.indentSelection('subtract'); - }, - insertTab: function (cm) { - return cm.replaceSelection('\t'); - }, + singleSelection: function (cm) { return cm.setSelection(cm.getCursor("anchor"), cm.getCursor("head"), sel_dontScroll); }, + killLine: function (cm) { return deleteNearSelection(cm, function (range) { + if (range.empty()) { + var len = getLine(cm.doc, range.head.line).text.length; + if (range.head.ch == len && range.head.line < cm.lastLine()) + { return {from: range.head, to: Pos(range.head.line + 1, 0)} } + else + { return {from: range.head, to: Pos(range.head.line, len)} } + } else { + return {from: range.from(), to: range.to()} + } + }); }, + deleteLine: function (cm) { return deleteNearSelection(cm, function (range) { return ({ + from: Pos(range.from().line, 0), + to: clipPos(cm.doc, Pos(range.to().line + 1, 0)) + }); }); }, + delLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { return ({ + from: Pos(range.from().line, 0), to: range.from() + }); }); }, + delWrappedLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { + var top = cm.charCoords(range.head, "div").top + 5; + var leftPos = cm.coordsChar({left: 0, top: top}, "div"); + return {from: leftPos, to: range.from()} + }); }, + delWrappedLineRight: function (cm) { return deleteNearSelection(cm, function (range) { + var top = cm.charCoords(range.head, "div").top + 5; + var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, "div"); + return {from: range.from(), to: rightPos } + }); }, + undo: function (cm) { return cm.undo(); }, + redo: function (cm) { return cm.redo(); }, + undoSelection: function (cm) { return cm.undoSelection(); }, + redoSelection: function (cm) { return cm.redoSelection(); }, + goDocStart: function (cm) { return cm.extendSelection(Pos(cm.firstLine(), 0)); }, + goDocEnd: function (cm) { return cm.extendSelection(Pos(cm.lastLine())); }, + goLineStart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStart(cm, range.head.line); }, + {origin: "+move", bias: 1} + ); }, + goLineStartSmart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStartSmart(cm, range.head); }, + {origin: "+move", bias: 1} + ); }, + goLineEnd: function (cm) { return cm.extendSelectionsBy(function (range) { return lineEnd(cm, range.head.line); }, + {origin: "+move", bias: -1} + ); }, + goLineRight: function (cm) { return cm.extendSelectionsBy(function (range) { + var top = cm.cursorCoords(range.head, "div").top + 5; + return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, "div") + }, sel_move); }, + goLineLeft: function (cm) { return cm.extendSelectionsBy(function (range) { + var top = cm.cursorCoords(range.head, "div").top + 5; + return cm.coordsChar({left: 0, top: top}, "div") + }, sel_move); }, + goLineLeftSmart: function (cm) { return cm.extendSelectionsBy(function (range) { + var top = cm.cursorCoords(range.head, "div").top + 5; + var pos = cm.coordsChar({left: 0, top: top}, "div"); + if (pos.ch < cm.getLine(pos.line).search(/\S/)) { return lineStartSmart(cm, range.head) } + return pos + }, sel_move); }, + goLineUp: function (cm) { return cm.moveV(-1, "line"); }, + goLineDown: function (cm) { return cm.moveV(1, "line"); }, + goPageUp: function (cm) { return cm.moveV(-1, "page"); }, + goPageDown: function (cm) { return cm.moveV(1, "page"); }, + goCharLeft: function (cm) { return cm.moveH(-1, "char"); }, + goCharRight: function (cm) { return cm.moveH(1, "char"); }, + goColumnLeft: function (cm) { return cm.moveH(-1, "column"); }, + goColumnRight: function (cm) { return cm.moveH(1, "column"); }, + goWordLeft: function (cm) { return cm.moveH(-1, "word"); }, + goGroupRight: function (cm) { return cm.moveH(1, "group"); }, + goGroupLeft: function (cm) { return cm.moveH(-1, "group"); }, + goWordRight: function (cm) { return cm.moveH(1, "word"); }, + delCharBefore: function (cm) { return cm.deleteH(-1, "codepoint"); }, + delCharAfter: function (cm) { return cm.deleteH(1, "char"); }, + delWordBefore: function (cm) { return cm.deleteH(-1, "word"); }, + delWordAfter: function (cm) { return cm.deleteH(1, "word"); }, + delGroupBefore: function (cm) { return cm.deleteH(-1, "group"); }, + delGroupAfter: function (cm) { return cm.deleteH(1, "group"); }, + indentAuto: function (cm) { return cm.indentSelection("smart"); }, + indentMore: function (cm) { return cm.indentSelection("add"); }, + indentLess: function (cm) { return cm.indentSelection("subtract"); }, + insertTab: function (cm) { return cm.replaceSelection("\t"); }, insertSoftTab: function (cm) { - var spaces = [], - ranges = cm.listSelections(), - tabSize = cm.options.tabSize; + var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize; for (var i = 0; i < ranges.length; i++) { var pos = ranges[i].from(); var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize); - spaces.push(spaceStr(tabSize - (col % tabSize))); + spaces.push(spaceStr(tabSize - col % tabSize)); } cm.replaceSelections(spaces); }, defaultTab: function (cm) { - if (cm.somethingSelected()) { - cm.indentSelection('add'); - } else { - cm.execCommand('insertTab'); - } + if (cm.somethingSelected()) { cm.indentSelection("add"); } + else { cm.execCommand("insertTab"); } }, // Swap the two chars left and right of each selection's head. // Move cursor behind the two swapped characters afterwards. @@ -10648,355 +7114,248 @@ // Doesn't scan more than one line above to find a character. // Doesn't do anything on an empty line. // Doesn't do anything with non-empty selections. - transposeChars: function (cm) { - return runInOp(cm, function () { - var ranges = cm.listSelections(), - newSel = []; - for (var i = 0; i < ranges.length; i++) { - if (!ranges[i].empty()) { - continue; - } - var cur = ranges[i].head, - line = getLine(cm.doc, cur.line).text; - if (line) { - if (cur.ch == line.length) { - cur = new Pos(cur.line, cur.ch - 1); - } - if (cur.ch > 0) { - cur = new Pos(cur.line, cur.ch + 1); - cm.replaceRange( - line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2), - Pos(cur.line, cur.ch - 2), - cur, - '+transpose', - ); - } else if (cur.line > cm.doc.first) { - var prev = getLine(cm.doc, cur.line - 1).text; - if (prev) { - cur = new Pos(cur.line, 1); - cm.replaceRange( - line.charAt(0) + - cm.doc.lineSeparator() + - prev.charAt(prev.length - 1), - Pos(cur.line - 1, prev.length - 1), - cur, - '+transpose', - ); - } + transposeChars: function (cm) { return runInOp(cm, function () { + var ranges = cm.listSelections(), newSel = []; + for (var i = 0; i < ranges.length; i++) { + if (!ranges[i].empty()) { continue } + var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text; + if (line) { + if (cur.ch == line.length) { cur = new Pos(cur.line, cur.ch - 1); } + if (cur.ch > 0) { + cur = new Pos(cur.line, cur.ch + 1); + cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2), + Pos(cur.line, cur.ch - 2), cur, "+transpose"); + } else if (cur.line > cm.doc.first) { + var prev = getLine(cm.doc, cur.line - 1).text; + if (prev) { + cur = new Pos(cur.line, 1); + cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() + + prev.charAt(prev.length - 1), + Pos(cur.line - 1, prev.length - 1), cur, "+transpose"); } } - newSel.push(new Range(cur, cur)); - } - cm.setSelections(newSel); - }); - }, - newlineAndIndent: function (cm) { - return runInOp(cm, function () { - var sels = cm.listSelections(); - for (var i = sels.length - 1; i >= 0; i--) { - cm.replaceRange( - cm.doc.lineSeparator(), - sels[i].anchor, - sels[i].head, - '+input', - ); } - sels = cm.listSelections(); - for (var i$1 = 0; i$1 < sels.length; i$1++) { - cm.indentLine(sels[i$1].from().line, null, true); - } - ensureCursorVisible(cm); - }); - }, - openLine: function (cm) { - return cm.replaceSelection('\n', 'start'); - }, - toggleOverwrite: function (cm) { - return cm.toggleOverwrite(); - }, + newSel.push(new Range(cur, cur)); + } + cm.setSelections(newSel); + }); }, + newlineAndIndent: function (cm) { return runInOp(cm, function () { + var sels = cm.listSelections(); + for (var i = sels.length - 1; i >= 0; i--) + { cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, "+input"); } + sels = cm.listSelections(); + for (var i$1 = 0; i$1 < sels.length; i$1++) + { cm.indentLine(sels[i$1].from().line, null, true); } + ensureCursorVisible(cm); + }); }, + openLine: function (cm) { return cm.replaceSelection("\n", "start"); }, + toggleOverwrite: function (cm) { return cm.toggleOverwrite(); } }; + function lineStart(cm, lineN) { var line = getLine(cm.doc, lineN); var visual = visualLine(line); - if (visual != line) { - lineN = lineNo(visual); - } - return endOfLine(true, cm, visual, lineN, 1); + if (visual != line) { lineN = lineNo(visual); } + return endOfLine(true, cm, visual, lineN, 1) } function lineEnd(cm, lineN) { var line = getLine(cm.doc, lineN); var visual = visualLineEnd(line); - if (visual != line) { - lineN = lineNo(visual); - } - return endOfLine(true, cm, line, lineN, -1); + if (visual != line) { lineN = lineNo(visual); } + return endOfLine(true, cm, line, lineN, -1) } function lineStartSmart(cm, pos) { var start = lineStart(cm, pos.line); var line = getLine(cm.doc, start.line); var order = getOrder(line, cm.doc.direction); if (!order || order[0].level == 0) { - var firstNonWS = Math.max(0, line.text.search(/\S/)); + var firstNonWS = Math.max(start.ch, line.text.search(/\S/)); var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch; - return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky); + return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky) } - return start; + return start } // Run a handler that was bound to a key. function doHandleBinding(cm, bound, dropShift) { - if (typeof bound == 'string') { + if (typeof bound == "string") { bound = commands[bound]; - if (!bound) { - return false; - } + if (!bound) { return false } } // Ensure previous input has been read, so that the handler sees a // consistent view of the document cm.display.input.ensurePolled(); - var prevShift = cm.display.shift, - done = false; + var prevShift = cm.display.shift, done = false; try { - if (cm.isReadOnly()) { - cm.state.suppressEdits = true; - } - if (dropShift) { - cm.display.shift = false; - } + if (cm.isReadOnly()) { cm.state.suppressEdits = true; } + if (dropShift) { cm.display.shift = false; } done = bound(cm) != Pass; } finally { cm.display.shift = prevShift; cm.state.suppressEdits = false; } - return done; + return done } function lookupKeyForEditor(cm, name, handle) { for (var i = 0; i < cm.state.keyMaps.length; i++) { var result = lookupKey(name, cm.state.keyMaps[i], handle, cm); - if (result) { - return result; - } + if (result) { return result } } - return ( - (cm.options.extraKeys && - lookupKey(name, cm.options.extraKeys, handle, cm)) || - lookupKey(name, cm.options.keyMap, handle, cm) - ); + return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm)) + || lookupKey(name, cm.options.keyMap, handle, cm) } // Note that, despite the name, this function is also used to check // for bound mouse clicks. - var stopSeq = new Delayed(); + var stopSeq = new Delayed; function dispatchKey(cm, name, e, handle) { var seq = cm.state.keySeq; if (seq) { - if (isModifierKey(name)) { - return 'handled'; - } - if (/\'$/.test(name)) { - cm.state.keySeq = null; - } else { - stopSeq.set(50, function () { + if (isModifierKey(name)) { return "handled" } + if (/\'$/.test(name)) + { cm.state.keySeq = null; } + else + { stopSeq.set(50, function () { if (cm.state.keySeq == seq) { cm.state.keySeq = null; cm.display.input.reset(); } - }); - } - if (dispatchKeyInner(cm, seq + ' ' + name, e, handle)) { - return true; - } + }); } + if (dispatchKeyInner(cm, seq + " " + name, e, handle)) { return true } } - return dispatchKeyInner(cm, name, e, handle); + return dispatchKeyInner(cm, name, e, handle) } function dispatchKeyInner(cm, name, e, handle) { var result = lookupKeyForEditor(cm, name, handle); - if (result == 'multi') { - cm.state.keySeq = name; - } - if (result == 'handled') { - signalLater(cm, 'keyHandled', cm, name, e); - } + if (result == "multi") + { cm.state.keySeq = name; } + if (result == "handled") + { signalLater(cm, "keyHandled", cm, name, e); } - if (result == 'handled' || result == 'multi') { + if (result == "handled" || result == "multi") { e_preventDefault(e); restartBlink(cm); } - return !!result; + return !!result } // Handle a key from the keydown event. function handleKeyBinding(cm, e) { var name = keyName(e, true); - if (!name) { - return false; - } + if (!name) { return false } if (e.shiftKey && !cm.state.keySeq) { // First try to resolve full name (including 'Shift-'). Failing // that, see if there is a cursor-motion command (starting with // 'go') bound to the keyname without 'Shift-'. - return ( - dispatchKey(cm, 'Shift-' + name, e, function (b) { - return doHandleBinding(cm, b, true); - }) || - dispatchKey(cm, name, e, function (b) { - if (typeof b == 'string' ? /^go[A-Z]/.test(b) : b.motion) { - return doHandleBinding(cm, b); - } - }) - ); + return dispatchKey(cm, "Shift-" + name, e, function (b) { return doHandleBinding(cm, b, true); }) + || dispatchKey(cm, name, e, function (b) { + if (typeof b == "string" ? /^go[A-Z]/.test(b) : b.motion) + { return doHandleBinding(cm, b) } + }) } else { - return dispatchKey(cm, name, e, function (b) { - return doHandleBinding(cm, b); - }); + return dispatchKey(cm, name, e, function (b) { return doHandleBinding(cm, b); }) } } // Handle a key from the keypress event function handleCharBinding(cm, e, ch) { - return dispatchKey(cm, "'" + ch + "'", e, function (b) { - return doHandleBinding(cm, b, true); - }); + return dispatchKey(cm, "'" + ch + "'", e, function (b) { return doHandleBinding(cm, b, true); }) } var lastStoppedKey = null; function onKeyDown(e) { var cm = this; - cm.curOp.focus = activeElt(); - if (signalDOMEvent(cm, e)) { - return; - } + if (e.target && e.target != cm.display.input.getField()) { return } + cm.curOp.focus = activeElt(root(cm)); + if (signalDOMEvent(cm, e)) { return } // IE does strange things with escape. - if (ie && ie_version < 11 && e.keyCode == 27) { - e.returnValue = false; - } + if (ie && ie_version < 11 && e.keyCode == 27) { e.returnValue = false; } var code = e.keyCode; cm.display.shift = code == 16 || e.shiftKey; var handled = handleKeyBinding(cm, e); if (presto) { lastStoppedKey = handled ? code : null; // Opera has no cut event... we try to at least catch the key combo - if ( - !handled && - code == 88 && - !hasCopyEvent && - (mac ? e.metaKey : e.ctrlKey) - ) { - cm.replaceSelection('', null, 'cut'); - } - } - if ( - gecko && - !mac && - !handled && - code == 46 && - e.shiftKey && - !e.ctrlKey && - document.execCommand - ) { - document.execCommand('cut'); + if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey)) + { cm.replaceSelection("", null, "cut"); } } + if (gecko && !mac && !handled && code == 46 && e.shiftKey && !e.ctrlKey && document.execCommand) + { document.execCommand("cut"); } // Turn mouse into crosshair when Alt is held on Mac. - if ( - code == 18 && - !/\bCodeMirror-crosshair\b/.test(cm.display.lineDiv.className) - ) { - showCrossHair(cm); - } + if (code == 18 && !/\bCodeMirror-crosshair\b/.test(cm.display.lineDiv.className)) + { showCrossHair(cm); } } function showCrossHair(cm) { var lineDiv = cm.display.lineDiv; - addClass(lineDiv, 'CodeMirror-crosshair'); + addClass(lineDiv, "CodeMirror-crosshair"); function up(e) { if (e.keyCode == 18 || !e.altKey) { - rmClass(lineDiv, 'CodeMirror-crosshair'); - off(document, 'keyup', up); - off(document, 'mouseover', up); + rmClass(lineDiv, "CodeMirror-crosshair"); + off(document, "keyup", up); + off(document, "mouseover", up); } } - on(document, 'keyup', up); - on(document, 'mouseover', up); + on(document, "keyup", up); + on(document, "mouseover", up); } function onKeyUp(e) { - if (e.keyCode == 16) { - this.doc.sel.shift = false; - } + if (e.keyCode == 16) { this.doc.sel.shift = false; } signalDOMEvent(this, e); } function onKeyPress(e) { var cm = this; - if ( - eventInWidget(cm.display, e) || - signalDOMEvent(cm, e) || - (e.ctrlKey && !e.altKey) || - (mac && e.metaKey) - ) { - return; - } - var keyCode = e.keyCode, - charCode = e.charCode; - if (presto && keyCode == lastStoppedKey) { - lastStoppedKey = null; - e_preventDefault(e); - return; - } - if (presto && (!e.which || e.which < 10) && handleKeyBinding(cm, e)) { - return; - } + if (e.target && e.target != cm.display.input.getField()) { return } + if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) { return } + var keyCode = e.keyCode, charCode = e.charCode; + if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return} + if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) { return } var ch = String.fromCharCode(charCode == null ? keyCode : charCode); // Some browsers fire keypress events for backspace - if (ch == '\x08') { - return; - } - if (handleCharBinding(cm, e, ch)) { - return; - } + if (ch == "\x08") { return } + if (handleCharBinding(cm, e, ch)) { return } cm.display.input.onKeyPress(e); } var DOUBLECLICK_DELAY = 400; - var PastClick = function (time, pos, button) { + var PastClick = function(time, pos, button) { this.time = time; this.pos = pos; this.button = button; }; PastClick.prototype.compare = function (time, pos, button) { - return ( - this.time + DOUBLECLICK_DELAY > time && - cmp(pos, this.pos) == 0 && - button == this.button - ); + return this.time + DOUBLECLICK_DELAY > time && + cmp(pos, this.pos) == 0 && button == this.button }; var lastClick, lastDoubleClick; function clickRepeat(pos, button) { - var now = +new Date(); + var now = +new Date; if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) { lastClick = lastDoubleClick = null; - return 'triple'; + return "triple" } else if (lastClick && lastClick.compare(now, pos, button)) { lastDoubleClick = new PastClick(now, pos, button); lastClick = null; - return 'double'; + return "double" } else { lastClick = new PastClick(now, pos, button); lastDoubleClick = null; - return 'single'; + return "single" } } @@ -11006,14 +7365,8 @@ // middle-click-paste. Or it might be a click on something we should // not interfere with, such as a scrollbar or widget. function onMouseDown(e) { - var cm = this, - display = cm.display; - if ( - signalDOMEvent(cm, e) || - (display.activeTouch && display.input.supportsTouch()) - ) { - return; - } + var cm = this, display = cm.display; + if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) { return } display.input.ensurePolled(); display.shift = e.shiftKey; @@ -11022,252 +7375,162 @@ // Briefly turn off draggability, to allow widgets to do // normal dragging things. display.scroller.draggable = false; - setTimeout(function () { - return (display.scroller.draggable = true); - }, 100); + setTimeout(function () { return display.scroller.draggable = true; }, 100); } - return; - } - if (clickInGutter(cm, e)) { - return; + return } - var pos = posFromMouse(cm, e), - button = e_button(e), - repeat = pos ? clickRepeat(pos, button) : 'single'; - window.focus(); + if (clickInGutter(cm, e)) { return } + var pos = posFromMouse(cm, e), button = e_button(e), repeat = pos ? clickRepeat(pos, button) : "single"; + win(cm).focus(); // #3261: make sure, that we're not starting a second selection - if (button == 1 && cm.state.selectingText) { - cm.state.selectingText(e); - } + if (button == 1 && cm.state.selectingText) + { cm.state.selectingText(e); } - if (pos && handleMappedButton(cm, button, pos, repeat, e)) { - return; - } + if (pos && handleMappedButton(cm, button, pos, repeat, e)) { return } if (button == 1) { - if (pos) { - leftButtonDown(cm, pos, repeat, e); - } else if (e_target(e) == display.scroller) { - e_preventDefault(e); - } + if (pos) { leftButtonDown(cm, pos, repeat, e); } + else if (e_target(e) == display.scroller) { e_preventDefault(e); } } else if (button == 2) { - if (pos) { - extendSelection(cm.doc, pos); - } - setTimeout(function () { - return display.input.focus(); - }, 20); + if (pos) { extendSelection(cm.doc, pos); } + setTimeout(function () { return display.input.focus(); }, 20); } else if (button == 3) { - if (captureRightClick) { - cm.display.input.onContextMenu(e); - } else { - delayBlurEvent(cm); - } + if (captureRightClick) { cm.display.input.onContextMenu(e); } + else { delayBlurEvent(cm); } } } function handleMappedButton(cm, button, pos, repeat, event) { - var name = 'Click'; - if (repeat == 'double') { - name = 'Double' + name; - } else if (repeat == 'triple') { - name = 'Triple' + name; - } - name = (button == 1 ? 'Left' : button == 2 ? 'Middle' : 'Right') + name; - - return dispatchKey( - cm, - addModifierNames(name, event), - event, - function (bound) { - if (typeof bound == 'string') { - bound = commands[bound]; - } - if (!bound) { - return false; - } - var done = false; - try { - if (cm.isReadOnly()) { - cm.state.suppressEdits = true; - } - done = bound(cm, pos) != Pass; - } finally { - cm.state.suppressEdits = false; - } - return done; - }, - ); + var name = "Click"; + if (repeat == "double") { name = "Double" + name; } + else if (repeat == "triple") { name = "Triple" + name; } + name = (button == 1 ? "Left" : button == 2 ? "Middle" : "Right") + name; + + return dispatchKey(cm, addModifierNames(name, event), event, function (bound) { + if (typeof bound == "string") { bound = commands[bound]; } + if (!bound) { return false } + var done = false; + try { + if (cm.isReadOnly()) { cm.state.suppressEdits = true; } + done = bound(cm, pos) != Pass; + } finally { + cm.state.suppressEdits = false; + } + return done + }) } function configureMouse(cm, repeat, event) { - var option = cm.getOption('configureMouse'); + var option = cm.getOption("configureMouse"); var value = option ? option(cm, repeat, event) : {}; if (value.unit == null) { var rect = chromeOS ? event.shiftKey && event.metaKey : event.altKey; - value.unit = rect - ? 'rectangle' - : repeat == 'single' - ? 'char' - : repeat == 'double' - ? 'word' - : 'line'; - } - if (value.extend == null || cm.doc.extend) { - value.extend = cm.doc.extend || event.shiftKey; + value.unit = rect ? "rectangle" : repeat == "single" ? "char" : repeat == "double" ? "word" : "line"; } - if (value.addNew == null) { - value.addNew = mac ? event.metaKey : event.ctrlKey; - } - if (value.moveOnDrag == null) { - value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey); - } - return value; + if (value.extend == null || cm.doc.extend) { value.extend = cm.doc.extend || event.shiftKey; } + if (value.addNew == null) { value.addNew = mac ? event.metaKey : event.ctrlKey; } + if (value.moveOnDrag == null) { value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey); } + return value } function leftButtonDown(cm, pos, repeat, event) { - if (ie) { - setTimeout(bind(ensureFocus, cm), 0); - } else { - cm.curOp.focus = activeElt(); - } + if (ie) { setTimeout(bind(ensureFocus, cm), 0); } + else { cm.curOp.focus = activeElt(root(cm)); } var behavior = configureMouse(cm, repeat, event); - var sel = cm.doc.sel, - contained; - if ( - cm.options.dragDrop && - dragAndDrop && - !cm.isReadOnly() && - repeat == 'single' && - (contained = sel.contains(pos)) > -1 && - (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || - pos.xRel > 0) && - (cmp(contained.to(), pos) > 0 || pos.xRel < 0) - ) { - leftButtonStartDrag(cm, event, pos, behavior); - } else { - leftButtonSelect(cm, event, pos, behavior); - } + var sel = cm.doc.sel, contained; + if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() && + repeat == "single" && (contained = sel.contains(pos)) > -1 && + (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) && + (cmp(contained.to(), pos) > 0 || pos.xRel < 0)) + { leftButtonStartDrag(cm, event, pos, behavior); } + else + { leftButtonSelect(cm, event, pos, behavior); } } // Start a text drag. When it ends, see if any dragging actually // happen, and treat as a click if it didn't. function leftButtonStartDrag(cm, event, pos, behavior) { - var display = cm.display, - moved = false; + var display = cm.display, moved = false; var dragEnd = operation(cm, function (e) { - if (webkit) { - display.scroller.draggable = false; - } + if (webkit) { display.scroller.draggable = false; } cm.state.draggingText = false; - off(display.wrapper.ownerDocument, 'mouseup', dragEnd); - off(display.wrapper.ownerDocument, 'mousemove', mouseMove); - off(display.scroller, 'dragstart', dragStart); - off(display.scroller, 'drop', dragEnd); + if (cm.state.delayingBlurEvent) { + if (cm.hasFocus()) { cm.state.delayingBlurEvent = false; } + else { delayBlurEvent(cm); } + } + off(display.wrapper.ownerDocument, "mouseup", dragEnd); + off(display.wrapper.ownerDocument, "mousemove", mouseMove); + off(display.scroller, "dragstart", dragStart); + off(display.scroller, "drop", dragEnd); if (!moved) { e_preventDefault(e); - if (!behavior.addNew) { - extendSelection(cm.doc, pos, null, null, behavior.extend); - } + if (!behavior.addNew) + { extendSelection(cm.doc, pos, null, null, behavior.extend); } // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081) - if (webkit || (ie && ie_version == 9)) { - setTimeout(function () { - display.wrapper.ownerDocument.body.focus(); - display.input.focus(); - }, 20); - } else { - display.input.focus(); - } + if ((webkit && !safari) || ie && ie_version == 9) + { setTimeout(function () {display.wrapper.ownerDocument.body.focus({preventScroll: true}); display.input.focus();}, 20); } + else + { display.input.focus(); } } }); - var mouseMove = function (e2) { - moved = - moved || - Math.abs(event.clientX - e2.clientX) + - Math.abs(event.clientY - e2.clientY) >= - 10; - }; - var dragStart = function () { - return (moved = true); + var mouseMove = function(e2) { + moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10; }; + var dragStart = function () { return moved = true; }; // Let the drag handler handle this. - if (webkit) { - display.scroller.draggable = true; - } + if (webkit) { display.scroller.draggable = true; } cm.state.draggingText = dragEnd; dragEnd.copy = !behavior.moveOnDrag; - // IE's approach to draggable - if (display.scroller.dragDrop) { - display.scroller.dragDrop(); - } - on(display.wrapper.ownerDocument, 'mouseup', dragEnd); - on(display.wrapper.ownerDocument, 'mousemove', mouseMove); - on(display.scroller, 'dragstart', dragStart); - on(display.scroller, 'drop', dragEnd); + on(display.wrapper.ownerDocument, "mouseup", dragEnd); + on(display.wrapper.ownerDocument, "mousemove", mouseMove); + on(display.scroller, "dragstart", dragStart); + on(display.scroller, "drop", dragEnd); - delayBlurEvent(cm); - setTimeout(function () { - return display.input.focus(); - }, 20); + cm.state.delayingBlurEvent = true; + setTimeout(function () { return display.input.focus(); }, 20); + // IE's approach to draggable + if (display.scroller.dragDrop) { display.scroller.dragDrop(); } } function rangeForUnit(cm, pos, unit) { - if (unit == 'char') { - return new Range(pos, pos); - } - if (unit == 'word') { - return cm.findWordAt(pos); - } - if (unit == 'line') { - return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))); - } + if (unit == "char") { return new Range(pos, pos) } + if (unit == "word") { return cm.findWordAt(pos) } + if (unit == "line") { return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))) } var result = unit(cm, pos); - return new Range(result.from, result.to); + return new Range(result.from, result.to) } // Normal selection, as opposed to text dragging. function leftButtonSelect(cm, event, start, behavior) { - var display = cm.display, - doc = cm.doc; + if (ie) { delayBlurEvent(cm); } + var display = cm.display, doc = cm.doc; e_preventDefault(event); - var ourRange, - ourIndex, - startSel = doc.sel, - ranges = startSel.ranges; + var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges; if (behavior.addNew && !behavior.extend) { ourIndex = doc.sel.contains(start); - if (ourIndex > -1) { - ourRange = ranges[ourIndex]; - } else { - ourRange = new Range(start, start); - } + if (ourIndex > -1) + { ourRange = ranges[ourIndex]; } + else + { ourRange = new Range(start, start); } } else { ourRange = doc.sel.primary(); ourIndex = doc.sel.primIndex; } - if (behavior.unit == 'rectangle') { - if (!behavior.addNew) { - ourRange = new Range(start, start); - } + if (behavior.unit == "rectangle") { + if (!behavior.addNew) { ourRange = new Range(start, start); } start = posFromMouse(cm, event, true, true); ourIndex = -1; } else { - var range$$1 = rangeForUnit(cm, start, behavior.unit); - if (behavior.extend) { - ourRange = extendRange( - ourRange, - range$$1.anchor, - range$$1.head, - behavior.extend, - ); - } else { - ourRange = range$$1; - } + var range = rangeForUnit(cm, start, behavior.unit); + if (behavior.extend) + { ourRange = extendRange(ourRange, range.anchor, range.head, behavior.extend); } + else + { ourRange = range; } } if (!behavior.addNew) { @@ -11276,26 +7539,11 @@ startSel = doc.sel; } else if (ourIndex == -1) { ourIndex = ranges.length; - setSelection( - doc, - normalizeSelection(cm, ranges.concat([ourRange]), ourIndex), - { scroll: false, origin: '*mouse' }, - ); - } else if ( - ranges.length > 1 && - ranges[ourIndex].empty() && - behavior.unit == 'char' && - !behavior.extend - ) { - setSelection( - doc, - normalizeSelection( - cm, - ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), - 0, - ), - { scroll: false, origin: '*mouse' }, - ); + setSelection(doc, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex), + {scroll: false, origin: "*mouse"}); + } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == "char" && !behavior.extend) { + setSelection(doc, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0), + {scroll: false, origin: "*mouse"}); startSel = doc.sel; } else { replaceOneSelection(doc, ourIndex, ourRange, sel_mouse); @@ -11303,76 +7551,40 @@ var lastPos = start; function extendTo(pos) { - if (cmp(lastPos, pos) == 0) { - return; - } + if (cmp(lastPos, pos) == 0) { return } lastPos = pos; - if (behavior.unit == 'rectangle') { - var ranges = [], - tabSize = cm.options.tabSize; - var startCol = countColumn( - getLine(doc, start.line).text, - start.ch, - tabSize, - ); + if (behavior.unit == "rectangle") { + var ranges = [], tabSize = cm.options.tabSize; + var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize); var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize); - var left = Math.min(startCol, posCol), - right = Math.max(startCol, posCol); - for ( - var line = Math.min(start.line, pos.line), - end = Math.min(cm.lastLine(), Math.max(start.line, pos.line)); - line <= end; - line++ - ) { - var text = getLine(doc, line).text, - leftPos = findColumn(text, left, tabSize); - if (left == right) { - ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); - } else if (text.length > leftPos) { - ranges.push( - new Range( - Pos(line, leftPos), - Pos(line, findColumn(text, right, tabSize)), - ), - ); - } - } - if (!ranges.length) { - ranges.push(new Range(start, start)); - } - setSelection( - doc, - normalizeSelection( - cm, - startSel.ranges.slice(0, ourIndex).concat(ranges), - ourIndex, - ), - { origin: '*mouse', scroll: false }, - ); + var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol); + for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line)); + line <= end; line++) { + var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize); + if (left == right) + { ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); } + else if (text.length > leftPos) + { ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); } + } + if (!ranges.length) { ranges.push(new Range(start, start)); } + setSelection(doc, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex), + {origin: "*mouse", scroll: false}); cm.scrollIntoView(pos); } else { var oldRange = ourRange; - var range$$1 = rangeForUnit(cm, pos, behavior.unit); - var anchor = oldRange.anchor, - head; - if (cmp(range$$1.anchor, anchor) > 0) { - head = range$$1.head; - anchor = minPos(oldRange.from(), range$$1.anchor); + var range = rangeForUnit(cm, pos, behavior.unit); + var anchor = oldRange.anchor, head; + if (cmp(range.anchor, anchor) > 0) { + head = range.head; + anchor = minPos(oldRange.from(), range.anchor); } else { - head = range$$1.anchor; - anchor = maxPos(oldRange.to(), range$$1.head); + head = range.anchor; + anchor = maxPos(oldRange.to(), range.head); } var ranges$1 = startSel.ranges.slice(0); - ranges$1[ourIndex] = bidiSimplify( - cm, - new Range(clipPos(doc, anchor), head), - ); - setSelection( - doc, - normalizeSelection(cm, ranges$1, ourIndex), - sel_mouse, - ); + ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head)); + setSelection(doc, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse); } } @@ -11385,43 +7597,21 @@ function extend(e) { var curCount = ++counter; - var cur = posFromMouse(cm, e, true, behavior.unit == 'rectangle'); - if (!cur) { - return; - } + var cur = posFromMouse(cm, e, true, behavior.unit == "rectangle"); + if (!cur) { return } if (cmp(cur, lastPos) != 0) { - cm.curOp.focus = activeElt(); + cm.curOp.focus = activeElt(root(cm)); extendTo(cur); var visible = visibleLines(display, doc); - if (cur.line >= visible.to || cur.line < visible.from) { - setTimeout( - operation(cm, function () { - if (counter == curCount) { - extend(e); - } - }), - 150, - ); - } + if (cur.line >= visible.to || cur.line < visible.from) + { setTimeout(operation(cm, function () {if (counter == curCount) { extend(e); }}), 150); } } else { - var outside = - e.clientY < editorSize.top - ? -20 - : e.clientY > editorSize.bottom - ? 20 - : 0; - if (outside) { - setTimeout( - operation(cm, function () { - if (counter != curCount) { - return; - } - display.scroller.scrollTop += outside; - extend(e); - }), - 50, - ); - } + var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0; + if (outside) { setTimeout(operation(cm, function () { + if (counter != curCount) { return } + display.scroller.scrollTop += outside; + extend(e); + }), 50); } } } @@ -11435,74 +7625,56 @@ e_preventDefault(e); display.input.focus(); } - off(display.wrapper.ownerDocument, 'mousemove', move); - off(display.wrapper.ownerDocument, 'mouseup', up); + off(display.wrapper.ownerDocument, "mousemove", move); + off(display.wrapper.ownerDocument, "mouseup", up); doc.history.lastSelOrigin = null; } var move = operation(cm, function (e) { - if (e.buttons === 0 || !e_button(e)) { - done(e); - } else { - extend(e); - } + if (e.buttons === 0 || !e_button(e)) { done(e); } + else { extend(e); } }); var up = operation(cm, done); cm.state.selectingText = up; - on(display.wrapper.ownerDocument, 'mousemove', move); - on(display.wrapper.ownerDocument, 'mouseup', up); + on(display.wrapper.ownerDocument, "mousemove", move); + on(display.wrapper.ownerDocument, "mouseup", up); } // Used when mouse-selecting to adjust the anchor to the proper side // of a bidi jump depending on the visual position of the head. - function bidiSimplify(cm, range$$1) { - var anchor = range$$1.anchor; - var head = range$$1.head; + function bidiSimplify(cm, range) { + var anchor = range.anchor; + var head = range.head; var anchorLine = getLine(cm.doc, anchor.line); - if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) { - return range$$1; - } + if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) { return range } var order = getOrder(anchorLine); - if (!order) { - return range$$1; - } - var index = getBidiPartAt(order, anchor.ch, anchor.sticky), - part = order[index]; - if (part.from != anchor.ch && part.to != anchor.ch) { - return range$$1; - } - var boundary = - index + ((part.from == anchor.ch) == (part.level != 1) ? 0 : 1); - if (boundary == 0 || boundary == order.length) { - return range$$1; - } + if (!order) { return range } + var index = getBidiPartAt(order, anchor.ch, anchor.sticky), part = order[index]; + if (part.from != anchor.ch && part.to != anchor.ch) { return range } + var boundary = index + ((part.from == anchor.ch) == (part.level != 1) ? 0 : 1); + if (boundary == 0 || boundary == order.length) { return range } // Compute the relative visual position of the head compared to the // anchor (<0 is to the left, >0 to the right) var leftSide; if (head.line != anchor.line) { - leftSide = - (head.line - anchor.line) * (cm.doc.direction == 'ltr' ? 1 : -1) > 0; + leftSide = (head.line - anchor.line) * (cm.doc.direction == "ltr" ? 1 : -1) > 0; } else { var headIndex = getBidiPartAt(order, head.ch, head.sticky); - var dir = - headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1); - if (headIndex == boundary - 1 || headIndex == boundary) { - leftSide = dir < 0; - } else { - leftSide = dir > 0; - } + var dir = headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1); + if (headIndex == boundary - 1 || headIndex == boundary) + { leftSide = dir < 0; } + else + { leftSide = dir > 0; } } var usePart = order[boundary + (leftSide ? -1 : 0)]; var from = leftSide == (usePart.level == 1); - var ch = from ? usePart.from : usePart.to, - sticky = from ? 'after' : 'before'; - return anchor.ch == ch && anchor.sticky == sticky - ? range$$1 - : new Range(new Pos(anchor.line, ch, sticky), head); + var ch = from ? usePart.from : usePart.to, sticky = from ? "after" : "before"; + return anchor.ch == ch && anchor.sticky == sticky ? range : new Range(new Pos(anchor.line, ch, sticky), head) } + // Determines whether an event happened in the gutter, and fires the // handlers for the corresponding event. function gutterEvent(cm, e, type, prevent) { @@ -11511,26 +7683,16 @@ mX = e.touches[0].clientX; mY = e.touches[0].clientY; } else { - try { - mX = e.clientX; - mY = e.clientY; - } catch (e) { - return false; - } - } - if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) { - return false; - } - if (prevent) { - e_preventDefault(e); + try { mX = e.clientX; mY = e.clientY; } + catch(e$1) { return false } } + if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) { return false } + if (prevent) { e_preventDefault(e); } var display = cm.display; var lineBox = display.lineDiv.getBoundingClientRect(); - if (mY > lineBox.bottom || !hasHandler(cm, type)) { - return e_defaultPrevented(e); - } + if (mY > lineBox.bottom || !hasHandler(cm, type)) { return e_defaultPrevented(e) } mY -= lineBox.top - display.viewOffset; for (var i = 0; i < cm.display.gutterSpecs.length; ++i) { @@ -11539,13 +7701,13 @@ var line = lineAtHeight(cm.doc, mY); var gutter = cm.display.gutterSpecs[i]; signal(cm, type, cm, line, gutter.className, e); - return e_defaultPrevented(e); + return e_defaultPrevented(e) } } } function clickInGutter(cm, e) { - return gutterEvent(cm, e, 'gutterClick', true); + return gutterEvent(cm, e, "gutterClick", true) } // CONTEXT MENU HANDLING @@ -11554,36 +7716,23 @@ // textarea (making it as unobtrusive as possible) to let the // right-click take effect on it. function onContextMenu(cm, e) { - if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { - return; - } - if (signalDOMEvent(cm, e, 'contextmenu')) { - return; - } - if (!captureRightClick) { - cm.display.input.onContextMenu(e); - } + if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { return } + if (signalDOMEvent(cm, e, "contextmenu")) { return } + if (!captureRightClick) { cm.display.input.onContextMenu(e); } } function contextMenuInGutter(cm, e) { - if (!hasHandler(cm, 'gutterContextMenu')) { - return false; - } - return gutterEvent(cm, e, 'gutterContextMenu', false); + if (!hasHandler(cm, "gutterContextMenu")) { return false } + return gutterEvent(cm, e, "gutterContextMenu", false) } function themeChanged(cm) { - cm.display.wrapper.className = - cm.display.wrapper.className.replace(/\s*cm-s-\S+/g, '') + - cm.options.theme.replace(/(^|\s)\s*/g, ' cm-s-'); + cm.display.wrapper.className = cm.display.wrapper.className.replace(/\s*cm-s-\S+/g, "") + + cm.options.theme.replace(/(^|\s)\s*/g, " cm-s-"); clearCaches(cm); } - var Init = { - toString: function () { - return 'CodeMirror.Init'; - }, - }; + var Init = {toString: function(){return "CodeMirror.Init"}}; var defaults = {}; var optionHandlers = {}; @@ -11593,15 +7742,8 @@ function option(name, deflt, handle, notOnInit) { CodeMirror.defaults[name] = deflt; - if (handle) { - optionHandlers[name] = notOnInit - ? function (cm, val, old) { - if (old != Init) { - handle(cm, val, old); - } - } - : handle; - } + if (handle) { optionHandlers[name] = + notOnInit ? function (cm, val, old) {if (old != Init) { handle(cm, val, old); }} : handle; } } CodeMirror.defineOption = option; @@ -11611,272 +7753,132 @@ // These two are, on init, called from the constructor because they // have to be initialized before the editor can start at all. - option( - 'value', - '', - function (cm, val) { - return cm.setValue(val); - }, - true, - ); - option( - 'mode', - null, - function (cm, val) { - cm.doc.modeOption = val; - loadMode(cm); - }, - true, - ); - - option('indentUnit', 2, loadMode, true); - option('indentWithTabs', false); - option('smartIndent', true); - option( - 'tabSize', - 4, - function (cm) { - resetModeState(cm); - clearCaches(cm); - regChange(cm); - }, - true, - ); + option("value", "", function (cm, val) { return cm.setValue(val); }, true); + option("mode", null, function (cm, val) { + cm.doc.modeOption = val; + loadMode(cm); + }, true); + + option("indentUnit", 2, loadMode, true); + option("indentWithTabs", false); + option("smartIndent", true); + option("tabSize", 4, function (cm) { + resetModeState(cm); + clearCaches(cm); + regChange(cm); + }, true); - option('lineSeparator', null, function (cm, val) { + option("lineSeparator", null, function (cm, val) { cm.doc.lineSep = val; - if (!val) { - return; - } - var newBreaks = [], - lineNo = cm.doc.first; + if (!val) { return } + var newBreaks = [], lineNo = cm.doc.first; cm.doc.iter(function (line) { - for (var pos = 0; ; ) { + for (var pos = 0;;) { var found = line.text.indexOf(val, pos); - if (found == -1) { - break; - } + if (found == -1) { break } pos = found + val.length; newBreaks.push(Pos(lineNo, found)); } lineNo++; }); - for (var i = newBreaks.length - 1; i >= 0; i--) { - replaceRange( - cm.doc, - val, - newBreaks[i], - Pos(newBreaks[i].line, newBreaks[i].ch + val.length), - ); - } + for (var i = newBreaks.length - 1; i >= 0; i--) + { replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)); } }); - option( - 'specialChars', - /[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b-\u200f\u2028\u2029\ufeff\ufff9-\ufffc]/g, - function (cm, val, old) { - cm.state.specialChars = new RegExp( - val.source + (val.test('\t') ? '' : '|\t'), - 'g', - ); - if (old != Init) { - cm.refresh(); - } - }, - ); - option( - 'specialCharPlaceholder', - defaultSpecialCharPlaceholder, - function (cm) { - return cm.refresh(); - }, - true, - ); - option('electricChars', true); - option( - 'inputStyle', - mobile ? 'contenteditable' : 'textarea', - function () { - throw new Error( - 'inputStyle can not (yet) be changed in a running editor', - ); // FIXME - }, - true, - ); - option( - 'spellcheck', - false, - function (cm, val) { - return (cm.getInputField().spellcheck = val); - }, - true, - ); - option( - 'autocorrect', - false, - function (cm, val) { - return (cm.getInputField().autocorrect = val); - }, - true, - ); - option( - 'autocapitalize', - false, - function (cm, val) { - return (cm.getInputField().autocapitalize = val); - }, - true, - ); - option('rtlMoveVisually', !windows); - option('wholeLineUpdateBefore', true); - - option( - 'theme', - 'default', - function (cm) { - themeChanged(cm); - updateGutters(cm); - }, - true, - ); - option('keyMap', 'default', function (cm, val, old) { + option("specialChars", /[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b\u200e\u200f\u2028\u2029\u202d\u202e\u2066\u2067\u2069\ufeff\ufff9-\ufffc]/g, function (cm, val, old) { + cm.state.specialChars = new RegExp(val.source + (val.test("\t") ? "" : "|\t"), "g"); + if (old != Init) { cm.refresh(); } + }); + option("specialCharPlaceholder", defaultSpecialCharPlaceholder, function (cm) { return cm.refresh(); }, true); + option("electricChars", true); + option("inputStyle", mobile ? "contenteditable" : "textarea", function () { + throw new Error("inputStyle can not (yet) be changed in a running editor") // FIXME + }, true); + option("spellcheck", false, function (cm, val) { return cm.getInputField().spellcheck = val; }, true); + option("autocorrect", false, function (cm, val) { return cm.getInputField().autocorrect = val; }, true); + option("autocapitalize", false, function (cm, val) { return cm.getInputField().autocapitalize = val; }, true); + option("rtlMoveVisually", !windows); + option("wholeLineUpdateBefore", true); + + option("theme", "default", function (cm) { + themeChanged(cm); + updateGutters(cm); + }, true); + option("keyMap", "default", function (cm, val, old) { var next = getKeyMap(val); var prev = old != Init && getKeyMap(old); - if (prev && prev.detach) { - prev.detach(cm, next); - } - if (next.attach) { - next.attach(cm, prev || null); - } + if (prev && prev.detach) { prev.detach(cm, next); } + if (next.attach) { next.attach(cm, prev || null); } }); - option('extraKeys', null); - option('configureMouse', null); - - option('lineWrapping', false, wrappingChanged, true); - option( - 'gutters', - [], - function (cm, val) { - cm.display.gutterSpecs = getGutters(val, cm.options.lineNumbers); - updateGutters(cm); - }, - true, - ); - option( - 'fixedGutter', - true, - function (cm, val) { - cm.display.gutters.style.left = val - ? compensateForHScroll(cm.display) + 'px' - : '0'; - cm.refresh(); - }, - true, - ); - option( - 'coverGutterNextToScrollbar', - false, - function (cm) { - return updateScrollbars(cm); - }, - true, - ); - option( - 'scrollbarStyle', - 'native', - function (cm) { - initScrollbars(cm); - updateScrollbars(cm); - cm.display.scrollbars.setScrollTop(cm.doc.scrollTop); - cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft); - }, - true, - ); - option( - 'lineNumbers', - false, - function (cm, val) { - cm.display.gutterSpecs = getGutters(cm.options.gutters, val); - updateGutters(cm); - }, - true, - ); - option('firstLineNumber', 1, updateGutters, true); - option( - 'lineNumberFormatter', - function (integer) { - return integer; - }, - updateGutters, - true, - ); - option('showCursorWhenSelecting', false, updateSelection, true); - - option('resetSelectionOnContextMenu', true); - option('lineWiseCopyCut', true); - option('pasteLinesPerSelection', true); - option('selectionsMayTouch', false); - - option('readOnly', false, function (cm, val) { - if (val == 'nocursor') { + option("extraKeys", null); + option("configureMouse", null); + + option("lineWrapping", false, wrappingChanged, true); + option("gutters", [], function (cm, val) { + cm.display.gutterSpecs = getGutters(val, cm.options.lineNumbers); + updateGutters(cm); + }, true); + option("fixedGutter", true, function (cm, val) { + cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + "px" : "0"; + cm.refresh(); + }, true); + option("coverGutterNextToScrollbar", false, function (cm) { return updateScrollbars(cm); }, true); + option("scrollbarStyle", "native", function (cm) { + initScrollbars(cm); + updateScrollbars(cm); + cm.display.scrollbars.setScrollTop(cm.doc.scrollTop); + cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft); + }, true); + option("lineNumbers", false, function (cm, val) { + cm.display.gutterSpecs = getGutters(cm.options.gutters, val); + updateGutters(cm); + }, true); + option("firstLineNumber", 1, updateGutters, true); + option("lineNumberFormatter", function (integer) { return integer; }, updateGutters, true); + option("showCursorWhenSelecting", false, updateSelection, true); + + option("resetSelectionOnContextMenu", true); + option("lineWiseCopyCut", true); + option("pasteLinesPerSelection", true); + option("selectionsMayTouch", false); + + option("readOnly", false, function (cm, val) { + if (val == "nocursor") { onBlur(cm); cm.display.input.blur(); } cm.display.input.readOnlyChanged(val); }); - option( - 'disableInput', - false, - function (cm, val) { - if (!val) { - cm.display.input.reset(); - } - }, - true, - ); - option('dragDrop', true, dragDropChanged); - option('allowDropFileTypes', null); - - option('cursorBlinkRate', 530); - option('cursorScrollMargin', 0); - option('cursorHeight', 1, updateSelection, true); - option('singleCursorHeightPerLine', true, updateSelection, true); - option('workTime', 100); - option('workDelay', 100); - option('flattenSpans', true, resetModeState, true); - option('addModeClass', false, resetModeState, true); - option('pollInterval', 100); - option('undoDepth', 200, function (cm, val) { - return (cm.doc.history.undoDepth = val); - }); - option('historyEventDelay', 1250); - option( - 'viewportMargin', - 10, - function (cm) { - return cm.refresh(); - }, - true, - ); - option('maxHighlightLength', 10000, resetModeState, true); - option('moveInputWithCursor', true, function (cm, val) { - if (!val) { - cm.display.input.resetPosition(); - } + + option("screenReaderLabel", null, function (cm, val) { + val = (val === '') ? null : val; + cm.display.input.screenReaderLabelChanged(val); }); - option('tabindex', null, function (cm, val) { - return (cm.display.input.getField().tabIndex = val || ''); + option("disableInput", false, function (cm, val) {if (!val) { cm.display.input.reset(); }}, true); + option("dragDrop", true, dragDropChanged); + option("allowDropFileTypes", null); + + option("cursorBlinkRate", 530); + option("cursorScrollMargin", 0); + option("cursorHeight", 1, updateSelection, true); + option("singleCursorHeightPerLine", true, updateSelection, true); + option("workTime", 100); + option("workDelay", 100); + option("flattenSpans", true, resetModeState, true); + option("addModeClass", false, resetModeState, true); + option("pollInterval", 100); + option("undoDepth", 200, function (cm, val) { return cm.doc.history.undoDepth = val; }); + option("historyEventDelay", 1250); + option("viewportMargin", 10, function (cm) { return cm.refresh(); }, true); + option("maxHighlightLength", 10000, resetModeState, true); + option("moveInputWithCursor", true, function (cm, val) { + if (!val) { cm.display.input.resetPosition(); } }); - option('autofocus', null); - option( - 'direction', - 'ltr', - function (cm, val) { - return cm.doc.setDirection(val); - }, - true, - ); - option('phrases', null); + + option("tabindex", null, function (cm, val) { return cm.display.input.getField().tabIndex = val || ""; }); + option("autofocus", null); + option("direction", "ltr", function (cm, val) { return cm.doc.setDirection(val); }, true); + option("phrases", null); } function dragDropChanged(cm, value, old) { @@ -11884,29 +7886,27 @@ if (!value != !wasOn) { var funcs = cm.display.dragFunctions; var toggle = value ? on : off; - toggle(cm.display.scroller, 'dragstart', funcs.start); - toggle(cm.display.scroller, 'dragenter', funcs.enter); - toggle(cm.display.scroller, 'dragover', funcs.over); - toggle(cm.display.scroller, 'dragleave', funcs.leave); - toggle(cm.display.scroller, 'drop', funcs.drop); + toggle(cm.display.scroller, "dragstart", funcs.start); + toggle(cm.display.scroller, "dragenter", funcs.enter); + toggle(cm.display.scroller, "dragover", funcs.over); + toggle(cm.display.scroller, "dragleave", funcs.leave); + toggle(cm.display.scroller, "drop", funcs.drop); } } function wrappingChanged(cm) { if (cm.options.lineWrapping) { - addClass(cm.display.wrapper, 'CodeMirror-wrap'); - cm.display.sizer.style.minWidth = ''; + addClass(cm.display.wrapper, "CodeMirror-wrap"); + cm.display.sizer.style.minWidth = ""; cm.display.sizerWidth = null; } else { - rmClass(cm.display.wrapper, 'CodeMirror-wrap'); + rmClass(cm.display.wrapper, "CodeMirror-wrap"); findMaxLine(cm); } estimateLineHeights(cm); regChange(cm); clearCaches(cm); - setTimeout(function () { - return updateScrollbars(cm); - }, 100); + setTimeout(function () { return updateScrollbars(cm); }, 100); } // A CodeMirror instance represents an editor. This is the object @@ -11915,65 +7915,46 @@ function CodeMirror(place, options) { var this$1 = this; - if (!(this instanceof CodeMirror)) { - return new CodeMirror(place, options); - } + if (!(this instanceof CodeMirror)) { return new CodeMirror(place, options) } this.options = options = options ? copyObj(options) : {}; // Determine effective options based on given values and defaults. copyObj(defaults, options, false); var doc = options.value; - if (typeof doc == 'string') { - doc = new Doc( - doc, - options.mode, - null, - options.lineSeparator, - options.direction, - ); - } else if (options.mode) { - doc.modeOption = options.mode; - } + if (typeof doc == "string") { doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction); } + else if (options.mode) { doc.modeOption = options.mode; } this.doc = doc; var input = new CodeMirror.inputStyles[options.inputStyle](this); - var display = (this.display = new Display(place, doc, input, options)); + var display = this.display = new Display(place, doc, input, options); display.wrapper.CodeMirror = this; themeChanged(this); - if (options.lineWrapping) { - this.display.wrapper.className += ' CodeMirror-wrap'; - } + if (options.lineWrapping) + { this.display.wrapper.className += " CodeMirror-wrap"; } initScrollbars(this); this.state = { - keyMaps: [], // stores maps added by addKeyMap + keyMaps: [], // stores maps added by addKeyMap overlays: [], // highlighting overlays, as added by addOverlay - modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info + modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info overwrite: false, delayingBlurEvent: false, focused: false, suppressEdits: false, // used to disable editing during key handlers when in readOnly mode - pasteIncoming: -1, - cutIncoming: -1, // help recognize paste/cut edits in input.poll + pasteIncoming: -1, cutIncoming: -1, // help recognize paste/cut edits in input.poll selectingText: false, draggingText: false, highlight: new Delayed(), // stores highlight worker timeout - keySeq: null, // Unfinished key sequence - specialChars: null, + keySeq: null, // Unfinished key sequence + specialChars: null }; - if (options.autofocus && !mobile) { - display.input.focus(); - } + if (options.autofocus && !mobile) { display.input.focus(); } // Override magic textarea content restore that IE sometimes does // on our hidden textarea on reload - if (ie && ie_version < 11) { - setTimeout(function () { - return this$1.display.input.reset(true); - }, 20); - } + if (ie && ie_version < 11) { setTimeout(function () { return this$1.display.input.reset(true); }, 20); } registerEventHandlers(this); ensureGlobalHandlers(); @@ -11982,34 +7963,24 @@ this.curOp.forceUpdate = true; attachDoc(this, doc); - if ((options.autofocus && !mobile) || this.hasFocus()) { - setTimeout(bind(onFocus, this), 20); - } else { - onBlur(this); - } + if ((options.autofocus && !mobile) || this.hasFocus()) + { setTimeout(function () { + if (this$1.hasFocus() && !this$1.state.focused) { onFocus(this$1); } + }, 20); } + else + { onBlur(this); } - for (var opt in optionHandlers) { - if (optionHandlers.hasOwnProperty(opt)) { - optionHandlers[opt](this$1, options[opt], Init); - } - } + for (var opt in optionHandlers) { if (optionHandlers.hasOwnProperty(opt)) + { optionHandlers[opt](this, options[opt], Init); } } maybeUpdateLineNumberWidth(this); - if (options.finishInit) { - options.finishInit(this); - } - for (var i = 0; i < initHooks.length; ++i) { - initHooks[i](this$1); - } + if (options.finishInit) { options.finishInit(this); } + for (var i = 0; i < initHooks.length; ++i) { initHooks[i](this); } endOperation(this); // Suppress optimizelegibility in Webkit, since it breaks text // measuring on line wrapping boundaries. - if ( - webkit && - options.lineWrapping && - getComputedStyle(display.lineDiv).textRendering == 'optimizelegibility' - ) { - display.lineDiv.style.textRendering = 'auto'; - } + if (webkit && options.lineWrapping && + getComputedStyle(display.lineDiv).textRendering == "optimizelegibility") + { display.lineDiv.style.textRendering = "auto"; } } // The default configuration options. @@ -12020,190 +7991,116 @@ // Attach the necessary event handlers when initializing the editor function registerEventHandlers(cm) { var d = cm.display; - on(d.scroller, 'mousedown', operation(cm, onMouseDown)); + on(d.scroller, "mousedown", operation(cm, onMouseDown)); // Older IE's will not fire a second mousedown for a double click - if (ie && ie_version < 11) { - on( - d.scroller, - 'dblclick', - operation(cm, function (e) { - if (signalDOMEvent(cm, e)) { - return; - } - var pos = posFromMouse(cm, e); - if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) { - return; - } - e_preventDefault(e); - var word = cm.findWordAt(pos); - extendSelection(cm.doc, word.anchor, word.head); - }), - ); - } else { - on(d.scroller, 'dblclick', function (e) { - return signalDOMEvent(cm, e) || e_preventDefault(e); - }); - } + if (ie && ie_version < 11) + { on(d.scroller, "dblclick", operation(cm, function (e) { + if (signalDOMEvent(cm, e)) { return } + var pos = posFromMouse(cm, e); + if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) { return } + e_preventDefault(e); + var word = cm.findWordAt(pos); + extendSelection(cm.doc, word.anchor, word.head); + })); } + else + { on(d.scroller, "dblclick", function (e) { return signalDOMEvent(cm, e) || e_preventDefault(e); }); } // Some browsers fire contextmenu *after* opening the menu, at // which point we can't mess with it anymore. Context menu is // handled in onMouseDown for these browsers. - on(d.scroller, 'contextmenu', function (e) { - return onContextMenu(cm, e); - }); - on(d.input.getField(), 'contextmenu', function (e) { - if (!d.scroller.contains(e.target)) { - onContextMenu(cm, e); - } + on(d.scroller, "contextmenu", function (e) { return onContextMenu(cm, e); }); + on(d.input.getField(), "contextmenu", function (e) { + if (!d.scroller.contains(e.target)) { onContextMenu(cm, e); } }); // Used to suppress mouse event handling when a touch happens - var touchFinished, - prevTouch = { end: 0 }; + var touchFinished, prevTouch = {end: 0}; function finishTouch() { if (d.activeTouch) { - touchFinished = setTimeout(function () { - return (d.activeTouch = null); - }, 1000); + touchFinished = setTimeout(function () { return d.activeTouch = null; }, 1000); prevTouch = d.activeTouch; - prevTouch.end = +new Date(); + prevTouch.end = +new Date; } } function isMouseLikeTouchEvent(e) { - if (e.touches.length != 1) { - return false; - } + if (e.touches.length != 1) { return false } var touch = e.touches[0]; - return touch.radiusX <= 1 && touch.radiusY <= 1; + return touch.radiusX <= 1 && touch.radiusY <= 1 } function farAway(touch, other) { - if (other.left == null) { - return true; - } - var dx = other.left - touch.left, - dy = other.top - touch.top; - return dx * dx + dy * dy > 20 * 20; - } - on(d.scroller, 'touchstart', function (e) { - if ( - !signalDOMEvent(cm, e) && - !isMouseLikeTouchEvent(e) && - !clickInGutter(cm, e) - ) { + if (other.left == null) { return true } + var dx = other.left - touch.left, dy = other.top - touch.top; + return dx * dx + dy * dy > 20 * 20 + } + on(d.scroller, "touchstart", function (e) { + if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e) && !clickInGutter(cm, e)) { d.input.ensurePolled(); clearTimeout(touchFinished); - var now = +new Date(); - d.activeTouch = { - start: now, - moved: false, - prev: now - prevTouch.end <= 300 ? prevTouch : null, - }; + var now = +new Date; + d.activeTouch = {start: now, moved: false, + prev: now - prevTouch.end <= 300 ? prevTouch : null}; if (e.touches.length == 1) { d.activeTouch.left = e.touches[0].pageX; d.activeTouch.top = e.touches[0].pageY; } } }); - on(d.scroller, 'touchmove', function () { - if (d.activeTouch) { - d.activeTouch.moved = true; - } + on(d.scroller, "touchmove", function () { + if (d.activeTouch) { d.activeTouch.moved = true; } }); - on(d.scroller, 'touchend', function (e) { + on(d.scroller, "touchend", function (e) { var touch = d.activeTouch; - if ( - touch && - !eventInWidget(d, e) && - touch.left != null && - !touch.moved && - new Date() - touch.start < 300 - ) { - var pos = cm.coordsChar(d.activeTouch, 'page'), - range; - if (!touch.prev || farAway(touch, touch.prev)) { - // Single tap - range = new Range(pos, pos); - } else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) { - // Double tap - range = cm.findWordAt(pos); - } // Triple tap - else { - range = new Range( - Pos(pos.line, 0), - clipPos(cm.doc, Pos(pos.line + 1, 0)), - ); - } + if (touch && !eventInWidget(d, e) && touch.left != null && + !touch.moved && new Date - touch.start < 300) { + var pos = cm.coordsChar(d.activeTouch, "page"), range; + if (!touch.prev || farAway(touch, touch.prev)) // Single tap + { range = new Range(pos, pos); } + else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap + { range = cm.findWordAt(pos); } + else // Triple tap + { range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))); } cm.setSelection(range.anchor, range.head); cm.focus(); e_preventDefault(e); } finishTouch(); }); - on(d.scroller, 'touchcancel', finishTouch); + on(d.scroller, "touchcancel", finishTouch); // Sync scrolling between fake scrollbars and real scrollable // area, ensure viewport is updated when scrolling. - on(d.scroller, 'scroll', function () { + on(d.scroller, "scroll", function () { if (d.scroller.clientHeight) { updateScrollTop(cm, d.scroller.scrollTop); setScrollLeft(cm, d.scroller.scrollLeft, true); - signal(cm, 'scroll', cm); + signal(cm, "scroll", cm); } }); // Listen to wheel events in order to try and update the viewport on time. - on(d.scroller, 'mousewheel', function (e) { - return onScrollWheel(cm, e); - }); - on(d.scroller, 'DOMMouseScroll', function (e) { - return onScrollWheel(cm, e); - }); + on(d.scroller, "mousewheel", function (e) { return onScrollWheel(cm, e); }); + on(d.scroller, "DOMMouseScroll", function (e) { return onScrollWheel(cm, e); }); // Prevent wrapper from ever scrolling - on(d.wrapper, 'scroll', function () { - return (d.wrapper.scrollTop = d.wrapper.scrollLeft = 0); - }); + on(d.wrapper, "scroll", function () { return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; }); d.dragFunctions = { - enter: function (e) { - if (!signalDOMEvent(cm, e)) { - e_stop(e); - } - }, - over: function (e) { - if (!signalDOMEvent(cm, e)) { - onDragOver(cm, e); - e_stop(e); - } - }, - start: function (e) { - return onDragStart(cm, e); - }, + enter: function (e) {if (!signalDOMEvent(cm, e)) { e_stop(e); }}, + over: function (e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e); }}, + start: function (e) { return onDragStart(cm, e); }, drop: operation(cm, onDrop), - leave: function (e) { - if (!signalDOMEvent(cm, e)) { - clearDragCursor(cm); - } - }, + leave: function (e) {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm); }} }; var inp = d.input.getField(); - on(inp, 'keyup', function (e) { - return onKeyUp.call(cm, e); - }); - on(inp, 'keydown', operation(cm, onKeyDown)); - on(inp, 'keypress', operation(cm, onKeyPress)); - on(inp, 'focus', function (e) { - return onFocus(cm, e); - }); - on(inp, 'blur', function (e) { - return onBlur(cm, e); - }); + on(inp, "keyup", function (e) { return onKeyUp.call(cm, e); }); + on(inp, "keydown", operation(cm, onKeyDown)); + on(inp, "keypress", operation(cm, onKeyPress)); + on(inp, "focus", function (e) { return onFocus(cm, e); }); + on(inp, "blur", function (e) { return onBlur(cm, e); }); } var initHooks = []; - CodeMirror.defineInitHook = function (f) { - return initHooks.push(f); - }; + CodeMirror.defineInitHook = function (f) { return initHooks.push(f); }; // Indent the given line. The how parameter can be "smart", // "add"/null, "subtract", or "prev". When aggressive is false @@ -12211,82 +8108,50 @@ // lines are not indented, and places where the mode returns Pass // are left alone. function indentLine(cm, n, how, aggressive) { - var doc = cm.doc, - state; - if (how == null) { - how = 'add'; - } - if (how == 'smart') { + var doc = cm.doc, state; + if (how == null) { how = "add"; } + if (how == "smart") { // Fall back to "prev" when the mode doesn't have an indentation // method. - if (!doc.mode.indent) { - how = 'prev'; - } else { - state = getContextBefore(cm, n).state; - } + if (!doc.mode.indent) { how = "prev"; } + else { state = getContextBefore(cm, n).state; } } var tabSize = cm.options.tabSize; - var line = getLine(doc, n), - curSpace = countColumn(line.text, null, tabSize); - if (line.stateAfter) { - line.stateAfter = null; - } - var curSpaceString = line.text.match(/^\s*/)[0], - indentation; + var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize); + if (line.stateAfter) { line.stateAfter = null; } + var curSpaceString = line.text.match(/^\s*/)[0], indentation; if (!aggressive && !/\S/.test(line.text)) { indentation = 0; - how = 'not'; - } else if (how == 'smart') { - indentation = doc.mode.indent( - state, - line.text.slice(curSpaceString.length), - line.text, - ); + how = "not"; + } else if (how == "smart") { + indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text); if (indentation == Pass || indentation > 150) { - if (!aggressive) { - return; - } - how = 'prev'; + if (!aggressive) { return } + how = "prev"; } } - if (how == 'prev') { - if (n > doc.first) { - indentation = countColumn(getLine(doc, n - 1).text, null, tabSize); - } else { - indentation = 0; - } - } else if (how == 'add') { + if (how == "prev") { + if (n > doc.first) { indentation = countColumn(getLine(doc, n-1).text, null, tabSize); } + else { indentation = 0; } + } else if (how == "add") { indentation = curSpace + cm.options.indentUnit; - } else if (how == 'subtract') { + } else if (how == "subtract") { indentation = curSpace - cm.options.indentUnit; - } else if (typeof how == 'number') { + } else if (typeof how == "number") { indentation = curSpace + how; } indentation = Math.max(0, indentation); - var indentString = '', - pos = 0; - if (cm.options.indentWithTabs) { - for (var i = Math.floor(indentation / tabSize); i; --i) { - pos += tabSize; - indentString += '\t'; - } - } - if (pos < indentation) { - indentString += spaceStr(indentation - pos); - } + var indentString = "", pos = 0; + if (cm.options.indentWithTabs) + { for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += "\t";} } + if (pos < indentation) { indentString += spaceStr(indentation - pos); } if (indentString != curSpaceString) { - replaceRange( - doc, - indentString, - Pos(n, 0), - Pos(n, curSpaceString.length), - '+input', - ); + replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), "+input"); line.stateAfter = null; - return true; + return true } else { // Ensure that, if the cursor was in the whitespace at the start // of the line, it is moved to the end of that space. @@ -12295,7 +8160,7 @@ if (range.head.line == n && range.head.ch < curSpaceString.length) { var pos$1 = Pos(n, curSpaceString.length); replaceOneSelection(doc, i$1, new Range(pos$1, pos$1)); - break; + break } } } @@ -12313,182 +8178,114 @@ function applyTextInput(cm, inserted, deleted, sel, origin) { var doc = cm.doc; cm.display.shift = false; - if (!sel) { - sel = doc.sel; - } + if (!sel) { sel = doc.sel; } - var recent = +new Date() - 200; - var paste = origin == 'paste' || cm.state.pasteIncoming > recent; - var textLines = splitLinesAuto(inserted), - multiPaste = null; + var recent = +new Date - 200; + var paste = origin == "paste" || cm.state.pasteIncoming > recent; + var textLines = splitLinesAuto(inserted), multiPaste = null; // When pasting N lines into N selections, insert one line per selection if (paste && sel.ranges.length > 1) { - if (lastCopied && lastCopied.text.join('\n') == inserted) { + if (lastCopied && lastCopied.text.join("\n") == inserted) { if (sel.ranges.length % lastCopied.text.length == 0) { multiPaste = []; - for (var i = 0; i < lastCopied.text.length; i++) { - multiPaste.push(doc.splitLines(lastCopied.text[i])); - } + for (var i = 0; i < lastCopied.text.length; i++) + { multiPaste.push(doc.splitLines(lastCopied.text[i])); } } - } else if ( - textLines.length == sel.ranges.length && - cm.options.pasteLinesPerSelection - ) { - multiPaste = map(textLines, function (l) { - return [l]; - }); + } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) { + multiPaste = map(textLines, function (l) { return [l]; }); } } var updateInput = cm.curOp.updateInput; // Normal behavior is to insert the new text into every selection for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) { - var range$$1 = sel.ranges[i$1]; - var from = range$$1.from(), - to = range$$1.to(); - if (range$$1.empty()) { - if (deleted && deleted > 0) { - // Handle deletion - from = Pos(from.line, from.ch - deleted); - } else if (cm.state.overwrite && !paste) { - // Handle overwrite - to = Pos( - to.line, - Math.min( - getLine(doc, to.line).text.length, - to.ch + lst(textLines).length, - ), - ); - } else if ( - paste && - lastCopied && - lastCopied.lineWise && - lastCopied.text.join('\n') == inserted - ) { - from = to = Pos(from.line, 0); - } - } - var changeEvent = { - from: from, - to: to, - text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines, - origin: - origin || - (paste ? 'paste' : cm.state.cutIncoming > recent ? 'cut' : '+input'), - }; + var range = sel.ranges[i$1]; + var from = range.from(), to = range.to(); + if (range.empty()) { + if (deleted && deleted > 0) // Handle deletion + { from = Pos(from.line, from.ch - deleted); } + else if (cm.state.overwrite && !paste) // Handle overwrite + { to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); } + else if (paste && lastCopied && lastCopied.lineWise && lastCopied.text.join("\n") == textLines.join("\n")) + { from = to = Pos(from.line, 0); } + } + var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines, + origin: origin || (paste ? "paste" : cm.state.cutIncoming > recent ? "cut" : "+input")}; makeChange(cm.doc, changeEvent); - signalLater(cm, 'inputRead', cm, changeEvent); - } - if (inserted && !paste) { - triggerElectric(cm, inserted); + signalLater(cm, "inputRead", cm, changeEvent); } + if (inserted && !paste) + { triggerElectric(cm, inserted); } ensureCursorVisible(cm); - if (cm.curOp.updateInput < 2) { - cm.curOp.updateInput = updateInput; - } + if (cm.curOp.updateInput < 2) { cm.curOp.updateInput = updateInput; } cm.curOp.typing = true; cm.state.pasteIncoming = cm.state.cutIncoming = -1; } function handlePaste(e, cm) { - var pasted = e.clipboardData && e.clipboardData.getData('Text'); + var pasted = e.clipboardData && e.clipboardData.getData("Text"); if (pasted) { e.preventDefault(); - if (!cm.isReadOnly() && !cm.options.disableInput) { - runInOp(cm, function () { - return applyTextInput(cm, pasted, 0, null, 'paste'); - }); - } - return true; + if (!cm.isReadOnly() && !cm.options.disableInput && cm.hasFocus()) + { runInOp(cm, function () { return applyTextInput(cm, pasted, 0, null, "paste"); }); } + return true } } function triggerElectric(cm, inserted) { // When an 'electric' character is inserted, immediately trigger a reindent - if (!cm.options.electricChars || !cm.options.smartIndent) { - return; - } + if (!cm.options.electricChars || !cm.options.smartIndent) { return } var sel = cm.doc.sel; for (var i = sel.ranges.length - 1; i >= 0; i--) { - var range$$1 = sel.ranges[i]; - if ( - range$$1.head.ch > 100 || - (i && sel.ranges[i - 1].head.line == range$$1.head.line) - ) { - continue; - } - var mode = cm.getModeAt(range$$1.head); + var range = sel.ranges[i]; + if (range.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range.head.line)) { continue } + var mode = cm.getModeAt(range.head); var indented = false; if (mode.electricChars) { - for (var j = 0; j < mode.electricChars.length; j++) { - if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) { - indented = indentLine(cm, range$$1.head.line, 'smart'); - break; - } - } + for (var j = 0; j < mode.electricChars.length; j++) + { if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) { + indented = indentLine(cm, range.head.line, "smart"); + break + } } } else if (mode.electricInput) { - if ( - mode.electricInput.test( - getLine(cm.doc, range$$1.head.line).text.slice(0, range$$1.head.ch), - ) - ) { - indented = indentLine(cm, range$$1.head.line, 'smart'); - } - } - if (indented) { - signalLater(cm, 'electricInput', cm, range$$1.head.line); + if (mode.electricInput.test(getLine(cm.doc, range.head.line).text.slice(0, range.head.ch))) + { indented = indentLine(cm, range.head.line, "smart"); } } + if (indented) { signalLater(cm, "electricInput", cm, range.head.line); } } } function copyableRanges(cm) { - var text = [], - ranges = []; + var text = [], ranges = []; for (var i = 0; i < cm.doc.sel.ranges.length; i++) { var line = cm.doc.sel.ranges[i].head.line; - var lineRange = { anchor: Pos(line, 0), head: Pos(line + 1, 0) }; + var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)}; ranges.push(lineRange); text.push(cm.getRange(lineRange.anchor, lineRange.head)); } - return { text: text, ranges: ranges }; + return {text: text, ranges: ranges} } function disableBrowserMagic(field, spellcheck, autocorrect, autocapitalize) { - field.setAttribute('autocorrect', autocorrect ? '' : 'off'); - field.setAttribute('autocapitalize', autocapitalize ? '' : 'off'); - field.setAttribute('spellcheck', !!spellcheck); + field.setAttribute("autocorrect", autocorrect ? "on" : "off"); + field.setAttribute("autocapitalize", autocapitalize ? "on" : "off"); + field.setAttribute("spellcheck", !!spellcheck); } function hiddenTextarea() { - var te = elt( - 'textarea', - null, - null, - 'position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none', - ); - var div = elt( - 'div', - [te], - null, - 'overflow: hidden; position: relative; width: 3px; height: 0px;', - ); + var te = elt("textarea", null, null, "position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; min-height: 1em; outline: none"); + var div = elt("div", [te], null, "overflow: hidden; position: relative; width: 3px; height: 0px;"); // The textarea is kept positioned near the cursor to prevent the // fact that it'll be scrolled into view on input from scrolling // our fake cursor out of view. On webkit, when wrap=off, paste is // very slow. So make the area wide instead. - if (webkit) { - te.style.width = '1000px'; - } else { - te.setAttribute('wrap', 'off'); - } + if (webkit) { te.style.width = "1000px"; } + else { te.setAttribute("wrap", "off"); } // If border: 0; -- iOS fails to open keyboard (issue #1287) - if (ios) { - te.style.border = '1px solid black'; - } - disableBrowserMagic(te); - return div; + if (ios) { te.style.border = "1px solid black"; } + return div } // The publicly visible API. Note that methodOp(f) means @@ -12502,200 +8299,133 @@ function addEditorMethods(CodeMirror) { var optionHandlers = CodeMirror.optionHandlers; - var helpers = (CodeMirror.helpers = {}); + var helpers = CodeMirror.helpers = {}; CodeMirror.prototype = { constructor: CodeMirror, - focus: function () { - window.focus(); - this.display.input.focus(); - }, + focus: function(){win(this).focus(); this.display.input.focus();}, - setOption: function (option, value) { - var options = this.options, - old = options[option]; - if (options[option] == value && option != 'mode') { - return; - } + setOption: function(option, value) { + var options = this.options, old = options[option]; + if (options[option] == value && option != "mode") { return } options[option] = value; - if (optionHandlers.hasOwnProperty(option)) { - operation(this, optionHandlers[option])(this, value, old); - } - signal(this, 'optionChange', this, option); + if (optionHandlers.hasOwnProperty(option)) + { operation(this, optionHandlers[option])(this, value, old); } + signal(this, "optionChange", this, option); }, - getOption: function (option) { - return this.options[option]; - }, - getDoc: function () { - return this.doc; - }, + getOption: function(option) {return this.options[option]}, + getDoc: function() {return this.doc}, - addKeyMap: function (map$$1, bottom) { - this.state.keyMaps[bottom ? 'push' : 'unshift'](getKeyMap(map$$1)); + addKeyMap: function(map, bottom) { + this.state.keyMaps[bottom ? "push" : "unshift"](getKeyMap(map)); }, - removeKeyMap: function (map$$1) { + removeKeyMap: function(map) { var maps = this.state.keyMaps; - for (var i = 0; i < maps.length; ++i) { - if (maps[i] == map$$1 || maps[i].name == map$$1) { + for (var i = 0; i < maps.length; ++i) + { if (maps[i] == map || maps[i].name == map) { maps.splice(i, 1); - return true; - } - } + return true + } } }, - addOverlay: methodOp(function (spec, options) { + addOverlay: methodOp(function(spec, options) { var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec); - if (mode.startState) { - throw new Error('Overlays may not be stateful.'); - } - insertSorted( - this.state.overlays, - { - mode: mode, - modeSpec: spec, - opaque: options && options.opaque, - priority: (options && options.priority) || 0, - }, - function (overlay) { - return overlay.priority; - }, - ); + if (mode.startState) { throw new Error("Overlays may not be stateful.") } + insertSorted(this.state.overlays, + {mode: mode, modeSpec: spec, opaque: options && options.opaque, + priority: (options && options.priority) || 0}, + function (overlay) { return overlay.priority; }); this.state.modeGen++; regChange(this); }), - removeOverlay: methodOp(function (spec) { - var this$1 = this; - + removeOverlay: methodOp(function(spec) { var overlays = this.state.overlays; for (var i = 0; i < overlays.length; ++i) { var cur = overlays[i].modeSpec; - if (cur == spec || (typeof spec == 'string' && cur.name == spec)) { + if (cur == spec || typeof spec == "string" && cur.name == spec) { overlays.splice(i, 1); - this$1.state.modeGen++; - regChange(this$1); - return; + this.state.modeGen++; + regChange(this); + return } } }), - indentLine: methodOp(function (n, dir, aggressive) { - if (typeof dir != 'string' && typeof dir != 'number') { - if (dir == null) { - dir = this.options.smartIndent ? 'smart' : 'prev'; - } else { - dir = dir ? 'add' : 'subtract'; - } - } - if (isLine(this.doc, n)) { - indentLine(this, n, dir, aggressive); + indentLine: methodOp(function(n, dir, aggressive) { + if (typeof dir != "string" && typeof dir != "number") { + if (dir == null) { dir = this.options.smartIndent ? "smart" : "prev"; } + else { dir = dir ? "add" : "subtract"; } } + if (isLine(this.doc, n)) { indentLine(this, n, dir, aggressive); } }), - indentSelection: methodOp(function (how) { - var this$1 = this; - - var ranges = this.doc.sel.ranges, - end = -1; + indentSelection: methodOp(function(how) { + var ranges = this.doc.sel.ranges, end = -1; for (var i = 0; i < ranges.length; i++) { - var range$$1 = ranges[i]; - if (!range$$1.empty()) { - var from = range$$1.from(), - to = range$$1.to(); + var range = ranges[i]; + if (!range.empty()) { + var from = range.from(), to = range.to(); var start = Math.max(end, from.line); - end = Math.min(this$1.lastLine(), to.line - (to.ch ? 0 : 1)) + 1; - for (var j = start; j < end; ++j) { - indentLine(this$1, j, how); - } - var newRanges = this$1.doc.sel.ranges; - if ( - from.ch == 0 && - ranges.length == newRanges.length && - newRanges[i].from().ch > 0 - ) { - replaceOneSelection( - this$1.doc, - i, - new Range(from, newRanges[i].to()), - sel_dontScroll, - ); - } - } else if (range$$1.head.line > end) { - indentLine(this$1, range$$1.head.line, how, true); - end = range$$1.head.line; - if (i == this$1.doc.sel.primIndex) { - ensureCursorVisible(this$1); - } + end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1; + for (var j = start; j < end; ++j) + { indentLine(this, j, how); } + var newRanges = this.doc.sel.ranges; + if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0) + { replaceOneSelection(this.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll); } + } else if (range.head.line > end) { + indentLine(this, range.head.line, how, true); + end = range.head.line; + if (i == this.doc.sel.primIndex) { ensureCursorVisible(this); } } } }), // Fetch the parser token for a given character. Useful for hacks // that want to inspect the mode state (say, for completion). - getTokenAt: function (pos, precise) { - return takeToken(this, pos, precise); + getTokenAt: function(pos, precise) { + return takeToken(this, pos, precise) }, - getLineTokens: function (line, precise) { - return takeToken(this, Pos(line), precise, true); + getLineTokens: function(line, precise) { + return takeToken(this, Pos(line), precise, true) }, - getTokenTypeAt: function (pos) { + getTokenTypeAt: function(pos) { pos = clipPos(this.doc, pos); var styles = getLineStyles(this, getLine(this.doc, pos.line)); - var before = 0, - after = (styles.length - 1) / 2, - ch = pos.ch; + var before = 0, after = (styles.length - 1) / 2, ch = pos.ch; var type; - if (ch == 0) { - type = styles[2]; - } else { - for (;;) { - var mid = (before + after) >> 1; - if ((mid ? styles[mid * 2 - 1] : 0) >= ch) { - after = mid; - } else if (styles[mid * 2 + 1] < ch) { - before = mid + 1; - } else { - type = styles[mid * 2 + 2]; - break; - } - } - } - var cut = type ? type.indexOf('overlay ') : -1; - return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1); + if (ch == 0) { type = styles[2]; } + else { for (;;) { + var mid = (before + after) >> 1; + if ((mid ? styles[mid * 2 - 1] : 0) >= ch) { after = mid; } + else if (styles[mid * 2 + 1] < ch) { before = mid + 1; } + else { type = styles[mid * 2 + 2]; break } + } } + var cut = type ? type.indexOf("overlay ") : -1; + return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1) }, - getModeAt: function (pos) { + getModeAt: function(pos) { var mode = this.doc.mode; - if (!mode.innerMode) { - return mode; - } - return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode; + if (!mode.innerMode) { return mode } + return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode }, - getHelper: function (pos, type) { - return this.getHelpers(pos, type)[0]; - }, - - getHelpers: function (pos, type) { - var this$1 = this; + getHelper: function(pos, type) { + return this.getHelpers(pos, type)[0] + }, + getHelpers: function(pos, type) { var found = []; - if (!helpers.hasOwnProperty(type)) { - return found; - } - var help = helpers[type], - mode = this.getModeAt(pos); - if (typeof mode[type] == 'string') { - if (help[mode[type]]) { - found.push(help[mode[type]]); - } + if (!helpers.hasOwnProperty(type)) { return found } + var help = helpers[type], mode = this.getModeAt(pos); + if (typeof mode[type] == "string") { + if (help[mode[type]]) { found.push(help[mode[type]]); } } else if (mode[type]) { for (var i = 0; i < mode[type].length; i++) { var val = help[mode[type][i]]; - if (val) { - found.push(val); - } + if (val) { found.push(val); } } } else if (mode.helperType && help[mode.helperType]) { found.push(help[mode.helperType]); @@ -12704,137 +8434,91 @@ } for (var i$1 = 0; i$1 < help._global.length; i$1++) { var cur = help._global[i$1]; - if (cur.pred(mode, this$1) && indexOf(found, cur.val) == -1) { - found.push(cur.val); - } + if (cur.pred(mode, this) && indexOf(found, cur.val) == -1) + { found.push(cur.val); } } - return found; + return found }, - getStateAfter: function (line, precise) { + getStateAfter: function(line, precise) { var doc = this.doc; - line = clipLine(doc, line == null ? doc.first + doc.size - 1 : line); - return getContextBefore(this, line + 1, precise).state; + line = clipLine(doc, line == null ? doc.first + doc.size - 1: line); + return getContextBefore(this, line + 1, precise).state }, - cursorCoords: function (start, mode) { - var pos, - range$$1 = this.doc.sel.primary(); - if (start == null) { - pos = range$$1.head; - } else if (typeof start == 'object') { - pos = clipPos(this.doc, start); - } else { - pos = start ? range$$1.from() : range$$1.to(); - } - return cursorCoords(this, pos, mode || 'page'); + cursorCoords: function(start, mode) { + var pos, range = this.doc.sel.primary(); + if (start == null) { pos = range.head; } + else if (typeof start == "object") { pos = clipPos(this.doc, start); } + else { pos = start ? range.from() : range.to(); } + return cursorCoords(this, pos, mode || "page") }, - charCoords: function (pos, mode) { - return charCoords(this, clipPos(this.doc, pos), mode || 'page'); + charCoords: function(pos, mode) { + return charCoords(this, clipPos(this.doc, pos), mode || "page") }, - coordsChar: function (coords, mode) { - coords = fromCoordSystem(this, coords, mode || 'page'); - return coordsChar(this, coords.left, coords.top); + coordsChar: function(coords, mode) { + coords = fromCoordSystem(this, coords, mode || "page"); + return coordsChar(this, coords.left, coords.top) }, - lineAtHeight: function (height, mode) { - height = fromCoordSystem( - this, - { top: height, left: 0 }, - mode || 'page', - ).top; - return lineAtHeight(this.doc, height + this.display.viewOffset); + lineAtHeight: function(height, mode) { + height = fromCoordSystem(this, {top: height, left: 0}, mode || "page").top; + return lineAtHeight(this.doc, height + this.display.viewOffset) }, - heightAtLine: function (line, mode, includeWidgets) { - var end = false, - lineObj; - if (typeof line == 'number') { + heightAtLine: function(line, mode, includeWidgets) { + var end = false, lineObj; + if (typeof line == "number") { var last = this.doc.first + this.doc.size - 1; - if (line < this.doc.first) { - line = this.doc.first; - } else if (line > last) { - line = last; - end = true; - } + if (line < this.doc.first) { line = this.doc.first; } + else if (line > last) { line = last; end = true; } lineObj = getLine(this.doc, line); } else { lineObj = line; } - return ( - intoCoordSystem( - this, - lineObj, - { top: 0, left: 0 }, - mode || 'page', - includeWidgets || end, - ).top + (end ? this.doc.height - heightAtLine(lineObj) : 0) - ); + return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || "page", includeWidgets || end).top + + (end ? this.doc.height - heightAtLine(lineObj) : 0) }, - defaultTextHeight: function () { - return textHeight(this.display); - }, - defaultCharWidth: function () { - return charWidth(this.display); - }, + defaultTextHeight: function() { return textHeight(this.display) }, + defaultCharWidth: function() { return charWidth(this.display) }, - getViewport: function () { - return { from: this.display.viewFrom, to: this.display.viewTo }; - }, + getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo}}, - addWidget: function (pos, node, scroll, vert, horiz) { + addWidget: function(pos, node, scroll, vert, horiz) { var display = this.display; pos = cursorCoords(this, clipPos(this.doc, pos)); - var top = pos.bottom, - left = pos.left; - node.style.position = 'absolute'; - node.setAttribute('cm-ignore-events', 'true'); + var top = pos.bottom, left = pos.left; + node.style.position = "absolute"; + node.setAttribute("cm-ignore-events", "true"); this.display.input.setUneditable(node); display.sizer.appendChild(node); - if (vert == 'over') { + if (vert == "over") { top = pos.top; - } else if (vert == 'above' || vert == 'near') { + } else if (vert == "above" || vert == "near") { var vspace = Math.max(display.wrapper.clientHeight, this.doc.height), - hspace = Math.max( - display.sizer.clientWidth, - display.lineSpace.clientWidth, - ); + hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth); // Default to positioning above (if specified and possible); otherwise default to positioning below - if ( - (vert == 'above' || pos.bottom + node.offsetHeight > vspace) && - pos.top > node.offsetHeight - ) { - top = pos.top - node.offsetHeight; - } else if (pos.bottom + node.offsetHeight <= vspace) { - top = pos.bottom; - } - if (left + node.offsetWidth > hspace) { - left = hspace - node.offsetWidth; - } - } - node.style.top = top + 'px'; - node.style.left = node.style.right = ''; - if (horiz == 'right') { + if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight) + { top = pos.top - node.offsetHeight; } + else if (pos.bottom + node.offsetHeight <= vspace) + { top = pos.bottom; } + if (left + node.offsetWidth > hspace) + { left = hspace - node.offsetWidth; } + } + node.style.top = top + "px"; + node.style.left = node.style.right = ""; + if (horiz == "right") { left = display.sizer.clientWidth - node.offsetWidth; - node.style.right = '0px'; + node.style.right = "0px"; } else { - if (horiz == 'left') { - left = 0; - } else if (horiz == 'middle') { - left = (display.sizer.clientWidth - node.offsetWidth) / 2; - } - node.style.left = left + 'px'; - } - if (scroll) { - scrollIntoView(this, { - left: left, - top: top, - right: left + node.offsetWidth, - bottom: top + node.offsetHeight, - }); + if (horiz == "left") { left = 0; } + else if (horiz == "middle") { left = (display.sizer.clientWidth - node.offsetWidth) / 2; } + node.style.left = left + "px"; } + if (scroll) + { scrollIntoView(this, {left: left, top: top, right: left + node.offsetWidth, bottom: top + node.offsetHeight}); } }, triggerOnKeyDown: methodOp(onKeyDown), @@ -12842,462 +8526,310 @@ triggerOnKeyUp: onKeyUp, triggerOnMouseDown: methodOp(onMouseDown), - execCommand: function (cmd) { - if (commands.hasOwnProperty(cmd)) { - return commands[cmd].call(null, this); - } + execCommand: function(cmd) { + if (commands.hasOwnProperty(cmd)) + { return commands[cmd].call(null, this) } }, - triggerElectric: methodOp(function (text) { - triggerElectric(this, text); - }), - - findPosH: function (from, amount, unit, visually) { - var this$1 = this; + triggerElectric: methodOp(function(text) { triggerElectric(this, text); }), + findPosH: function(from, amount, unit, visually) { var dir = 1; - if (amount < 0) { - dir = -1; - amount = -amount; - } + if (amount < 0) { dir = -1; amount = -amount; } var cur = clipPos(this.doc, from); for (var i = 0; i < amount; ++i) { - cur = findPosH(this$1.doc, cur, dir, unit, visually); - if (cur.hitSide) { - break; - } + cur = findPosH(this.doc, cur, dir, unit, visually); + if (cur.hitSide) { break } } - return cur; + return cur }, - moveH: methodOp(function (dir, unit) { + moveH: methodOp(function(dir, unit) { var this$1 = this; - this.extendSelectionsBy(function (range$$1) { - if (this$1.display.shift || this$1.doc.extend || range$$1.empty()) { - return findPosH( - this$1.doc, - range$$1.head, - dir, - unit, - this$1.options.rtlMoveVisually, - ); - } else { - return dir < 0 ? range$$1.from() : range$$1.to(); - } + this.extendSelectionsBy(function (range) { + if (this$1.display.shift || this$1.doc.extend || range.empty()) + { return findPosH(this$1.doc, range.head, dir, unit, this$1.options.rtlMoveVisually) } + else + { return dir < 0 ? range.from() : range.to() } }, sel_move); }), - deleteH: methodOp(function (dir, unit) { - var sel = this.doc.sel, - doc = this.doc; - if (sel.somethingSelected()) { - doc.replaceSelection('', null, '+delete'); - } else { - deleteNearSelection(this, function (range$$1) { - var other = findPosH(doc, range$$1.head, dir, unit, false); - return dir < 0 - ? { from: other, to: range$$1.head } - : { from: range$$1.head, to: other }; - }); - } + deleteH: methodOp(function(dir, unit) { + var sel = this.doc.sel, doc = this.doc; + if (sel.somethingSelected()) + { doc.replaceSelection("", null, "+delete"); } + else + { deleteNearSelection(this, function (range) { + var other = findPosH(doc, range.head, dir, unit, false); + return dir < 0 ? {from: other, to: range.head} : {from: range.head, to: other} + }); } }), - findPosV: function (from, amount, unit, goalColumn) { - var this$1 = this; - - var dir = 1, - x = goalColumn; - if (amount < 0) { - dir = -1; - amount = -amount; - } + findPosV: function(from, amount, unit, goalColumn) { + var dir = 1, x = goalColumn; + if (amount < 0) { dir = -1; amount = -amount; } var cur = clipPos(this.doc, from); for (var i = 0; i < amount; ++i) { - var coords = cursorCoords(this$1, cur, 'div'); - if (x == null) { - x = coords.left; - } else { - coords.left = x; - } - cur = findPosV(this$1, coords, dir, unit); - if (cur.hitSide) { - break; - } + var coords = cursorCoords(this, cur, "div"); + if (x == null) { x = coords.left; } + else { coords.left = x; } + cur = findPosV(this, coords, dir, unit); + if (cur.hitSide) { break } } - return cur; + return cur }, - moveV: methodOp(function (dir, unit) { + moveV: methodOp(function(dir, unit) { var this$1 = this; - var doc = this.doc, - goals = []; - var collapse = - !this.display.shift && !doc.extend && doc.sel.somethingSelected(); - doc.extendSelectionsBy(function (range$$1) { - if (collapse) { - return dir < 0 ? range$$1.from() : range$$1.to(); - } - var headPos = cursorCoords(this$1, range$$1.head, 'div'); - if (range$$1.goalColumn != null) { - headPos.left = range$$1.goalColumn; - } + var doc = this.doc, goals = []; + var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected(); + doc.extendSelectionsBy(function (range) { + if (collapse) + { return dir < 0 ? range.from() : range.to() } + var headPos = cursorCoords(this$1, range.head, "div"); + if (range.goalColumn != null) { headPos.left = range.goalColumn; } goals.push(headPos.left); var pos = findPosV(this$1, headPos, dir, unit); - if (unit == 'page' && range$$1 == doc.sel.primary()) { - addToScrollTop( - this$1, - charCoords(this$1, pos, 'div').top - headPos.top, - ); - } - return pos; + if (unit == "page" && range == doc.sel.primary()) + { addToScrollTop(this$1, charCoords(this$1, pos, "div").top - headPos.top); } + return pos }, sel_move); - if (goals.length) { - for (var i = 0; i < doc.sel.ranges.length; i++) { - doc.sel.ranges[i].goalColumn = goals[i]; - } - } + if (goals.length) { for (var i = 0; i < doc.sel.ranges.length; i++) + { doc.sel.ranges[i].goalColumn = goals[i]; } } }), // Find the word at the given position (as returned by coordsChar). - findWordAt: function (pos) { - var doc = this.doc, - line = getLine(doc, pos.line).text; - var start = pos.ch, - end = pos.ch; + findWordAt: function(pos) { + var doc = this.doc, line = getLine(doc, pos.line).text; + var start = pos.ch, end = pos.ch; if (line) { - var helper = this.getHelper(pos, 'wordChars'); - if ((pos.sticky == 'before' || end == line.length) && start) { - --start; - } else { - ++end; - } + var helper = this.getHelper(pos, "wordChars"); + if ((pos.sticky == "before" || end == line.length) && start) { --start; } else { ++end; } var startChar = line.charAt(start); var check = isWordChar(startChar, helper) - ? function (ch) { - return isWordChar(ch, helper); - } - : /\s/.test(startChar) - ? function (ch) { - return /\s/.test(ch); - } - : function (ch) { - return !/\s/.test(ch) && !isWordChar(ch); - }; - while (start > 0 && check(line.charAt(start - 1))) { - --start; - } - while (end < line.length && check(line.charAt(end))) { - ++end; - } + ? function (ch) { return isWordChar(ch, helper); } + : /\s/.test(startChar) ? function (ch) { return /\s/.test(ch); } + : function (ch) { return (!/\s/.test(ch) && !isWordChar(ch)); }; + while (start > 0 && check(line.charAt(start - 1))) { --start; } + while (end < line.length && check(line.charAt(end))) { ++end; } } - return new Range(Pos(pos.line, start), Pos(pos.line, end)); + return new Range(Pos(pos.line, start), Pos(pos.line, end)) }, - toggleOverwrite: function (value) { - if (value != null && value == this.state.overwrite) { - return; - } - if ((this.state.overwrite = !this.state.overwrite)) { - addClass(this.display.cursorDiv, 'CodeMirror-overwrite'); - } else { - rmClass(this.display.cursorDiv, 'CodeMirror-overwrite'); - } + toggleOverwrite: function(value) { + if (value != null && value == this.state.overwrite) { return } + if (this.state.overwrite = !this.state.overwrite) + { addClass(this.display.cursorDiv, "CodeMirror-overwrite"); } + else + { rmClass(this.display.cursorDiv, "CodeMirror-overwrite"); } - signal(this, 'overwriteToggle', this, this.state.overwrite); - }, - hasFocus: function () { - return this.display.input.getField() == activeElt(); - }, - isReadOnly: function () { - return !!(this.options.readOnly || this.doc.cantEdit); + signal(this, "overwriteToggle", this, this.state.overwrite); }, + hasFocus: function() { return this.display.input.getField() == activeElt(root(this)) }, + isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit) }, - scrollTo: methodOp(function (x, y) { - scrollToCoords(this, x, y); - }), - getScrollInfo: function () { + scrollTo: methodOp(function (x, y) { scrollToCoords(this, x, y); }), + getScrollInfo: function() { var scroller = this.display.scroller; - return { - left: scroller.scrollLeft, - top: scroller.scrollTop, - height: - scroller.scrollHeight - scrollGap(this) - this.display.barHeight, - width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth, - clientHeight: displayHeight(this), - clientWidth: displayWidth(this), - }; + return {left: scroller.scrollLeft, top: scroller.scrollTop, + height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight, + width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth, + clientHeight: displayHeight(this), clientWidth: displayWidth(this)} }, - scrollIntoView: methodOp(function (range$$1, margin) { - if (range$$1 == null) { - range$$1 = { from: this.doc.sel.primary().head, to: null }; - if (margin == null) { - margin = this.options.cursorScrollMargin; - } - } else if (typeof range$$1 == 'number') { - range$$1 = { from: Pos(range$$1, 0), to: null }; - } else if (range$$1.from == null) { - range$$1 = { from: range$$1, to: null }; - } - if (!range$$1.to) { - range$$1.to = range$$1.from; + scrollIntoView: methodOp(function(range, margin) { + if (range == null) { + range = {from: this.doc.sel.primary().head, to: null}; + if (margin == null) { margin = this.options.cursorScrollMargin; } + } else if (typeof range == "number") { + range = {from: Pos(range, 0), to: null}; + } else if (range.from == null) { + range = {from: range, to: null}; } - range$$1.margin = margin || 0; + if (!range.to) { range.to = range.from; } + range.margin = margin || 0; - if (range$$1.from.line != null) { - scrollToRange(this, range$$1); + if (range.from.line != null) { + scrollToRange(this, range); } else { - scrollToCoordsRange( - this, - range$$1.from, - range$$1.to, - range$$1.margin, - ); + scrollToCoordsRange(this, range.from, range.to, range.margin); } }), - setSize: methodOp(function (width, height) { + setSize: methodOp(function(width, height) { var this$1 = this; - var interpret = function (val) { - return typeof val == 'number' || /^\d+$/.test(String(val)) - ? val + 'px' - : val; - }; - if (width != null) { - this.display.wrapper.style.width = interpret(width); - } - if (height != null) { - this.display.wrapper.style.height = interpret(height); - } - if (this.options.lineWrapping) { - clearLineMeasurementCache(this); - } - var lineNo$$1 = this.display.viewFrom; - this.doc.iter(lineNo$$1, this.display.viewTo, function (line) { - if (line.widgets) { - for (var i = 0; i < line.widgets.length; i++) { - if (line.widgets[i].noHScroll) { - regLineChange(this$1, lineNo$$1, 'widget'); - break; - } - } - } - ++lineNo$$1; + var interpret = function (val) { return typeof val == "number" || /^\d+$/.test(String(val)) ? val + "px" : val; }; + if (width != null) { this.display.wrapper.style.width = interpret(width); } + if (height != null) { this.display.wrapper.style.height = interpret(height); } + if (this.options.lineWrapping) { clearLineMeasurementCache(this); } + var lineNo = this.display.viewFrom; + this.doc.iter(lineNo, this.display.viewTo, function (line) { + if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) + { if (line.widgets[i].noHScroll) { regLineChange(this$1, lineNo, "widget"); break } } } + ++lineNo; }); this.curOp.forceUpdate = true; - signal(this, 'refresh', this); + signal(this, "refresh", this); }), - operation: function (f) { - return runInOp(this, f); - }, - startOperation: function () { - return startOperation(this); - }, - endOperation: function () { - return endOperation(this); - }, + operation: function(f){return runInOp(this, f)}, + startOperation: function(){return startOperation(this)}, + endOperation: function(){return endOperation(this)}, - refresh: methodOp(function () { + refresh: methodOp(function() { var oldHeight = this.display.cachedTextHeight; regChange(this); this.curOp.forceUpdate = true; clearCaches(this); scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop); updateGutterSpace(this.display); - if ( - oldHeight == null || - Math.abs(oldHeight - textHeight(this.display)) > 0.5 - ) { - estimateLineHeights(this); - } - signal(this, 'refresh', this); + if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5 || this.options.lineWrapping) + { estimateLineHeights(this); } + signal(this, "refresh", this); }), - swapDoc: methodOp(function (doc) { + swapDoc: methodOp(function(doc) { var old = this.doc; old.cm = null; // Cancel the current text selection if any (#5821) - if (this.state.selectingText) { - this.state.selectingText(); - } + if (this.state.selectingText) { this.state.selectingText(); } attachDoc(this, doc); clearCaches(this); this.display.input.reset(); scrollToCoords(this, doc.scrollLeft, doc.scrollTop); this.curOp.forceScroll = true; - signalLater(this, 'swapDoc', this, old); - return old; + signalLater(this, "swapDoc", this, old); + return old }), - phrase: function (phraseText) { + phrase: function(phraseText) { var phrases = this.options.phrases; - return phrases && - Object.prototype.hasOwnProperty.call(phrases, phraseText) - ? phrases[phraseText] - : phraseText; + return phrases && Object.prototype.hasOwnProperty.call(phrases, phraseText) ? phrases[phraseText] : phraseText }, - getInputField: function () { - return this.display.input.getField(); - }, - getWrapperElement: function () { - return this.display.wrapper; - }, - getScrollerElement: function () { - return this.display.scroller; - }, - getGutterElement: function () { - return this.display.gutters; - }, + getInputField: function(){return this.display.input.getField()}, + getWrapperElement: function(){return this.display.wrapper}, + getScrollerElement: function(){return this.display.scroller}, + getGutterElement: function(){return this.display.gutters} }; eventMixin(CodeMirror); - CodeMirror.registerHelper = function (type, name, value) { - if (!helpers.hasOwnProperty(type)) { - helpers[type] = CodeMirror[type] = { _global: [] }; - } + CodeMirror.registerHelper = function(type, name, value) { + if (!helpers.hasOwnProperty(type)) { helpers[type] = CodeMirror[type] = {_global: []}; } helpers[type][name] = value; }; - CodeMirror.registerGlobalHelper = function (type, name, predicate, value) { + CodeMirror.registerGlobalHelper = function(type, name, predicate, value) { CodeMirror.registerHelper(type, name, value); - helpers[type]._global.push({ pred: predicate, val: value }); + helpers[type]._global.push({pred: predicate, val: value}); }; } // Used for horizontal relative motion. Dir is -1 or 1 (left or - // right), unit can be "char", "column" (like char, but doesn't - // cross line boundaries), "word" (across next word), or "group" (to - // the start of next group of word or non-word-non-whitespace - // chars). The visually param controls whether, in right-to-left - // text, direction 1 means to move towards the next index in the - // string, or towards the character to the right of the current - // position. The resulting position will have a hitSide=true - // property if it reached the end of the document. + // right), unit can be "codepoint", "char", "column" (like char, but + // doesn't cross line boundaries), "word" (across next word), or + // "group" (to the start of next group of word or + // non-word-non-whitespace chars). The visually param controls + // whether, in right-to-left text, direction 1 means to move towards + // the next index in the string, or towards the character to the right + // of the current position. The resulting position will have a + // hitSide=true property if it reached the end of the document. function findPosH(doc, pos, dir, unit, visually) { var oldPos = pos; var origDir = dir; var lineObj = getLine(doc, pos.line); - var lineDir = - visually && doc.cm && doc.cm.getOption('direction') == 'rtl' ? -dir : dir; + var lineDir = visually && doc.direction == "rtl" ? -dir : dir; function findNextLine() { var l = pos.line + lineDir; - if (l < doc.first || l >= doc.first + doc.size) { - return false; - } + if (l < doc.first || l >= doc.first + doc.size) { return false } pos = new Pos(l, pos.ch, pos.sticky); - return (lineObj = getLine(doc, l)); + return lineObj = getLine(doc, l) } function moveOnce(boundToLine) { var next; - if (visually) { + if (unit == "codepoint") { + var ch = lineObj.text.charCodeAt(pos.ch + (dir > 0 ? 0 : -1)); + if (isNaN(ch)) { + next = null; + } else { + var astral = dir > 0 ? ch >= 0xD800 && ch < 0xDC00 : ch >= 0xDC00 && ch < 0xDFFF; + next = new Pos(pos.line, Math.max(0, Math.min(lineObj.text.length, pos.ch + dir * (astral ? 2 : 1))), -dir); + } + } else if (visually) { next = moveVisually(doc.cm, lineObj, pos, dir); } else { next = moveLogically(lineObj, pos, dir); } if (next == null) { - if (!boundToLine && findNextLine()) { - pos = endOfLine(visually, doc.cm, lineObj, pos.line, lineDir); - } else { - return false; - } + if (!boundToLine && findNextLine()) + { pos = endOfLine(visually, doc.cm, lineObj, pos.line, lineDir); } + else + { return false } } else { pos = next; } - return true; + return true } - if (unit == 'char') { + if (unit == "char" || unit == "codepoint") { moveOnce(); - } else if (unit == 'column') { + } else if (unit == "column") { moveOnce(true); - } else if (unit == 'word' || unit == 'group') { - var sawType = null, - group = unit == 'group'; - var helper = doc.cm && doc.cm.getHelper(pos, 'wordChars'); - for (var first = true; ; first = false) { - if (dir < 0 && !moveOnce(!first)) { - break; - } - var cur = lineObj.text.charAt(pos.ch) || '\n'; - var type = isWordChar(cur, helper) - ? 'w' - : group && cur == '\n' - ? 'n' - : !group || /\s/.test(cur) - ? null - : 'p'; - if (group && !first && !type) { - type = 's'; - } + } else if (unit == "word" || unit == "group") { + var sawType = null, group = unit == "group"; + var helper = doc.cm && doc.cm.getHelper(pos, "wordChars"); + for (var first = true;; first = false) { + if (dir < 0 && !moveOnce(!first)) { break } + var cur = lineObj.text.charAt(pos.ch) || "\n"; + var type = isWordChar(cur, helper) ? "w" + : group && cur == "\n" ? "n" + : !group || /\s/.test(cur) ? null + : "p"; + if (group && !first && !type) { type = "s"; } if (sawType && sawType != type) { - if (dir < 0) { - dir = 1; - moveOnce(); - pos.sticky = 'after'; - } - break; + if (dir < 0) {dir = 1; moveOnce(); pos.sticky = "after";} + break } - if (type) { - sawType = type; - } - if (dir > 0 && !moveOnce(!first)) { - break; - } + if (type) { sawType = type; } + if (dir > 0 && !moveOnce(!first)) { break } } } var result = skipAtomic(doc, pos, oldPos, origDir, true); - if (equalCursorPos(oldPos, result)) { - result.hitSide = true; - } - return result; + if (equalCursorPos(oldPos, result)) { result.hitSide = true; } + return result } // For relative vertical movement. Dir may be -1 or 1. Unit can be // "page" or "line". The resulting position will have a hitSide=true // property if it reached the end of the document. function findPosV(cm, pos, dir, unit) { - var doc = cm.doc, - x = pos.left, - y; - if (unit == 'page') { - var pageSize = Math.min( - cm.display.wrapper.clientHeight, - window.innerHeight || document.documentElement.clientHeight, - ); - var moveAmount = Math.max(pageSize - 0.5 * textHeight(cm.display), 3); + var doc = cm.doc, x = pos.left, y; + if (unit == "page") { + var pageSize = Math.min(cm.display.wrapper.clientHeight, win(cm).innerHeight || doc(cm).documentElement.clientHeight); + var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3); y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount; - } else if (unit == 'line') { + + } else if (unit == "line") { y = dir > 0 ? pos.bottom + 3 : pos.top - 3; } var target; for (;;) { target = coordsChar(cm, x, y); - if (!target.outside) { - break; - } - if (dir < 0 ? y <= 0 : y >= doc.height) { - target.hitSide = true; - break; - } + if (!target.outside) { break } + if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break } y += dir * 5; } - return target; + return target } // CONTENTEDITABLE INPUT STYLE - var ContentEditableInput = function (cm) { + var ContentEditableInput = function(cm) { this.cm = cm; - this.lastAnchorNode = - this.lastAnchorOffset = - this.lastFocusNode = - this.lastFocusOffset = - null; + this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null; this.polling = new Delayed(); this.composing = null; this.gracePeriod = false; @@ -13305,189 +8837,149 @@ }; ContentEditableInput.prototype.init = function (display) { - var this$1 = this; + var this$1 = this; - var input = this, - cm = input.cm; - var div = (input.div = display.lineDiv); - disableBrowserMagic( - div, - cm.options.spellcheck, - cm.options.autocorrect, - cm.options.autocapitalize, - ); + var input = this, cm = input.cm; + var div = input.div = display.lineDiv; + div.contentEditable = true; + disableBrowserMagic(div, cm.options.spellcheck, cm.options.autocorrect, cm.options.autocapitalize); - on(div, 'paste', function (e) { - if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { - return; + function belongsToInput(e) { + for (var t = e.target; t; t = t.parentNode) { + if (t == div) { return true } + if (/\bCodeMirror-(?:line)?widget\b/.test(t.className)) { break } } + return false + } + + on(div, "paste", function (e) { + if (!belongsToInput(e) || signalDOMEvent(cm, e) || handlePaste(e, cm)) { return } // IE doesn't fire input events, so we schedule a read for the pasted content in this way - if (ie_version <= 11) { - setTimeout( - operation(cm, function () { - return this$1.updateFromDOM(); - }), - 20, - ); - } + if (ie_version <= 11) { setTimeout(operation(cm, function () { return this$1.updateFromDOM(); }), 20); } }); - on(div, 'compositionstart', function (e) { - this$1.composing = { data: e.data, done: false }; + on(div, "compositionstart", function (e) { + this$1.composing = {data: e.data, done: false}; }); - on(div, 'compositionupdate', function (e) { - if (!this$1.composing) { - this$1.composing = { data: e.data, done: false }; - } + on(div, "compositionupdate", function (e) { + if (!this$1.composing) { this$1.composing = {data: e.data, done: false}; } }); - on(div, 'compositionend', function (e) { + on(div, "compositionend", function (e) { if (this$1.composing) { - if (e.data != this$1.composing.data) { - this$1.readFromDOMSoon(); - } + if (e.data != this$1.composing.data) { this$1.readFromDOMSoon(); } this$1.composing.done = true; } }); - on(div, 'touchstart', function () { - return input.forceCompositionEnd(); - }); + on(div, "touchstart", function () { return input.forceCompositionEnd(); }); - on(div, 'input', function () { - if (!this$1.composing) { - this$1.readFromDOMSoon(); - } + on(div, "input", function () { + if (!this$1.composing) { this$1.readFromDOMSoon(); } }); function onCopyCut(e) { - if (signalDOMEvent(cm, e)) { - return; - } + if (!belongsToInput(e) || signalDOMEvent(cm, e)) { return } if (cm.somethingSelected()) { - setLastCopied({ lineWise: false, text: cm.getSelections() }); - if (e.type == 'cut') { - cm.replaceSelection('', null, 'cut'); - } + setLastCopied({lineWise: false, text: cm.getSelections()}); + if (e.type == "cut") { cm.replaceSelection("", null, "cut"); } } else if (!cm.options.lineWiseCopyCut) { - return; + return } else { var ranges = copyableRanges(cm); - setLastCopied({ lineWise: true, text: ranges.text }); - if (e.type == 'cut') { + setLastCopied({lineWise: true, text: ranges.text}); + if (e.type == "cut") { cm.operation(function () { cm.setSelections(ranges.ranges, 0, sel_dontScroll); - cm.replaceSelection('', null, 'cut'); + cm.replaceSelection("", null, "cut"); }); } } if (e.clipboardData) { e.clipboardData.clearData(); - var content = lastCopied.text.join('\n'); + var content = lastCopied.text.join("\n"); // iOS exposes the clipboard API, but seems to discard content inserted into it - e.clipboardData.setData('Text', content); - if (e.clipboardData.getData('Text') == content) { + e.clipboardData.setData("Text", content); + if (e.clipboardData.getData("Text") == content) { e.preventDefault(); - return; + return } } // Old-fashioned briefly-focus-a-textarea hack - var kludge = hiddenTextarea(), - te = kludge.firstChild; - cm.display.lineSpace.insertBefore( - kludge, - cm.display.lineSpace.firstChild, - ); - te.value = lastCopied.text.join('\n'); - var hadFocus = document.activeElement; + var kludge = hiddenTextarea(), te = kludge.firstChild; + disableBrowserMagic(te); + cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild); + te.value = lastCopied.text.join("\n"); + var hadFocus = activeElt(rootNode(div)); selectInput(te); setTimeout(function () { cm.display.lineSpace.removeChild(kludge); hadFocus.focus(); - if (hadFocus == div) { - input.showPrimarySelection(); - } + if (hadFocus == div) { input.showPrimarySelection(); } }, 50); } - on(div, 'copy', onCopyCut); - on(div, 'cut', onCopyCut); + on(div, "copy", onCopyCut); + on(div, "cut", onCopyCut); + }; + + ContentEditableInput.prototype.screenReaderLabelChanged = function (label) { + // Label for screenreaders, accessibility + if(label) { + this.div.setAttribute('aria-label', label); + } else { + this.div.removeAttribute('aria-label'); + } }; ContentEditableInput.prototype.prepareSelection = function () { var result = prepareSelection(this.cm, false); - result.focus = this.cm.state.focused; - return result; + result.focus = activeElt(rootNode(this.div)) == this.div; + return result }; ContentEditableInput.prototype.showSelection = function (info, takeFocus) { - if (!info || !this.cm.display.view.length) { - return; - } - if (info.focus || takeFocus) { - this.showPrimarySelection(); - } + if (!info || !this.cm.display.view.length) { return } + if (info.focus || takeFocus) { this.showPrimarySelection(); } this.showMultipleSelections(info); }; ContentEditableInput.prototype.getSelection = function () { - return this.cm.display.wrapper.ownerDocument.getSelection(); + return this.cm.display.wrapper.ownerDocument.getSelection() }; ContentEditableInput.prototype.showPrimarySelection = function () { - var sel = this.getSelection(), - cm = this.cm, - prim = cm.doc.sel.primary(); - var from = prim.from(), - to = prim.to(); - - if ( - cm.display.viewTo == cm.display.viewFrom || - from.line >= cm.display.viewTo || - to.line < cm.display.viewFrom - ) { + var sel = this.getSelection(), cm = this.cm, prim = cm.doc.sel.primary(); + var from = prim.from(), to = prim.to(); + + if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) { sel.removeAllRanges(); - return; + return } var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset); var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset); - if ( - curAnchor && - !curAnchor.bad && - curFocus && - !curFocus.bad && - cmp(minPos(curAnchor, curFocus), from) == 0 && - cmp(maxPos(curAnchor, curFocus), to) == 0 - ) { - return; - } + if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad && + cmp(minPos(curAnchor, curFocus), from) == 0 && + cmp(maxPos(curAnchor, curFocus), to) == 0) + { return } var view = cm.display.view; - var start = (from.line >= cm.display.viewFrom && posToDOM(cm, from)) || { - node: view[0].measure.map[2], - offset: 0, - }; + var start = (from.line >= cm.display.viewFrom && posToDOM(cm, from)) || + {node: view[0].measure.map[2], offset: 0}; var end = to.line < cm.display.viewTo && posToDOM(cm, to); if (!end) { var measure = view[view.length - 1].measure; - var map$$1 = measure.maps - ? measure.maps[measure.maps.length - 1] - : measure.map; - end = { - node: map$$1[map$$1.length - 1], - offset: map$$1[map$$1.length - 2] - map$$1[map$$1.length - 3], - }; + var map = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map; + end = {node: map[map.length - 1], offset: map[map.length - 2] - map[map.length - 3]}; } if (!start || !end) { sel.removeAllRanges(); - return; + return } - var old = sel.rangeCount && sel.getRangeAt(0), - rng; - try { - rng = range(start.node, start.offset, end.offset, end.node); - } catch (e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible + var old = sel.rangeCount && sel.getRangeAt(0), rng; + try { rng = range(start.node, start.offset, end.offset, end.node); } + catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible if (rng) { if (!gecko && cm.state.focused) { sel.collapse(start.node, start.offset); @@ -13499,26 +8991,20 @@ sel.removeAllRanges(); sel.addRange(rng); } - if (old && sel.anchorNode == null) { - sel.addRange(old); - } else if (gecko) { - this.startGracePeriod(); - } + if (old && sel.anchorNode == null) { sel.addRange(old); } + else if (gecko) { this.startGracePeriod(); } } this.rememberSelection(); }; ContentEditableInput.prototype.startGracePeriod = function () { - var this$1 = this; + var this$1 = this; clearTimeout(this.gracePeriod); this.gracePeriod = setTimeout(function () { this$1.gracePeriod = false; - if (this$1.selectionChanged()) { - this$1.cm.operation(function () { - return (this$1.cm.curOp.selectionChanged = true); - }); - } + if (this$1.selectionChanged()) + { this$1.cm.operation(function () { return this$1.cm.curOp.selectionChanged = true; }); } }, 20); }; @@ -13529,49 +9015,37 @@ ContentEditableInput.prototype.rememberSelection = function () { var sel = this.getSelection(); - this.lastAnchorNode = sel.anchorNode; - this.lastAnchorOffset = sel.anchorOffset; - this.lastFocusNode = sel.focusNode; - this.lastFocusOffset = sel.focusOffset; + this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset; + this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset; }; ContentEditableInput.prototype.selectionInEditor = function () { var sel = this.getSelection(); - if (!sel.rangeCount) { - return false; - } + if (!sel.rangeCount) { return false } var node = sel.getRangeAt(0).commonAncestorContainer; - return contains(this.div, node); + return contains(this.div, node) }; ContentEditableInput.prototype.focus = function () { - if (this.cm.options.readOnly != 'nocursor') { - if (!this.selectionInEditor()) { - this.showSelection(this.prepareSelection(), true); - } + if (this.cm.options.readOnly != "nocursor") { + if (!this.selectionInEditor() || activeElt(rootNode(this.div)) != this.div) + { this.showSelection(this.prepareSelection(), true); } this.div.focus(); } }; - ContentEditableInput.prototype.blur = function () { - this.div.blur(); - }; - ContentEditableInput.prototype.getField = function () { - return this.div; - }; + ContentEditableInput.prototype.blur = function () { this.div.blur(); }; + ContentEditableInput.prototype.getField = function () { return this.div }; - ContentEditableInput.prototype.supportsTouch = function () { - return true; - }; + ContentEditableInput.prototype.supportsTouch = function () { return true }; ContentEditableInput.prototype.receivedFocus = function () { + var this$1 = this; + var input = this; - if (this.selectionInEditor()) { - this.pollSelection(); - } else { - runInOp(this.cm, function () { - return (input.cm.curOp.selectionChanged = true); - }); - } + if (this.selectionInEditor()) + { setTimeout(function () { return this$1.pollSelection(); }, 20); } + else + { runInOp(this.cm, function () { return input.cm.curOp.selectionChanged = true; }); } function poll() { if (input.cm.state.focused) { @@ -13584,59 +9058,33 @@ ContentEditableInput.prototype.selectionChanged = function () { var sel = this.getSelection(); - return ( - sel.anchorNode != this.lastAnchorNode || - sel.anchorOffset != this.lastAnchorOffset || - sel.focusNode != this.lastFocusNode || - sel.focusOffset != this.lastFocusOffset - ); + return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset || + sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset }; ContentEditableInput.prototype.pollSelection = function () { - if ( - this.readDOMTimeout != null || - this.gracePeriod || - !this.selectionChanged() - ) { - return; - } - var sel = this.getSelection(), - cm = this.cm; + if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) { return } + var sel = this.getSelection(), cm = this.cm; // On Android Chrome (version 56, at least), backspacing into an // uneditable block element will put the cursor in that element, // and then, because it's not editable, hide the virtual keyboard. // Because Android doesn't allow us to actually detect backspace // presses in a sane way, this code checks for when that happens // and simulates a backspace press in this case. - if ( - android && - chrome && - this.cm.display.gutterSpecs.length && - isInGutter(sel.anchorNode) - ) { - this.cm.triggerOnKeyDown({ - type: 'keydown', - keyCode: 8, - preventDefault: Math.abs, - }); + if (android && chrome && this.cm.display.gutterSpecs.length && isInGutter(sel.anchorNode)) { + this.cm.triggerOnKeyDown({type: "keydown", keyCode: 8, preventDefault: Math.abs}); this.blur(); this.focus(); - return; - } - if (this.composing) { - return; + return } + if (this.composing) { return } this.rememberSelection(); var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset); var head = domToPos(cm, sel.focusNode, sel.focusOffset); - if (anchor && head) { - runInOp(cm, function () { - setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll); - if (anchor.bad || head.bad) { - cm.curOp.selectionChanged = true; - } - }); - } + if (anchor && head) { runInOp(cm, function () { + setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll); + if (anchor.bad || head.bad) { cm.curOp.selectionChanged = true; } + }); } }; ContentEditableInput.prototype.pollContent = function () { @@ -13645,29 +9093,16 @@ this.readDOMTimeout = null; } - var cm = this.cm, - display = cm.display, - sel = cm.doc.sel.primary(); - var from = sel.from(), - to = sel.to(); - if (from.ch == 0 && from.line > cm.firstLine()) { - from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length); - } - if ( - to.ch == getLine(cm.doc, to.line).text.length && - to.line < cm.lastLine() - ) { - to = Pos(to.line + 1, 0); - } - if (from.line < display.viewFrom || to.line > display.viewTo - 1) { - return false; - } + var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary(); + var from = sel.from(), to = sel.to(); + if (from.ch == 0 && from.line > cm.firstLine()) + { from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length); } + if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine()) + { to = Pos(to.line + 1, 0); } + if (from.line < display.viewFrom || to.line > display.viewTo - 1) { return false } var fromIndex, fromLine, fromNode; - if ( - from.line == display.viewFrom || - (fromIndex = findViewIndex(cm, from.line)) == 0 - ) { + if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) { fromLine = lineNo(display.view[0].line); fromNode = display.view[0].node; } else { @@ -13684,78 +9119,42 @@ toNode = display.view[toIndex + 1].node.previousSibling; } - if (!fromNode) { - return false; - } - var newText = cm.doc.splitLines( - domTextBetween(cm, fromNode, toNode, fromLine, toLine), - ); - var oldText = getBetween( - cm.doc, - Pos(fromLine, 0), - Pos(toLine, getLine(cm.doc, toLine).text.length), - ); + if (!fromNode) { return false } + var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine)); + var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length)); while (newText.length > 1 && oldText.length > 1) { - if (lst(newText) == lst(oldText)) { - newText.pop(); - oldText.pop(); - toLine--; - } else if (newText[0] == oldText[0]) { - newText.shift(); - oldText.shift(); - fromLine++; - } else { - break; - } - } - - var cutFront = 0, - cutEnd = 0; - var newTop = newText[0], - oldTop = oldText[0], - maxCutFront = Math.min(newTop.length, oldTop.length); - while ( - cutFront < maxCutFront && - newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront) - ) { - ++cutFront; - } - var newBot = lst(newText), - oldBot = lst(oldText); - var maxCutEnd = Math.min( - newBot.length - (newText.length == 1 ? cutFront : 0), - oldBot.length - (oldText.length == 1 ? cutFront : 0), - ); - while ( - cutEnd < maxCutEnd && - newBot.charCodeAt(newBot.length - cutEnd - 1) == - oldBot.charCodeAt(oldBot.length - cutEnd - 1) - ) { - ++cutEnd; - } + if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine--; } + else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++; } + else { break } + } + + var cutFront = 0, cutEnd = 0; + var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length); + while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront)) + { ++cutFront; } + var newBot = lst(newText), oldBot = lst(oldText); + var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0), + oldBot.length - (oldText.length == 1 ? cutFront : 0)); + while (cutEnd < maxCutEnd && + newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) + { ++cutEnd; } // Try to move start of change to start of selection if ambiguous if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) { - while ( - cutFront && - cutFront > from.ch && - newBot.charCodeAt(newBot.length - cutEnd - 1) == - oldBot.charCodeAt(oldBot.length - cutEnd - 1) - ) { + while (cutFront && cutFront > from.ch && + newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) { cutFront--; cutEnd++; } } - newText[newText.length - 1] = newBot - .slice(0, newBot.length - cutEnd) - .replace(/^\u200b+/, ''); - newText[0] = newText[0].slice(cutFront).replace(/\u200b+$/, ''); + newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\u200b+/, ""); + newText[0] = newText[0].slice(cutFront).replace(/\u200b+$/, ""); var chFrom = Pos(fromLine, cutFront); var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0); if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) { - replaceRange(cm.doc, newText, chFrom, chTo, '+input'); - return true; + replaceRange(cm.doc, newText, chFrom, chTo, "+input"); + return true } }; @@ -13766,9 +9165,7 @@ this.forceCompositionEnd(); }; ContentEditableInput.prototype.forceCompositionEnd = function () { - if (!this.composing) { - return; - } + if (!this.composing) { return } clearTimeout(this.readDOMTimeout); this.composing = null; this.updateFromDOM(); @@ -13776,54 +9173,39 @@ this.div.focus(); }; ContentEditableInput.prototype.readFromDOMSoon = function () { - var this$1 = this; + var this$1 = this; - if (this.readDOMTimeout != null) { - return; - } + if (this.readDOMTimeout != null) { return } this.readDOMTimeout = setTimeout(function () { this$1.readDOMTimeout = null; if (this$1.composing) { - if (this$1.composing.done) { - this$1.composing = null; - } else { - return; - } + if (this$1.composing.done) { this$1.composing = null; } + else { return } } this$1.updateFromDOM(); }, 80); }; ContentEditableInput.prototype.updateFromDOM = function () { - var this$1 = this; + var this$1 = this; - if (this.cm.isReadOnly() || !this.pollContent()) { - runInOp(this.cm, function () { - return regChange(this$1.cm); - }); - } + if (this.cm.isReadOnly() || !this.pollContent()) + { runInOp(this.cm, function () { return regChange(this$1.cm); }); } }; ContentEditableInput.prototype.setUneditable = function (node) { - node.contentEditable = 'false'; + node.contentEditable = "false"; }; ContentEditableInput.prototype.onKeyPress = function (e) { - if (e.charCode == 0 || this.composing) { - return; - } + if (e.charCode == 0 || this.composing) { return } e.preventDefault(); - if (!this.cm.isReadOnly()) { - operation(this.cm, applyTextInput)( - this.cm, - String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), - 0, - ); - } + if (!this.cm.isReadOnly()) + { operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0); } }; ContentEditableInput.prototype.readOnlyChanged = function (val) { - this.div.contentEditable = String(val != 'nocursor'); + this.div.contentEditable = String(val != "nocursor"); }; ContentEditableInput.prototype.onContextMenu = function () {}; @@ -13833,55 +9215,35 @@ function posToDOM(cm, pos) { var view = findViewForLine(cm, pos.line); - if (!view || view.hidden) { - return null; - } + if (!view || view.hidden) { return null } var line = getLine(cm.doc, pos.line); var info = mapFromLineView(view, line, pos.line); - var order = getOrder(line, cm.doc.direction), - side = 'left'; + var order = getOrder(line, cm.doc.direction), side = "left"; if (order) { var partPos = getBidiPartAt(order, pos.ch); - side = partPos % 2 ? 'right' : 'left'; + side = partPos % 2 ? "right" : "left"; } var result = nodeAndOffsetInLineMap(info.map, pos.ch, side); - result.offset = result.collapse == 'right' ? result.end : result.start; - return result; + result.offset = result.collapse == "right" ? result.end : result.start; + return result } function isInGutter(node) { - for (var scan = node; scan; scan = scan.parentNode) { - if (/CodeMirror-gutter-wrapper/.test(scan.className)) { - return true; - } - } - return false; + for (var scan = node; scan; scan = scan.parentNode) + { if (/CodeMirror-gutter-wrapper/.test(scan.className)) { return true } } + return false } - function badPos(pos, bad) { - if (bad) { - pos.bad = true; - } - return pos; - } + function badPos(pos, bad) { if (bad) { pos.bad = true; } return pos } function domTextBetween(cm, from, to, fromLine, toLine) { - var text = '', - closing = false, - lineSep = cm.doc.lineSeparator(), - extraLinebreak = false; - function recognizeMarker(id) { - return function (marker) { - return marker.id == id; - }; - } + var text = "", closing = false, lineSep = cm.doc.lineSeparator(), extraLinebreak = false; + function recognizeMarker(id) { return function (marker) { return marker.id == id; } } function close() { if (closing) { text += lineSep; - if (extraLinebreak) { - text += lineSep; - } + if (extraLinebreak) { text += lineSep; } closing = extraLinebreak = false; } } @@ -13893,178 +9255,121 @@ } function walk(node) { if (node.nodeType == 1) { - var cmText = node.getAttribute('cm-text'); + var cmText = node.getAttribute("cm-text"); if (cmText) { addText(cmText); - return; + return } - var markerID = node.getAttribute('cm-marker'), - range$$1; + var markerID = node.getAttribute("cm-marker"), range; if (markerID) { - var found = cm.findMarks( - Pos(fromLine, 0), - Pos(toLine + 1, 0), - recognizeMarker(+markerID), - ); - if (found.length && (range$$1 = found[0].find(0))) { - addText( - getBetween(cm.doc, range$$1.from, range$$1.to).join(lineSep), - ); - } - return; - } - if (node.getAttribute('contenteditable') == 'false') { - return; + var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID)); + if (found.length && (range = found[0].find(0))) + { addText(getBetween(cm.doc, range.from, range.to).join(lineSep)); } + return } + if (node.getAttribute("contenteditable") == "false") { return } var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName); - if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) { - return; - } + if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) { return } - if (isBlock) { - close(); - } - for (var i = 0; i < node.childNodes.length; i++) { - walk(node.childNodes[i]); - } + if (isBlock) { close(); } + for (var i = 0; i < node.childNodes.length; i++) + { walk(node.childNodes[i]); } - if (/^(pre|p)$/i.test(node.nodeName)) { - extraLinebreak = true; - } - if (isBlock) { - closing = true; - } + if (/^(pre|p)$/i.test(node.nodeName)) { extraLinebreak = true; } + if (isBlock) { closing = true; } } else if (node.nodeType == 3) { - addText(node.nodeValue.replace(/\u200b/g, '').replace(/\u00a0/g, ' ')); + addText(node.nodeValue.replace(/\u200b/g, "").replace(/\u00a0/g, " ")); } } for (;;) { walk(from); - if (from == to) { - break; - } + if (from == to) { break } from = from.nextSibling; extraLinebreak = false; } - return text; + return text } function domToPos(cm, node, offset) { var lineNode; if (node == cm.display.lineDiv) { lineNode = cm.display.lineDiv.childNodes[offset]; - if (!lineNode) { - return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true); - } - node = null; - offset = 0; + if (!lineNode) { return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true) } + node = null; offset = 0; } else { - for (lineNode = node; ; lineNode = lineNode.parentNode) { - if (!lineNode || lineNode == cm.display.lineDiv) { - return null; - } - if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) { - break; - } + for (lineNode = node;; lineNode = lineNode.parentNode) { + if (!lineNode || lineNode == cm.display.lineDiv) { return null } + if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) { break } } } for (var i = 0; i < cm.display.view.length; i++) { var lineView = cm.display.view[i]; - if (lineView.node == lineNode) { - return locateNodeInLineView(lineView, node, offset); - } + if (lineView.node == lineNode) + { return locateNodeInLineView(lineView, node, offset) } } } function locateNodeInLineView(lineView, node, offset) { - var wrapper = lineView.text.firstChild, - bad = false; - if (!node || !contains(wrapper, node)) { - return badPos(Pos(lineNo(lineView.line), 0), true); - } + var wrapper = lineView.text.firstChild, bad = false; + if (!node || !contains(wrapper, node)) { return badPos(Pos(lineNo(lineView.line), 0), true) } if (node == wrapper) { bad = true; node = wrapper.childNodes[offset]; offset = 0; if (!node) { var line = lineView.rest ? lst(lineView.rest) : lineView.line; - return badPos(Pos(lineNo(line), line.text.length), bad); + return badPos(Pos(lineNo(line), line.text.length), bad) } } - var textNode = node.nodeType == 3 ? node : null, - topNode = node; - if ( - !textNode && - node.childNodes.length == 1 && - node.firstChild.nodeType == 3 - ) { + var textNode = node.nodeType == 3 ? node : null, topNode = node; + if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) { textNode = node.firstChild; - if (offset) { - offset = textNode.nodeValue.length; - } + if (offset) { offset = textNode.nodeValue.length; } } - while (topNode.parentNode != wrapper) { - topNode = topNode.parentNode; - } - var measure = lineView.measure, - maps = measure.maps; + while (topNode.parentNode != wrapper) { topNode = topNode.parentNode; } + var measure = lineView.measure, maps = measure.maps; function find(textNode, topNode, offset) { for (var i = -1; i < (maps ? maps.length : 0); i++) { - var map$$1 = i < 0 ? measure.map : maps[i]; - for (var j = 0; j < map$$1.length; j += 3) { - var curNode = map$$1[j + 2]; + var map = i < 0 ? measure.map : maps[i]; + for (var j = 0; j < map.length; j += 3) { + var curNode = map[j + 2]; if (curNode == textNode || curNode == topNode) { var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]); - var ch = map$$1[j] + offset; - if (offset < 0 || curNode != textNode) { - ch = map$$1[j + (offset ? 1 : 0)]; - } - return Pos(line, ch); + var ch = map[j] + offset; + if (offset < 0 || curNode != textNode) { ch = map[j + (offset ? 1 : 0)]; } + return Pos(line, ch) } } } } var found = find(textNode, topNode, offset); - if (found) { - return badPos(found, bad); - } + if (found) { return badPos(found, bad) } // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems - for ( - var after = topNode.nextSibling, - dist = textNode ? textNode.nodeValue.length - offset : 0; - after; - after = after.nextSibling - ) { + for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) { found = find(after, after.firstChild, 0); - if (found) { - return badPos(Pos(found.line, found.ch - dist), bad); - } else { - dist += after.textContent.length; - } + if (found) + { return badPos(Pos(found.line, found.ch - dist), bad) } + else + { dist += after.textContent.length; } } - for ( - var before = topNode.previousSibling, dist$1 = offset; - before; - before = before.previousSibling - ) { + for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) { found = find(before, before.firstChild, -1); - if (found) { - return badPos(Pos(found.line, found.ch + dist$1), bad); - } else { - dist$1 += before.textContent.length; - } + if (found) + { return badPos(Pos(found.line, found.ch + dist$1), bad) } + else + { dist$1 += before.textContent.length; } } } // TEXTAREA INPUT STYLE - var TextareaInput = function (cm) { + var TextareaInput = function(cm) { this.cm = cm; // See input.poll and input.reset - this.prevInput = ''; + this.prevInput = ""; // Flag that indicates whether we expect input to appear real soon // now (after some event like 'keypress' or 'input') and are @@ -14075,101 +9380,83 @@ // Used to work around IE issue with selection being forgotten when focus moves away from textarea this.hasSelection = false; this.composing = null; + this.resetting = false; }; TextareaInput.prototype.init = function (display) { - var this$1 = this; + var this$1 = this; - var input = this, - cm = this.cm; + var input = this, cm = this.cm; this.createField(display); var te = this.textarea; display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild); // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore) - if (ios) { - te.style.width = '0px'; - } + if (ios) { te.style.width = "0px"; } - on(te, 'input', function () { - if (ie && ie_version >= 9 && this$1.hasSelection) { - this$1.hasSelection = null; - } + on(te, "input", function () { + if (ie && ie_version >= 9 && this$1.hasSelection) { this$1.hasSelection = null; } input.poll(); }); - on(te, 'paste', function (e) { - if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { - return; - } + on(te, "paste", function (e) { + if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return } - cm.state.pasteIncoming = +new Date(); + cm.state.pasteIncoming = +new Date; input.fastPoll(); }); function prepareCopyCut(e) { - if (signalDOMEvent(cm, e)) { - return; - } + if (signalDOMEvent(cm, e)) { return } if (cm.somethingSelected()) { - setLastCopied({ lineWise: false, text: cm.getSelections() }); + setLastCopied({lineWise: false, text: cm.getSelections()}); } else if (!cm.options.lineWiseCopyCut) { - return; + return } else { var ranges = copyableRanges(cm); - setLastCopied({ lineWise: true, text: ranges.text }); - if (e.type == 'cut') { + setLastCopied({lineWise: true, text: ranges.text}); + if (e.type == "cut") { cm.setSelections(ranges.ranges, null, sel_dontScroll); } else { - input.prevInput = ''; - te.value = ranges.text.join('\n'); + input.prevInput = ""; + te.value = ranges.text.join("\n"); selectInput(te); } } - if (e.type == 'cut') { - cm.state.cutIncoming = +new Date(); - } + if (e.type == "cut") { cm.state.cutIncoming = +new Date; } } - on(te, 'cut', prepareCopyCut); - on(te, 'copy', prepareCopyCut); + on(te, "cut", prepareCopyCut); + on(te, "copy", prepareCopyCut); - on(display.scroller, 'paste', function (e) { - if (eventInWidget(display, e) || signalDOMEvent(cm, e)) { - return; - } + on(display.scroller, "paste", function (e) { + if (eventInWidget(display, e) || signalDOMEvent(cm, e)) { return } if (!te.dispatchEvent) { - cm.state.pasteIncoming = +new Date(); + cm.state.pasteIncoming = +new Date; input.focus(); - return; + return } // Pass the `paste` event to the textarea so it's handled by its event listener. - var event = new Event('paste'); + var event = new Event("paste"); event.clipboardData = e.clipboardData; te.dispatchEvent(event); }); // Prevent normal selection in the editor (we handle our own) - on(display.lineSpace, 'selectstart', function (e) { - if (!eventInWidget(display, e)) { - e_preventDefault(e); - } + on(display.lineSpace, "selectstart", function (e) { + if (!eventInWidget(display, e)) { e_preventDefault(e); } }); - on(te, 'compositionstart', function () { - var start = cm.getCursor('from'); - if (input.composing) { - input.composing.range.clear(); - } + on(te, "compositionstart", function () { + var start = cm.getCursor("from"); + if (input.composing) { input.composing.range.clear(); } input.composing = { start: start, - range: cm.markText(start, cm.getCursor('to'), { - className: 'CodeMirror-composing', - }), + range: cm.markText(start, cm.getCursor("to"), {className: "CodeMirror-composing"}) }; }); - on(te, 'compositionend', function () { + on(te, "compositionend", function () { if (input.composing) { input.poll(); input.composing.range.clear(); @@ -14184,119 +9471,94 @@ // The semihidden textarea that is focused when the editor is // focused, and receives input. this.textarea = this.wrapper.firstChild; + var opts = this.cm.options; + disableBrowserMagic(this.textarea, opts.spellcheck, opts.autocorrect, opts.autocapitalize); + }; + + TextareaInput.prototype.screenReaderLabelChanged = function (label) { + // Label for screenreaders, accessibility + if(label) { + this.textarea.setAttribute('aria-label', label); + } else { + this.textarea.removeAttribute('aria-label'); + } }; TextareaInput.prototype.prepareSelection = function () { // Redraw the selection and/or cursor - var cm = this.cm, - display = cm.display, - doc = cm.doc; + var cm = this.cm, display = cm.display, doc = cm.doc; var result = prepareSelection(cm); // Move the hidden textarea near the cursor to prevent scrolling artifacts if (cm.options.moveInputWithCursor) { - var headPos = cursorCoords(cm, doc.sel.primary().head, 'div'); - var wrapOff = display.wrapper.getBoundingClientRect(), - lineOff = display.lineDiv.getBoundingClientRect(); - result.teTop = Math.max( - 0, - Math.min( - display.wrapper.clientHeight - 10, - headPos.top + lineOff.top - wrapOff.top, - ), - ); - result.teLeft = Math.max( - 0, - Math.min( - display.wrapper.clientWidth - 10, - headPos.left + lineOff.left - wrapOff.left, - ), - ); - } - - return result; + var headPos = cursorCoords(cm, doc.sel.primary().head, "div"); + var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect(); + result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10, + headPos.top + lineOff.top - wrapOff.top)); + result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10, + headPos.left + lineOff.left - wrapOff.left)); + } + + return result }; TextareaInput.prototype.showSelection = function (drawn) { - var cm = this.cm, - display = cm.display; + var cm = this.cm, display = cm.display; removeChildrenAndAdd(display.cursorDiv, drawn.cursors); removeChildrenAndAdd(display.selectionDiv, drawn.selection); if (drawn.teTop != null) { - this.wrapper.style.top = drawn.teTop + 'px'; - this.wrapper.style.left = drawn.teLeft + 'px'; + this.wrapper.style.top = drawn.teTop + "px"; + this.wrapper.style.left = drawn.teLeft + "px"; } }; // Reset the input to correspond to the selection (or to be empty, // when not typing and nothing is selected) TextareaInput.prototype.reset = function (typing) { - if (this.contextMenuPending || this.composing) { - return; - } + if (this.contextMenuPending || this.composing && typing) { return } var cm = this.cm; + this.resetting = true; if (cm.somethingSelected()) { - this.prevInput = ''; + this.prevInput = ""; var content = cm.getSelection(); this.textarea.value = content; - if (cm.state.focused) { - selectInput(this.textarea); - } - if (ie && ie_version >= 9) { - this.hasSelection = content; - } + if (cm.state.focused) { selectInput(this.textarea); } + if (ie && ie_version >= 9) { this.hasSelection = content; } } else if (!typing) { - this.prevInput = this.textarea.value = ''; - if (ie && ie_version >= 9) { - this.hasSelection = null; - } + this.prevInput = this.textarea.value = ""; + if (ie && ie_version >= 9) { this.hasSelection = null; } } + this.resetting = false; }; - TextareaInput.prototype.getField = function () { - return this.textarea; - }; + TextareaInput.prototype.getField = function () { return this.textarea }; - TextareaInput.prototype.supportsTouch = function () { - return false; - }; + TextareaInput.prototype.supportsTouch = function () { return false }; TextareaInput.prototype.focus = function () { - if ( - this.cm.options.readOnly != 'nocursor' && - (!mobile || activeElt() != this.textarea) - ) { - try { - this.textarea.focus(); - } catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM + if (this.cm.options.readOnly != "nocursor" && (!mobile || activeElt(rootNode(this.textarea)) != this.textarea)) { + try { this.textarea.focus(); } + catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM } }; - TextareaInput.prototype.blur = function () { - this.textarea.blur(); - }; + TextareaInput.prototype.blur = function () { this.textarea.blur(); }; TextareaInput.prototype.resetPosition = function () { this.wrapper.style.top = this.wrapper.style.left = 0; }; - TextareaInput.prototype.receivedFocus = function () { - this.slowPoll(); - }; + TextareaInput.prototype.receivedFocus = function () { this.slowPoll(); }; // Poll for input changes, using the normal rate of polling. This // runs as long as the editor is focused. TextareaInput.prototype.slowPoll = function () { - var this$1 = this; + var this$1 = this; - if (this.pollingFast) { - return; - } + if (this.pollingFast) { return } this.polling.set(this.cm.options.pollInterval, function () { this$1.poll(); - if (this$1.cm.state.focused) { - this$1.slowPoll(); - } + if (this$1.cm.state.focused) { this$1.slowPoll(); } }); }; @@ -14304,18 +9566,12 @@ // something in the input textarea, we poll faster, to ensure that // the change appears on the screen quickly. TextareaInput.prototype.fastPoll = function () { - var missed = false, - input = this; + var missed = false, input = this; input.pollingFast = true; function p() { var changed = input.poll(); - if (!changed && !missed) { - missed = true; - input.polling.set(60, p); - } else { - input.pollingFast = false; - input.slowPoll(); - } + if (!changed && !missed) {missed = true; input.polling.set(60, p);} + else {input.pollingFast = false; input.slowPoll();} } input.polling.set(20, p); }; @@ -14327,146 +9583,88 @@ // seen text (can be empty), which is stored in prevInput (we must // not reset the textarea when typing, because that breaks IME). TextareaInput.prototype.poll = function () { - var this$1 = this; + var this$1 = this; - var cm = this.cm, - input = this.textarea, - prevInput = this.prevInput; + var cm = this.cm, input = this.textarea, prevInput = this.prevInput; // Since this is called a *lot*, try to bail out as cheaply as // possible when it is clear that nothing happened. hasSelection // will be the case when there is a lot of text in the textarea, // in which case reading its value would be expensive. - if ( - this.contextMenuPending || - !cm.state.focused || - (hasSelection(input) && !prevInput && !this.composing) || - cm.isReadOnly() || - cm.options.disableInput || - cm.state.keySeq - ) { - return false; - } + if (this.contextMenuPending || this.resetting || !cm.state.focused || + (hasSelection(input) && !prevInput && !this.composing) || + cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq) + { return false } var text = input.value; // If nothing changed, bail. - if (text == prevInput && !cm.somethingSelected()) { - return false; - } + if (text == prevInput && !cm.somethingSelected()) { return false } // Work around nonsensical selection resetting in IE9/10, and // inexplicable appearance of private area unicode characters on // some key combos in Mac (#2689). - if ( - (ie && ie_version >= 9 && this.hasSelection === text) || - (mac && /[\uf700-\uf7ff]/.test(text)) - ) { + if (ie && ie_version >= 9 && this.hasSelection === text || + mac && /[\uf700-\uf7ff]/.test(text)) { cm.display.input.reset(); - return false; + return false } if (cm.doc.sel == cm.display.selForContextMenu) { var first = text.charCodeAt(0); - if (first == 0x200b && !prevInput) { - prevInput = '\u200b'; - } - if (first == 0x21da) { - this.reset(); - return this.cm.execCommand('undo'); - } + if (first == 0x200b && !prevInput) { prevInput = "\u200b"; } + if (first == 0x21da) { this.reset(); return this.cm.execCommand("undo") } } // Find the part of the input that is actually new - var same = 0, - l = Math.min(prevInput.length, text.length); - while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) { - ++same; - } + var same = 0, l = Math.min(prevInput.length, text.length); + while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) { ++same; } runInOp(cm, function () { - applyTextInput( - cm, - text.slice(same), - prevInput.length - same, - null, - this$1.composing ? '*compose' : null, - ); + applyTextInput(cm, text.slice(same), prevInput.length - same, + null, this$1.composing ? "*compose" : null); // Don't leave long text in the textarea, since it makes further polling slow - if (text.length > 1000 || text.indexOf('\n') > -1) { - input.value = this$1.prevInput = ''; - } else { - this$1.prevInput = text; - } + if (text.length > 1000 || text.indexOf("\n") > -1) { input.value = this$1.prevInput = ""; } + else { this$1.prevInput = text; } if (this$1.composing) { this$1.composing.range.clear(); - this$1.composing.range = cm.markText( - this$1.composing.start, - cm.getCursor('to'), - { className: 'CodeMirror-composing' }, - ); + this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor("to"), + {className: "CodeMirror-composing"}); } }); - return true; + return true }; TextareaInput.prototype.ensurePolled = function () { - if (this.pollingFast && this.poll()) { - this.pollingFast = false; - } + if (this.pollingFast && this.poll()) { this.pollingFast = false; } }; TextareaInput.prototype.onKeyPress = function () { - if (ie && ie_version >= 9) { - this.hasSelection = null; - } + if (ie && ie_version >= 9) { this.hasSelection = null; } this.fastPoll(); }; TextareaInput.prototype.onContextMenu = function (e) { - var input = this, - cm = input.cm, - display = cm.display, - te = input.textarea; - if (input.contextMenuPending) { - input.contextMenuPending(); - } - var pos = posFromMouse(cm, e), - scrollPos = display.scroller.scrollTop; - if (!pos || presto) { - return; - } // Opera is difficult. + var input = this, cm = input.cm, display = cm.display, te = input.textarea; + if (input.contextMenuPending) { input.contextMenuPending(); } + var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop; + if (!pos || presto) { return } // Opera is difficult. // Reset the current text selection only if the click is done outside of the selection // and 'resetSelectionOnContextMenu' option is true. var reset = cm.options.resetSelectionOnContextMenu; - if (reset && cm.doc.sel.contains(pos) == -1) { - operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); - } + if (reset && cm.doc.sel.contains(pos) == -1) + { operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); } - var oldCSS = te.style.cssText, - oldWrapperCSS = input.wrapper.style.cssText; + var oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText; var wrapperBox = input.wrapper.offsetParent.getBoundingClientRect(); - input.wrapper.style.cssText = 'position: static'; - te.style.cssText = - 'position: absolute; width: 30px; height: 30px;\n top: ' + - (e.clientY - wrapperBox.top - 5) + - 'px; left: ' + - (e.clientX - wrapperBox.left - 5) + - 'px;\n z-index: 1000; background: ' + - (ie ? 'rgba(255, 255, 255, .05)' : 'transparent') + - ';\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);'; + input.wrapper.style.cssText = "position: static"; + te.style.cssText = "position: absolute; width: 30px; height: 30px;\n top: " + (e.clientY - wrapperBox.top - 5) + "px; left: " + (e.clientX - wrapperBox.left - 5) + "px;\n z-index: 1000; background: " + (ie ? "rgba(255, 255, 255, .05)" : "transparent") + ";\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);"; var oldScrollY; - if (webkit) { - oldScrollY = window.scrollY; - } // Work around Chrome issue (#2712) + if (webkit) { oldScrollY = te.ownerDocument.defaultView.scrollY; } // Work around Chrome issue (#2712) display.input.focus(); - if (webkit) { - window.scrollTo(null, oldScrollY); - } + if (webkit) { te.ownerDocument.defaultView.scrollTo(null, oldScrollY); } display.input.reset(); // Adds "Select all" to context menu in FF - if (!cm.somethingSelected()) { - te.value = input.prevInput = ' '; - } + if (!cm.somethingSelected()) { te.value = input.prevInput = " "; } input.contextMenuPending = rehide; display.selForContextMenu = cm.doc.sel; clearTimeout(display.detectingSelectAll); @@ -14477,75 +9675,58 @@ function prepareSelectAllHack() { if (te.selectionStart != null) { var selected = cm.somethingSelected(); - var extval = '\u200b' + (selected ? te.value : ''); - te.value = '\u21da'; // Used to catch context-menu undo + var extval = "\u200b" + (selected ? te.value : ""); + te.value = "\u21da"; // Used to catch context-menu undo te.value = extval; - input.prevInput = selected ? '' : '\u200b'; - te.selectionStart = 1; - te.selectionEnd = extval.length; + input.prevInput = selected ? "" : "\u200b"; + te.selectionStart = 1; te.selectionEnd = extval.length; // Re-set this, in case some other handler touched the // selection in the meantime. display.selForContextMenu = cm.doc.sel; } } function rehide() { - if (input.contextMenuPending != rehide) { - return; - } + if (input.contextMenuPending != rehide) { return } input.contextMenuPending = false; input.wrapper.style.cssText = oldWrapperCSS; te.style.cssText = oldCSS; - if (ie && ie_version < 9) { - display.scrollbars.setScrollTop( - (display.scroller.scrollTop = scrollPos), - ); - } + if (ie && ie_version < 9) { display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos); } // Try to detect the user choosing select-all if (te.selectionStart != null) { - if (!ie || (ie && ie_version < 9)) { - prepareSelectAllHack(); - } - var i = 0, - poll = function () { - if ( - display.selForContextMenu == cm.doc.sel && - te.selectionStart == 0 && - te.selectionEnd > 0 && - input.prevInput == '\u200b' - ) { - operation(cm, selectAll)(cm); - } else if (i++ < 10) { - display.detectingSelectAll = setTimeout(poll, 500); - } else { - display.selForContextMenu = null; - display.input.reset(); - } - }; + if (!ie || (ie && ie_version < 9)) { prepareSelectAllHack(); } + var i = 0, poll = function () { + if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 && + te.selectionEnd > 0 && input.prevInput == "\u200b") { + operation(cm, selectAll)(cm); + } else if (i++ < 10) { + display.detectingSelectAll = setTimeout(poll, 500); + } else { + display.selForContextMenu = null; + display.input.reset(); + } + }; display.detectingSelectAll = setTimeout(poll, 200); } } - if (ie && ie_version >= 9) { - prepareSelectAllHack(); - } + if (ie && ie_version >= 9) { prepareSelectAllHack(); } if (captureRightClick) { e_stop(e); var mouseup = function () { - off(window, 'mouseup', mouseup); + off(window, "mouseup", mouseup); setTimeout(rehide, 20); }; - on(window, 'mouseup', mouseup); + on(window, "mouseup", mouseup); } else { setTimeout(rehide, 50); } }; TextareaInput.prototype.readOnlyChanged = function (val) { - if (!val) { - this.reset(); - } - this.textarea.disabled = val == 'nocursor'; + if (!val) { this.reset(); } + this.textarea.disabled = val == "nocursor"; + this.textarea.readOnly = !!val; }; TextareaInput.prototype.setUneditable = function () {}; @@ -14555,71 +9736,58 @@ function fromTextArea(textarea, options) { options = options ? copyObj(options) : {}; options.value = textarea.value; - if (!options.tabindex && textarea.tabIndex) { - options.tabindex = textarea.tabIndex; - } - if (!options.placeholder && textarea.placeholder) { - options.placeholder = textarea.placeholder; - } + if (!options.tabindex && textarea.tabIndex) + { options.tabindex = textarea.tabIndex; } + if (!options.placeholder && textarea.placeholder) + { options.placeholder = textarea.placeholder; } // Set autofocus to true if this textarea is focused, or if it has // autofocus and no other element is focused. if (options.autofocus == null) { - var hasFocus = activeElt(); - options.autofocus = - hasFocus == textarea || - (textarea.getAttribute('autofocus') != null && - hasFocus == document.body); + var hasFocus = activeElt(rootNode(textarea)); + options.autofocus = hasFocus == textarea || + textarea.getAttribute("autofocus") != null && hasFocus == document.body; } - function save() { - textarea.value = cm.getValue(); - } + function save() {textarea.value = cm.getValue();} var realSubmit; if (textarea.form) { - on(textarea.form, 'submit', save); + on(textarea.form, "submit", save); // Deplorable hack to make the submit method do the right thing. if (!options.leaveSubmitMethodAlone) { var form = textarea.form; realSubmit = form.submit; try { - var wrappedSubmit = (form.submit = function () { + var wrappedSubmit = form.submit = function () { save(); form.submit = realSubmit; form.submit(); form.submit = wrappedSubmit; - }); - } catch (e) {} + }; + } catch(e) {} } } options.finishInit = function (cm) { cm.save = save; - cm.getTextArea = function () { - return textarea; - }; + cm.getTextArea = function () { return textarea; }; cm.toTextArea = function () { cm.toTextArea = isNaN; // Prevent this from being ran twice save(); textarea.parentNode.removeChild(cm.getWrapperElement()); - textarea.style.display = ''; + textarea.style.display = ""; if (textarea.form) { - off(textarea.form, 'submit', save); - if ( - !options.leaveSubmitMethodAlone && - typeof textarea.form.submit == 'function' - ) { - textarea.form.submit = realSubmit; - } + off(textarea.form, "submit", save); + if (!options.leaveSubmitMethodAlone && typeof textarea.form.submit == "function") + { textarea.form.submit = realSubmit; } } }; }; - textarea.style.display = 'none'; - var cm = CodeMirror(function (node) { - return textarea.parentNode.insertBefore(node, textarea.nextSibling); - }, options); - return cm; + textarea.style.display = "none"; + var cm = CodeMirror(function (node) { return textarea.parentNode.insertBefore(node, textarea.nextSibling); }, + options); + return cm } function addLegacyProps(CodeMirror) { @@ -14673,44 +9841,28 @@ addEditorMethods(CodeMirror); // Set up methods on CodeMirror's prototype to redirect to the editor's document. - var dontDelegate = 'iter insert remove copy getEditor constructor'.split(' '); - for (var prop in Doc.prototype) { - if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0) { - CodeMirror.prototype[prop] = (function (method) { - return function () { - return method.apply(this.doc, arguments); - }; - })(Doc.prototype[prop]); - } - } + var dontDelegate = "iter insert remove copy getEditor constructor".split(" "); + for (var prop in Doc.prototype) { if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0) + { CodeMirror.prototype[prop] = (function(method) { + return function() {return method.apply(this.doc, arguments)} + })(Doc.prototype[prop]); } } eventMixin(Doc); - CodeMirror.inputStyles = { - textarea: TextareaInput, - contenteditable: ContentEditableInput, - }; + CodeMirror.inputStyles = {"textarea": TextareaInput, "contenteditable": ContentEditableInput}; // Extra arguments are stored as the mode's dependencies, which is // used by (legacy) mechanisms like loadmode.js to automatically // load a mode. (Preferred mechanism is the require/define calls.) - CodeMirror.defineMode = function (name /*, mode, …*/) { - if (!CodeMirror.defaults.mode && name != 'null') { - CodeMirror.defaults.mode = name; - } + CodeMirror.defineMode = function(name/*, mode, …*/) { + if (!CodeMirror.defaults.mode && name != "null") { CodeMirror.defaults.mode = name; } defineMode.apply(this, arguments); }; CodeMirror.defineMIME = defineMIME; // Minimal default mode. - CodeMirror.defineMode('null', function () { - return { - token: function (stream) { - return stream.skipToEnd(); - }, - }; - }); - CodeMirror.defineMIME('text/plain', 'null'); + CodeMirror.defineMode("null", function () { return ({token: function (stream) { return stream.skipToEnd(); }}); }); + CodeMirror.defineMIME("text/plain", "null"); // EXTENSIONS @@ -14725,7 +9877,8 @@ addLegacyProps(CodeMirror); - CodeMirror.version = '5.51.0'; + CodeMirror.version = "5.65.17"; return CodeMirror; -}); + +}))); diff --git a/web/static/lib/codemirror/codemirror.scss b/web/static/lib/codemirror/codemirror.scss index d4201bbb..f4d5718a 100644 --- a/web/static/lib/codemirror/codemirror.scss +++ b/web/static/lib/codemirror/codemirror.scss @@ -18,8 +18,7 @@ padding: 0 4px; /* Horizontal padding of content */ } -.CodeMirror-scrollbar-filler, -.CodeMirror-gutter-filler { +.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { background-color: white; /* The little square between H and V scrollbars */ } @@ -30,8 +29,7 @@ background-color: #f7f7f7; white-space: nowrap; } -.CodeMirror-linenumbers { -} +.CodeMirror-linenumbers {} .CodeMirror-linenumber { padding: 0 3px 0 5px; min-width: 20px; @@ -40,12 +38,8 @@ white-space: nowrap; } -.CodeMirror-guttermarker { - color: black; -} -.CodeMirror-guttermarker-subtle { - color: #999; -} +.CodeMirror-guttermarker { color: black; } +.CodeMirror-guttermarker-subtle { color: #999; } /* CURSOR */ @@ -66,183 +60,89 @@ .cm-fat-cursor div.CodeMirror-cursors { z-index: 1; } -.cm-fat-cursor-mark { - background-color: rgba(20, 255, 20, 0.5); - -webkit-animation: blink 1.06s steps(1) infinite; - -moz-animation: blink 1.06s steps(1) infinite; - animation: blink 1.06s steps(1) infinite; -} -.cm-animate-fat-cursor { - width: auto; - border: 0; - -webkit-animation: blink 1.06s steps(1) infinite; - -moz-animation: blink 1.06s steps(1) infinite; - animation: blink 1.06s steps(1) infinite; - background-color: #7e7; -} +.cm-fat-cursor .CodeMirror-line::selection, +.cm-fat-cursor .CodeMirror-line > span::selection, +.cm-fat-cursor .CodeMirror-line > span > span::selection { background: transparent; } +.cm-fat-cursor .CodeMirror-line::-moz-selection, +.cm-fat-cursor .CodeMirror-line > span::-moz-selection, +.cm-fat-cursor .CodeMirror-line > span > span::-moz-selection { background: transparent; } +.cm-fat-cursor { caret-color: transparent; } @-moz-keyframes blink { - 0% { - } - 50% { - background-color: transparent; - } - 100% { - } + 0% {} + 50% { background-color: transparent; } + 100% {} } @-webkit-keyframes blink { - 0% { - } - 50% { - background-color: transparent; - } - 100% { - } + 0% {} + 50% { background-color: transparent; } + 100% {} } @keyframes blink { - 0% { - } - 50% { - background-color: transparent; - } - 100% { - } + 0% {} + 50% { background-color: transparent; } + 100% {} } /* Can style cursor different in overwrite (non-insert) mode */ -.CodeMirror-overwrite .CodeMirror-cursor { -} +.CodeMirror-overwrite .CodeMirror-cursor {} -.cm-tab { - display: inline-block; - text-decoration: inherit; -} +.cm-tab { display: inline-block; text-decoration: inherit; } .CodeMirror-rulers { position: absolute; - left: 0; - right: 0; - top: -50px; - bottom: 0; + left: 0; right: 0; top: -50px; bottom: 0; overflow: hidden; } .CodeMirror-ruler { border-left: 1px solid #ccc; - top: 0; - bottom: 0; + top: 0; bottom: 0; position: absolute; } /* DEFAULT THEME */ -.cm-s-default .cm-header { - color: blue; -} -.cm-s-default .cm-quote { - color: #090; -} -.cm-negative { - color: #d44; -} -.cm-positive { - color: #292; -} -.cm-header, -.cm-strong { - font-weight: bold; -} -.cm-em { - font-style: italic; -} -.cm-link { - text-decoration: underline; -} -.cm-strikethrough { - text-decoration: line-through; -} - -.cm-s-default .cm-keyword { - color: #708; -} -.cm-s-default .cm-atom { - color: #219; -} -.cm-s-default .cm-number { - color: #164; -} -.cm-s-default .cm-def { - color: #00f; -} +.cm-s-default .cm-header {color: blue;} +.cm-s-default .cm-quote {color: #090;} +.cm-negative {color: #d44;} +.cm-positive {color: #292;} +.cm-header, .cm-strong {font-weight: bold;} +.cm-em {font-style: italic;} +.cm-link {text-decoration: underline;} +.cm-strikethrough {text-decoration: line-through;} + +.cm-s-default .cm-keyword {color: #708;} +.cm-s-default .cm-atom {color: #219;} +.cm-s-default .cm-number {color: #164;} +.cm-s-default .cm-def {color: #00f;} .cm-s-default .cm-variable, .cm-s-default .cm-punctuation, .cm-s-default .cm-property, -.cm-s-default .cm-operator { -} -.cm-s-default .cm-variable-2 { - color: #05a; -} -.cm-s-default .cm-variable-3, -.cm-s-default .cm-type { - color: #085; -} -.cm-s-default .cm-comment { - color: #a50; -} -.cm-s-default .cm-string { - color: #a11; -} -.cm-s-default .cm-string-2 { - color: #f50; -} -.cm-s-default .cm-meta { - color: #555; -} -.cm-s-default .cm-qualifier { - color: #555; -} -.cm-s-default .cm-builtin { - color: #30a; -} -.cm-s-default .cm-bracket { - color: #997; -} -.cm-s-default .cm-tag { - color: #170; -} -.cm-s-default .cm-attribute { - color: #00c; -} -.cm-s-default .cm-hr { - color: #999; -} -.cm-s-default .cm-link { - color: #00c; -} - -.cm-s-default .cm-error { - color: #f00; -} -.cm-invalidchar { - color: #f00; -} - -.CodeMirror-composing { - border-bottom: 2px solid; -} +.cm-s-default .cm-operator {} +.cm-s-default .cm-variable-2 {color: #05a;} +.cm-s-default .cm-variable-3, .cm-s-default .cm-type {color: #085;} +.cm-s-default .cm-comment {color: #a50;} +.cm-s-default .cm-string {color: #a11;} +.cm-s-default .cm-string-2 {color: #f50;} +.cm-s-default .cm-meta {color: #555;} +.cm-s-default .cm-qualifier {color: #555;} +.cm-s-default .cm-builtin {color: #30a;} +.cm-s-default .cm-bracket {color: #997;} +.cm-s-default .cm-tag {color: #170;} +.cm-s-default .cm-attribute {color: #00c;} +.cm-s-default .cm-hr {color: #999;} +.cm-s-default .cm-link {color: #00c;} + +.cm-s-default .cm-error {color: #f00;} +.cm-invalidchar {color: #f00;} + +.CodeMirror-composing { border-bottom: 2px solid; } /* Default styles for common addons */ -div.CodeMirror span.CodeMirror-matchingbracket { - color: #0b0; -} -div.CodeMirror span.CodeMirror-nonmatchingbracket { - color: #a22; -} -.CodeMirror-matchingtag { - background: rgba(255, 150, 0, 0.3); -} -.CodeMirror-activeline-background { - background: #e8f2ff; -} +div.CodeMirror span.CodeMirror-matchingbracket {color: #0b0;} +div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #a22;} +.CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); } +.CodeMirror-activeline-background {background: #e8f2ff;} /* STOP */ @@ -257,56 +157,48 @@ div.CodeMirror span.CodeMirror-nonmatchingbracket { .CodeMirror-scroll { overflow: scroll !important; /* Things will break if this is overridden */ - /* 30px is the magic margin used to hide the element's real scrollbars */ + /* 50px is the magic margin used to hide the element's real scrollbars */ /* See overflow: hidden in .CodeMirror */ - margin-bottom: -30px; - margin-right: -30px; - padding-bottom: 30px; + margin-bottom: -50px; margin-right: -50px; + padding-bottom: 50px; height: 100%; outline: none; /* Prevent dragging from highlighting the element */ position: relative; + z-index: 0; } .CodeMirror-sizer { position: relative; - border-right: 30px solid transparent; + border-right: 50px solid transparent; } /* The fake, visible scrollbars. Used to force redraw during scrolling before actual scrolling happens, thus preventing shaking and flickering artifacts. */ -.CodeMirror-vscrollbar, -.CodeMirror-hscrollbar, -.CodeMirror-scrollbar-filler, -.CodeMirror-gutter-filler { +.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { position: absolute; z-index: 6; display: none; + outline: none; } .CodeMirror-vscrollbar { - right: 0; - top: 0; + right: 0; top: 0; overflow-x: hidden; overflow-y: scroll; } .CodeMirror-hscrollbar { - bottom: 0; - left: 0; + bottom: 0; left: 0; overflow-y: hidden; overflow-x: scroll; } .CodeMirror-scrollbar-filler { - right: 0; - bottom: 0; + right: 0; bottom: 0; } .CodeMirror-gutter-filler { - left: 0; - bottom: 0; + left: 0; bottom: 0; } .CodeMirror-gutters { - position: absolute; - left: 0; - top: 0; + position: absolute; left: 0; top: 0; min-height: 100%; z-index: 3; } @@ -315,7 +207,7 @@ div.CodeMirror span.CodeMirror-nonmatchingbracket { height: 100%; display: inline-block; vertical-align: top; - margin-bottom: -30px; + margin-bottom: -50px; } .CodeMirror-gutter-wrapper { position: absolute; @@ -325,8 +217,7 @@ div.CodeMirror span.CodeMirror-nonmatchingbracket { } .CodeMirror-gutter-background { position: absolute; - top: 0; - bottom: 0; + top: 0; bottom: 0; z-index: 4; } .CodeMirror-gutter-elt { @@ -334,12 +225,8 @@ div.CodeMirror span.CodeMirror-nonmatchingbracket { cursor: default; z-index: 4; } -.CodeMirror-gutter-wrapper ::selection { - background-color: transparent; -} -.CodeMirror-gutter-wrapper ::-moz-selection { - background-color: transparent; -} +.CodeMirror-gutter-wrapper ::selection { background-color: transparent } +.CodeMirror-gutter-wrapper ::-moz-selection { background-color: transparent } .CodeMirror-lines { cursor: text; @@ -348,9 +235,7 @@ div.CodeMirror span.CodeMirror-nonmatchingbracket { .CodeMirror pre.CodeMirror-line, .CodeMirror pre.CodeMirror-line-like { /* Reset some styles that the rest of the page might have set */ - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; + -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; border-width: 0; background: transparent; font-family: inherit; @@ -376,10 +261,7 @@ div.CodeMirror span.CodeMirror-nonmatchingbracket { .CodeMirror-linebackground { position: absolute; - left: 0; - right: 0; - top: 0; - bottom: 0; + left: 0; right: 0; top: 0; bottom: 0; z-index: 0; } @@ -389,12 +271,9 @@ div.CodeMirror span.CodeMirror-nonmatchingbracket { padding: 0.1px; /* Force widget margins to stay inside of the container */ } -.CodeMirror-widget { -} +.CodeMirror-widget {} -.CodeMirror-rtl pre { - direction: rtl; -} +.CodeMirror-rtl pre { direction: rtl; } .CodeMirror-code { outline: none; @@ -422,9 +301,7 @@ div.CodeMirror span.CodeMirror-nonmatchingbracket { position: absolute; pointer-events: none; } -.CodeMirror-measure pre { - position: static; -} +.CodeMirror-measure pre { position: static; } div.CodeMirror-cursors { visibility: hidden; @@ -439,35 +316,19 @@ div.CodeMirror-dragcursors { visibility: visible; } -.CodeMirror-selected { - background: #d9d9d9; -} -.CodeMirror-focused .CodeMirror-selected { - background: #d7d4f0; -} -.CodeMirror-crosshair { - cursor: crosshair; -} -.CodeMirror-line::selection, -.CodeMirror-line > span::selection, -.CodeMirror-line > span > span::selection { - background: #d7d4f0; -} -.CodeMirror-line::-moz-selection, -.CodeMirror-line > span::-moz-selection, -.CodeMirror-line > span > span::-moz-selection { - background: #d7d4f0; -} +.CodeMirror-selected { background: #d9d9d9; } +.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; } +.CodeMirror-crosshair { cursor: crosshair; } +.CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection { background: #d7d4f0; } +.CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection { background: #d7d4f0; } .cm-searching { background-color: #ffa; - background-color: rgba(255, 255, 0, 0.4); + background-color: rgba(255, 255, 0, .4); } /* Used to force a border model for a node */ -.cm-force-border { - padding-right: 0.1px; -} +.cm-force-border { padding-right: .1px; } @media print { /* Hide the cursor when printing */ @@ -477,11 +338,7 @@ div.CodeMirror-dragcursors { } /* See issue #2901 */ -.cm-tab-wrap-hack:after { - content: ''; -} +.cm-tab-wrap-hack:after { content: ''; } /* Help users use markselection to safely style text background */ -span.CodeMirror-selectedtext { - background: none; -} +span.CodeMirror-selectedtext { background: none; } diff --git a/web/static/lib/codemirror/gfm.js b/web/static/lib/codemirror/gfm.js index dc0efe40..65288d75 100644 --- a/web/static/lib/codemirror/gfm.js +++ b/web/static/lib/codemirror/gfm.js @@ -1,158 +1,129 @@ // CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: https://codemirror.net/LICENSE +// Distributed under an MIT license: https://codemirror.net/5/LICENSE -(function (mod) { - if (typeof exports == 'object' && typeof module == 'object') - // CommonJS - mod( - require('../../lib/codemirror'), - require('../markdown/markdown'), - require('../../addon/mode/overlay'), - ); - else if (typeof define == 'function' && define.amd) - // AMD - define([ - '../../lib/codemirror', - '../markdown/markdown', - '../../addon/mode/overlay', - ], mod); - // Plain browser env - else mod(CodeMirror); -})(function (CodeMirror) { - 'use strict'; +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror"), require("../markdown/markdown"), require("../../addon/mode/overlay")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror", "../markdown/markdown", "../../addon/mode/overlay"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; - var urlRE = - /^((?:(?:aaas?|about|acap|adiumxtra|af[ps]|aim|apt|attachment|aw|beshare|bitcoin|bolo|callto|cap|chrome(?:-extension)?|cid|coap|com-eventbrite-attendee|content|crid|cvs|data|dav|dict|dlna-(?:playcontainer|playsingle)|dns|doi|dtn|dvb|ed2k|facetime|feed|file|finger|fish|ftp|geo|gg|git|gizmoproject|go|gopher|gtalk|h323|hcp|https?|iax|icap|icon|im|imap|info|ipn|ipp|irc[6s]?|iris(?:\.beep|\.lwz|\.xpc|\.xpcs)?|itms|jar|javascript|jms|keyparc|lastfm|ldaps?|magnet|mailto|maps|market|message|mid|mms|ms-help|msnim|msrps?|mtqp|mumble|mupdate|mvn|news|nfs|nih?|nntp|notes|oid|opaquelocktoken|palm|paparazzi|platform|pop|pres|proxy|psyc|query|res(?:ource)?|rmi|rsync|rtmp|rtsp|secondlife|service|session|sftp|sgn|shttp|sieve|sips?|skype|sm[bs]|snmp|soap\.beeps?|soldat|spotify|ssh|steam|svn|tag|teamspeak|tel(?:net)?|tftp|things|thismessage|tip|tn3270|tv|udp|unreal|urn|ut2004|vemmi|ventrilo|view-source|webcal|wss?|wtai|wyciwyg|xcon(?:-userid)?|xfire|xmlrpc\.beeps?|xmpp|xri|ymsgr|z39\.50[rs]?):(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]|\([^\s()<>]*\))+(?:\([^\s()<>]*\)|[^\s`*!()\[\]{};:'".,<>?«»“”‘’]))/i; +var urlRE = /^((?:(?:aaas?|about|acap|adiumxtra|af[ps]|aim|apt|attachment|aw|beshare|bitcoin|bolo|callto|cap|chrome(?:-extension)?|cid|coap|com-eventbrite-attendee|content|crid|cvs|data|dav|dict|dlna-(?:playcontainer|playsingle)|dns|doi|dtn|dvb|ed2k|facetime|feed|file|finger|fish|ftp|geo|gg|git|gizmoproject|go|gopher|gtalk|h323|hcp|https?|iax|icap|icon|im|imap|info|ipn|ipp|irc[6s]?|iris(?:\.beep|\.lwz|\.xpc|\.xpcs)?|itms|jar|javascript|jms|keyparc|lastfm|ldaps?|magnet|mailto|maps|market|message|mid|mms|ms-help|msnim|msrps?|mtqp|mumble|mupdate|mvn|news|nfs|nih?|nntp|notes|oid|opaquelocktoken|palm|paparazzi|platform|pop|pres|proxy|psyc|query|res(?:ource)?|rmi|rsync|rtmp|rtsp|secondlife|service|session|sftp|sgn|shttp|sieve|sips?|skype|sm[bs]|snmp|soap\.beeps?|soldat|spotify|ssh|steam|svn|tag|teamspeak|tel(?:net)?|tftp|things|thismessage|tip|tn3270|tv|udp|unreal|urn|ut2004|vemmi|ventrilo|view-source|webcal|wss?|wtai|wyciwyg|xcon(?:-userid)?|xfire|xmlrpc\.beeps?|xmpp|xri|ymsgr|z39\.50[rs]?):(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]|\([^\s()<>]*\))+(?:\([^\s()<>]*\)|[^\s`*!()\[\]{};:'".,<>?«»“”‘’]))/i - CodeMirror.defineMode( - 'gfm', - function (config, modeConfig) { - var codeDepth = 0; - function blankLine(state) { +CodeMirror.defineMode("gfm", function(config, modeConfig) { + var codeDepth = 0; + function blankLine(state) { + state.code = false; + return null; + } + var gfmOverlay = { + startState: function() { + return { + code: false, + codeBlock: false, + ateSpace: false + }; + }, + copyState: function(s) { + return { + code: s.code, + codeBlock: s.codeBlock, + ateSpace: s.ateSpace + }; + }, + token: function(stream, state) { + state.combineTokens = null; + + // Hack to prevent formatting override inside code blocks (block and inline) + if (state.codeBlock) { + if (stream.match(/^```+/)) { + state.codeBlock = false; + return null; + } + stream.skipToEnd(); + return null; + } + if (stream.sol()) { state.code = false; + } + if (stream.sol() && stream.match(/^```+/)) { + stream.skipToEnd(); + state.codeBlock = true; return null; } - var gfmOverlay = { - startState: function () { - return { - code: false, - codeBlock: false, - ateSpace: false, - }; - }, - copyState: function (s) { - return { - code: s.code, - codeBlock: s.codeBlock, - ateSpace: s.ateSpace, - }; - }, - token: function (stream, state) { - state.combineTokens = null; - - // Hack to prevent formatting override inside code blocks (block and inline) - if (state.codeBlock) { - if (stream.match(/^```+/)) { - state.codeBlock = false; - return null; - } - stream.skipToEnd(); - return null; - } - if (stream.sol()) { + // If this block is changed, it may need to be updated in Markdown mode + if (stream.peek() === '`') { + stream.next(); + var before = stream.pos; + stream.eatWhile('`'); + var difference = 1 + stream.pos - before; + if (!state.code) { + codeDepth = difference; + state.code = true; + } else { + if (difference === codeDepth) { // Must be exact state.code = false; } - if (stream.sol() && stream.match(/^```+/)) { - stream.skipToEnd(); - state.codeBlock = true; - return null; - } - // If this block is changed, it may need to be updated in Markdown mode - if (stream.peek() === '`') { - stream.next(); - var before = stream.pos; - stream.eatWhile('`'); - var difference = 1 + stream.pos - before; - if (!state.code) { - codeDepth = difference; - state.code = true; - } else { - if (difference === codeDepth) { - // Must be exact - state.code = false; - } - } - return null; - } else if (state.code) { - stream.next(); - return null; - } - // Check if space. If so, links can be formatted later on - if (stream.eatSpace()) { - state.ateSpace = true; - return null; - } - if (stream.sol() || state.ateSpace) { - state.ateSpace = false; - if (modeConfig.gitHubSpice !== false) { - if ( - stream.match( - /^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+@)?(?=.{0,6}\d)(?:[a-f0-9]{7,40}\b)/, - ) - ) { - // User/Project@SHA - // User@SHA - // SHA - state.combineTokens = true; - return 'link'; - } else if ( - stream.match( - /^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+)?#[0-9]+\b/, - ) - ) { - // User/Project#Num - // User#Num - // #Num - state.combineTokens = true; - return 'link'; - } - } - } - if ( - stream.match(urlRE) && - stream.string.slice(stream.start - 2, stream.start) != '](' && - (stream.start == 0 || - /\W/.test(stream.string.charAt(stream.start - 1))) - ) { - // URLs - // Taken from http://daringfireball.net/2010/07/improved_regex_for_matching_urls - // And then (issue #1160) simplified to make it not crash the Chrome Regexp engine - // And then limited url schemes to the CommonMark list, so foo:bar isn't matched as a URL + } + return null; + } else if (state.code) { + stream.next(); + return null; + } + // Check if space. If so, links can be formatted later on + if (stream.eatSpace()) { + state.ateSpace = true; + return null; + } + if (stream.sol() || state.ateSpace) { + state.ateSpace = false; + if (modeConfig.gitHubSpice !== false) { + if(stream.match(/^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+@)?(?=.{0,6}\d)(?:[a-f0-9]{7,40}\b)/)) { + // User/Project@SHA + // User@SHA + // SHA + state.combineTokens = true; + return "link"; + } else if (stream.match(/^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+)?#[0-9]+\b/)) { + // User/Project#Num + // User#Num + // #Num state.combineTokens = true; - return 'link'; + return "link"; } - stream.next(); - return null; - }, - blankLine: blankLine, - }; - - var markdownConfig = { - taskLists: true, - strikethrough: true, - emoji: true, - }; - for (var attr in modeConfig) { - markdownConfig[attr] = modeConfig[attr]; + } } - markdownConfig.name = 'markdown'; - return CodeMirror.overlayMode( - CodeMirror.getMode(config, markdownConfig), - gfmOverlay, - ); + if (stream.match(urlRE) && + stream.string.slice(stream.start - 2, stream.start) != "](" && + (stream.start == 0 || /\W/.test(stream.string.charAt(stream.start - 1)))) { + // URLs + // Taken from http://daringfireball.net/2010/07/improved_regex_for_matching_urls + // And then (issue #1160) simplified to make it not crash the Chrome Regexp engine + // And then limited url schemes to the CommonMark list, so foo:bar isn't matched as a URL + state.combineTokens = true; + return "link"; + } + stream.next(); + return null; }, - 'markdown', - ); + blankLine: blankLine + }; + + var markdownConfig = { + taskLists: true, + strikethrough: true, + emoji: true + }; + for (var attr in modeConfig) { + markdownConfig[attr] = modeConfig[attr]; + } + markdownConfig.name = "markdown"; + return CodeMirror.overlayMode(CodeMirror.getMode(config, markdownConfig), gfmOverlay); + +}, "markdown"); - CodeMirror.defineMIME('text/x-gfm', 'gfm'); + CodeMirror.defineMIME("text/x-gfm", "gfm"); }); diff --git a/web/static/lib/codemirror/javascript.js b/web/static/lib/codemirror/javascript.js index 42d407f8..bb735ebc 100644 --- a/web/static/lib/codemirror/javascript.js +++ b/web/static/lib/codemirror/javascript.js @@ -1,1345 +1,960 @@ // CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: https://codemirror.net/LICENSE +// Distributed under an MIT license: https://codemirror.net/5/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("javascript", function(config, parserConfig) { + var indentUnit = config.indentUnit; + var statementIndent = parserConfig.statementIndent; + var jsonldMode = parserConfig.jsonld; + var jsonMode = parserConfig.json || jsonldMode; + var trackScope = parserConfig.trackScope !== false + var isTS = parserConfig.typescript; + var wordRE = parserConfig.wordCharacters || /[\w$\xa1-\uffff]/; + + // Tokenizer + + var keywords = function(){ + function kw(type) {return {type: type, style: "keyword"};} + var A = kw("keyword a"), B = kw("keyword b"), C = kw("keyword c"), D = kw("keyword d"); + var operator = kw("operator"), atom = {type: "atom", style: "atom"}; -(function (mod) { - if (typeof exports == 'object' && typeof module == 'object') - // CommonJS - mod(require('../../lib/codemirror')); - else if (typeof define == 'function' && define.amd) - // AMD - define(['../../lib/codemirror'], mod); - // Plain browser env - else mod(CodeMirror); -})(function (CodeMirror) { - 'use strict'; - - CodeMirror.defineMode('javascript', function (config, parserConfig) { - var indentUnit = config.indentUnit; - var statementIndent = parserConfig.statementIndent; - var jsonldMode = parserConfig.jsonld; - var jsonMode = parserConfig.json || jsonldMode; - var isTS = parserConfig.typescript; - var wordRE = parserConfig.wordCharacters || /[\w$\xa1-\uffff]/; - - // Tokenizer - - var keywords = (function () { - function kw(type) { - return { type: type, style: 'keyword' }; - } - var A = kw('keyword a'), - B = kw('keyword b'), - C = kw('keyword c'), - D = kw('keyword d'); - var operator = kw('operator'), - atom = { type: 'atom', style: 'atom' }; - - return { - if: kw('if'), - while: A, - with: A, - else: B, - do: B, - try: B, - finally: B, - return: D, - break: D, - continue: D, - new: kw('new'), - delete: C, - void: C, - throw: C, - debugger: kw('debugger'), - var: kw('var'), - const: kw('var'), - let: kw('var'), - function: kw('function'), - catch: kw('catch'), - for: kw('for'), - switch: kw('switch'), - case: kw('case'), - default: kw('default'), - in: operator, - typeof: operator, - instanceof: operator, - true: atom, - false: atom, - null: atom, - undefined: atom, - NaN: atom, - Infinity: atom, - this: kw('this'), - class: kw('class'), - super: kw('atom'), - yield: C, - export: kw('export'), - import: kw('import'), - extends: C, - await: C, - }; - })(); - - var isOperatorChar = /[+\-*&%=<>!?|~^@]/; - var isJsonldKeyword = - /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/; - - function readRegexp(stream) { - var escaped = false, - next, - inSet = false; - while ((next = stream.next()) != null) { - if (!escaped) { - if (next == '/' && !inSet) return; - if (next == '[') inSet = true; - else if (inSet && next == ']') inSet = false; - } - escaped = !escaped && next == '\\'; - } - } - - // Used as scratch variables to communicate multiple values without - // consing up tons of objects. - var type, content; - function ret(tp, style, cont) { - type = tp; - content = cont; - return style; - } - function tokenBase(stream, state) { - var ch = stream.next(); - if (ch == '"' || ch == "'") { - state.tokenize = tokenString(ch); - return state.tokenize(stream, state); - } else if (ch == '.' && stream.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/)) { - return ret('number', 'number'); - } else if (ch == '.' && stream.match('..')) { - return ret('spread', 'meta'); - } else if (/[\[\]{}\(\),;\:\.]/.test(ch)) { - return ret(ch); - } else if (ch == '=' && stream.eat('>')) { - return ret('=>', 'operator'); - } else if ( - ch == '0' && - stream.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/) - ) { - return ret('number', 'number'); - } else if (/\d/.test(ch)) { - stream.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/); - return ret('number', 'number'); - } else if (ch == '/') { - if (stream.eat('*')) { - state.tokenize = tokenComment; - return tokenComment(stream, state); - } else if (stream.eat('/')) { - stream.skipToEnd(); - return ret('comment', 'comment'); - } else if (expressionAllowed(stream, state, 1)) { - readRegexp(stream); - stream.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/); - return ret('regexp', 'string-2'); - } else { - stream.eat('='); - return ret('operator', 'operator', stream.current()); - } - } else if (ch == '`') { - state.tokenize = tokenQuasi; - return tokenQuasi(stream, state); - } else if (ch == '#') { - stream.skipToEnd(); - return ret('error', 'error'); - } else if ( - (ch == '<' && stream.match('!--')) || - (ch == '-' && stream.match('->')) - ) { + return { + "if": kw("if"), "while": A, "with": A, "else": B, "do": B, "try": B, "finally": B, + "return": D, "break": D, "continue": D, "new": kw("new"), "delete": C, "void": C, "throw": C, + "debugger": kw("debugger"), "var": kw("var"), "const": kw("var"), "let": kw("var"), + "function": kw("function"), "catch": kw("catch"), + "for": kw("for"), "switch": kw("switch"), "case": kw("case"), "default": kw("default"), + "in": operator, "typeof": operator, "instanceof": operator, + "true": atom, "false": atom, "null": atom, "undefined": atom, "NaN": atom, "Infinity": atom, + "this": kw("this"), "class": kw("class"), "super": kw("atom"), + "yield": C, "export": kw("export"), "import": kw("import"), "extends": C, + "await": C + }; + }(); + + var isOperatorChar = /[+\-*&%=<>!?|~^@]/; + var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/; + + function readRegexp(stream) { + var escaped = false, next, inSet = false; + while ((next = stream.next()) != null) { + if (!escaped) { + if (next == "/" && !inSet) return; + if (next == "[") inSet = true; + else if (inSet && next == "]") inSet = false; + } + escaped = !escaped && next == "\\"; + } + } + + // Used as scratch variables to communicate multiple values without + // consing up tons of objects. + var type, content; + function ret(tp, style, cont) { + type = tp; content = cont; + return style; + } + function tokenBase(stream, state) { + var ch = stream.next(); + if (ch == '"' || ch == "'") { + state.tokenize = tokenString(ch); + return state.tokenize(stream, state); + } else if (ch == "." && stream.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/)) { + return ret("number", "number"); + } else if (ch == "." && stream.match("..")) { + return ret("spread", "meta"); + } else if (/[\[\]{}\(\),;\:\.]/.test(ch)) { + return ret(ch); + } else if (ch == "=" && stream.eat(">")) { + return ret("=>", "operator"); + } else if (ch == "0" && stream.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/)) { + return ret("number", "number"); + } else if (/\d/.test(ch)) { + stream.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/); + return ret("number", "number"); + } else if (ch == "/") { + if (stream.eat("*")) { + state.tokenize = tokenComment; + return tokenComment(stream, state); + } else if (stream.eat("/")) { stream.skipToEnd(); - return ret('comment', 'comment'); - } else if (isOperatorChar.test(ch)) { - if (ch != '>' || !state.lexical || state.lexical.type != '>') { - if (stream.eat('=')) { - if (ch == '!' || ch == '=') stream.eat('='); - } else if (/[<>*+\-]/.test(ch)) { - stream.eat(ch); - if (ch == '>') stream.eat(ch); - } - } - return ret('operator', 'operator', stream.current()); - } else if (wordRE.test(ch)) { - stream.eatWhile(wordRE); - var word = stream.current(); - if (state.lastType != '.') { - if (keywords.propertyIsEnumerable(word)) { - var kw = keywords[word]; - return ret(kw.type, kw.style, word); - } - if ( - word == 'async' && - stream.match(/^(\s|\/\*.*?\*\/)*[\[\(\w]/, false) - ) - return ret('async', 'keyword', word); - } - return ret('variable', 'variable', word); - } - } - - function tokenString(quote) { - return function (stream, state) { - var escaped = false, - next; - if ( - jsonldMode && - stream.peek() == '@' && - stream.match(isJsonldKeyword) - ) { - state.tokenize = tokenBase; - return ret('jsonld-keyword', 'meta'); - } - while ((next = stream.next()) != null) { - if (next == quote && !escaped) break; - escaped = !escaped && next == '\\'; - } - if (!escaped) state.tokenize = tokenBase; - return ret('string', 'string'); - }; - } - - function tokenComment(stream, state) { - var maybeEnd = false, - ch; - while ((ch = stream.next())) { - if (ch == '/' && maybeEnd) { - state.tokenize = tokenBase; - break; + return ret("comment", "comment"); + } else if (expressionAllowed(stream, state, 1)) { + readRegexp(stream); + stream.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/); + return ret("regexp", "string-2"); + } else { + stream.eat("="); + return ret("operator", "operator", stream.current()); + } + } else if (ch == "`") { + state.tokenize = tokenQuasi; + return tokenQuasi(stream, state); + } else if (ch == "#" && stream.peek() == "!") { + stream.skipToEnd(); + return ret("meta", "meta"); + } else if (ch == "#" && stream.eatWhile(wordRE)) { + return ret("variable", "property") + } else if (ch == "<" && stream.match("!--") || + (ch == "-" && stream.match("->") && !/\S/.test(stream.string.slice(0, stream.start)))) { + stream.skipToEnd() + return ret("comment", "comment") + } else if (isOperatorChar.test(ch)) { + if (ch != ">" || !state.lexical || state.lexical.type != ">") { + if (stream.eat("=")) { + if (ch == "!" || ch == "=") stream.eat("=") + } else if (/[<>*+\-|&?]/.test(ch)) { + stream.eat(ch) + if (ch == ">") stream.eat(ch) } - maybeEnd = ch == '*'; } - return ret('comment', 'comment'); - } - - function tokenQuasi(stream, state) { - var escaped = false, - next; - while ((next = stream.next()) != null) { - if (!escaped && (next == '`' || (next == '$' && stream.eat('{')))) { - state.tokenize = tokenBase; - break; + if (ch == "?" && stream.eat(".")) return ret(".") + return ret("operator", "operator", stream.current()); + } else if (wordRE.test(ch)) { + stream.eatWhile(wordRE); + var word = stream.current() + if (state.lastType != ".") { + if (keywords.propertyIsEnumerable(word)) { + var kw = keywords[word] + return ret(kw.type, kw.style, word) } - escaped = !escaped && next == '\\'; + if (word == "async" && stream.match(/^(\s|\/\*([^*]|\*(?!\/))*?\*\/)*[\[\(\w]/, false)) + return ret("async", "keyword", word) } - return ret('quasi', 'string-2', stream.current()); + return ret("variable", "variable", word) } + } - var brackets = '([{}])'; - // This is a crude lookahead trick to try and notice that we're - // parsing the argument patterns for a fat-arrow function before we - // actually hit the arrow token. It only works if the arrow is on - // the same line as the arguments and there's no strange noise - // (comments) in between. Fallback is to only notice when we hit the - // arrow, and not declare the arguments as locals for the arrow - // body. - function findFatArrow(stream, state) { - if (state.fatArrowAt) state.fatArrowAt = null; - var arrow = stream.string.indexOf('=>', stream.start); - if (arrow < 0) return; - - if (isTS) { - // Try to skip TypeScript return type declarations after the arguments - var m = /:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec( - stream.string.slice(stream.start, arrow), - ); - if (m) arrow = m.index; + function tokenString(quote) { + return function(stream, state) { + var escaped = false, next; + if (jsonldMode && stream.peek() == "@" && stream.match(isJsonldKeyword)){ + state.tokenize = tokenBase; + return ret("jsonld-keyword", "meta"); } - - var depth = 0, - sawSomething = false; - for (var pos = arrow - 1; pos >= 0; --pos) { - var ch = stream.string.charAt(pos); - var bracket = brackets.indexOf(ch); - if (bracket >= 0 && bracket < 3) { - if (!depth) { - ++pos; - break; - } - if (--depth == 0) { - if (ch == '(') sawSomething = true; - break; - } - } else if (bracket >= 3 && bracket < 6) { - ++depth; - } else if (wordRE.test(ch)) { - sawSomething = true; - } else if (/["'\/`]/.test(ch)) { - for (; ; --pos) { - if (pos == 0) return; - var next = stream.string.charAt(pos - 1); - if (next == ch && stream.string.charAt(pos - 2) != '\\') { - pos--; - break; - } - } - } else if (sawSomething && !depth) { - ++pos; - break; - } + while ((next = stream.next()) != null) { + if (next == quote && !escaped) break; + escaped = !escaped && next == "\\"; } - if (sawSomething && !depth) state.fatArrowAt = pos; - } - - // Parser - - var atomicTypes = { - atom: true, - number: true, - variable: true, - string: true, - regexp: true, - this: true, - 'jsonld-keyword': true, + if (!escaped) state.tokenize = tokenBase; + return ret("string", "string"); }; - - function JSLexical(indented, column, type, align, prev, info) { - this.indented = indented; - this.column = column; - this.type = type; - this.prev = prev; - this.info = info; - if (align != null) this.align = align; - } - - function inScope(state, varname) { - for (var v = state.localVars; v; v = v.next) - if (v.name == varname) return true; - for (var cx = state.context; cx; cx = cx.prev) { - for (var v = cx.vars; v; v = v.next) if (v.name == varname) return true; - } - } - - function parseJS(state, style, type, content, stream) { - var cc = state.cc; - // Communicate our context to the combinators. - // (Less wasteful than consing up a hundred closures on every call.) - cx.state = state; - cx.stream = stream; - (cx.marked = null), (cx.cc = cc); - cx.style = style; - - if (!state.lexical.hasOwnProperty('align')) state.lexical.align = true; - - while (true) { - var combinator = cc.length - ? cc.pop() - : jsonMode - ? expression - : statement; - if (combinator(type, content)) { - while (cc.length && cc[cc.length - 1].lex) cc.pop()(); - if (cx.marked) return cx.marked; - if (type == 'variable' && inScope(state, content)) - return 'variable-2'; - return style; + } + + function tokenComment(stream, state) { + var maybeEnd = false, ch; + while (ch = stream.next()) { + if (ch == "/" && maybeEnd) { + state.tokenize = tokenBase; + break; + } + maybeEnd = (ch == "*"); + } + return ret("comment", "comment"); + } + + function tokenQuasi(stream, state) { + var escaped = false, next; + while ((next = stream.next()) != null) { + if (!escaped && (next == "`" || next == "$" && stream.eat("{"))) { + state.tokenize = tokenBase; + break; + } + escaped = !escaped && next == "\\"; + } + return ret("quasi", "string-2", stream.current()); + } + + var brackets = "([{}])"; + // This is a crude lookahead trick to try and notice that we're + // parsing the argument patterns for a fat-arrow function before we + // actually hit the arrow token. It only works if the arrow is on + // the same line as the arguments and there's no strange noise + // (comments) in between. Fallback is to only notice when we hit the + // arrow, and not declare the arguments as locals for the arrow + // body. + function findFatArrow(stream, state) { + if (state.fatArrowAt) state.fatArrowAt = null; + var arrow = stream.string.indexOf("=>", stream.start); + if (arrow < 0) return; + + if (isTS) { // Try to skip TypeScript return type declarations after the arguments + var m = /:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(stream.string.slice(stream.start, arrow)) + if (m) arrow = m.index + } + + var depth = 0, sawSomething = false; + for (var pos = arrow - 1; pos >= 0; --pos) { + var ch = stream.string.charAt(pos); + var bracket = brackets.indexOf(ch); + if (bracket >= 0 && bracket < 3) { + if (!depth) { ++pos; break; } + if (--depth == 0) { if (ch == "(") sawSomething = true; break; } + } else if (bracket >= 3 && bracket < 6) { + ++depth; + } else if (wordRE.test(ch)) { + sawSomething = true; + } else if (/["'\/`]/.test(ch)) { + for (;; --pos) { + if (pos == 0) return + var next = stream.string.charAt(pos - 1) + if (next == ch && stream.string.charAt(pos - 2) != "\\") { pos--; break } } - } - } - - // Combinator utils - - var cx = { state: null, column: null, marked: null, cc: null }; - function pass() { - for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]); - } - function cont() { - pass.apply(null, arguments); - return true; - } - function inList(name, list) { - for (var v = list; v; v = v.next) if (v.name == name) return true; - return false; + } else if (sawSomething && !depth) { + ++pos; + break; + } + } + if (sawSomething && !depth) state.fatArrowAt = pos; + } + + // Parser + + var atomicTypes = {"atom": true, "number": true, "variable": true, "string": true, + "regexp": true, "this": true, "import": true, "jsonld-keyword": true}; + + function JSLexical(indented, column, type, align, prev, info) { + this.indented = indented; + this.column = column; + this.type = type; + this.prev = prev; + this.info = info; + if (align != null) this.align = align; + } + + function inScope(state, varname) { + if (!trackScope) return false + for (var v = state.localVars; v; v = v.next) + if (v.name == varname) return true; + for (var cx = state.context; cx; cx = cx.prev) { + for (var v = cx.vars; v; v = v.next) + if (v.name == varname) return true; } - function register(varname) { - var state = cx.state; - cx.marked = 'def'; - if (state.context) { - if ( - state.lexical.info == 'var' && - state.context && - state.context.block - ) { - // FIXME function decls are also not block scoped - var newContext = registerVarScoped(varname, state.context); - if (newContext != null) { - state.context = newContext; - return; - } - } else if (!inList(varname, state.localVars)) { - state.localVars = new Var(varname, state.localVars); - return; + } + + function parseJS(state, style, type, content, stream) { + var cc = state.cc; + // Communicate our context to the combinators. + // (Less wasteful than consing up a hundred closures on every call.) + cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; cx.style = style; + + if (!state.lexical.hasOwnProperty("align")) + state.lexical.align = true; + + while(true) { + var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement; + if (combinator(type, content)) { + while(cc.length && cc[cc.length - 1].lex) + cc.pop()(); + if (cx.marked) return cx.marked; + if (type == "variable" && inScope(state, content)) return "variable-2"; + return style; + } + } + } + + // Combinator utils + + var cx = {state: null, column: null, marked: null, cc: null}; + function pass() { + for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]); + } + function cont() { + pass.apply(null, arguments); + return true; + } + function inList(name, list) { + for (var v = list; v; v = v.next) if (v.name == name) return true + return false; + } + function register(varname) { + var state = cx.state; + cx.marked = "def"; + if (!trackScope) return + if (state.context) { + if (state.lexical.info == "var" && state.context && state.context.block) { + // FIXME function decls are also not block scoped + var newContext = registerVarScoped(varname, state.context) + if (newContext != null) { + state.context = newContext + return } - } - // Fall through means this is global - if (parserConfig.globalVars && !inList(varname, state.globalVars)) - state.globalVars = new Var(varname, state.globalVars); - } - function registerVarScoped(varname, context) { - if (!context) { - return null; - } else if (context.block) { - var inner = registerVarScoped(varname, context.prev); - if (!inner) return null; - if (inner == context.prev) return context; - return new Context(inner, context.vars, true); - } else if (inList(varname, context.vars)) { - return context; + } else if (!inList(varname, state.localVars)) { + state.localVars = new Var(varname, state.localVars) + return + } + } + // Fall through means this is global + if (parserConfig.globalVars && !inList(varname, state.globalVars)) + state.globalVars = new Var(varname, state.globalVars) + } + function registerVarScoped(varname, context) { + if (!context) { + return null + } else if (context.block) { + var inner = registerVarScoped(varname, context.prev) + if (!inner) return null + if (inner == context.prev) return context + return new Context(inner, context.vars, true) + } else if (inList(varname, context.vars)) { + return context + } else { + return new Context(context.prev, new Var(varname, context.vars), false) + } + } + + function isModifier(name) { + return name == "public" || name == "private" || name == "protected" || name == "abstract" || name == "readonly" + } + + // Combinators + + function Context(prev, vars, block) { this.prev = prev; this.vars = vars; this.block = block } + function Var(name, next) { this.name = name; this.next = next } + + var defaultVars = new Var("this", new Var("arguments", null)) + function pushcontext() { + cx.state.context = new Context(cx.state.context, cx.state.localVars, false) + cx.state.localVars = defaultVars + } + function pushblockcontext() { + cx.state.context = new Context(cx.state.context, cx.state.localVars, true) + cx.state.localVars = null + } + pushcontext.lex = pushblockcontext.lex = true + function popcontext() { + cx.state.localVars = cx.state.context.vars + cx.state.context = cx.state.context.prev + } + popcontext.lex = true + function pushlex(type, info) { + var result = function() { + var state = cx.state, indent = state.indented; + if (state.lexical.type == "stat") indent = state.lexical.indented; + else for (var outer = state.lexical; outer && outer.type == ")" && outer.align; outer = outer.prev) + indent = outer.indented; + state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info); + }; + result.lex = true; + return result; + } + function poplex() { + var state = cx.state; + if (state.lexical.prev) { + if (state.lexical.type == ")") + state.indented = state.lexical.indented; + state.lexical = state.lexical.prev; + } + } + poplex.lex = true; + + function expect(wanted) { + function exp(type) { + if (type == wanted) return cont(); + else if (wanted == ";" || type == "}" || type == ")" || type == "]") return pass(); + else return cont(exp); + }; + return exp; + } + + function statement(type, value) { + if (type == "var") return cont(pushlex("vardef", value), vardef, expect(";"), poplex); + if (type == "keyword a") return cont(pushlex("form"), parenExpr, statement, poplex); + if (type == "keyword b") return cont(pushlex("form"), statement, poplex); + if (type == "keyword d") return cx.stream.match(/^\s*$/, false) ? cont() : cont(pushlex("stat"), maybeexpression, expect(";"), poplex); + if (type == "debugger") return cont(expect(";")); + if (type == "{") return cont(pushlex("}"), pushblockcontext, block, poplex, popcontext); + if (type == ";") return cont(); + if (type == "if") { + if (cx.state.lexical.info == "else" && cx.state.cc[cx.state.cc.length - 1] == poplex) + cx.state.cc.pop()(); + return cont(pushlex("form"), parenExpr, statement, poplex, maybeelse); + } + if (type == "function") return cont(functiondef); + if (type == "for") return cont(pushlex("form"), pushblockcontext, forspec, statement, popcontext, poplex); + if (type == "class" || (isTS && value == "interface")) { + cx.marked = "keyword" + return cont(pushlex("form", type == "class" ? type : value), className, poplex) + } + if (type == "variable") { + if (isTS && value == "declare") { + cx.marked = "keyword" + return cont(statement) + } else if (isTS && (value == "module" || value == "enum" || value == "type") && cx.stream.match(/^\s*\w/, false)) { + cx.marked = "keyword" + if (value == "enum") return cont(enumdef); + else if (value == "type") return cont(typename, expect("operator"), typeexpr, expect(";")); + else return cont(pushlex("form"), pattern, expect("{"), pushlex("}"), block, poplex, poplex) + } else if (isTS && value == "namespace") { + cx.marked = "keyword" + return cont(pushlex("form"), expression, statement, poplex) + } else if (isTS && value == "abstract") { + cx.marked = "keyword" + return cont(statement) } else { - return new Context(context.prev, new Var(varname, context.vars), false); - } - } - - function isModifier(name) { - return ( - name == 'public' || - name == 'private' || - name == 'protected' || - name == 'abstract' || - name == 'readonly' - ); - } - - // Combinators - - function Context(prev, vars, block) { - this.prev = prev; - this.vars = vars; - this.block = block; - } - function Var(name, next) { - this.name = name; - this.next = next; - } - - var defaultVars = new Var('this', new Var('arguments', null)); - function pushcontext() { - cx.state.context = new Context( - cx.state.context, - cx.state.localVars, - false, - ); - cx.state.localVars = defaultVars; - } - function pushblockcontext() { - cx.state.context = new Context( - cx.state.context, - cx.state.localVars, - true, - ); - cx.state.localVars = null; - } - function popcontext() { - cx.state.localVars = cx.state.context.vars; - cx.state.context = cx.state.context.prev; - } - popcontext.lex = true; - function pushlex(type, info) { - var result = function () { - var state = cx.state, - indent = state.indented; - if (state.lexical.type == 'stat') indent = state.lexical.indented; - else - for ( - var outer = state.lexical; - outer && outer.type == ')' && outer.align; - outer = outer.prev - ) - indent = outer.indented; - state.lexical = new JSLexical( - indent, - cx.stream.column(), - type, - null, - state.lexical, - info, - ); - }; - result.lex = true; - return result; - } - function poplex() { - var state = cx.state; - if (state.lexical.prev) { - if (state.lexical.type == ')') state.indented = state.lexical.indented; - state.lexical = state.lexical.prev; - } - } - poplex.lex = true; - - function expect(wanted) { - function exp(type) { - if (type == wanted) return cont(); - else if (wanted == ';' || type == '}' || type == ')' || type == ']') - return pass(); - else return cont(exp); - } - return exp; - } - - function statement(type, value) { - if (type == 'var') - return cont(pushlex('vardef', value), vardef, expect(';'), poplex); - if (type == 'keyword a') - return cont(pushlex('form'), parenExpr, statement, poplex); - if (type == 'keyword b') return cont(pushlex('form'), statement, poplex); - if (type == 'keyword d') - return cx.stream.match(/^\s*$/, false) - ? cont() - : cont(pushlex('stat'), maybeexpression, expect(';'), poplex); - if (type == 'debugger') return cont(expect(';')); - if (type == '{') - return cont(pushlex('}'), pushblockcontext, block, poplex, popcontext); - if (type == ';') return cont(); - if (type == 'if') { - if ( - cx.state.lexical.info == 'else' && - cx.state.cc[cx.state.cc.length - 1] == poplex - ) - cx.state.cc.pop()(); - return cont(pushlex('form'), parenExpr, statement, poplex, maybeelse); - } - if (type == 'function') return cont(functiondef); - if (type == 'for') - return cont(pushlex('form'), forspec, statement, poplex); - if (type == 'class' || (isTS && value == 'interface')) { - cx.marked = 'keyword'; - return cont( - pushlex('form', type == 'class' ? type : value), - className, - poplex, - ); - } - if (type == 'variable') { - if (isTS && value == 'declare') { - cx.marked = 'keyword'; - return cont(statement); - } else if ( - isTS && - (value == 'module' || value == 'enum' || value == 'type') && - cx.stream.match(/^\s*\w/, false) - ) { - cx.marked = 'keyword'; - if (value == 'enum') return cont(enumdef); - else if (value == 'type') - return cont(typename, expect('operator'), typeexpr, expect(';')); - else - return cont( - pushlex('form'), - pattern, - expect('{'), - pushlex('}'), - block, - poplex, - poplex, - ); - } else if (isTS && value == 'namespace') { - cx.marked = 'keyword'; - return cont(pushlex('form'), expression, statement, poplex); - } else if (isTS && value == 'abstract') { - cx.marked = 'keyword'; - return cont(statement); - } else { - return cont(pushlex('stat'), maybelabel); - } - } - if (type == 'switch') - return cont( - pushlex('form'), - parenExpr, - expect('{'), - pushlex('}', 'switch'), - pushblockcontext, - block, - poplex, - poplex, - popcontext, - ); - if (type == 'case') return cont(expression, expect(':')); - if (type == 'default') return cont(expect(':')); - if (type == 'catch') - return cont( - pushlex('form'), - pushcontext, - maybeCatchBinding, - statement, - poplex, - popcontext, - ); - if (type == 'export') return cont(pushlex('stat'), afterExport, poplex); - if (type == 'import') return cont(pushlex('stat'), afterImport, poplex); - if (type == 'async') return cont(statement); - if (value == '@') return cont(expression, statement); - return pass(pushlex('stat'), expression, expect(';'), poplex); - } - function maybeCatchBinding(type) { - if (type == '(') return cont(funarg, expect(')')); - } - function expression(type, value) { - return expressionInner(type, value, false); - } - function expressionNoComma(type, value) { - return expressionInner(type, value, true); - } - function parenExpr(type) { - if (type != '(') return pass(); - return cont(pushlex(')'), expression, expect(')'), poplex); - } - function expressionInner(type, value, noComma) { - if (cx.state.fatArrowAt == cx.stream.start) { - var body = noComma ? arrowBodyNoComma : arrowBody; - if (type == '(') - return cont( - pushcontext, - pushlex(')'), - commasep(funarg, ')'), - poplex, - expect('=>'), - body, - popcontext, - ); - else if (type == 'variable') - return pass(pushcontext, pattern, expect('=>'), body, popcontext); - } - - var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma; - if (atomicTypes.hasOwnProperty(type)) return cont(maybeop); - if (type == 'function') return cont(functiondef, maybeop); - if (type == 'class' || (isTS && value == 'interface')) { - cx.marked = 'keyword'; - return cont(pushlex('form'), classExpression, poplex); - } - if (type == 'keyword c' || type == 'async') - return cont(noComma ? expressionNoComma : expression); - if (type == '(') - return cont( - pushlex(')'), - maybeexpression, - expect(')'), - poplex, - maybeop, - ); - if (type == 'operator' || type == 'spread') - return cont(noComma ? expressionNoComma : expression); - if (type == '[') return cont(pushlex(']'), arrayLiteral, poplex, maybeop); - if (type == '{') return contCommasep(objprop, '}', null, maybeop); - if (type == 'quasi') return pass(quasi, maybeop); - if (type == 'new') return cont(maybeTarget(noComma)); - if (type == 'import') return cont(expression); - return cont(); - } - function maybeexpression(type) { - if (type.match(/[;\}\)\],]/)) return pass(); - return pass(expression); - } - - function maybeoperatorComma(type, value) { - if (type == ',') return cont(expression); - return maybeoperatorNoComma(type, value, false); - } - function maybeoperatorNoComma(type, value, noComma) { - var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma; - var expr = noComma == false ? expression : expressionNoComma; - if (type == '=>') - return cont( - pushcontext, - noComma ? arrowBodyNoComma : arrowBody, - popcontext, - ); - if (type == 'operator') { - if (/\+\+|--/.test(value) || (isTS && value == '!')) return cont(me); - if ( - isTS && - value == '<' && - cx.stream.match(/^([^>]|<.*?>)*>\s*\(/, false) - ) - return cont(pushlex('>'), commasep(typeexpr, '>'), poplex, me); - if (value == '?') return cont(expression, expect(':'), expr); - return cont(expr); - } - if (type == 'quasi') { - return pass(quasi, me); - } - if (type == ';') return; - if (type == '(') return contCommasep(expressionNoComma, ')', 'call', me); - if (type == '.') return cont(property, me); - if (type == '[') - return cont(pushlex(']'), maybeexpression, expect(']'), poplex, me); - if (isTS && value == 'as') { - cx.marked = 'keyword'; - return cont(typeexpr, me); - } - if (type == 'regexp') { - cx.state.lastType = cx.marked = 'operator'; - cx.stream.backUp(cx.stream.pos - cx.stream.start - 1); - return cont(expr); - } - } - function quasi(type, value) { - if (type != 'quasi') return pass(); - if (value.slice(value.length - 2) != '${') return cont(quasi); - return cont(expression, continueQuasi); - } - function continueQuasi(type) { - if (type == '}') { - cx.marked = 'string-2'; - cx.state.tokenize = tokenQuasi; - return cont(quasi); - } - } - function arrowBody(type) { - findFatArrow(cx.stream, cx.state); - return pass(type == '{' ? statement : expression); - } - function arrowBodyNoComma(type) { - findFatArrow(cx.stream, cx.state); - return pass(type == '{' ? statement : expressionNoComma); - } - function maybeTarget(noComma) { - return function (type) { - if (type == '.') return cont(noComma ? targetNoComma : target); - else if (type == 'variable' && isTS) - return cont( - maybeTypeArgs, - noComma ? maybeoperatorNoComma : maybeoperatorComma, - ); - else return pass(noComma ? expressionNoComma : expression); - }; - } - function target(_, value) { - if (value == 'target') { - cx.marked = 'keyword'; - return cont(maybeoperatorComma); - } - } - function targetNoComma(_, value) { - if (value == 'target') { - cx.marked = 'keyword'; - return cont(maybeoperatorNoComma); - } - } - function maybelabel(type) { - if (type == ':') return cont(poplex, statement); - return pass(maybeoperatorComma, expect(';'), poplex); - } - function property(type) { - if (type == 'variable') { - cx.marked = 'property'; - return cont(); - } - } - function objprop(type, value) { - if (type == 'async') { - cx.marked = 'property'; - return cont(objprop); - } else if (type == 'variable' || cx.style == 'keyword') { - cx.marked = 'property'; - if (value == 'get' || value == 'set') return cont(getterSetter); - var m; // Work around fat-arrow-detection complication for detecting typescript typed arrow params - if ( - isTS && - cx.state.fatArrowAt == cx.stream.start && - (m = cx.stream.match(/^\s*:\s*/, false)) - ) - cx.state.fatArrowAt = cx.stream.pos + m[0].length; - return cont(afterprop); - } else if (type == 'number' || type == 'string') { - cx.marked = jsonldMode ? 'property' : cx.style + ' property'; - return cont(afterprop); - } else if (type == 'jsonld-keyword') { - return cont(afterprop); - } else if (isTS && isModifier(value)) { - cx.marked = 'keyword'; - return cont(objprop); - } else if (type == '[') { - return cont(expression, maybetype, expect(']'), afterprop); - } else if (type == 'spread') { - return cont(expressionNoComma, afterprop); - } else if (value == '*') { - cx.marked = 'keyword'; - return cont(objprop); - } else if (type == ':') { - return pass(afterprop); - } - } - function getterSetter(type) { - if (type != 'variable') return pass(afterprop); - cx.marked = 'property'; - return cont(functiondef); - } - function afterprop(type) { - if (type == ':') return cont(expressionNoComma); - if (type == '(') return pass(functiondef); - } - function commasep(what, end, sep) { - function proceed(type, value) { - if (sep ? sep.indexOf(type) > -1 : type == ',') { - var lex = cx.state.lexical; - if (lex.info == 'call') lex.pos = (lex.pos || 0) + 1; - return cont(function (type, value) { - if (type == end || value == end) return pass(); - return pass(what); - }, proceed); - } - if (type == end || value == end) return cont(); - if (sep && sep.indexOf(';') > -1) return pass(what); - return cont(expect(end)); - } - return function (type, value) { - if (type == end || value == end) return cont(); - return pass(what, proceed); + return cont(pushlex("stat"), maybelabel); + } + } + if (type == "switch") return cont(pushlex("form"), parenExpr, expect("{"), pushlex("}", "switch"), pushblockcontext, + block, poplex, poplex, popcontext); + if (type == "case") return cont(expression, expect(":")); + if (type == "default") return cont(expect(":")); + if (type == "catch") return cont(pushlex("form"), pushcontext, maybeCatchBinding, statement, poplex, popcontext); + if (type == "export") return cont(pushlex("stat"), afterExport, poplex); + if (type == "import") return cont(pushlex("stat"), afterImport, poplex); + if (type == "async") return cont(statement) + if (value == "@") return cont(expression, statement) + return pass(pushlex("stat"), expression, expect(";"), poplex); + } + function maybeCatchBinding(type) { + if (type == "(") return cont(funarg, expect(")")) + } + function expression(type, value) { + return expressionInner(type, value, false); + } + function expressionNoComma(type, value) { + return expressionInner(type, value, true); + } + function parenExpr(type) { + if (type != "(") return pass() + return cont(pushlex(")"), maybeexpression, expect(")"), poplex) + } + function expressionInner(type, value, noComma) { + if (cx.state.fatArrowAt == cx.stream.start) { + var body = noComma ? arrowBodyNoComma : arrowBody; + if (type == "(") return cont(pushcontext, pushlex(")"), commasep(funarg, ")"), poplex, expect("=>"), body, popcontext); + else if (type == "variable") return pass(pushcontext, pattern, expect("=>"), body, popcontext); + } + + var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma; + if (atomicTypes.hasOwnProperty(type)) return cont(maybeop); + if (type == "function") return cont(functiondef, maybeop); + if (type == "class" || (isTS && value == "interface")) { cx.marked = "keyword"; return cont(pushlex("form"), classExpression, poplex); } + if (type == "keyword c" || type == "async") return cont(noComma ? expressionNoComma : expression); + if (type == "(") return cont(pushlex(")"), maybeexpression, expect(")"), poplex, maybeop); + if (type == "operator" || type == "spread") return cont(noComma ? expressionNoComma : expression); + if (type == "[") return cont(pushlex("]"), arrayLiteral, poplex, maybeop); + if (type == "{") return contCommasep(objprop, "}", null, maybeop); + if (type == "quasi") return pass(quasi, maybeop); + if (type == "new") return cont(maybeTarget(noComma)); + return cont(); + } + function maybeexpression(type) { + if (type.match(/[;\}\)\],]/)) return pass(); + return pass(expression); + } + + function maybeoperatorComma(type, value) { + if (type == ",") return cont(maybeexpression); + return maybeoperatorNoComma(type, value, false); + } + function maybeoperatorNoComma(type, value, noComma) { + var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma; + var expr = noComma == false ? expression : expressionNoComma; + if (type == "=>") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext); + if (type == "operator") { + if (/\+\+|--/.test(value) || isTS && value == "!") return cont(me); + if (isTS && value == "<" && cx.stream.match(/^([^<>]|<[^<>]*>)*>\s*\(/, false)) + return cont(pushlex(">"), commasep(typeexpr, ">"), poplex, me); + if (value == "?") return cont(expression, expect(":"), expr); + return cont(expr); + } + if (type == "quasi") { return pass(quasi, me); } + if (type == ";") return; + if (type == "(") return contCommasep(expressionNoComma, ")", "call", me); + if (type == ".") return cont(property, me); + if (type == "[") return cont(pushlex("]"), maybeexpression, expect("]"), poplex, me); + if (isTS && value == "as") { cx.marked = "keyword"; return cont(typeexpr, me) } + if (type == "regexp") { + cx.state.lastType = cx.marked = "operator" + cx.stream.backUp(cx.stream.pos - cx.stream.start - 1) + return cont(expr) + } + } + function quasi(type, value) { + if (type != "quasi") return pass(); + if (value.slice(value.length - 2) != "${") return cont(quasi); + return cont(maybeexpression, continueQuasi); + } + function continueQuasi(type) { + if (type == "}") { + cx.marked = "string-2"; + cx.state.tokenize = tokenQuasi; + return cont(quasi); + } + } + function arrowBody(type) { + findFatArrow(cx.stream, cx.state); + return pass(type == "{" ? statement : expression); + } + function arrowBodyNoComma(type) { + findFatArrow(cx.stream, cx.state); + return pass(type == "{" ? statement : expressionNoComma); + } + function maybeTarget(noComma) { + return function(type) { + if (type == ".") return cont(noComma ? targetNoComma : target); + else if (type == "variable" && isTS) return cont(maybeTypeArgs, noComma ? maybeoperatorNoComma : maybeoperatorComma) + else return pass(noComma ? expressionNoComma : expression); + }; + } + function target(_, value) { + if (value == "target") { cx.marked = "keyword"; return cont(maybeoperatorComma); } + } + function targetNoComma(_, value) { + if (value == "target") { cx.marked = "keyword"; return cont(maybeoperatorNoComma); } + } + function maybelabel(type) { + if (type == ":") return cont(poplex, statement); + return pass(maybeoperatorComma, expect(";"), poplex); + } + function property(type) { + if (type == "variable") {cx.marked = "property"; return cont();} + } + function objprop(type, value) { + if (type == "async") { + cx.marked = "property"; + return cont(objprop); + } else if (type == "variable" || cx.style == "keyword") { + cx.marked = "property"; + if (value == "get" || value == "set") return cont(getterSetter); + var m // Work around fat-arrow-detection complication for detecting typescript typed arrow params + if (isTS && cx.state.fatArrowAt == cx.stream.start && (m = cx.stream.match(/^\s*:\s*/, false))) + cx.state.fatArrowAt = cx.stream.pos + m[0].length + return cont(afterprop); + } else if (type == "number" || type == "string") { + cx.marked = jsonldMode ? "property" : (cx.style + " property"); + return cont(afterprop); + } else if (type == "jsonld-keyword") { + return cont(afterprop); + } else if (isTS && isModifier(value)) { + cx.marked = "keyword" + return cont(objprop) + } else if (type == "[") { + return cont(expression, maybetype, expect("]"), afterprop); + } else if (type == "spread") { + return cont(expressionNoComma, afterprop); + } else if (value == "*") { + cx.marked = "keyword"; + return cont(objprop); + } else if (type == ":") { + return pass(afterprop) + } + } + function getterSetter(type) { + if (type != "variable") return pass(afterprop); + cx.marked = "property"; + return cont(functiondef); + } + function afterprop(type) { + if (type == ":") return cont(expressionNoComma); + if (type == "(") return pass(functiondef); + } + function commasep(what, end, sep) { + function proceed(type, value) { + if (sep ? sep.indexOf(type) > -1 : type == ",") { + var lex = cx.state.lexical; + if (lex.info == "call") lex.pos = (lex.pos || 0) + 1; + return cont(function(type, value) { + if (type == end || value == end) return pass() + return pass(what) + }, proceed); + } + if (type == end || value == end) return cont(); + if (sep && sep.indexOf(";") > -1) return pass(what) + return cont(expect(end)); + } + return function(type, value) { + if (type == end || value == end) return cont(); + return pass(what, proceed); + }; + } + function contCommasep(what, end, info) { + for (var i = 3; i < arguments.length; i++) + cx.cc.push(arguments[i]); + return cont(pushlex(end, info), commasep(what, end), poplex); + } + function block(type) { + if (type == "}") return cont(); + return pass(statement, block); + } + function maybetype(type, value) { + if (isTS) { + if (type == ":") return cont(typeexpr); + if (value == "?") return cont(maybetype); + } + } + function maybetypeOrIn(type, value) { + if (isTS && (type == ":" || value == "in")) return cont(typeexpr) + } + function mayberettype(type) { + if (isTS && type == ":") { + if (cx.stream.match(/^\s*\w+\s+is\b/, false)) return cont(expression, isKW, typeexpr) + else return cont(typeexpr) + } + } + function isKW(_, value) { + if (value == "is") { + cx.marked = "keyword" + return cont() + } + } + function typeexpr(type, value) { + if (value == "keyof" || value == "typeof" || value == "infer" || value == "readonly") { + cx.marked = "keyword" + return cont(value == "typeof" ? expressionNoComma : typeexpr) + } + if (type == "variable" || value == "void") { + cx.marked = "type" + return cont(afterType) + } + if (value == "|" || value == "&") return cont(typeexpr) + if (type == "string" || type == "number" || type == "atom") return cont(afterType); + if (type == "[") return cont(pushlex("]"), commasep(typeexpr, "]", ","), poplex, afterType) + if (type == "{") return cont(pushlex("}"), typeprops, poplex, afterType) + if (type == "(") return cont(commasep(typearg, ")"), maybeReturnType, afterType) + if (type == "<") return cont(commasep(typeexpr, ">"), typeexpr) + if (type == "quasi") { return pass(quasiType, afterType); } + } + function maybeReturnType(type) { + if (type == "=>") return cont(typeexpr) + } + function typeprops(type) { + if (type.match(/[\}\)\]]/)) return cont() + if (type == "," || type == ";") return cont(typeprops) + return pass(typeprop, typeprops) + } + function typeprop(type, value) { + if (type == "variable" || cx.style == "keyword") { + cx.marked = "property" + return cont(typeprop) + } else if (value == "?" || type == "number" || type == "string") { + return cont(typeprop) + } else if (type == ":") { + return cont(typeexpr) + } else if (type == "[") { + return cont(expect("variable"), maybetypeOrIn, expect("]"), typeprop) + } else if (type == "(") { + return pass(functiondecl, typeprop) + } else if (!type.match(/[;\}\)\],]/)) { + return cont() + } + } + function quasiType(type, value) { + if (type != "quasi") return pass(); + if (value.slice(value.length - 2) != "${") return cont(quasiType); + return cont(typeexpr, continueQuasiType); + } + function continueQuasiType(type) { + if (type == "}") { + cx.marked = "string-2"; + cx.state.tokenize = tokenQuasi; + return cont(quasiType); + } + } + function typearg(type, value) { + if (type == "variable" && cx.stream.match(/^\s*[?:]/, false) || value == "?") return cont(typearg) + if (type == ":") return cont(typeexpr) + if (type == "spread") return cont(typearg) + return pass(typeexpr) + } + function afterType(type, value) { + if (value == "<") return cont(pushlex(">"), commasep(typeexpr, ">"), poplex, afterType) + if (value == "|" || type == "." || value == "&") return cont(typeexpr) + if (type == "[") return cont(typeexpr, expect("]"), afterType) + if (value == "extends" || value == "implements") { cx.marked = "keyword"; return cont(typeexpr) } + if (value == "?") return cont(typeexpr, expect(":"), typeexpr) + } + function maybeTypeArgs(_, value) { + if (value == "<") return cont(pushlex(">"), commasep(typeexpr, ">"), poplex, afterType) + } + function typeparam() { + return pass(typeexpr, maybeTypeDefault) + } + function maybeTypeDefault(_, value) { + if (value == "=") return cont(typeexpr) + } + function vardef(_, value) { + if (value == "enum") {cx.marked = "keyword"; return cont(enumdef)} + return pass(pattern, maybetype, maybeAssign, vardefCont); + } + function pattern(type, value) { + if (isTS && isModifier(value)) { cx.marked = "keyword"; return cont(pattern) } + if (type == "variable") { register(value); return cont(); } + if (type == "spread") return cont(pattern); + if (type == "[") return contCommasep(eltpattern, "]"); + if (type == "{") return contCommasep(proppattern, "}"); + } + function proppattern(type, value) { + if (type == "variable" && !cx.stream.match(/^\s*:/, false)) { + register(value); + return cont(maybeAssign); + } + if (type == "variable") cx.marked = "property"; + if (type == "spread") return cont(pattern); + if (type == "}") return pass(); + if (type == "[") return cont(expression, expect(']'), expect(':'), proppattern); + return cont(expect(":"), pattern, maybeAssign); + } + function eltpattern() { + return pass(pattern, maybeAssign) + } + function maybeAssign(_type, value) { + if (value == "=") return cont(expressionNoComma); + } + function vardefCont(type) { + if (type == ",") return cont(vardef); + } + function maybeelse(type, value) { + if (type == "keyword b" && value == "else") return cont(pushlex("form", "else"), statement, poplex); + } + function forspec(type, value) { + if (value == "await") return cont(forspec); + if (type == "(") return cont(pushlex(")"), forspec1, poplex); + } + function forspec1(type) { + if (type == "var") return cont(vardef, forspec2); + if (type == "variable") return cont(forspec2); + return pass(forspec2) + } + function forspec2(type, value) { + if (type == ")") return cont() + if (type == ";") return cont(forspec2) + if (value == "in" || value == "of") { cx.marked = "keyword"; return cont(expression, forspec2) } + return pass(expression, forspec2) + } + function functiondef(type, value) { + if (value == "*") {cx.marked = "keyword"; return cont(functiondef);} + if (type == "variable") {register(value); return cont(functiondef);} + if (type == "(") return cont(pushcontext, pushlex(")"), commasep(funarg, ")"), poplex, mayberettype, statement, popcontext); + if (isTS && value == "<") return cont(pushlex(">"), commasep(typeparam, ">"), poplex, functiondef) + } + function functiondecl(type, value) { + if (value == "*") {cx.marked = "keyword"; return cont(functiondecl);} + if (type == "variable") {register(value); return cont(functiondecl);} + if (type == "(") return cont(pushcontext, pushlex(")"), commasep(funarg, ")"), poplex, mayberettype, popcontext); + if (isTS && value == "<") return cont(pushlex(">"), commasep(typeparam, ">"), poplex, functiondecl) + } + function typename(type, value) { + if (type == "keyword" || type == "variable") { + cx.marked = "type" + return cont(typename) + } else if (value == "<") { + return cont(pushlex(">"), commasep(typeparam, ">"), poplex) + } + } + function funarg(type, value) { + if (value == "@") cont(expression, funarg) + if (type == "spread") return cont(funarg); + if (isTS && isModifier(value)) { cx.marked = "keyword"; return cont(funarg); } + if (isTS && type == "this") return cont(maybetype, maybeAssign) + return pass(pattern, maybetype, maybeAssign); + } + function classExpression(type, value) { + // Class expressions may have an optional name. + if (type == "variable") return className(type, value); + return classNameAfter(type, value); + } + function className(type, value) { + if (type == "variable") {register(value); return cont(classNameAfter);} + } + function classNameAfter(type, value) { + if (value == "<") return cont(pushlex(">"), commasep(typeparam, ">"), poplex, classNameAfter) + if (value == "extends" || value == "implements" || (isTS && type == ",")) { + if (value == "implements") cx.marked = "keyword"; + return cont(isTS ? typeexpr : expression, classNameAfter); + } + if (type == "{") return cont(pushlex("}"), classBody, poplex); + } + function classBody(type, value) { + if (type == "async" || + (type == "variable" && + (value == "static" || value == "get" || value == "set" || (isTS && isModifier(value))) && + cx.stream.match(/^\s+#?[\w$\xa1-\uffff]/, false))) { + cx.marked = "keyword"; + return cont(classBody); + } + if (type == "variable" || cx.style == "keyword") { + cx.marked = "property"; + return cont(classfield, classBody); + } + if (type == "number" || type == "string") return cont(classfield, classBody); + if (type == "[") + return cont(expression, maybetype, expect("]"), classfield, classBody) + if (value == "*") { + cx.marked = "keyword"; + return cont(classBody); + } + if (isTS && type == "(") return pass(functiondecl, classBody) + if (type == ";" || type == ",") return cont(classBody); + if (type == "}") return cont(); + if (value == "@") return cont(expression, classBody) + } + function classfield(type, value) { + if (value == "!") return cont(classfield) + if (value == "?") return cont(classfield) + if (type == ":") return cont(typeexpr, maybeAssign) + if (value == "=") return cont(expressionNoComma) + var context = cx.state.lexical.prev, isInterface = context && context.info == "interface" + return pass(isInterface ? functiondecl : functiondef) + } + function afterExport(type, value) { + if (value == "*") { cx.marked = "keyword"; return cont(maybeFrom, expect(";")); } + if (value == "default") { cx.marked = "keyword"; return cont(expression, expect(";")); } + if (type == "{") return cont(commasep(exportField, "}"), maybeFrom, expect(";")); + return pass(statement); + } + function exportField(type, value) { + if (value == "as") { cx.marked = "keyword"; return cont(expect("variable")); } + if (type == "variable") return pass(expressionNoComma, exportField); + } + function afterImport(type) { + if (type == "string") return cont(); + if (type == "(") return pass(expression); + if (type == ".") return pass(maybeoperatorComma); + return pass(importSpec, maybeMoreImports, maybeFrom); + } + function importSpec(type, value) { + if (type == "{") return contCommasep(importSpec, "}"); + if (type == "variable") register(value); + if (value == "*") cx.marked = "keyword"; + return cont(maybeAs); + } + function maybeMoreImports(type) { + if (type == ",") return cont(importSpec, maybeMoreImports) + } + function maybeAs(_type, value) { + if (value == "as") { cx.marked = "keyword"; return cont(importSpec); } + } + function maybeFrom(_type, value) { + if (value == "from") { cx.marked = "keyword"; return cont(expression); } + } + function arrayLiteral(type) { + if (type == "]") return cont(); + return pass(commasep(expressionNoComma, "]")); + } + function enumdef() { + return pass(pushlex("form"), pattern, expect("{"), pushlex("}"), commasep(enummember, "}"), poplex, poplex) + } + function enummember() { + return pass(pattern, maybeAssign); + } + + function isContinuedStatement(state, textAfter) { + return state.lastType == "operator" || state.lastType == "," || + isOperatorChar.test(textAfter.charAt(0)) || + /[,.]/.test(textAfter.charAt(0)); + } + + function expressionAllowed(stream, state, backUp) { + return state.tokenize == tokenBase && + /^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(state.lastType) || + (state.lastType == "quasi" && /\{\s*$/.test(stream.string.slice(0, stream.pos - (backUp || 0)))) + } + + // Interface + + return { + startState: function(basecolumn) { + var state = { + tokenize: tokenBase, + lastType: "sof", + cc: [], + lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, "block", false), + localVars: parserConfig.localVars, + context: parserConfig.localVars && new Context(null, null, false), + indented: basecolumn || 0 }; - } - function contCommasep(what, end, info) { - for (var i = 3; i < arguments.length; i++) cx.cc.push(arguments[i]); - return cont(pushlex(end, info), commasep(what, end), poplex); - } - function block(type) { - if (type == '}') return cont(); - return pass(statement, block); - } - function maybetype(type, value) { - if (isTS) { - if (type == ':') return cont(typeexpr); - if (value == '?') return cont(maybetype); - } - } - function maybetypeOrIn(type, value) { - if (isTS && (type == ':' || value == 'in')) return cont(typeexpr); - } - function mayberettype(type) { - if (isTS && type == ':') { - if (cx.stream.match(/^\s*\w+\s+is\b/, false)) - return cont(expression, isKW, typeexpr); - else return cont(typeexpr); - } - } - function isKW(_, value) { - if (value == 'is') { - cx.marked = 'keyword'; - return cont(); - } - } - function typeexpr(type, value) { - if (value == 'keyof' || value == 'typeof' || value == 'infer') { - cx.marked = 'keyword'; - return cont(value == 'typeof' ? expressionNoComma : typeexpr); - } - if (type == 'variable' || value == 'void') { - cx.marked = 'type'; - return cont(afterType); - } - if (value == '|' || value == '&') return cont(typeexpr); - if (type == 'string' || type == 'number' || type == 'atom') - return cont(afterType); - if (type == '[') - return cont( - pushlex(']'), - commasep(typeexpr, ']', ','), - poplex, - afterType, - ); - if (type == '{') - return cont( - pushlex('}'), - commasep(typeprop, '}', ',;'), - poplex, - afterType, - ); - if (type == '(') - return cont(commasep(typearg, ')'), maybeReturnType, afterType); - if (type == '<') return cont(commasep(typeexpr, '>'), typeexpr); - } - function maybeReturnType(type) { - if (type == '=>') return cont(typeexpr); - } - function typeprop(type, value) { - if (type == 'variable' || cx.style == 'keyword') { - cx.marked = 'property'; - return cont(typeprop); - } else if (value == '?' || type == 'number' || type == 'string') { - return cont(typeprop); - } else if (type == ':') { - return cont(typeexpr); - } else if (type == '[') { - return cont(expect('variable'), maybetypeOrIn, expect(']'), typeprop); - } else if (type == '(') { - return pass(functiondecl, typeprop); - } - } - function typearg(type, value) { - if ( - (type == 'variable' && cx.stream.match(/^\s*[?:]/, false)) || - value == '?' - ) - return cont(typearg); - if (type == ':') return cont(typeexpr); - if (type == 'spread') return cont(typearg); - return pass(typeexpr); - } - function afterType(type, value) { - if (value == '<') - return cont(pushlex('>'), commasep(typeexpr, '>'), poplex, afterType); - if (value == '|' || type == '.' || value == '&') return cont(typeexpr); - if (type == '[') return cont(typeexpr, expect(']'), afterType); - if (value == 'extends' || value == 'implements') { - cx.marked = 'keyword'; - return cont(typeexpr); - } - if (value == '?') return cont(typeexpr, expect(':'), typeexpr); - } - function maybeTypeArgs(_, value) { - if (value == '<') - return cont(pushlex('>'), commasep(typeexpr, '>'), poplex, afterType); - } - function typeparam() { - return pass(typeexpr, maybeTypeDefault); - } - function maybeTypeDefault(_, value) { - if (value == '=') return cont(typeexpr); - } - function vardef(_, value) { - if (value == 'enum') { - cx.marked = 'keyword'; - return cont(enumdef); - } - return pass(pattern, maybetype, maybeAssign, vardefCont); - } - function pattern(type, value) { - if (isTS && isModifier(value)) { - cx.marked = 'keyword'; - return cont(pattern); - } - if (type == 'variable') { - register(value); - return cont(); - } - if (type == 'spread') return cont(pattern); - if (type == '[') return contCommasep(eltpattern, ']'); - if (type == '{') return contCommasep(proppattern, '}'); - } - function proppattern(type, value) { - if (type == 'variable' && !cx.stream.match(/^\s*:/, false)) { - register(value); - return cont(maybeAssign); - } - if (type == 'variable') cx.marked = 'property'; - if (type == 'spread') return cont(pattern); - if (type == '}') return pass(); - if (type == '[') - return cont(expression, expect(']'), expect(':'), proppattern); - return cont(expect(':'), pattern, maybeAssign); - } - function eltpattern() { - return pass(pattern, maybeAssign); - } - function maybeAssign(_type, value) { - if (value == '=') return cont(expressionNoComma); - } - function vardefCont(type) { - if (type == ',') return cont(vardef); - } - function maybeelse(type, value) { - if (type == 'keyword b' && value == 'else') - return cont(pushlex('form', 'else'), statement, poplex); - } - function forspec(type, value) { - if (value == 'await') return cont(forspec); - if (type == '(') return cont(pushlex(')'), forspec1, poplex); - } - function forspec1(type) { - if (type == 'var') return cont(vardef, forspec2); - if (type == 'variable') return cont(forspec2); - return pass(forspec2); - } - function forspec2(type, value) { - if (type == ')') return cont(); - if (type == ';') return cont(forspec2); - if (value == 'in' || value == 'of') { - cx.marked = 'keyword'; - return cont(expression, forspec2); - } - return pass(expression, forspec2); - } - function functiondef(type, value) { - if (value == '*') { - cx.marked = 'keyword'; - return cont(functiondef); - } - if (type == 'variable') { - register(value); - return cont(functiondef); - } - if (type == '(') - return cont( - pushcontext, - pushlex(')'), - commasep(funarg, ')'), - poplex, - mayberettype, - statement, - popcontext, - ); - if (isTS && value == '<') - return cont( - pushlex('>'), - commasep(typeparam, '>'), - poplex, - functiondef, - ); - } - function functiondecl(type, value) { - if (value == '*') { - cx.marked = 'keyword'; - return cont(functiondecl); - } - if (type == 'variable') { - register(value); - return cont(functiondecl); - } - if (type == '(') - return cont( - pushcontext, - pushlex(')'), - commasep(funarg, ')'), - poplex, - mayberettype, - popcontext, - ); - if (isTS && value == '<') - return cont( - pushlex('>'), - commasep(typeparam, '>'), - poplex, - functiondecl, - ); - } - function typename(type, value) { - if (type == 'keyword' || type == 'variable') { - cx.marked = 'type'; - return cont(typename); - } else if (value == '<') { - return cont(pushlex('>'), commasep(typeparam, '>'), poplex); - } - } - function funarg(type, value) { - if (value == '@') cont(expression, funarg); - if (type == 'spread') return cont(funarg); - if (isTS && isModifier(value)) { - cx.marked = 'keyword'; - return cont(funarg); - } - if (isTS && type == 'this') return cont(maybetype, maybeAssign); - return pass(pattern, maybetype, maybeAssign); - } - function classExpression(type, value) { - // Class expressions may have an optional name. - if (type == 'variable') return className(type, value); - return classNameAfter(type, value); - } - function className(type, value) { - if (type == 'variable') { - register(value); - return cont(classNameAfter); - } - } - function classNameAfter(type, value) { - if (value == '<') - return cont( - pushlex('>'), - commasep(typeparam, '>'), - poplex, - classNameAfter, - ); - if ( - value == 'extends' || - value == 'implements' || - (isTS && type == ',') - ) { - if (value == 'implements') cx.marked = 'keyword'; - return cont(isTS ? typeexpr : expression, classNameAfter); - } - if (type == '{') return cont(pushlex('}'), classBody, poplex); - } - function classBody(type, value) { - if ( - type == 'async' || - (type == 'variable' && - (value == 'static' || - value == 'get' || - value == 'set' || - (isTS && isModifier(value))) && - cx.stream.match(/^\s+[\w$\xa1-\uffff]/, false)) - ) { - cx.marked = 'keyword'; - return cont(classBody); - } - if (type == 'variable' || cx.style == 'keyword') { - cx.marked = 'property'; - return cont(isTS ? classfield : functiondef, classBody); - } - if (type == 'number' || type == 'string') - return cont(isTS ? classfield : functiondef, classBody); - if (type == '[') - return cont( - expression, - maybetype, - expect(']'), - isTS ? classfield : functiondef, - classBody, - ); - if (value == '*') { - cx.marked = 'keyword'; - return cont(classBody); - } - if (isTS && type == '(') return pass(functiondecl, classBody); - if (type == ';' || type == ',') return cont(classBody); - if (type == '}') return cont(); - if (value == '@') return cont(expression, classBody); - } - function classfield(type, value) { - if (value == '?') return cont(classfield); - if (type == ':') return cont(typeexpr, maybeAssign); - if (value == '=') return cont(expressionNoComma); - var context = cx.state.lexical.prev, - isInterface = context && context.info == 'interface'; - return pass(isInterface ? functiondecl : functiondef); - } - function afterExport(type, value) { - if (value == '*') { - cx.marked = 'keyword'; - return cont(maybeFrom, expect(';')); - } - if (value == 'default') { - cx.marked = 'keyword'; - return cont(expression, expect(';')); - } - if (type == '{') - return cont(commasep(exportField, '}'), maybeFrom, expect(';')); - return pass(statement); - } - function exportField(type, value) { - if (value == 'as') { - cx.marked = 'keyword'; - return cont(expect('variable')); - } - if (type == 'variable') return pass(expressionNoComma, exportField); - } - function afterImport(type) { - if (type == 'string') return cont(); - if (type == '(') return pass(expression); - return pass(importSpec, maybeMoreImports, maybeFrom); - } - function importSpec(type, value) { - if (type == '{') return contCommasep(importSpec, '}'); - if (type == 'variable') register(value); - if (value == '*') cx.marked = 'keyword'; - return cont(maybeAs); - } - function maybeMoreImports(type) { - if (type == ',') return cont(importSpec, maybeMoreImports); - } - function maybeAs(_type, value) { - if (value == 'as') { - cx.marked = 'keyword'; - return cont(importSpec); - } - } - function maybeFrom(_type, value) { - if (value == 'from') { - cx.marked = 'keyword'; - return cont(expression); - } - } - function arrayLiteral(type) { - if (type == ']') return cont(); - return pass(commasep(expressionNoComma, ']')); - } - function enumdef() { - return pass( - pushlex('form'), - pattern, - expect('{'), - pushlex('}'), - commasep(enummember, '}'), - poplex, - poplex, - ); - } - function enummember() { - return pass(pattern, maybeAssign); - } - - function isContinuedStatement(state, textAfter) { - return ( - state.lastType == 'operator' || - state.lastType == ',' || - isOperatorChar.test(textAfter.charAt(0)) || - /[,.]/.test(textAfter.charAt(0)) - ); - } - - function expressionAllowed(stream, state, backUp) { - return ( - (state.tokenize == tokenBase && - /^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test( - state.lastType, - )) || - (state.lastType == 'quasi' && - /\{\s*$/.test(stream.string.slice(0, stream.pos - (backUp || 0)))) - ); - } - - // Interface - - return { - startState: function (basecolumn) { - var state = { - tokenize: tokenBase, - lastType: 'sof', - cc: [], - lexical: new JSLexical( - (basecolumn || 0) - indentUnit, - 0, - 'block', - false, - ), - localVars: parserConfig.localVars, - context: parserConfig.localVars && new Context(null, null, false), - indented: basecolumn || 0, - }; - if ( - parserConfig.globalVars && - typeof parserConfig.globalVars == 'object' - ) - state.globalVars = parserConfig.globalVars; - return state; - }, - - token: function (stream, state) { - if (stream.sol()) { - if (!state.lexical.hasOwnProperty('align')) - state.lexical.align = false; - state.indented = stream.indentation(); - findFatArrow(stream, state); - } - if (state.tokenize != tokenComment && stream.eatSpace()) return null; - var style = state.tokenize(stream, state); - if (type == 'comment') return style; - state.lastType = - type == 'operator' && (content == '++' || content == '--') - ? 'incdec' - : type; - return parseJS(state, style, type, content, stream); - }, - - indent: function (state, textAfter) { - if (state.tokenize == tokenComment) return CodeMirror.Pass; - if (state.tokenize != tokenBase) return 0; - var firstChar = textAfter && textAfter.charAt(0), - lexical = state.lexical, - top; - // Kludge to prevent 'maybelse' from blocking lexical scope pops - if (!/^\s*else\b/.test(textAfter)) - for (var i = state.cc.length - 1; i >= 0; --i) { - var c = state.cc[i]; - if (c == poplex) lexical = lexical.prev; - else if (c != maybeelse) break; - } - while ( - (lexical.type == 'stat' || lexical.type == 'form') && - (firstChar == '}' || - ((top = state.cc[state.cc.length - 1]) && - (top == maybeoperatorComma || top == maybeoperatorNoComma) && - !/^[,\.=+\-*:?[\(]/.test(textAfter))) - ) - lexical = lexical.prev; - if ( - statementIndent && - lexical.type == ')' && - lexical.prev.type == 'stat' - ) - lexical = lexical.prev; - var type = lexical.type, - closing = firstChar == type; - - if (type == 'vardef') - return ( - lexical.indented + - (state.lastType == 'operator' || state.lastType == ',' - ? lexical.info.length + 1 - : 0) - ); - else if (type == 'form' && firstChar == '{') return lexical.indented; - else if (type == 'form') return lexical.indented + indentUnit; - else if (type == 'stat') - return ( - lexical.indented + - (isContinuedStatement(state, textAfter) - ? statementIndent || indentUnit - : 0) - ); - else if ( - lexical.info == 'switch' && - !closing && - parserConfig.doubleIndentSwitch != false - ) - return ( - lexical.indented + - (/^(?:case|default)\b/.test(textAfter) - ? indentUnit - : 2 * indentUnit) - ); - else if (lexical.align) return lexical.column + (closing ? 0 : 1); - else return lexical.indented + (closing ? 0 : indentUnit); - }, - - electricInput: /^\s*(?:case .*?:|default:|\{|\})$/, - blockCommentStart: jsonMode ? null : '/*', - blockCommentEnd: jsonMode ? null : '*/', - blockCommentContinue: jsonMode ? null : ' * ', - lineComment: jsonMode ? null : '//', - fold: 'brace', - closeBrackets: '()[]{}\'\'""``', - - helperType: jsonMode ? 'json' : 'javascript', - jsonldMode: jsonldMode, - jsonMode: jsonMode, - - expressionAllowed: expressionAllowed, + if (parserConfig.globalVars && typeof parserConfig.globalVars == "object") + state.globalVars = parserConfig.globalVars; + return state; + }, + + token: function(stream, state) { + if (stream.sol()) { + if (!state.lexical.hasOwnProperty("align")) + state.lexical.align = false; + state.indented = stream.indentation(); + findFatArrow(stream, state); + } + if (state.tokenize != tokenComment && stream.eatSpace()) return null; + var style = state.tokenize(stream, state); + if (type == "comment") return style; + state.lastType = type == "operator" && (content == "++" || content == "--") ? "incdec" : type; + return parseJS(state, style, type, content, stream); + }, + + indent: function(state, textAfter) { + if (state.tokenize == tokenComment || state.tokenize == tokenQuasi) return CodeMirror.Pass; + if (state.tokenize != tokenBase) return 0; + var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical, top + // Kludge to prevent 'maybelse' from blocking lexical scope pops + if (!/^\s*else\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) { + var c = state.cc[i]; + if (c == poplex) lexical = lexical.prev; + else if (c != maybeelse && c != popcontext) break; + } + while ((lexical.type == "stat" || lexical.type == "form") && + (firstChar == "}" || ((top = state.cc[state.cc.length - 1]) && + (top == maybeoperatorComma || top == maybeoperatorNoComma) && + !/^[,\.=+\-*:?[\(]/.test(textAfter)))) + lexical = lexical.prev; + if (statementIndent && lexical.type == ")" && lexical.prev.type == "stat") + lexical = lexical.prev; + var type = lexical.type, closing = firstChar == type; + + if (type == "vardef") return lexical.indented + (state.lastType == "operator" || state.lastType == "," ? lexical.info.length + 1 : 0); + else if (type == "form" && firstChar == "{") return lexical.indented; + else if (type == "form") return lexical.indented + indentUnit; + else if (type == "stat") + return lexical.indented + (isContinuedStatement(state, textAfter) ? statementIndent || indentUnit : 0); + else if (lexical.info == "switch" && !closing && parserConfig.doubleIndentSwitch != false) + return lexical.indented + (/^(?:case|default)\b/.test(textAfter) ? indentUnit : 2 * indentUnit); + else if (lexical.align) return lexical.column + (closing ? 0 : 1); + else return lexical.indented + (closing ? 0 : indentUnit); + }, + + electricInput: /^\s*(?:case .*?:|default:|\{|\})$/, + blockCommentStart: jsonMode ? null : "/*", + blockCommentEnd: jsonMode ? null : "*/", + blockCommentContinue: jsonMode ? null : " * ", + lineComment: jsonMode ? null : "//", + fold: "brace", + closeBrackets: "()[]{}''\"\"``", + + helperType: jsonMode ? "json" : "javascript", + jsonldMode: jsonldMode, + jsonMode: jsonMode, + + expressionAllowed: expressionAllowed, + + skipExpression: function(state) { + parseJS(state, "atom", "atom", "true", new CodeMirror.StringStream("", 2, null)) + } + }; +}); - skipExpression: function (state) { - var top = state.cc[state.cc.length - 1]; - if (top == expression || top == expressionNoComma) state.cc.pop(); - }, - }; - }); +CodeMirror.registerHelper("wordChars", "javascript", /[\w$]/); - CodeMirror.registerHelper('wordChars', 'javascript', /[\w$]/); +CodeMirror.defineMIME("text/javascript", "javascript"); +CodeMirror.defineMIME("text/ecmascript", "javascript"); +CodeMirror.defineMIME("application/javascript", "javascript"); +CodeMirror.defineMIME("application/x-javascript", "javascript"); +CodeMirror.defineMIME("application/ecmascript", "javascript"); +CodeMirror.defineMIME("application/json", { name: "javascript", json: true }); +CodeMirror.defineMIME("application/x-json", { name: "javascript", json: true }); +CodeMirror.defineMIME("application/manifest+json", { name: "javascript", json: true }) +CodeMirror.defineMIME("application/ld+json", { name: "javascript", jsonld: true }); +CodeMirror.defineMIME("text/typescript", { name: "javascript", typescript: true }); +CodeMirror.defineMIME("application/typescript", { name: "javascript", typescript: true }); - CodeMirror.defineMIME('text/javascript', 'javascript'); - CodeMirror.defineMIME('text/ecmascript', 'javascript'); - CodeMirror.defineMIME('application/javascript', 'javascript'); - CodeMirror.defineMIME('application/x-javascript', 'javascript'); - CodeMirror.defineMIME('application/ecmascript', 'javascript'); - CodeMirror.defineMIME('application/json', { name: 'javascript', json: true }); - CodeMirror.defineMIME('application/x-json', { - name: 'javascript', - json: true, - }); - CodeMirror.defineMIME('application/ld+json', { - name: 'javascript', - jsonld: true, - }); - CodeMirror.defineMIME('text/typescript', { - name: 'javascript', - typescript: true, - }); - CodeMirror.defineMIME('application/typescript', { - name: 'javascript', - typescript: true, - }); }); diff --git a/web/static/lib/codemirror/markdown.js b/web/static/lib/codemirror/markdown.js index 5dfe9b93..6eef5442 100644 --- a/web/static/lib/codemirror/markdown.js +++ b/web/static/lib/codemirror/markdown.js @@ -1,1068 +1,886 @@ // CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: https://codemirror.net/LICENSE - -(function (mod) { - if (typeof exports == 'object' && typeof module == 'object') - // CommonJS - mod( - require('../../lib/codemirror'), - require('../xml/xml'), - require('../meta'), - ); - else if (typeof define == 'function' && define.amd) - // AMD - define(['../../lib/codemirror', '../xml/xml', '../meta'], mod); - // Plain browser env - else mod(CodeMirror); -})(function (CodeMirror) { - 'use strict'; - - CodeMirror.defineMode( - 'markdown', - function (cmCfg, modeCfg) { - var htmlMode = CodeMirror.getMode(cmCfg, 'text/html'); - var htmlModeMissing = htmlMode.name == 'null'; - - function getMode(name) { - if (CodeMirror.findModeByName) { - var found = CodeMirror.findModeByName(name); - if (found) name = found.mime || found.mimes[0]; - } - var mode = CodeMirror.getMode(cmCfg, name); - return mode.name == 'null' ? null : mode; +// Distributed under an MIT license: https://codemirror.net/5/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror"), require("../xml/xml"), require("../meta")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror", "../xml/xml", "../meta"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("markdown", function(cmCfg, modeCfg) { + + var htmlMode = CodeMirror.getMode(cmCfg, "text/html"); + var htmlModeMissing = htmlMode.name == "null" + + function getMode(name) { + if (CodeMirror.findModeByName) { + var found = CodeMirror.findModeByName(name); + if (found) name = found.mime || found.mimes[0]; + } + var mode = CodeMirror.getMode(cmCfg, name); + return mode.name == "null" ? null : mode; + } + + // Should characters that affect highlighting be highlighted separate? + // Does not include characters that will be output (such as `1.` and `-` for lists) + if (modeCfg.highlightFormatting === undefined) + modeCfg.highlightFormatting = false; + + // Maximum number of nested blockquotes. Set to 0 for infinite nesting. + // Excess `>` will emit `error` token. + if (modeCfg.maxBlockquoteDepth === undefined) + modeCfg.maxBlockquoteDepth = 0; + + // Turn on task lists? ("- [ ] " and "- [x] ") + if (modeCfg.taskLists === undefined) modeCfg.taskLists = false; + + // Turn on strikethrough syntax + if (modeCfg.strikethrough === undefined) + modeCfg.strikethrough = false; + + if (modeCfg.emoji === undefined) + modeCfg.emoji = false; + + if (modeCfg.fencedCodeBlockHighlighting === undefined) + modeCfg.fencedCodeBlockHighlighting = true; + + if (modeCfg.fencedCodeBlockDefaultMode === undefined) + modeCfg.fencedCodeBlockDefaultMode = 'text/plain'; + + if (modeCfg.xml === undefined) + modeCfg.xml = true; + + // Allow token types to be overridden by user-provided token types. + if (modeCfg.tokenTypeOverrides === undefined) + modeCfg.tokenTypeOverrides = {}; + + var tokenTypes = { + header: "header", + code: "comment", + quote: "quote", + list1: "variable-2", + list2: "variable-3", + list3: "keyword", + hr: "hr", + image: "image", + imageAltText: "image-alt-text", + imageMarker: "image-marker", + formatting: "formatting", + linkInline: "link", + linkEmail: "link", + linkText: "link", + linkHref: "string", + em: "em", + strong: "strong", + strikethrough: "strikethrough", + emoji: "builtin" + }; + + for (var tokenType in tokenTypes) { + if (tokenTypes.hasOwnProperty(tokenType) && modeCfg.tokenTypeOverrides[tokenType]) { + tokenTypes[tokenType] = modeCfg.tokenTypeOverrides[tokenType]; + } + } + + var hrRE = /^([*\-_])(?:\s*\1){2,}\s*$/ + , listRE = /^(?:[*\-+]|^[0-9]+([.)]))\s+/ + , taskListRE = /^\[(x| )\](?=\s)/i // Must follow listRE + , atxHeaderRE = modeCfg.allowAtxHeaderWithoutSpace ? /^(#+)/ : /^(#+)(?: |$)/ + , setextHeaderRE = /^ {0,3}(?:\={1,}|-{2,})\s*$/ + , textRE = /^[^#!\[\]*_\\<>` "'(~:]+/ + , fencedCodeRE = /^(~~~+|```+)[ \t]*([\w\/+#-]*)[^\n`]*$/ + , linkDefRE = /^\s*\[[^\]]+?\]:.*$/ // naive link-definition + , punctuation = /[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u0AF0\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E42\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC9\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDF3C-\uDF3E]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]/ + , expandedTab = " " // CommonMark specifies tab as 4 spaces + + function switchInline(stream, state, f) { + state.f = state.inline = f; + return f(stream, state); + } + + function switchBlock(stream, state, f) { + state.f = state.block = f; + return f(stream, state); + } + + function lineIsEmpty(line) { + return !line || !/\S/.test(line.string) + } + + // Blocks + + function blankLine(state) { + // Reset linkTitle state + state.linkTitle = false; + state.linkHref = false; + state.linkText = false; + // Reset EM state + state.em = false; + // Reset STRONG state + state.strong = false; + // Reset strikethrough state + state.strikethrough = false; + // Reset state.quote + state.quote = 0; + // Reset state.indentedCode + state.indentedCode = false; + if (state.f == htmlBlock) { + var exit = htmlModeMissing + if (!exit) { + var inner = CodeMirror.innerMode(htmlMode, state.htmlState) + exit = inner.mode.name == "xml" && inner.state.tagStart === null && + (!inner.state.context && inner.state.tokenize.isInText) } - - // Should characters that affect highlighting be highlighted separate? - // Does not include characters that will be output (such as `1.` and `-` for lists) - if (modeCfg.highlightFormatting === undefined) - modeCfg.highlightFormatting = false; - - // Maximum number of nested blockquotes. Set to 0 for infinite nesting. - // Excess `>` will emit `error` token. - if (modeCfg.maxBlockquoteDepth === undefined) - modeCfg.maxBlockquoteDepth = 0; - - // Turn on task lists? ("- [ ] " and "- [x] ") - if (modeCfg.taskLists === undefined) modeCfg.taskLists = false; - - // Turn on strikethrough syntax - if (modeCfg.strikethrough === undefined) modeCfg.strikethrough = false; - - if (modeCfg.emoji === undefined) modeCfg.emoji = false; - - if (modeCfg.fencedCodeBlockHighlighting === undefined) - modeCfg.fencedCodeBlockHighlighting = true; - - if (modeCfg.xml === undefined) modeCfg.xml = true; - - // Allow token types to be overridden by user-provided token types. - if (modeCfg.tokenTypeOverrides === undefined) - modeCfg.tokenTypeOverrides = {}; - - var tokenTypes = { - header: 'header', - code: 'comment', - quote: 'quote', - list1: 'variable-2', - list2: 'variable-3', - list3: 'keyword', - hr: 'hr', - image: 'image', - imageAltText: 'image-alt-text', - imageMarker: 'image-marker', - formatting: 'formatting', - linkInline: 'link', - linkEmail: 'link', - linkText: 'link', - linkHref: 'string', - em: 'em', - strong: 'strong', - strikethrough: 'strikethrough', - emoji: 'builtin', - }; - - for (var tokenType in tokenTypes) { - if ( - tokenTypes.hasOwnProperty(tokenType) && - modeCfg.tokenTypeOverrides[tokenType] - ) { - tokenTypes[tokenType] = modeCfg.tokenTypeOverrides[tokenType]; + if (exit) { + state.f = inlineNormal; + state.block = blockNormal; + state.htmlState = null; + } + } + // Reset state.trailingSpace + state.trailingSpace = 0; + state.trailingSpaceNewLine = false; + // Mark this line as blank + state.prevLine = state.thisLine + state.thisLine = {stream: null} + return null; + } + + function blockNormal(stream, state) { + var firstTokenOnLine = stream.column() === state.indentation; + var prevLineLineIsEmpty = lineIsEmpty(state.prevLine.stream); + var prevLineIsIndentedCode = state.indentedCode; + var prevLineIsHr = state.prevLine.hr; + var prevLineIsList = state.list !== false; + var maxNonCodeIndentation = (state.listStack[state.listStack.length - 1] || 0) + 3; + + state.indentedCode = false; + + var lineIndentation = state.indentation; + // compute once per line (on first token) + if (state.indentationDiff === null) { + state.indentationDiff = state.indentation; + if (prevLineIsList) { + state.list = null; + // While this list item's marker's indentation is less than the deepest + // list item's content's indentation,pop the deepest list item + // indentation off the stack, and update block indentation state + while (lineIndentation < state.listStack[state.listStack.length - 1]) { + state.listStack.pop(); + if (state.listStack.length) { + state.indentation = state.listStack[state.listStack.length - 1]; + // less than the first list's indent -> the line is no longer a list + } else { + state.list = false; + } + } + if (state.list !== false) { + state.indentationDiff = lineIndentation - state.listStack[state.listStack.length - 1] } } + } - var hrRE = /^([*\-_])(?:\s*\1){2,}\s*$/, - listRE = /^(?:[*\-+]|^[0-9]+([.)]))\s+/, - taskListRE = /^\[(x| )\](?=\s)/i, // Must follow listRE - atxHeaderRE = modeCfg.allowAtxHeaderWithoutSpace - ? /^(#+)/ - : /^(#+)(?: |$)/, - setextHeaderRE = /^ *(?:\={1,}|-{1,})\s*$/, - textRE = /^[^#!\[\]*_\\<>` "'(~:]+/, - fencedCodeRE = /^(~~~+|```+)[ \t]*([\w+#-]*)[^\n`]*$/, - linkDefRE = /^\s*\[[^\]]+?\]:.*$/, // naive link-definition - punctuation = - /[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u0AF0\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E42\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC9\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDF3C-\uDF3E]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]/, - expandedTab = ' '; // CommonMark specifies tab as 4 spaces - - function switchInline(stream, state, f) { - state.f = state.inline = f; - return f(stream, state); - } + // not comprehensive (currently only for setext detection purposes) + var allowsInlineContinuation = ( + !prevLineLineIsEmpty && !prevLineIsHr && !state.prevLine.header && + (!prevLineIsList || !prevLineIsIndentedCode) && + !state.prevLine.fencedCodeEnd + ); - function switchBlock(stream, state, f) { - state.f = state.block = f; - return f(stream, state); + var isHr = (state.list === false || prevLineIsHr || prevLineLineIsEmpty) && + state.indentation <= maxNonCodeIndentation && stream.match(hrRE); + + var match = null; + if (state.indentationDiff >= 4 && (prevLineIsIndentedCode || state.prevLine.fencedCodeEnd || + state.prevLine.header || prevLineLineIsEmpty)) { + stream.skipToEnd(); + state.indentedCode = true; + return tokenTypes.code; + } else if (stream.eatSpace()) { + return null; + } else if (firstTokenOnLine && state.indentation <= maxNonCodeIndentation && (match = stream.match(atxHeaderRE)) && match[1].length <= 6) { + state.quote = 0; + state.header = match[1].length; + state.thisLine.header = true; + if (modeCfg.highlightFormatting) state.formatting = "header"; + state.f = state.inline; + return getType(state); + } else if (state.indentation <= maxNonCodeIndentation && stream.eat('>')) { + state.quote = firstTokenOnLine ? 1 : state.quote + 1; + if (modeCfg.highlightFormatting) state.formatting = "quote"; + stream.eatSpace(); + return getType(state); + } else if (!isHr && !state.setext && firstTokenOnLine && state.indentation <= maxNonCodeIndentation && (match = stream.match(listRE))) { + var listType = match[1] ? "ol" : "ul"; + + state.indentation = lineIndentation + stream.current().length; + state.list = true; + state.quote = 0; + + // Add this list item's content's indentation to the stack + state.listStack.push(state.indentation); + // Reset inline styles which shouldn't propagate across list items + state.em = false; + state.strong = false; + state.code = false; + state.strikethrough = false; + + if (modeCfg.taskLists && stream.match(taskListRE, false)) { + state.taskList = true; } - - function lineIsEmpty(line) { - return !line || !/\S/.test(line.string); + state.f = state.inline; + if (modeCfg.highlightFormatting) state.formatting = ["list", "list-" + listType]; + return getType(state); + } else if (firstTokenOnLine && state.indentation <= maxNonCodeIndentation && (match = stream.match(fencedCodeRE, true))) { + state.quote = 0; + state.fencedEndRE = new RegExp(match[1] + "+ *$"); + // try switching mode + state.localMode = modeCfg.fencedCodeBlockHighlighting && getMode(match[2] || modeCfg.fencedCodeBlockDefaultMode ); + if (state.localMode) state.localState = CodeMirror.startState(state.localMode); + state.f = state.block = local; + if (modeCfg.highlightFormatting) state.formatting = "code-block"; + state.code = -1 + return getType(state); + // SETEXT has lowest block-scope precedence after HR, so check it after + // the others (code, blockquote, list...) + } else if ( + // if setext set, indicates line after ---/=== + state.setext || ( + // line before ---/=== + (!allowsInlineContinuation || !prevLineIsList) && !state.quote && state.list === false && + !state.code && !isHr && !linkDefRE.test(stream.string) && + (match = stream.lookAhead(1)) && (match = match.match(setextHeaderRE)) + ) + ) { + if ( !state.setext ) { + state.header = match[0].charAt(0) == '=' ? 1 : 2; + state.setext = state.header; + } else { + state.header = state.setext; + // has no effect on type so we can reset it now + state.setext = 0; + stream.skipToEnd(); + if (modeCfg.highlightFormatting) state.formatting = "header"; } - - // Blocks - - function blankLine(state) { - // Reset linkTitle state - state.linkTitle = false; - state.linkHref = false; - state.linkText = false; - // Reset EM state - state.em = false; - // Reset STRONG state - state.strong = false; - // Reset strikethrough state - state.strikethrough = false; - // Reset state.quote - state.quote = 0; - // Reset state.indentedCode - state.indentedCode = false; - if (state.f == htmlBlock) { - var exit = htmlModeMissing; - if (!exit) { - var inner = CodeMirror.innerMode(htmlMode, state.htmlState); - exit = - inner.mode.name == 'xml' && - inner.state.tagStart === null && - !inner.state.context && - inner.state.tokenize.isInText; - } - if (exit) { - state.f = inlineNormal; - state.block = blockNormal; - state.htmlState = null; - } - } - // Reset state.trailingSpace - state.trailingSpace = 0; - state.trailingSpaceNewLine = false; - // Mark this line as blank - state.prevLine = state.thisLine; - state.thisLine = { stream: null }; - return null; + state.thisLine.header = true; + state.f = state.inline; + return getType(state); + } else if (isHr) { + stream.skipToEnd(); + state.hr = true; + state.thisLine.hr = true; + return tokenTypes.hr; + } else if (stream.peek() === '[') { + return switchInline(stream, state, footnoteLink); + } + + return switchInline(stream, state, state.inline); + } + + function htmlBlock(stream, state) { + var style = htmlMode.token(stream, state.htmlState); + if (!htmlModeMissing) { + var inner = CodeMirror.innerMode(htmlMode, state.htmlState) + if ((inner.mode.name == "xml" && inner.state.tagStart === null && + (!inner.state.context && inner.state.tokenize.isInText)) || + (state.md_inside && stream.current().indexOf(">") > -1)) { + state.f = inlineNormal; + state.block = blockNormal; + state.htmlState = null; } - - function blockNormal(stream, state) { - var firstTokenOnLine = stream.column() === state.indentation; - var prevLineLineIsEmpty = lineIsEmpty(state.prevLine.stream); - var prevLineIsIndentedCode = state.indentedCode; - var prevLineIsHr = state.prevLine.hr; - var prevLineIsList = state.list !== false; - var maxNonCodeIndentation = - (state.listStack[state.listStack.length - 1] || 0) + 3; - - state.indentedCode = false; - - var lineIndentation = state.indentation; - // compute once per line (on first token) - if (state.indentationDiff === null) { - state.indentationDiff = state.indentation; - if (prevLineIsList) { - state.list = null; - // While this list item's marker's indentation is less than the deepest - // list item's content's indentation,pop the deepest list item - // indentation off the stack, and update block indentation state - while ( - lineIndentation < state.listStack[state.listStack.length - 1] - ) { - state.listStack.pop(); - if (state.listStack.length) { - state.indentation = state.listStack[state.listStack.length - 1]; - // less than the first list's indent -> the line is no longer a list - } else { - state.list = false; - } - } - if (state.list !== false) { - state.indentationDiff = - lineIndentation - state.listStack[state.listStack.length - 1]; - } - } - } - - // not comprehensive (currently only for setext detection purposes) - var allowsInlineContinuation = - !prevLineLineIsEmpty && - !prevLineIsHr && - !state.prevLine.header && - (!prevLineIsList || !prevLineIsIndentedCode) && - !state.prevLine.fencedCodeEnd; - - var isHr = - (state.list === false || prevLineIsHr || prevLineLineIsEmpty) && - state.indentation <= maxNonCodeIndentation && - stream.match(hrRE); - - var match = null; - if ( - state.indentationDiff >= 4 && - (prevLineIsIndentedCode || - state.prevLine.fencedCodeEnd || - state.prevLine.header || - prevLineLineIsEmpty) - ) { - stream.skipToEnd(); - state.indentedCode = true; - return tokenTypes.code; - } else if (stream.eatSpace()) { - return null; - } else if ( - firstTokenOnLine && - state.indentation <= maxNonCodeIndentation && - (match = stream.match(atxHeaderRE)) && - match[1].length <= 6 - ) { - state.quote = 0; - state.header = match[1].length; - state.thisLine.header = true; - if (modeCfg.highlightFormatting) state.formatting = 'header'; - state.f = state.inline; - return getType(state); - } else if ( - state.indentation <= maxNonCodeIndentation && - stream.eat('>') - ) { - state.quote = firstTokenOnLine ? 1 : state.quote + 1; - if (modeCfg.highlightFormatting) state.formatting = 'quote'; - stream.eatSpace(); - return getType(state); - } else if ( - !isHr && - !state.setext && - firstTokenOnLine && - state.indentation <= maxNonCodeIndentation && - (match = stream.match(listRE)) - ) { - var listType = match[1] ? 'ol' : 'ul'; - - state.indentation = lineIndentation + stream.current().length; - state.list = true; - state.quote = 0; - - // Add this list item's content's indentation to the stack - state.listStack.push(state.indentation); - // Reset inline styles which shouldn't propagate aross list items - state.em = false; - state.strong = false; - state.code = false; - state.strikethrough = false; - - if (modeCfg.taskLists && stream.match(taskListRE, false)) { - state.taskList = true; - } - state.f = state.inline; - if (modeCfg.highlightFormatting) - state.formatting = ['list', 'list-' + listType]; - return getType(state); - } else if ( - firstTokenOnLine && - state.indentation <= maxNonCodeIndentation && - (match = stream.match(fencedCodeRE, true)) - ) { - state.quote = 0; - state.fencedEndRE = new RegExp(match[1] + '+ *$'); - // try switching mode - state.localMode = - modeCfg.fencedCodeBlockHighlighting && getMode(match[2]); - if (state.localMode) - state.localState = CodeMirror.startState(state.localMode); - state.f = state.block = local; - if (modeCfg.highlightFormatting) state.formatting = 'code-block'; - state.code = -1; - return getType(state); - // SETEXT has lowest block-scope precedence after HR, so check it after - // the others (code, blockquote, list...) - } else if ( - // if setext set, indicates line after ---/=== - state.setext || - // line before ---/=== - ((!allowsInlineContinuation || !prevLineIsList) && - !state.quote && - state.list === false && - !state.code && - !isHr && - !linkDefRE.test(stream.string) && - (match = stream.lookAhead(1)) && - (match = match.match(setextHeaderRE))) - ) { - if (!state.setext) { - state.header = match[0].charAt(0) == '=' ? 1 : 2; - state.setext = state.header; + } + return style; + } + + function local(stream, state) { + var currListInd = state.listStack[state.listStack.length - 1] || 0; + var hasExitedList = state.indentation < currListInd; + var maxFencedEndInd = currListInd + 3; + if (state.fencedEndRE && state.indentation <= maxFencedEndInd && (hasExitedList || stream.match(state.fencedEndRE))) { + if (modeCfg.highlightFormatting) state.formatting = "code-block"; + var returnType; + if (!hasExitedList) returnType = getType(state) + state.localMode = state.localState = null; + state.block = blockNormal; + state.f = inlineNormal; + state.fencedEndRE = null; + state.code = 0 + state.thisLine.fencedCodeEnd = true; + if (hasExitedList) return switchBlock(stream, state, state.block); + return returnType; + } else if (state.localMode) { + return state.localMode.token(stream, state.localState); + } else { + stream.skipToEnd(); + return tokenTypes.code; + } + } + + // Inline + function getType(state) { + var styles = []; + + if (state.formatting) { + styles.push(tokenTypes.formatting); + + if (typeof state.formatting === "string") state.formatting = [state.formatting]; + + for (var i = 0; i < state.formatting.length; i++) { + styles.push(tokenTypes.formatting + "-" + state.formatting[i]); + + if (state.formatting[i] === "header") { + styles.push(tokenTypes.formatting + "-" + state.formatting[i] + "-" + state.header); + } + + // Add `formatting-quote` and `formatting-quote-#` for blockquotes + // Add `error` instead if the maximum blockquote nesting depth is passed + if (state.formatting[i] === "quote") { + if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) { + styles.push(tokenTypes.formatting + "-" + state.formatting[i] + "-" + state.quote); } else { - state.header = state.setext; - // has no effect on type so we can reset it now - state.setext = 0; - stream.skipToEnd(); - if (modeCfg.highlightFormatting) state.formatting = 'header'; + styles.push("error"); } - state.thisLine.header = true; - state.f = state.inline; - return getType(state); - } else if (isHr) { - stream.skipToEnd(); - state.hr = true; - state.thisLine.hr = true; - return tokenTypes.hr; - } else if (stream.peek() === '[') { - return switchInline(stream, state, footnoteLink); } - - return switchInline(stream, state, state.inline); } - - function htmlBlock(stream, state) { - var style = htmlMode.token(stream, state.htmlState); - if (!htmlModeMissing) { - var inner = CodeMirror.innerMode(htmlMode, state.htmlState); - if ( - (inner.mode.name == 'xml' && - inner.state.tagStart === null && - !inner.state.context && - inner.state.tokenize.isInText) || - (state.md_inside && stream.current().indexOf('>') > -1) - ) { - state.f = inlineNormal; - state.block = blockNormal; - state.htmlState = null; - } - } - return style; + } + + if (state.taskOpen) { + styles.push("meta"); + return styles.length ? styles.join(' ') : null; + } + if (state.taskClosed) { + styles.push("property"); + return styles.length ? styles.join(' ') : null; + } + + if (state.linkHref) { + styles.push(tokenTypes.linkHref, "url"); + } else { // Only apply inline styles to non-url text + if (state.strong) { styles.push(tokenTypes.strong); } + if (state.em) { styles.push(tokenTypes.em); } + if (state.strikethrough) { styles.push(tokenTypes.strikethrough); } + if (state.emoji) { styles.push(tokenTypes.emoji); } + if (state.linkText) { styles.push(tokenTypes.linkText); } + if (state.code) { styles.push(tokenTypes.code); } + if (state.image) { styles.push(tokenTypes.image); } + if (state.imageAltText) { styles.push(tokenTypes.imageAltText, "link"); } + if (state.imageMarker) { styles.push(tokenTypes.imageMarker); } + } + + if (state.header) { styles.push(tokenTypes.header, tokenTypes.header + "-" + state.header); } + + if (state.quote) { + styles.push(tokenTypes.quote); + + // Add `quote-#` where the maximum for `#` is modeCfg.maxBlockquoteDepth + if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) { + styles.push(tokenTypes.quote + "-" + state.quote); + } else { + styles.push(tokenTypes.quote + "-" + modeCfg.maxBlockquoteDepth); } - - function local(stream, state) { - var currListInd = state.listStack[state.listStack.length - 1] || 0; - var hasExitedList = state.indentation < currListInd; - var maxFencedEndInd = currListInd + 3; - if ( - state.fencedEndRE && - state.indentation <= maxFencedEndInd && - (hasExitedList || stream.match(state.fencedEndRE)) - ) { - if (modeCfg.highlightFormatting) state.formatting = 'code-block'; - var returnType; - if (!hasExitedList) returnType = getType(state); - state.localMode = state.localState = null; - state.block = blockNormal; - state.f = inlineNormal; - state.fencedEndRE = null; - state.code = 0; - state.thisLine.fencedCodeEnd = true; - if (hasExitedList) return switchBlock(stream, state, state.block); - return returnType; - } else if (state.localMode) { - return state.localMode.token(stream, state.localState); - } else { - stream.skipToEnd(); - return tokenTypes.code; - } + } + + if (state.list !== false) { + var listMod = (state.listStack.length - 1) % 3; + if (!listMod) { + styles.push(tokenTypes.list1); + } else if (listMod === 1) { + styles.push(tokenTypes.list2); + } else { + styles.push(tokenTypes.list3); } - - // Inline - function getType(state) { - var styles = []; - - if (state.formatting) { - styles.push(tokenTypes.formatting); - - if (typeof state.formatting === 'string') - state.formatting = [state.formatting]; - - for (var i = 0; i < state.formatting.length; i++) { - styles.push(tokenTypes.formatting + '-' + state.formatting[i]); - - if (state.formatting[i] === 'header') { - styles.push( - tokenTypes.formatting + - '-' + - state.formatting[i] + - '-' + - state.header, - ); - } - - // Add `formatting-quote` and `formatting-quote-#` for blockquotes - // Add `error` instead if the maximum blockquote nesting depth is passed - if (state.formatting[i] === 'quote') { - if ( - !modeCfg.maxBlockquoteDepth || - modeCfg.maxBlockquoteDepth >= state.quote - ) { - styles.push( - tokenTypes.formatting + - '-' + - state.formatting[i] + - '-' + - state.quote, - ); - } else { - styles.push('error'); - } - } - } - } - - if (state.taskOpen) { - styles.push('meta'); - return styles.length ? styles.join(' ') : null; - } - if (state.taskClosed) { - styles.push('property'); - return styles.length ? styles.join(' ') : null; - } - - if (state.linkHref) { - styles.push(tokenTypes.linkHref, 'url'); - } else { - // Only apply inline styles to non-url text - if (state.strong) { - styles.push(tokenTypes.strong); - } - if (state.em) { - styles.push(tokenTypes.em); - } - if (state.strikethrough) { - styles.push(tokenTypes.strikethrough); - } - if (state.emoji) { - styles.push(tokenTypes.emoji); - } - if (state.linkText) { - styles.push(tokenTypes.linkText); - } - if (state.code) { - styles.push(tokenTypes.code); - } - if (state.image) { - styles.push(tokenTypes.image); - } - if (state.imageAltText) { - styles.push(tokenTypes.imageAltText, 'link'); - } - if (state.imageMarker) { - styles.push(tokenTypes.imageMarker); - } - } - - if (state.header) { - styles.push( - tokenTypes.header, - tokenTypes.header + '-' + state.header, - ); - } - - if (state.quote) { - styles.push(tokenTypes.quote); - - // Add `quote-#` where the maximum for `#` is modeCfg.maxBlockquoteDepth - if ( - !modeCfg.maxBlockquoteDepth || - modeCfg.maxBlockquoteDepth >= state.quote - ) { - styles.push(tokenTypes.quote + '-' + state.quote); - } else { - styles.push(tokenTypes.quote + '-' + modeCfg.maxBlockquoteDepth); - } - } - - if (state.list !== false) { - var listMod = (state.listStack.length - 1) % 3; - if (!listMod) { - styles.push(tokenTypes.list1); - } else if (listMod === 1) { - styles.push(tokenTypes.list2); - } else { - styles.push(tokenTypes.list3); - } - } - - if (state.trailingSpaceNewLine) { - styles.push('trailing-space-new-line'); - } else if (state.trailingSpace) { - styles.push( - 'trailing-space-' + (state.trailingSpace % 2 ? 'a' : 'b'), - ); - } - - return styles.length ? styles.join(' ') : null; + } + + if (state.trailingSpaceNewLine) { + styles.push("trailing-space-new-line"); + } else if (state.trailingSpace) { + styles.push("trailing-space-" + (state.trailingSpace % 2 ? "a" : "b")); + } + + return styles.length ? styles.join(' ') : null; + } + + function handleText(stream, state) { + if (stream.match(textRE, true)) { + return getType(state); + } + return undefined; + } + + function inlineNormal(stream, state) { + var style = state.text(stream, state); + if (typeof style !== 'undefined') + return style; + + if (state.list) { // List marker (*, +, -, 1., etc) + state.list = null; + return getType(state); + } + + if (state.taskList) { + var taskOpen = stream.match(taskListRE, true)[1] === " "; + if (taskOpen) state.taskOpen = true; + else state.taskClosed = true; + if (modeCfg.highlightFormatting) state.formatting = "task"; + state.taskList = false; + return getType(state); + } + + state.taskOpen = false; + state.taskClosed = false; + + if (state.header && stream.match(/^#+$/, true)) { + if (modeCfg.highlightFormatting) state.formatting = "header"; + return getType(state); + } + + var ch = stream.next(); + + // Matches link titles present on next line + if (state.linkTitle) { + state.linkTitle = false; + var matchCh = ch; + if (ch === '(') { + matchCh = ')'; } - - function handleText(stream, state) { - if (stream.match(textRE, true)) { - return getType(state); - } - return undefined; + matchCh = (matchCh+'').replace(/([.?*+^\[\]\\(){}|-])/g, "\\$1"); + var regex = '^\\s*(?:[^' + matchCh + '\\\\]+|\\\\\\\\|\\\\.)' + matchCh; + if (stream.match(new RegExp(regex), true)) { + return tokenTypes.linkHref; } - - function inlineNormal(stream, state) { - var style = state.text(stream, state); - if (typeof style !== 'undefined') return style; - - if (state.list) { - // List marker (*, +, -, 1., etc) - state.list = null; - return getType(state); - } - - if (state.taskList) { - var taskOpen = stream.match(taskListRE, true)[1] === ' '; - if (taskOpen) state.taskOpen = true; - else state.taskClosed = true; - if (modeCfg.highlightFormatting) state.formatting = 'task'; - state.taskList = false; + } + + // If this block is changed, it may need to be updated in GFM mode + if (ch === '`') { + var previousFormatting = state.formatting; + if (modeCfg.highlightFormatting) state.formatting = "code"; + stream.eatWhile('`'); + var count = stream.current().length + if (state.code == 0 && (!state.quote || count == 1)) { + state.code = count + return getType(state) + } else if (count == state.code) { // Must be exact + var t = getType(state) + state.code = 0 + return t + } else { + state.formatting = previousFormatting + return getType(state) + } + } else if (state.code) { + return getType(state); + } + + if (ch === '\\') { + stream.next(); + if (modeCfg.highlightFormatting) { + var type = getType(state); + var formattingEscape = tokenTypes.formatting + "-escape"; + return type ? type + " " + formattingEscape : formattingEscape; + } + } + + if (ch === '!' && stream.match(/\[[^\]]*\] ?(?:\(|\[)/, false)) { + state.imageMarker = true; + state.image = true; + if (modeCfg.highlightFormatting) state.formatting = "image"; + return getType(state); + } + + if (ch === '[' && state.imageMarker && stream.match(/[^\]]*\](\(.*?\)| ?\[.*?\])/, false)) { + state.imageMarker = false; + state.imageAltText = true + if (modeCfg.highlightFormatting) state.formatting = "image"; + return getType(state); + } + + if (ch === ']' && state.imageAltText) { + if (modeCfg.highlightFormatting) state.formatting = "image"; + var type = getType(state); + state.imageAltText = false; + state.image = false; + state.inline = state.f = linkHref; + return type; + } + + if (ch === '[' && !state.image) { + if (state.linkText && stream.match(/^.*?\]/)) return getType(state) + state.linkText = true; + if (modeCfg.highlightFormatting) state.formatting = "link"; + return getType(state); + } + + if (ch === ']' && state.linkText) { + if (modeCfg.highlightFormatting) state.formatting = "link"; + var type = getType(state); + state.linkText = false; + state.inline = state.f = stream.match(/\(.*?\)| ?\[.*?\]/, false) ? linkHref : inlineNormal + return type; + } + + if (ch === '<' && stream.match(/^(https?|ftps?):\/\/(?:[^\\>]|\\.)+>/, false)) { + state.f = state.inline = linkInline; + if (modeCfg.highlightFormatting) state.formatting = "link"; + var type = getType(state); + if (type){ + type += " "; + } else { + type = ""; + } + return type + tokenTypes.linkInline; + } + + if (ch === '<' && stream.match(/^[^> \\]+@(?:[^\\>]|\\.)+>/, false)) { + state.f = state.inline = linkInline; + if (modeCfg.highlightFormatting) state.formatting = "link"; + var type = getType(state); + if (type){ + type += " "; + } else { + type = ""; + } + return type + tokenTypes.linkEmail; + } + + if (modeCfg.xml && ch === '<' && stream.match(/^(!--|\?|!\[CDATA\[|[a-z][a-z0-9-]*(?:\s+[a-z_:.\-]+(?:\s*=\s*[^>]+)?)*\s*(?:>|$))/i, false)) { + var end = stream.string.indexOf(">", stream.pos); + if (end != -1) { + var atts = stream.string.substring(stream.start, end); + if (/markdown\s*=\s*('|"){0,1}1('|"){0,1}/.test(atts)) state.md_inside = true; + } + stream.backUp(1); + state.htmlState = CodeMirror.startState(htmlMode); + return switchBlock(stream, state, htmlBlock); + } + + if (modeCfg.xml && ch === '<' && stream.match(/^\/\w*?>/)) { + state.md_inside = false; + return "tag"; + } else if (ch === "*" || ch === "_") { + var len = 1, before = stream.pos == 1 ? " " : stream.string.charAt(stream.pos - 2) + while (len < 3 && stream.eat(ch)) len++ + var after = stream.peek() || " " + // See http://spec.commonmark.org/0.27/#emphasis-and-strong-emphasis + var leftFlanking = !/\s/.test(after) && (!punctuation.test(after) || /\s/.test(before) || punctuation.test(before)) + var rightFlanking = !/\s/.test(before) && (!punctuation.test(before) || /\s/.test(after) || punctuation.test(after)) + var setEm = null, setStrong = null + if (len % 2) { // Em + if (!state.em && leftFlanking && (ch === "*" || !rightFlanking || punctuation.test(before))) + setEm = true + else if (state.em == ch && rightFlanking && (ch === "*" || !leftFlanking || punctuation.test(after))) + setEm = false + } + if (len > 1) { // Strong + if (!state.strong && leftFlanking && (ch === "*" || !rightFlanking || punctuation.test(before))) + setStrong = true + else if (state.strong == ch && rightFlanking && (ch === "*" || !leftFlanking || punctuation.test(after))) + setStrong = false + } + if (setStrong != null || setEm != null) { + if (modeCfg.highlightFormatting) state.formatting = setEm == null ? "strong" : setStrong == null ? "em" : "strong em" + if (setEm === true) state.em = ch + if (setStrong === true) state.strong = ch + var t = getType(state) + if (setEm === false) state.em = false + if (setStrong === false) state.strong = false + return t + } + } else if (ch === ' ') { + if (stream.eat('*') || stream.eat('_')) { // Probably surrounded by spaces + if (stream.peek() === ' ') { // Surrounded by spaces, ignore return getType(state); + } else { // Not surrounded by spaces, back up pointer + stream.backUp(1); } + } + } - state.taskOpen = false; - state.taskClosed = false; - - if (state.header && stream.match(/^#+$/, true)) { - if (modeCfg.highlightFormatting) state.formatting = 'header'; + if (modeCfg.strikethrough) { + if (ch === '~' && stream.eatWhile(ch)) { + if (state.strikethrough) {// Remove strikethrough + if (modeCfg.highlightFormatting) state.formatting = "strikethrough"; + var t = getType(state); + state.strikethrough = false; + return t; + } else if (stream.match(/^[^\s]/, false)) {// Add strikethrough + state.strikethrough = true; + if (modeCfg.highlightFormatting) state.formatting = "strikethrough"; return getType(state); } - - var ch = stream.next(); - - // Matches link titles present on next line - if (state.linkTitle) { - state.linkTitle = false; - var matchCh = ch; - if (ch === '(') { - matchCh = ')'; - } - matchCh = (matchCh + '').replace(/([.?*+^\[\]\\(){}|-])/g, '\\$1'); - var regex = - '^\\s*(?:[^' + matchCh + '\\\\]+|\\\\\\\\|\\\\.)' + matchCh; - if (stream.match(new RegExp(regex), true)) { - return tokenTypes.linkHref; - } - } - - // If this block is changed, it may need to be updated in GFM mode - if (ch === '`') { - var previousFormatting = state.formatting; - if (modeCfg.highlightFormatting) state.formatting = 'code'; - stream.eatWhile('`'); - var count = stream.current().length; - if (state.code == 0 && (!state.quote || count == 1)) { - state.code = count; - return getType(state); - } else if (count == state.code) { - // Must be exact - var t = getType(state); - state.code = 0; - return t; - } else { - state.formatting = previousFormatting; + } else if (ch === ' ') { + if (stream.match('~~', true)) { // Probably surrounded by space + if (stream.peek() === ' ') { // Surrounded by spaces, ignore return getType(state); + } else { // Not surrounded by spaces, back up pointer + stream.backUp(2); } - } else if (state.code) { - return getType(state); - } - - if (ch === '\\') { - stream.next(); - if (modeCfg.highlightFormatting) { - var type = getType(state); - var formattingEscape = tokenTypes.formatting + '-escape'; - return type ? type + ' ' + formattingEscape : formattingEscape; - } - } - - if (ch === '!' && stream.match(/\[[^\]]*\] ?(?:\(|\[)/, false)) { - state.imageMarker = true; - state.image = true; - if (modeCfg.highlightFormatting) state.formatting = 'image'; - return getType(state); - } - - if ( - ch === '[' && - state.imageMarker && - stream.match(/[^\]]*\](\(.*?\)| ?\[.*?\])/, false) - ) { - state.imageMarker = false; - state.imageAltText = true; - if (modeCfg.highlightFormatting) state.formatting = 'image'; - return getType(state); - } - - if (ch === ']' && state.imageAltText) { - if (modeCfg.highlightFormatting) state.formatting = 'image'; - var type = getType(state); - state.imageAltText = false; - state.image = false; - state.inline = state.f = linkHref; - return type; - } - - if (ch === '[' && !state.image) { - if (state.linkText && stream.match(/^.*?\]/)) return getType(state); - state.linkText = true; - if (modeCfg.highlightFormatting) state.formatting = 'link'; - return getType(state); - } - - if (ch === ']' && state.linkText) { - if (modeCfg.highlightFormatting) state.formatting = 'link'; - var type = getType(state); - state.linkText = false; - state.inline = state.f = stream.match(/\(.*?\)| ?\[.*?\]/, false) - ? linkHref - : inlineNormal; - return type; } + } + } + + if (modeCfg.emoji && ch === ":" && stream.match(/^(?:[a-z_\d+][a-z_\d+-]*|\-[a-z_\d+][a-z_\d+-]*):/)) { + state.emoji = true; + if (modeCfg.highlightFormatting) state.formatting = "emoji"; + var retType = getType(state); + state.emoji = false; + return retType; + } + + if (ch === ' ') { + if (stream.match(/^ +$/, false)) { + state.trailingSpace++; + } else if (state.trailingSpace) { + state.trailingSpaceNewLine = true; + } + } + + return getType(state); + } + + function linkInline(stream, state) { + var ch = stream.next(); + + if (ch === ">") { + state.f = state.inline = inlineNormal; + if (modeCfg.highlightFormatting) state.formatting = "link"; + var type = getType(state); + if (type){ + type += " "; + } else { + type = ""; + } + return type + tokenTypes.linkInline; + } + + stream.match(/^[^>]+/, true); + + return tokenTypes.linkInline; + } + + function linkHref(stream, state) { + // Check if space, and return NULL if so (to avoid marking the space) + if(stream.eatSpace()){ + return null; + } + var ch = stream.next(); + if (ch === '(' || ch === '[') { + state.f = state.inline = getLinkHrefInside(ch === "(" ? ")" : "]"); + if (modeCfg.highlightFormatting) state.formatting = "link-string"; + state.linkHref = true; + return getType(state); + } + return 'error'; + } + + var linkRE = { + ")": /^(?:[^\\\(\)]|\\.|\((?:[^\\\(\)]|\\.)*\))*?(?=\))/, + "]": /^(?:[^\\\[\]]|\\.|\[(?:[^\\\[\]]|\\.)*\])*?(?=\])/ + } + + function getLinkHrefInside(endChar) { + return function(stream, state) { + var ch = stream.next(); + + if (ch === endChar) { + state.f = state.inline = inlineNormal; + if (modeCfg.highlightFormatting) state.formatting = "link-string"; + var returnState = getType(state); + state.linkHref = false; + return returnState; + } - if ( - ch === '<' && - stream.match(/^(https?|ftps?):\/\/(?:[^\\>]|\\.)+>/, false) - ) { - state.f = state.inline = linkInline; - if (modeCfg.highlightFormatting) state.formatting = 'link'; - var type = getType(state); - if (type) { - type += ' '; - } else { - type = ''; - } - return type + tokenTypes.linkInline; - } + stream.match(linkRE[endChar]) + state.linkHref = true; + return getType(state); + }; + } + + function footnoteLink(stream, state) { + if (stream.match(/^([^\]\\]|\\.)*\]:/, false)) { + state.f = footnoteLinkInside; + stream.next(); // Consume [ + if (modeCfg.highlightFormatting) state.formatting = "link"; + state.linkText = true; + return getType(state); + } + return switchInline(stream, state, inlineNormal); + } + + function footnoteLinkInside(stream, state) { + if (stream.match(']:', true)) { + state.f = state.inline = footnoteUrl; + if (modeCfg.highlightFormatting) state.formatting = "link"; + var returnType = getType(state); + state.linkText = false; + return returnType; + } + + stream.match(/^([^\]\\]|\\.)+/, true); + + return tokenTypes.linkText; + } + + function footnoteUrl(stream, state) { + // Check if space, and return NULL if so (to avoid marking the space) + if(stream.eatSpace()){ + return null; + } + // Match URL + stream.match(/^[^\s]+/, true); + // Check for link title + if (stream.peek() === undefined) { // End of line, set flag to check next line + state.linkTitle = true; + } else { // More content on line, check if link title + stream.match(/^(?:\s+(?:"(?:[^"\\]|\\.)+"|'(?:[^'\\]|\\.)+'|\((?:[^)\\]|\\.)+\)))?/, true); + } + state.f = state.inline = inlineNormal; + return tokenTypes.linkHref + " url"; + } + + var mode = { + startState: function() { + return { + f: blockNormal, + + prevLine: {stream: null}, + thisLine: {stream: null}, + + block: blockNormal, + htmlState: null, + indentation: 0, + + inline: inlineNormal, + text: handleText, + + formatting: false, + linkText: false, + linkHref: false, + linkTitle: false, + code: 0, + em: false, + strong: false, + header: 0, + setext: 0, + hr: false, + taskList: false, + list: false, + listStack: [], + quote: 0, + trailingSpace: 0, + trailingSpaceNewLine: false, + strikethrough: false, + emoji: false, + fencedEndRE: null + }; + }, - if (ch === '<' && stream.match(/^[^> \\]+@(?:[^\\>]|\\.)+>/, false)) { - state.f = state.inline = linkInline; - if (modeCfg.highlightFormatting) state.formatting = 'link'; - var type = getType(state); - if (type) { - type += ' '; - } else { - type = ''; - } - return type + tokenTypes.linkEmail; - } + copyState: function(s) { + return { + f: s.f, + + prevLine: s.prevLine, + thisLine: s.thisLine, + + block: s.block, + htmlState: s.htmlState && CodeMirror.copyState(htmlMode, s.htmlState), + indentation: s.indentation, + + localMode: s.localMode, + localState: s.localMode ? CodeMirror.copyState(s.localMode, s.localState) : null, + + inline: s.inline, + text: s.text, + formatting: false, + linkText: s.linkText, + linkTitle: s.linkTitle, + linkHref: s.linkHref, + code: s.code, + em: s.em, + strong: s.strong, + strikethrough: s.strikethrough, + emoji: s.emoji, + header: s.header, + setext: s.setext, + hr: s.hr, + taskList: s.taskList, + list: s.list, + listStack: s.listStack.slice(0), + quote: s.quote, + indentedCode: s.indentedCode, + trailingSpace: s.trailingSpace, + trailingSpaceNewLine: s.trailingSpaceNewLine, + md_inside: s.md_inside, + fencedEndRE: s.fencedEndRE + }; + }, - if ( - modeCfg.xml && - ch === '<' && - stream.match( - /^(!--|\?|!\[CDATA\[|[a-z][a-z0-9-]*(?:\s+[a-z_:.\-]+(?:\s*=\s*[^>]+)?)*\s*(?:>|$))/i, - false, - ) - ) { - var end = stream.string.indexOf('>', stream.pos); - if (end != -1) { - var atts = stream.string.substring(stream.start, end); - if (/markdown\s*=\s*('|"){0,1}1('|"){0,1}/.test(atts)) - state.md_inside = true; - } - stream.backUp(1); - state.htmlState = CodeMirror.startState(htmlMode); - return switchBlock(stream, state, htmlBlock); - } + token: function(stream, state) { - if (modeCfg.xml && ch === '<' && stream.match(/^\/\w*?>/)) { - state.md_inside = false; - return 'tag'; - } else if (ch === '*' || ch === '_') { - var len = 1, - before = - stream.pos == 1 ? ' ' : stream.string.charAt(stream.pos - 2); - while (len < 3 && stream.eat(ch)) len++; - var after = stream.peek() || ' '; - // See http://spec.commonmark.org/0.27/#emphasis-and-strong-emphasis - var leftFlanking = - !/\s/.test(after) && - (!punctuation.test(after) || - /\s/.test(before) || - punctuation.test(before)); - var rightFlanking = - !/\s/.test(before) && - (!punctuation.test(before) || - /\s/.test(after) || - punctuation.test(after)); - var setEm = null, - setStrong = null; - if (len % 2) { - // Em - if ( - !state.em && - leftFlanking && - (ch === '*' || !rightFlanking || punctuation.test(before)) - ) - setEm = true; - else if ( - state.em == ch && - rightFlanking && - (ch === '*' || !leftFlanking || punctuation.test(after)) - ) - setEm = false; - } - if (len > 1) { - // Strong - if ( - !state.strong && - leftFlanking && - (ch === '*' || !rightFlanking || punctuation.test(before)) - ) - setStrong = true; - else if ( - state.strong == ch && - rightFlanking && - (ch === '*' || !leftFlanking || punctuation.test(after)) - ) - setStrong = false; - } - if (setStrong != null || setEm != null) { - if (modeCfg.highlightFormatting) - state.formatting = - setEm == null - ? 'strong' - : setStrong == null - ? 'em' - : 'strong em'; - if (setEm === true) state.em = ch; - if (setStrong === true) state.strong = ch; - var t = getType(state); - if (setEm === false) state.em = false; - if (setStrong === false) state.strong = false; - return t; - } - } else if (ch === ' ') { - if (stream.eat('*') || stream.eat('_')) { - // Probably surrounded by spaces - if (stream.peek() === ' ') { - // Surrounded by spaces, ignore - return getType(state); - } else { - // Not surrounded by spaces, back up pointer - stream.backUp(1); - } - } - } + // Reset state.formatting + state.formatting = false; - if (modeCfg.strikethrough) { - if (ch === '~' && stream.eatWhile(ch)) { - if (state.strikethrough) { - // Remove strikethrough - if (modeCfg.highlightFormatting) - state.formatting = 'strikethrough'; - var t = getType(state); - state.strikethrough = false; - return t; - } else if (stream.match(/^[^\s]/, false)) { - // Add strikethrough - state.strikethrough = true; - if (modeCfg.highlightFormatting) - state.formatting = 'strikethrough'; - return getType(state); - } - } else if (ch === ' ') { - if (stream.match(/^~~/, true)) { - // Probably surrounded by space - if (stream.peek() === ' ') { - // Surrounded by spaces, ignore - return getType(state); - } else { - // Not surrounded by spaces, back up pointer - stream.backUp(2); - } - } - } - } + if (stream != state.thisLine.stream) { + state.header = 0; + state.hr = false; - if ( - modeCfg.emoji && - ch === ':' && - stream.match(/^(?:[a-z_\d+][a-z_\d+-]*|\-[a-z_\d+][a-z_\d+-]*):/) - ) { - state.emoji = true; - if (modeCfg.highlightFormatting) state.formatting = 'emoji'; - var retType = getType(state); - state.emoji = false; - return retType; + if (stream.match(/^\s*$/, true)) { + blankLine(state); + return null; } - if (ch === ' ') { - if (stream.match(/^ +$/, false)) { - state.trailingSpace++; - } else if (state.trailingSpace) { - state.trailingSpaceNewLine = true; - } - } + state.prevLine = state.thisLine + state.thisLine = {stream: stream} - return getType(state); - } + // Reset state.taskList + state.taskList = false; - function linkInline(stream, state) { - var ch = stream.next(); + // Reset state.trailingSpace + state.trailingSpace = 0; + state.trailingSpaceNewLine = false; - if (ch === '>') { - state.f = state.inline = inlineNormal; - if (modeCfg.highlightFormatting) state.formatting = 'link'; - var type = getType(state); - if (type) { - type += ' '; - } else { - type = ''; + if (!state.localState) { + state.f = state.block; + if (state.f != htmlBlock) { + var indentation = stream.match(/^\s*/, true)[0].replace(/\t/g, expandedTab).length; + state.indentation = indentation; + state.indentationDiff = null; + if (indentation > 0) return null; } - return type + tokenTypes.linkInline; } - - stream.match(/^[^>]+/, true); - - return tokenTypes.linkInline; - } - - function linkHref(stream, state) { - // Check if space, and return NULL if so (to avoid marking the space) - if (stream.eatSpace()) { - return null; - } - var ch = stream.next(); - if (ch === '(' || ch === '[') { - state.f = state.inline = getLinkHrefInside(ch === '(' ? ')' : ']'); - if (modeCfg.highlightFormatting) state.formatting = 'link-string'; - state.linkHref = true; - return getType(state); - } - return 'error'; - } - - var linkRE = { - ')': /^(?:[^\\\(\)]|\\.|\((?:[^\\\(\)]|\\.)*\))*?(?=\))/, - ']': /^(?:[^\\\[\]]|\\.|\[(?:[^\\\[\]]|\\.)*\])*?(?=\])/, - }; - - function getLinkHrefInside(endChar) { - return function (stream, state) { - var ch = stream.next(); - - if (ch === endChar) { - state.f = state.inline = inlineNormal; - if (modeCfg.highlightFormatting) state.formatting = 'link-string'; - var returnState = getType(state); - state.linkHref = false; - return returnState; - } - - stream.match(linkRE[endChar]); - state.linkHref = true; - return getType(state); - }; } + return state.f(stream, state); + }, - function footnoteLink(stream, state) { - if (stream.match(/^([^\]\\]|\\.)*\]:/, false)) { - state.f = footnoteLinkInside; - stream.next(); // Consume [ - if (modeCfg.highlightFormatting) state.formatting = 'link'; - state.linkText = true; - return getType(state); - } - return switchInline(stream, state, inlineNormal); - } + innerMode: function(state) { + if (state.block == htmlBlock) return {state: state.htmlState, mode: htmlMode}; + if (state.localState) return {state: state.localState, mode: state.localMode}; + return {state: state, mode: mode}; + }, - function footnoteLinkInside(stream, state) { - if (stream.match(/^\]:/, true)) { - state.f = state.inline = footnoteUrl; - if (modeCfg.highlightFormatting) state.formatting = 'link'; - var returnType = getType(state); - state.linkText = false; - return returnType; - } + indent: function(state, textAfter, line) { + if (state.block == htmlBlock && htmlMode.indent) return htmlMode.indent(state.htmlState, textAfter, line) + if (state.localState && state.localMode.indent) return state.localMode.indent(state.localState, textAfter, line) + return CodeMirror.Pass + }, - stream.match(/^([^\]\\]|\\.)+/, true); + blankLine: blankLine, - return tokenTypes.linkText; - } + getType: getType, - function footnoteUrl(stream, state) { - // Check if space, and return NULL if so (to avoid marking the space) - if (stream.eatSpace()) { - return null; - } - // Match URL - stream.match(/^[^\s]+/, true); - // Check for link title - if (stream.peek() === undefined) { - // End of line, set flag to check next line - state.linkTitle = true; - } else { - // More content on line, check if link title - stream.match( - /^(?:\s+(?:"(?:[^"\\]|\\\\|\\.)+"|'(?:[^'\\]|\\\\|\\.)+'|\((?:[^)\\]|\\\\|\\.)+\)))?/, - true, - ); - } - state.f = state.inline = inlineNormal; - return tokenTypes.linkHref + ' url'; - } + blockCommentStart: "", + closeBrackets: "()[]{}''\"\"``", + fold: "markdown" + }; + return mode; +}, "xml"); - var mode = { - startState: function () { - return { - f: blockNormal, - - prevLine: { stream: null }, - thisLine: { stream: null }, - - block: blockNormal, - htmlState: null, - indentation: 0, - - inline: inlineNormal, - text: handleText, - - formatting: false, - linkText: false, - linkHref: false, - linkTitle: false, - code: 0, - em: false, - strong: false, - header: 0, - setext: 0, - hr: false, - taskList: false, - list: false, - listStack: [], - quote: 0, - trailingSpace: 0, - trailingSpaceNewLine: false, - strikethrough: false, - emoji: false, - fencedEndRE: null, - }; - }, - - copyState: function (s) { - return { - f: s.f, - - prevLine: s.prevLine, - thisLine: s.thisLine, - - block: s.block, - htmlState: - s.htmlState && CodeMirror.copyState(htmlMode, s.htmlState), - indentation: s.indentation, - - localMode: s.localMode, - localState: s.localMode - ? CodeMirror.copyState(s.localMode, s.localState) - : null, - - inline: s.inline, - text: s.text, - formatting: false, - linkText: s.linkText, - linkTitle: s.linkTitle, - linkHref: s.linkHref, - code: s.code, - em: s.em, - strong: s.strong, - strikethrough: s.strikethrough, - emoji: s.emoji, - header: s.header, - setext: s.setext, - hr: s.hr, - taskList: s.taskList, - list: s.list, - listStack: s.listStack.slice(0), - quote: s.quote, - indentedCode: s.indentedCode, - trailingSpace: s.trailingSpace, - trailingSpaceNewLine: s.trailingSpaceNewLine, - md_inside: s.md_inside, - fencedEndRE: s.fencedEndRE, - }; - }, - - token: function (stream, state) { - // Reset state.formatting - state.formatting = false; - - if (stream != state.thisLine.stream) { - state.header = 0; - state.hr = false; - - if (stream.match(/^\s*$/, true)) { - blankLine(state); - return null; - } - - state.prevLine = state.thisLine; - state.thisLine = { stream: stream }; - - // Reset state.taskList - state.taskList = false; - - // Reset state.trailingSpace - state.trailingSpace = 0; - state.trailingSpaceNewLine = false; - - if (!state.localState) { - state.f = state.block; - if (state.f != htmlBlock) { - var indentation = stream - .match(/^\s*/, true)[0] - .replace(/\t/g, expandedTab).length; - state.indentation = indentation; - state.indentationDiff = null; - if (indentation > 0) return null; - } - } - } - return state.f(stream, state); - }, - - innerMode: function (state) { - if (state.block == htmlBlock) - return { state: state.htmlState, mode: htmlMode }; - if (state.localState) - return { state: state.localState, mode: state.localMode }; - return { state: state, mode: mode }; - }, - - indent: function (state, textAfter, line) { - if (state.block == htmlBlock && htmlMode.indent) - return htmlMode.indent(state.htmlState, textAfter, line); - if (state.localState && state.localMode.indent) - return state.localMode.indent(state.localState, textAfter, line); - return CodeMirror.Pass; - }, - - blankLine: blankLine, - - getType: getType, - - blockCommentStart: '', - closeBrackets: '()[]{}\'\'""``', - fold: 'markdown', - }; - return mode; - }, - 'xml', - ); +CodeMirror.defineMIME("text/markdown", "markdown"); - CodeMirror.defineMIME('text/markdown', 'markdown'); +CodeMirror.defineMIME("text/x-markdown", "markdown"); - CodeMirror.defineMIME('text/x-markdown', 'markdown'); }); diff --git a/web/static/lib/codemirror/matchbrackets.js b/web/static/lib/codemirror/matchbrackets.js index 3f463d75..c342910e 100644 --- a/web/static/lib/codemirror/matchbrackets.js +++ b/web/static/lib/codemirror/matchbrackets.js @@ -1,76 +1,47 @@ // CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: https://codemirror.net/LICENSE - -(function (mod) { - if (typeof exports == 'object' && typeof module == 'object') - // CommonJS - mod(require('../../lib/codemirror')); - else if (typeof define == 'function' && define.amd) - // AMD - define(['../../lib/codemirror'], mod); - // Plain browser env - else mod(CodeMirror); -})(function (CodeMirror) { - var ie_lt8 = - /MSIE \d/.test(navigator.userAgent) && +// Distributed under an MIT license: https://codemirror.net/5/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + var ie_lt8 = /MSIE \d/.test(navigator.userAgent) && (document.documentMode == null || document.documentMode < 8); var Pos = CodeMirror.Pos; - var matching = { - '(': ')>', - ')': '(<', - '[': ']>', - ']': '[<', - '{': '}>', - '}': '{<', - '<': '>>', - '>': '<<', - }; + var matching = {"(": ")>", ")": "(<", "[": "]>", "]": "[<", "{": "}>", "}": "{<", "<": ">>", ">": "<<"}; function bracketRegex(config) { - return (config && config.bracketRegex) || /[(){}[\]]/; + return config && config.bracketRegex || /[(){}[\]]/ } function findMatchingBracket(cm, where, config) { - var line = cm.getLineHandle(where.line), - pos = where.ch - 1; - var afterCursor = config && config.afterCursor; + var line = cm.getLineHandle(where.line), pos = where.ch - 1; + var afterCursor = config && config.afterCursor if (afterCursor == null) - afterCursor = /(^| )cm-fat-cursor($| )/.test( - cm.getWrapperElement().className, - ); - var re = bracketRegex(config); + afterCursor = /(^| )cm-fat-cursor($| )/.test(cm.getWrapperElement().className) + var re = bracketRegex(config) // A cursor is defined as between two characters, but in in vim command mode // (i.e. not insert mode), the cursor is visually represented as a // highlighted box on top of the 2nd character. Otherwise, we allow matches // from before or after the cursor. - var match = - (!afterCursor && - pos >= 0 && - re.test(line.text.charAt(pos)) && - matching[line.text.charAt(pos)]) || - (re.test(line.text.charAt(pos + 1)) && matching[line.text.charAt(++pos)]); + var match = (!afterCursor && pos >= 0 && re.test(line.text.charAt(pos)) && matching[line.text.charAt(pos)]) || + re.test(line.text.charAt(pos + 1)) && matching[line.text.charAt(++pos)]; if (!match) return null; - var dir = match.charAt(1) == '>' ? 1 : -1; - if (config && config.strict && dir > 0 != (pos == where.ch)) return null; + var dir = match.charAt(1) == ">" ? 1 : -1; + if (config && config.strict && (dir > 0) != (pos == where.ch)) return null; var style = cm.getTokenTypeAt(Pos(where.line, pos + 1)); - var found = scanForBracket( - cm, - Pos(where.line, pos + (dir > 0 ? 1 : 0)), - dir, - style || null, - config, - ); + var found = scanForBracket(cm, Pos(where.line, pos + (dir > 0 ? 1 : 0)), dir, style, config); if (found == null) return null; - return { - from: Pos(where.line, pos), - to: found && found.pos, - match: found && found.ch == match.charAt(0), - forward: dir > 0, - }; + return {from: Pos(where.line, pos), to: found && found.pos, + match: found && found.ch == match.charAt(0), forward: dir > 0}; } // bracketRegex is used to specify which type of bracket to scan @@ -85,70 +56,51 @@ var maxScanLines = (config && config.maxScanLines) || 1000; var stack = []; - var re = bracketRegex(config); - var lineEnd = - dir > 0 - ? Math.min(where.line + maxScanLines, cm.lastLine() + 1) - : Math.max(cm.firstLine() - 1, where.line - maxScanLines); + var re = bracketRegex(config) + var lineEnd = dir > 0 ? Math.min(where.line + maxScanLines, cm.lastLine() + 1) + : Math.max(cm.firstLine() - 1, where.line - maxScanLines); for (var lineNo = where.line; lineNo != lineEnd; lineNo += dir) { var line = cm.getLine(lineNo); if (!line) continue; - var pos = dir > 0 ? 0 : line.length - 1, - end = dir > 0 ? line.length : -1; + var pos = dir > 0 ? 0 : line.length - 1, end = dir > 0 ? line.length : -1; if (line.length > maxScanLen) continue; if (lineNo == where.line) pos = where.ch - (dir < 0 ? 1 : 0); for (; pos != end; pos += dir) { var ch = line.charAt(pos); - if ( - re.test(ch) && - (style === undefined || - cm.getTokenTypeAt(Pos(lineNo, pos + 1)) == style) - ) { + if (re.test(ch) && (style === undefined || + (cm.getTokenTypeAt(Pos(lineNo, pos + 1)) || "") == (style || ""))) { var match = matching[ch]; - if (match && (match.charAt(1) == '>') == dir > 0) stack.push(ch); - else if (!stack.length) return { pos: Pos(lineNo, pos), ch: ch }; + if (match && (match.charAt(1) == ">") == (dir > 0)) stack.push(ch); + else if (!stack.length) return {pos: Pos(lineNo, pos), ch: ch}; else stack.pop(); } } } - return lineNo - dir == (dir > 0 ? cm.lastLine() : cm.firstLine()) - ? false - : null; + return lineNo - dir == (dir > 0 ? cm.lastLine() : cm.firstLine()) ? false : null; } function matchBrackets(cm, autoclear, config) { // Disable brace matching in long lines, since it'll cause hugely slow updates - var maxHighlightLen = cm.state.matchBrackets.maxHighlightLineLength || 1000; - var marks = [], - ranges = cm.listSelections(); + var maxHighlightLen = cm.state.matchBrackets.maxHighlightLineLength || 1000, + highlightNonMatching = config && config.highlightNonMatching; + var marks = [], ranges = cm.listSelections(); for (var i = 0; i < ranges.length; i++) { - var match = - ranges[i].empty() && findMatchingBracket(cm, ranges[i].head, config); - if (match && cm.getLine(match.from.line).length <= maxHighlightLen) { - var style = match.match - ? 'CodeMirror-matchingbracket' - : 'CodeMirror-nonmatchingbracket'; - marks.push( - cm.markText(match.from, Pos(match.from.line, match.from.ch + 1), { - className: style, - }), - ); + var match = ranges[i].empty() && findMatchingBracket(cm, ranges[i].head, config); + if (match && (match.match || highlightNonMatching !== false) && cm.getLine(match.from.line).length <= maxHighlightLen) { + var style = match.match ? "CodeMirror-matchingbracket" : "CodeMirror-nonmatchingbracket"; + marks.push(cm.markText(match.from, Pos(match.from.line, match.from.ch + 1), {className: style})); if (match.to && cm.getLine(match.to.line).length <= maxHighlightLen) - marks.push( - cm.markText(match.to, Pos(match.to.line, match.to.ch + 1), { - className: style, - }), - ); + marks.push(cm.markText(match.to, Pos(match.to.line, match.to.ch + 1), {className: style})); } } if (marks.length) { // Kludge to work around the IE bug from issue #1193, where text - // input stops going to the textare whever this fires. + // input stops going to the textarea whenever this fires. if (ie_lt8 && cm.state.focused) cm.focus(); - var clear = function () { - cm.operation(function () { + var clear = function() { + cm.operation(function() { for (var i = 0; i < marks.length; i++) marks[i].clear(); }); }; @@ -158,66 +110,51 @@ } function doMatchBrackets(cm) { - cm.operation(function () { + cm.operation(function() { if (cm.state.matchBrackets.currentlyHighlighted) { cm.state.matchBrackets.currentlyHighlighted(); cm.state.matchBrackets.currentlyHighlighted = null; } - cm.state.matchBrackets.currentlyHighlighted = matchBrackets( - cm, - false, - cm.state.matchBrackets, - ); + cm.state.matchBrackets.currentlyHighlighted = matchBrackets(cm, false, cm.state.matchBrackets); }); } - CodeMirror.defineOption('matchBrackets', false, function (cm, val, old) { - function clear(cm) { - if ( - cm.state.matchBrackets && - cm.state.matchBrackets.currentlyHighlighted - ) { - cm.state.matchBrackets.currentlyHighlighted(); - cm.state.matchBrackets.currentlyHighlighted = null; - } + function clearHighlighted(cm) { + if (cm.state.matchBrackets && cm.state.matchBrackets.currentlyHighlighted) { + cm.state.matchBrackets.currentlyHighlighted(); + cm.state.matchBrackets.currentlyHighlighted = null; } + } + CodeMirror.defineOption("matchBrackets", false, function(cm, val, old) { if (old && old != CodeMirror.Init) { - cm.off('cursorActivity', doMatchBrackets); - cm.off('focus', doMatchBrackets); - cm.off('blur', clear); - clear(cm); + cm.off("cursorActivity", doMatchBrackets); + cm.off("focus", doMatchBrackets) + cm.off("blur", clearHighlighted) + clearHighlighted(cm); } if (val) { - cm.state.matchBrackets = typeof val == 'object' ? val : {}; - cm.on('cursorActivity', doMatchBrackets); - cm.on('focus', doMatchBrackets); - cm.on('blur', clear); + cm.state.matchBrackets = typeof val == "object" ? val : {}; + cm.on("cursorActivity", doMatchBrackets); + cm.on("focus", doMatchBrackets) + cm.on("blur", clearHighlighted) } }); - CodeMirror.defineExtension('matchBrackets', function () { - matchBrackets(this, true); - }); - CodeMirror.defineExtension( - 'findMatchingBracket', - function (pos, config, oldConfig) { - // Backwards-compatibility kludge - if (oldConfig || typeof config == 'boolean') { - if (!oldConfig) { - config = config ? { strict: true } : null; - } else { - oldConfig.strict = config; - config = oldConfig; - } + CodeMirror.defineExtension("matchBrackets", function() {matchBrackets(this, true);}); + CodeMirror.defineExtension("findMatchingBracket", function(pos, config, oldConfig){ + // Backwards-compatibility kludge + if (oldConfig || typeof config == "boolean") { + if (!oldConfig) { + config = config ? {strict: true} : null + } else { + oldConfig.strict = config + config = oldConfig } - return findMatchingBracket(this, pos, config); - }, - ); - CodeMirror.defineExtension( - 'scanForBracket', - function (pos, dir, style, config) { - return scanForBracket(this, pos, dir, style, config); - }, - ); + } + return findMatchingBracket(this, pos, config) + }); + CodeMirror.defineExtension("scanForBracket", function(pos, dir, style, config){ + return scanForBracket(this, pos, dir, style, config); + }); }); diff --git a/web/static/lib/codemirror/nord.scss b/web/static/lib/codemirror/nord.scss index 34af2704..41a8ad77 100644 --- a/web/static/lib/codemirror/nord.scss +++ b/web/static/lib/codemirror/nord.scss @@ -1,112 +1,41 @@ /* Based on arcticicestudio's Nord theme */ /* https://github.com/arcticicestudio/nord */ -.cm-s-nord.CodeMirror { - background: #2e3440; - color: #d8dee9; - font-size: 16px; - border-radius: 6px; -} -.cm-s-nord div.CodeMirror-selected { - background: #434c5e; -} -.cm-s-nord .CodeMirror-line::selection, -.cm-s-nord .CodeMirror-line > span::selection, -.cm-s-nord .CodeMirror-line > span > span::selection { - background: #3b4252; -} -.cm-s-nord .CodeMirror-line::-moz-selection, -.cm-s-nord .CodeMirror-line > span::-moz-selection, -.cm-s-nord .CodeMirror-line > span > span::-moz-selection { - background: #3b4252; -} -.cm-s-nord .CodeMirror-gutters { - background: #2e3440; - border-right: 0px; -} -.cm-s-nord .CodeMirror-guttermarker { - color: #4c566a; -} -.cm-s-nord .CodeMirror-guttermarker-subtle { - color: #4c566a; -} -.cm-s-nord .CodeMirror-linenumber { - color: #4c566a; -} -.cm-s-nord .CodeMirror-cursor { - border-left: 1px solid #f8f8f0; -} +.cm-s-nord.CodeMirror { background: #2e3440; color: #d8dee9; } +.cm-s-nord div.CodeMirror-selected { background: #434c5e; } +.cm-s-nord .CodeMirror-line::selection, .cm-s-nord .CodeMirror-line > span::selection, .cm-s-nord .CodeMirror-line > span > span::selection { background: #3b4252; } +.cm-s-nord .CodeMirror-line::-moz-selection, .cm-s-nord .CodeMirror-line > span::-moz-selection, .cm-s-nord .CodeMirror-line > span > span::-moz-selection { background: #3b4252; } +.cm-s-nord .CodeMirror-gutters { background: #2e3440; border-right: 0px; } +.cm-s-nord .CodeMirror-guttermarker { color: #4c566a; } +.cm-s-nord .CodeMirror-guttermarker-subtle { color: #4c566a; } +.cm-s-nord .CodeMirror-linenumber { color: #4c566a; } +.cm-s-nord .CodeMirror-cursor { border-left: 1px solid #f8f8f0; } -.cm-s-nord span.cm-comment { - color: #4c566a; -} -.cm-s-nord span.cm-atom { - color: #b48ead; -} -.cm-s-nord span.cm-number { - color: #b48ead; -} +.cm-s-nord span.cm-comment { color: #4c566a; } +.cm-s-nord span.cm-atom { color: #b48ead; } +.cm-s-nord span.cm-number { color: #b48ead; } -.cm-s-nord span.cm-comment.cm-attribute { - color: #97b757; -} -.cm-s-nord span.cm-comment.cm-def { - color: #bc9262; -} -.cm-s-nord span.cm-comment.cm-tag { - color: #bc6283; -} -.cm-s-nord span.cm-comment.cm-type { - color: #5998a6; -} +.cm-s-nord span.cm-comment.cm-attribute { color: #97b757; } +.cm-s-nord span.cm-comment.cm-def { color: #bc9262; } +.cm-s-nord span.cm-comment.cm-tag { color: #bc6283; } +.cm-s-nord span.cm-comment.cm-type { color: #5998a6; } -.cm-s-nord span.cm-property, -.cm-s-nord span.cm-attribute { - color: #8fbcbb; -} -.cm-s-nord span.cm-keyword { - color: #81a1c1; -} -.cm-s-nord span.cm-builtin { - color: #81a1c1; -} -.cm-s-nord span.cm-string { - color: #a3be8c; -} +.cm-s-nord span.cm-property, .cm-s-nord span.cm-attribute { color: #8FBCBB; } +.cm-s-nord span.cm-keyword { color: #81A1C1; } +.cm-s-nord span.cm-builtin { color: #81A1C1; } +.cm-s-nord span.cm-string { color: #A3BE8C; } -.cm-s-nord span.cm-variable { - color: #d8dee9; -} -.cm-s-nord span.cm-variable-2 { - color: #d8dee9; -} -.cm-s-nord span.cm-variable-3, -.cm-s-nord span.cm-type { - color: #d8dee9; -} -.cm-s-nord span.cm-def { - color: #8fbcbb; -} -.cm-s-nord span.cm-bracket { - color: #81a1c1; -} -.cm-s-nord span.cm-tag { - color: #bf616a; -} -.cm-s-nord span.cm-header { - color: #b48ead; -} -.cm-s-nord span.cm-link { - color: #b48ead; -} -.cm-s-nord span.cm-error { - background: #bf616a; - color: #f8f8f0; -} +.cm-s-nord span.cm-variable { color: #d8dee9; } +.cm-s-nord span.cm-variable-2 { color: #d8dee9; } +.cm-s-nord span.cm-variable-3, .cm-s-nord span.cm-type { color: #d8dee9; } +.cm-s-nord span.cm-def { color: #8FBCBB; } +.cm-s-nord span.cm-bracket { color: #81A1C1; } +.cm-s-nord span.cm-tag { color: #bf616a; } +.cm-s-nord span.cm-header { color: #b48ead; } +.cm-s-nord span.cm-link { color: #b48ead; } +.cm-s-nord span.cm-error { background: #bf616a; color: #f8f8f0; } -.cm-s-nord .CodeMirror-activeline-background { - background: #3b4252; -} +.cm-s-nord .CodeMirror-activeline-background { background: #3b4252; } .cm-s-nord .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; diff --git a/web/static/lib/codemirror/overlay.js b/web/static/lib/codemirror/overlay.js index d305a5ec..1aab1595 100644 --- a/web/static/lib/codemirror/overlay.js +++ b/web/static/lib/codemirror/overlay.js @@ -1,5 +1,5 @@ // CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: https://codemirror.net/LICENSE +// Distributed under an MIT license: https://codemirror.net/5/LICENSE // Utility function that allows modes to be combined. The mode given // as the base argument takes care of most of the normal mode @@ -10,95 +10,81 @@ // or state.overlay.combineTokens was true, in which case the styles are // combined. -(function (mod) { - if (typeof exports == 'object' && typeof module == 'object') - // CommonJS - mod(require('../../lib/codemirror')); - else if (typeof define == 'function' && define.amd) - // AMD - define(['../../lib/codemirror'], mod); - // Plain browser env - else mod(CodeMirror); -})(function (CodeMirror) { - 'use strict'; +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; - CodeMirror.overlayMode = function (base, overlay, combine) { - return { - startState: function () { - return { - base: CodeMirror.startState(base), - overlay: CodeMirror.startState(overlay), - basePos: 0, - baseCur: null, - overlayPos: 0, - overlayCur: null, - streamSeen: null, - }; - }, - copyState: function (state) { - return { - base: CodeMirror.copyState(base, state.base), - overlay: CodeMirror.copyState(overlay, state.overlay), - basePos: state.basePos, - baseCur: null, - overlayPos: state.overlayPos, - overlayCur: null, - }; - }, +CodeMirror.overlayMode = function(base, overlay, combine) { + return { + startState: function() { + return { + base: CodeMirror.startState(base), + overlay: CodeMirror.startState(overlay), + basePos: 0, baseCur: null, + overlayPos: 0, overlayCur: null, + streamSeen: null + }; + }, + copyState: function(state) { + return { + base: CodeMirror.copyState(base, state.base), + overlay: CodeMirror.copyState(overlay, state.overlay), + basePos: state.basePos, baseCur: null, + overlayPos: state.overlayPos, overlayCur: null + }; + }, - token: function (stream, state) { - if ( - stream != state.streamSeen || - Math.min(state.basePos, state.overlayPos) < stream.start - ) { - state.streamSeen = stream; - state.basePos = state.overlayPos = stream.start; - } + token: function(stream, state) { + if (stream != state.streamSeen || + Math.min(state.basePos, state.overlayPos) < stream.start) { + state.streamSeen = stream; + state.basePos = state.overlayPos = stream.start; + } - if (stream.start == state.basePos) { - state.baseCur = base.token(stream, state.base); - state.basePos = stream.pos; - } - if (stream.start == state.overlayPos) { - stream.pos = stream.start; - state.overlayCur = overlay.token(stream, state.overlay); - state.overlayPos = stream.pos; - } - stream.pos = Math.min(state.basePos, state.overlayPos); + if (stream.start == state.basePos) { + state.baseCur = base.token(stream, state.base); + state.basePos = stream.pos; + } + if (stream.start == state.overlayPos) { + stream.pos = stream.start; + state.overlayCur = overlay.token(stream, state.overlay); + state.overlayPos = stream.pos; + } + stream.pos = Math.min(state.basePos, state.overlayPos); - // state.overlay.combineTokens always takes precedence over combine, - // unless set to null - if (state.overlayCur == null) return state.baseCur; - else if ( - (state.baseCur != null && state.overlay.combineTokens) || - (combine && state.overlay.combineTokens == null) - ) - return state.baseCur + ' ' + state.overlayCur; - else return state.overlayCur; - }, + // state.overlay.combineTokens always takes precedence over combine, + // unless set to null + if (state.overlayCur == null) return state.baseCur; + else if (state.baseCur != null && + state.overlay.combineTokens || + combine && state.overlay.combineTokens == null) + return state.baseCur + " " + state.overlayCur; + else return state.overlayCur; + }, - indent: - base.indent && - function (state, textAfter, line) { - return base.indent(state.base, textAfter, line); - }, - electricChars: base.electricChars, + indent: base.indent && function(state, textAfter, line) { + return base.indent(state.base, textAfter, line); + }, + electricChars: base.electricChars, - innerMode: function (state) { - return { state: state.base, mode: base }; - }, + innerMode: function(state) { return {state: state.base, mode: base}; }, - blankLine: function (state) { - var baseToken, overlayToken; - if (base.blankLine) baseToken = base.blankLine(state.base); - if (overlay.blankLine) overlayToken = overlay.blankLine(state.overlay); + blankLine: function(state) { + var baseToken, overlayToken; + if (base.blankLine) baseToken = base.blankLine(state.base); + if (overlay.blankLine) overlayToken = overlay.blankLine(state.overlay); - return overlayToken == null - ? baseToken - : combine && baseToken != null - ? baseToken + ' ' + overlayToken - : overlayToken; - }, - }; + return overlayToken == null ? + baseToken : + (combine && baseToken != null ? baseToken + " " + overlayToken : overlayToken); + } }; +}; + }); diff --git a/web/static/lib/codemirror/python.js b/web/static/lib/codemirror/python.js index df0ece65..3946ceee 100644 --- a/web/static/lib/codemirror/python.js +++ b/web/static/lib/codemirror/python.js @@ -1,258 +1,120 @@ // CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: https://codemirror.net/LICENSE - -(function (mod) { - if (typeof exports == 'object' && typeof module == 'object') - // CommonJS - mod(require('../../lib/codemirror')); - else if (typeof define == 'function' && define.amd) - // AMD - define(['../../lib/codemirror'], mod); - // Plain browser env - else mod(CodeMirror); -})(function (CodeMirror) { - 'use strict'; +// Distributed under an MIT license: https://codemirror.net/5/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; function wordRegexp(words) { - return new RegExp('^((' + words.join(')|(') + '))\\b'); + return new RegExp("^((" + words.join(")|(") + "))\\b"); } - var wordOperators = wordRegexp(['and', 'or', 'not', 'is']); - var commonKeywords = [ - 'as', - 'assert', - 'break', - 'class', - 'continue', - 'def', - 'del', - 'elif', - 'else', - 'except', - 'finally', - 'for', - 'from', - 'global', - 'if', - 'import', - 'lambda', - 'pass', - 'raise', - 'return', - 'try', - 'while', - 'with', - 'yield', - 'in', - ]; - var commonBuiltins = [ - 'abs', - 'all', - 'any', - 'bin', - 'bool', - 'bytearray', - 'callable', - 'chr', - 'classmethod', - 'compile', - 'complex', - 'delattr', - 'dict', - 'dir', - 'divmod', - 'enumerate', - 'eval', - 'filter', - 'float', - 'format', - 'frozenset', - 'getattr', - 'globals', - 'hasattr', - 'hash', - 'help', - 'hex', - 'id', - 'input', - 'int', - 'isinstance', - 'issubclass', - 'iter', - 'len', - 'list', - 'locals', - 'map', - 'max', - 'memoryview', - 'min', - 'next', - 'object', - 'oct', - 'open', - 'ord', - 'pow', - 'property', - 'range', - 'repr', - 'reversed', - 'round', - 'set', - 'setattr', - 'slice', - 'sorted', - 'staticmethod', - 'str', - 'sum', - 'super', - 'tuple', - 'type', - 'vars', - 'zip', - '__import__', - 'NotImplemented', - 'Ellipsis', - '__debug__', - ]; - CodeMirror.registerHelper( - 'hintWords', - 'python', - commonKeywords.concat(commonBuiltins), - ); + var wordOperators = wordRegexp(["and", "or", "not", "is"]); + var commonKeywords = ["as", "assert", "break", "class", "continue", + "def", "del", "elif", "else", "except", "finally", + "for", "from", "global", "if", "import", + "lambda", "pass", "raise", "return", + "try", "while", "with", "yield", "in", "False", "True"]; + var commonBuiltins = ["abs", "all", "any", "bin", "bool", "bytearray", "callable", "chr", + "classmethod", "compile", "complex", "delattr", "dict", "dir", "divmod", + "enumerate", "eval", "filter", "float", "format", "frozenset", + "getattr", "globals", "hasattr", "hash", "help", "hex", "id", + "input", "int", "isinstance", "issubclass", "iter", "len", + "list", "locals", "map", "max", "memoryview", "min", "next", + "object", "oct", "open", "ord", "pow", "property", "range", + "repr", "reversed", "round", "set", "setattr", "slice", + "sorted", "staticmethod", "str", "sum", "super", "tuple", + "type", "vars", "zip", "__import__", "NotImplemented", + "Ellipsis", "__debug__"]; + CodeMirror.registerHelper("hintWords", "python", commonKeywords.concat(commonBuiltins).concat(["exec", "print"])); function top(state) { return state.scopes[state.scopes.length - 1]; } - CodeMirror.defineMode('python', function (conf, parserConf) { - var ERRORCLASS = 'error'; - - var delimiters = - parserConf.delimiters || - parserConf.singleDelimiters || - /^[\(\)\[\]\{\}@,:`=;\.\\]/; - // (Backwards-compatiblity with old, cumbersome config system) - var operators = [ - parserConf.singleOperators, - parserConf.doubleOperators, - parserConf.doubleDelimiters, - parserConf.tripleDelimiters, - parserConf.operators || - /^([-+*/%\/&|^]=?|[<>=]+|\/\/=?|\*\*=?|!=|[~!@]|\.\.\.)/, - ]; - for (var i = 0; i < operators.length; i++) - if (!operators[i]) operators.splice(i--, 1); + CodeMirror.defineMode("python", function(conf, parserConf) { + var ERRORCLASS = "error"; + + var delimiters = parserConf.delimiters || parserConf.singleDelimiters || /^[\(\)\[\]\{\}@,:`=;\.\\]/; + // (Backwards-compatibility with old, cumbersome config system) + var operators = [parserConf.singleOperators, parserConf.doubleOperators, parserConf.doubleDelimiters, parserConf.tripleDelimiters, + parserConf.operators || /^([-+*/%\/&|^]=?|[<>=]+|\/\/=?|\*\*=?|!=|[~!@]|\.\.\.)/] + for (var i = 0; i < operators.length; i++) if (!operators[i]) operators.splice(i--, 1) var hangingIndent = parserConf.hangingIndent || conf.indentUnit; - var myKeywords = commonKeywords, - myBuiltins = commonBuiltins; + var myKeywords = commonKeywords, myBuiltins = commonBuiltins; if (parserConf.extra_keywords != undefined) myKeywords = myKeywords.concat(parserConf.extra_keywords); if (parserConf.extra_builtins != undefined) myBuiltins = myBuiltins.concat(parserConf.extra_builtins); - var py3 = !(parserConf.version && Number(parserConf.version) < 3); + var py3 = !(parserConf.version && Number(parserConf.version) < 3) if (py3) { // since http://legacy.python.org/dev/peps/pep-0465/ @ is also an operator - var identifiers = - parserConf.identifiers || - /^[_A-Za-z\u00A1-\uFFFF][_A-Za-z0-9\u00A1-\uFFFF]*/; - myKeywords = myKeywords.concat([ - 'nonlocal', - 'False', - 'True', - 'None', - 'async', - 'await', - ]); - myBuiltins = myBuiltins.concat(['ascii', 'bytes', 'exec', 'print']); - var stringPrefixes = new RegExp( - '^(([rbuf]|(br)|(fr))?(\'{3}|"{3}|[\'"]))', - 'i', - ); + var identifiers = parserConf.identifiers|| /^[_A-Za-z\u00A1-\uFFFF][_A-Za-z0-9\u00A1-\uFFFF]*/; + myKeywords = myKeywords.concat(["nonlocal", "None", "aiter", "anext", "async", "await", "breakpoint", "match", "case"]); + myBuiltins = myBuiltins.concat(["ascii", "bytes", "exec", "print"]); + var stringPrefixes = new RegExp("^(([rbuf]|(br)|(rb)|(fr)|(rf))?('{3}|\"{3}|['\"]))", "i"); } else { - var identifiers = parserConf.identifiers || /^[_A-Za-z][_A-Za-z0-9]*/; - myKeywords = myKeywords.concat(['exec', 'print']); - myBuiltins = myBuiltins.concat([ - 'apply', - 'basestring', - 'buffer', - 'cmp', - 'coerce', - 'execfile', - 'file', - 'intern', - 'long', - 'raw_input', - 'reduce', - 'reload', - 'unichr', - 'unicode', - 'xrange', - 'False', - 'True', - 'None', - ]); - var stringPrefixes = new RegExp( - '^(([rubf]|(ur)|(br))?(\'{3}|"{3}|[\'"]))', - 'i', - ); + var identifiers = parserConf.identifiers|| /^[_A-Za-z][_A-Za-z0-9]*/; + myKeywords = myKeywords.concat(["exec", "print"]); + myBuiltins = myBuiltins.concat(["apply", "basestring", "buffer", "cmp", "coerce", "execfile", + "file", "intern", "long", "raw_input", "reduce", "reload", + "unichr", "unicode", "xrange", "None"]); + var stringPrefixes = new RegExp("^(([rubf]|(ur)|(br))?('{3}|\"{3}|['\"]))", "i"); } var keywords = wordRegexp(myKeywords); var builtins = wordRegexp(myBuiltins); // tokenizers function tokenBase(stream, state) { - var sol = stream.sol() && state.lastToken != '\\'; - if (sol) state.indent = stream.indentation(); + var sol = stream.sol() && state.lastToken != "\\" + if (sol) state.indent = stream.indentation() // Handle scope changes - if (sol && top(state).type == 'py') { + if (sol && top(state).type == "py") { var scopeOffset = top(state).offset; if (stream.eatSpace()) { var lineOffset = stream.indentation(); - if (lineOffset > scopeOffset) pushPyScope(state); - else if ( - lineOffset < scopeOffset && - dedent(stream, state) && - stream.peek() != '#' - ) + if (lineOffset > scopeOffset) + pushPyScope(state); + else if (lineOffset < scopeOffset && dedent(stream, state) && stream.peek() != "#") state.errorToken = true; return null; } else { var style = tokenBaseInner(stream, state); if (scopeOffset > 0 && dedent(stream, state)) - style += ' ' + ERRORCLASS; + style += " " + ERRORCLASS; return style; } } return tokenBaseInner(stream, state); } - function tokenBaseInner(stream, state) { + function tokenBaseInner(stream, state, inFormat) { if (stream.eatSpace()) return null; // Handle Comments - if (stream.match(/^#.*/)) return 'comment'; + if (!inFormat && stream.match(/^#.*/)) return "comment"; // Handle Number Literals if (stream.match(/^[0-9\.]/, false)) { var floatLiteral = false; // Floats - if (stream.match(/^[\d_]*\.\d+(e[\+\-]?\d+)?/i)) { - floatLiteral = true; - } - if (stream.match(/^[\d_]+\.\d*/)) { - floatLiteral = true; - } - if (stream.match(/^\.\d+/)) { - floatLiteral = true; - } + if (stream.match(/^[\d_]*\.\d+(e[\+\-]?\d+)?/i)) { floatLiteral = true; } + if (stream.match(/^[\d_]+\.\d*/)) { floatLiteral = true; } + if (stream.match(/^\.\d+/)) { floatLiteral = true; } if (floatLiteral) { // Float literals may be "imaginary" stream.eat(/J/i); - return 'number'; + return "number"; } // Integers var intLiteral = false; @@ -274,7 +136,7 @@ if (intLiteral) { // Integer literals may be "long" stream.eat(/L/i); - return 'number'; + return "number"; } } @@ -285,68 +147,68 @@ state.tokenize = tokenStringFactory(stream.current(), state.tokenize); return state.tokenize(stream, state); } else { - state.tokenize = formatStringFactory( - stream.current(), - state.tokenize, - ); + state.tokenize = formatStringFactory(stream.current(), state.tokenize); return state.tokenize(stream, state); } } for (var i = 0; i < operators.length; i++) - if (stream.match(operators[i])) return 'operator'; + if (stream.match(operators[i])) return "operator" - if (stream.match(delimiters)) return 'punctuation'; + if (stream.match(delimiters)) return "punctuation"; - if (state.lastToken == '.' && stream.match(identifiers)) - return 'property'; + if (state.lastToken == "." && stream.match(identifiers)) + return "property"; if (stream.match(keywords) || stream.match(wordOperators)) - return 'keyword'; + return "keyword"; - if (stream.match(builtins)) return 'builtin'; + if (stream.match(builtins)) + return "builtin"; - if (stream.match(/^(self|cls)\b/)) return 'variable-2'; + if (stream.match(/^(self|cls)\b/)) + return "variable-2"; if (stream.match(identifiers)) { - if (state.lastToken == 'def' || state.lastToken == 'class') - return 'def'; - return 'variable'; + if (state.lastToken == "def" || state.lastToken == "class") + return "def"; + return "variable"; } // Handle non-detected items stream.next(); - return ERRORCLASS; + return inFormat ? null :ERRORCLASS; } function formatStringFactory(delimiter, tokenOuter) { - while ('rubf'.indexOf(delimiter.charAt(0).toLowerCase()) >= 0) + while ("rubf".indexOf(delimiter.charAt(0).toLowerCase()) >= 0) delimiter = delimiter.substr(1); var singleline = delimiter.length == 1; - var OUTCLASS = 'string'; + var OUTCLASS = "string"; function tokenNestedExpr(depth) { - return function (stream, state) { - var inner = tokenBaseInner(stream, state); - if (inner == 'punctuation') { - if (stream.current() == '{') { - state.tokenize = tokenNestedExpr(depth + 1); - } else if (stream.current() == '}') { - if (depth > 1) state.tokenize = tokenNestedExpr(depth - 1); - else state.tokenize = tokenString; + return function(stream, state) { + var inner = tokenBaseInner(stream, state, true) + if (inner == "punctuation") { + if (stream.current() == "{") { + state.tokenize = tokenNestedExpr(depth + 1) + } else if (stream.current() == "}") { + if (depth > 1) state.tokenize = tokenNestedExpr(depth - 1) + else state.tokenize = tokenString } } - return inner; - }; + return inner + } } function tokenString(stream, state) { while (!stream.eol()) { stream.eatWhile(/[^'"\{\}\\]/); - if (stream.eat('\\')) { + if (stream.eat("\\")) { stream.next(); - if (singleline && stream.eol()) return OUTCLASS; + if (singleline && stream.eol()) + return OUTCLASS; } else if (stream.match(delimiter)) { state.tokenize = tokenOuter; return OUTCLASS; @@ -355,9 +217,9 @@ return OUTCLASS; } else if (stream.match('{', false)) { // switch to nested mode - state.tokenize = tokenNestedExpr(0); + state.tokenize = tokenNestedExpr(0) if (stream.current()) return OUTCLASS; - else return state.tokenize(stream, state); + else return state.tokenize(stream, state) } else if (stream.match('}}')) { return OUTCLASS; } else if (stream.match('}')) { @@ -368,8 +230,10 @@ } } if (singleline) { - if (parserConf.singleLineStringErrors) return ERRORCLASS; - else state.tokenize = tokenOuter; + if (parserConf.singleLineStringErrors) + return ERRORCLASS; + else + state.tokenize = tokenOuter; } return OUTCLASS; } @@ -378,18 +242,19 @@ } function tokenStringFactory(delimiter, tokenOuter) { - while ('rubf'.indexOf(delimiter.charAt(0).toLowerCase()) >= 0) + while ("rubf".indexOf(delimiter.charAt(0).toLowerCase()) >= 0) delimiter = delimiter.substr(1); var singleline = delimiter.length == 1; - var OUTCLASS = 'string'; + var OUTCLASS = "string"; function tokenString(stream, state) { while (!stream.eol()) { stream.eatWhile(/[^'"\\]/); - if (stream.eat('\\')) { + if (stream.eat("\\")) { stream.next(); - if (singleline && stream.eol()) return OUTCLASS; + if (singleline && stream.eol()) + return OUTCLASS; } else if (stream.match(delimiter)) { state.tokenize = tokenOuter; return OUTCLASS; @@ -398,8 +263,10 @@ } } if (singleline) { - if (parserConf.singleLineStringErrors) return ERRORCLASS; - else state.tokenize = tokenOuter; + if (parserConf.singleLineStringErrors) + return ERRORCLASS; + else + state.tokenize = tokenOuter; } return OUTCLASS; } @@ -408,145 +275,128 @@ } function pushPyScope(state) { - while (top(state).type != 'py') state.scopes.pop(); - state.scopes.push({ - offset: top(state).offset + conf.indentUnit, - type: 'py', - align: null, - }); + while (top(state).type != "py") state.scopes.pop() + state.scopes.push({offset: top(state).offset + conf.indentUnit, + type: "py", + align: null}) } function pushBracketScope(stream, state, type) { - var align = stream.match(/^([\s\[\{\(]|#.*)*$/, false) - ? null - : stream.column() + 1; - state.scopes.push({ - offset: state.indent + hangingIndent, - type: type, - align: align, - }); + var align = stream.match(/^[\s\[\{\(]*(?:#|$)/, false) ? null : stream.column() + 1 + state.scopes.push({offset: state.indent + hangingIndent, + type: type, + align: align}) } function dedent(stream, state) { var indented = stream.indentation(); while (state.scopes.length > 1 && top(state).offset > indented) { - if (top(state).type != 'py') return true; + if (top(state).type != "py") return true; state.scopes.pop(); } return top(state).offset != indented; } function tokenLexer(stream, state) { - if (stream.sol()) state.beginningOfLine = true; + if (stream.sol()) { + state.beginningOfLine = true; + state.dedent = false; + } var style = state.tokenize(stream, state); var current = stream.current(); // Handle decorators - if (state.beginningOfLine && current == '@') - return stream.match(identifiers, false) - ? 'meta' - : py3 - ? 'operator' - : ERRORCLASS; + if (state.beginningOfLine && current == "@") + return stream.match(identifiers, false) ? "meta" : py3 ? "operator" : ERRORCLASS; if (/\S/.test(current)) state.beginningOfLine = false; - if ( - (style == 'variable' || style == 'builtin') && - state.lastToken == 'meta' - ) - style = 'meta'; + if ((style == "variable" || style == "builtin") + && state.lastToken == "meta") + style = "meta"; // Handle scope changes. - if (current == 'pass' || current == 'return') state.dedent += 1; + if (current == "pass" || current == "return") + state.dedent = true; - if (current == 'lambda') state.lambda = true; - if (current == ':' && !state.lambda && top(state).type == 'py') + if (current == "lambda") state.lambda = true; + if (current == ":" && !state.lambda && top(state).type == "py" && stream.match(/^\s*(?:#|$)/, false)) pushPyScope(state); if (current.length == 1 && !/string|comment/.test(style)) { - var delimiter_index = '[({'.indexOf(current); + var delimiter_index = "[({".indexOf(current); if (delimiter_index != -1) - pushBracketScope( - stream, - state, - '])}'.slice(delimiter_index, delimiter_index + 1), - ); + pushBracketScope(stream, state, "])}".slice(delimiter_index, delimiter_index+1)); - delimiter_index = '])}'.indexOf(current); + delimiter_index = "])}".indexOf(current); if (delimiter_index != -1) { - if (top(state).type == current) - state.indent = state.scopes.pop().offset - hangingIndent; + if (top(state).type == current) state.indent = state.scopes.pop().offset - hangingIndent else return ERRORCLASS; } } - if (state.dedent > 0 && stream.eol() && top(state).type == 'py') { - if (state.scopes.length > 1) state.scopes.pop(); - state.dedent -= 1; - } + if (state.dedent && stream.eol() && top(state).type == "py" && state.scopes.length > 1) + state.scopes.pop(); return style; } var external = { - startState: function (basecolumn) { + startState: function(basecolumn) { return { tokenize: tokenBase, - scopes: [{ offset: basecolumn || 0, type: 'py', align: null }], + scopes: [{offset: basecolumn || 0, type: "py", align: null}], indent: basecolumn || 0, lastToken: null, lambda: false, - dedent: 0, + dedent: 0 }; }, - token: function (stream, state) { + token: function(stream, state) { var addErr = state.errorToken; if (addErr) state.errorToken = false; var style = tokenLexer(stream, state); - if (style && style != 'comment') - state.lastToken = - style == 'keyword' || style == 'punctuation' - ? stream.current() - : style; - if (style == 'punctuation') style = null; + if (style && style != "comment") + state.lastToken = (style == "keyword" || style == "punctuation") ? stream.current() : style; + if (style == "punctuation") style = null; - if (stream.eol() && state.lambda) state.lambda = false; - return addErr ? style + ' ' + ERRORCLASS : style; + if (stream.eol() && state.lambda) + state.lambda = false; + return addErr ? style + " " + ERRORCLASS : style; }, - indent: function (state, textAfter) { + indent: function(state, textAfter) { if (state.tokenize != tokenBase) return state.tokenize.isString ? CodeMirror.Pass : 0; - var scope = top(state), - closing = scope.type == textAfter.charAt(0); - if (scope.align != null) return scope.align - (closing ? 1 : 0); - else return scope.offset - (closing ? hangingIndent : 0); + var scope = top(state) + var closing = scope.type == textAfter.charAt(0) || + scope.type == "py" && !state.dedent && /^(else:|elif |except |finally:)/.test(textAfter) + if (scope.align != null) + return scope.align - (closing ? 1 : 0) + else + return scope.offset - (closing ? hangingIndent : 0) }, - electricInput: /^\s*[\}\]\)]$/, - closeBrackets: { triples: '\'"' }, - lineComment: '#', - fold: 'indent', + electricInput: /^\s*([\}\]\)]|else:|elif |except |finally:)$/, + closeBrackets: {triples: "'\""}, + lineComment: "#", + fold: "indent" }; return external; }); - CodeMirror.defineMIME('text/x-python', 'python'); + CodeMirror.defineMIME("text/x-python", "python"); - var words = function (str) { - return str.split(' '); - }; + var words = function(str) { return str.split(" "); }; - CodeMirror.defineMIME('text/x-cython', { - name: 'python', - extra_keywords: words( - 'by cdef cimport cpdef ctypedef enum except ' + - 'extern gil include nogil property public ' + - 'readonly struct union DEF IF ELIF ELSE', - ), + CodeMirror.defineMIME("text/x-cython", { + name: "python", + extra_keywords: words("by cdef cimport cpdef ctypedef enum except "+ + "extern gil include nogil property public "+ + "readonly struct union DEF IF ELIF ELSE") }); + }); diff --git a/web/static/lib/codemirror/r.js b/web/static/lib/codemirror/r.js index e6a36e0a..f69f7063 100644 --- a/web/static/lib/codemirror/r.js +++ b/web/static/lib/codemirror/r.js @@ -1,258 +1,190 @@ // CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: https://codemirror.net/LICENSE +// Distributed under an MIT license: https://codemirror.net/5/LICENSE -(function (mod) { - if (typeof exports == 'object' && typeof module == 'object') - // CommonJS - mod(require('../../lib/codemirror')); - else if (typeof define == 'function' && define.amd) - // AMD - define(['../../lib/codemirror'], mod); - // Plain browser env - else mod(CodeMirror); -})(function (CodeMirror) { - 'use strict'; +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; - CodeMirror.registerHelper('wordChars', 'r', /[\w.]/); +CodeMirror.registerHelper("wordChars", "r", /[\w.]/); - CodeMirror.defineMode('r', function (config) { - function wordObj(words) { - var res = {}; - for (var i = 0; i < words.length; ++i) res[words[i]] = true; - return res; - } - var commonAtoms = [ - 'NULL', - 'NA', - 'Inf', - 'NaN', - 'NA_integer_', - 'NA_real_', - 'NA_complex_', - 'NA_character_', - 'TRUE', - 'FALSE', - ]; - var commonBuiltins = [ - 'list', - 'quote', - 'bquote', - 'eval', - 'return', - 'call', - 'parse', - 'deparse', - ]; - var commonKeywords = [ - 'if', - 'else', - 'repeat', - 'while', - 'function', - 'for', - 'in', - 'next', - 'break', - ]; - var commonBlockKeywords = [ - 'if', - 'else', - 'repeat', - 'while', - 'function', - 'for', - ]; +CodeMirror.defineMode("r", function(config) { + function wordObj(words) { + var res = {}; + for (var i = 0; i < words.length; ++i) res[words[i]] = true; + return res; + } + var commonAtoms = ["NULL", "NA", "Inf", "NaN", "NA_integer_", "NA_real_", "NA_complex_", "NA_character_", "TRUE", "FALSE"]; + var commonBuiltins = ["list", "quote", "bquote", "eval", "return", "call", "parse", "deparse"]; + var commonKeywords = ["if", "else", "repeat", "while", "function", "for", "in", "next", "break"]; + var commonBlockKeywords = ["if", "else", "repeat", "while", "function", "for"]; - CodeMirror.registerHelper( - 'hintWords', - 'r', - commonAtoms.concat(commonBuiltins, commonKeywords), - ); + CodeMirror.registerHelper("hintWords", "r", commonAtoms.concat(commonBuiltins, commonKeywords)); - var atoms = wordObj(commonAtoms); - var builtins = wordObj(commonBuiltins); - var keywords = wordObj(commonKeywords); - var blockkeywords = wordObj(commonBlockKeywords); - var opChars = /[+\-*\/^<>=!&|~$:]/; - var curPunc; + var atoms = wordObj(commonAtoms); + var builtins = wordObj(commonBuiltins); + var keywords = wordObj(commonKeywords); + var blockkeywords = wordObj(commonBlockKeywords); + var opChars = /[+\-*\/^<>=!&|~$:]/; + var curPunc; - function tokenBase(stream, state) { - curPunc = null; - var ch = stream.next(); - if (ch == '#') { - stream.skipToEnd(); - return 'comment'; - } else if (ch == '0' && stream.eat('x')) { - stream.eatWhile(/[\da-f]/i); - return 'number'; - } else if (ch == '.' && stream.eat(/\d/)) { - stream.match(/\d*(?:e[+\-]?\d+)?/); - return 'number'; - } else if (/\d/.test(ch)) { - stream.match(/\d*(?:\.\d+)?(?:e[+\-]\d+)?L?/); - return 'number'; - } else if (ch == "'" || ch == '"') { - state.tokenize = tokenString(ch); - return 'string'; - } else if (ch == '`') { - stream.match(/[^`]+`/); - return 'variable-3'; - } else if (ch == '.' && stream.match(/.[.\d]+/)) { - return 'keyword'; - } else if (/[\w\.]/.test(ch) && ch != '_') { - stream.eatWhile(/[\w\.]/); - var word = stream.current(); - if (atoms.propertyIsEnumerable(word)) return 'atom'; - if (keywords.propertyIsEnumerable(word)) { - // Block keywords start new blocks, except 'else if', which only starts - // one new block for the 'if', no block for the 'else'. - if ( - blockkeywords.propertyIsEnumerable(word) && - !stream.match(/\s*if(\s+|$)/, false) - ) - curPunc = 'block'; - return 'keyword'; - } - if (builtins.propertyIsEnumerable(word)) return 'builtin'; - return 'variable'; - } else if (ch == '%') { - if (stream.skipTo('%')) stream.next(); - return 'operator variable-2'; - } else if ( - (ch == '<' && stream.eat('-')) || - (ch == '<' && stream.match('<-')) || - (ch == '-' && stream.match(/>>?/)) - ) { - return 'operator arrow'; - } else if (ch == '=' && state.ctx.argList) { - return 'arg-is'; - } else if (opChars.test(ch)) { - if (ch == '$') return 'operator dollar'; - stream.eatWhile(opChars); - return 'operator'; - } else if (/[\(\){}\[\];]/.test(ch)) { - curPunc = ch; - if (ch == ';') return 'semi'; - return null; - } else { - return null; + function tokenBase(stream, state) { + curPunc = null; + var ch = stream.next(); + if (ch == "#") { + stream.skipToEnd(); + return "comment"; + } else if (ch == "0" && stream.eat("x")) { + stream.eatWhile(/[\da-f]/i); + return "number"; + } else if (ch == "." && stream.eat(/\d/)) { + stream.match(/\d*(?:e[+\-]?\d+)?/); + return "number"; + } else if (/\d/.test(ch)) { + stream.match(/\d*(?:\.\d+)?(?:e[+\-]\d+)?L?/); + return "number"; + } else if (ch == "'" || ch == '"') { + state.tokenize = tokenString(ch); + return "string"; + } else if (ch == "`") { + stream.match(/[^`]+`/); + return "variable-3"; + } else if (ch == "." && stream.match(/.(?:[.]|\d+)/)) { + return "keyword"; + } else if (/[a-zA-Z\.]/.test(ch)) { + stream.eatWhile(/[\w\.]/); + var word = stream.current(); + if (atoms.propertyIsEnumerable(word)) return "atom"; + if (keywords.propertyIsEnumerable(word)) { + // Block keywords start new blocks, except 'else if', which only starts + // one new block for the 'if', no block for the 'else'. + if (blockkeywords.propertyIsEnumerable(word) && + !stream.match(/\s*if(\s+|$)/, false)) + curPunc = "block"; + return "keyword"; } + if (builtins.propertyIsEnumerable(word)) return "builtin"; + return "variable"; + } else if (ch == "%") { + if (stream.skipTo("%")) stream.next(); + return "operator variable-2"; + } else if ( + (ch == "<" && stream.eat("-")) || + (ch == "<" && stream.match("<-")) || + (ch == "-" && stream.match(/>>?/)) + ) { + return "operator arrow"; + } else if (ch == "=" && state.ctx.argList) { + return "arg-is"; + } else if (opChars.test(ch)) { + if (ch == "$") return "operator dollar"; + stream.eatWhile(opChars); + return "operator"; + } else if (/[\(\){}\[\];]/.test(ch)) { + curPunc = ch; + if (ch == ";") return "semi"; + return null; + } else { + return null; } + } - function tokenString(quote) { - return function (stream, state) { - if (stream.eat('\\')) { - var ch = stream.next(); - if (ch == 'x') stream.match(/^[a-f0-9]{2}/i); - else if ( - (ch == 'u' || ch == 'U') && - stream.eat('{') && - stream.skipTo('}') - ) - stream.next(); - else if (ch == 'u') stream.match(/^[a-f0-9]{4}/i); - else if (ch == 'U') stream.match(/^[a-f0-9]{8}/i); - else if (/[0-7]/.test(ch)) stream.match(/^[0-7]{1,2}/); - return 'string-2'; - } else { - var next; - while ((next = stream.next()) != null) { - if (next == quote) { - state.tokenize = tokenBase; - break; - } - if (next == '\\') { - stream.backUp(1); - break; - } - } - return 'string'; + function tokenString(quote) { + return function(stream, state) { + if (stream.eat("\\")) { + var ch = stream.next(); + if (ch == "x") stream.match(/^[a-f0-9]{2}/i); + else if ((ch == "u" || ch == "U") && stream.eat("{") && stream.skipTo("}")) stream.next(); + else if (ch == "u") stream.match(/^[a-f0-9]{4}/i); + else if (ch == "U") stream.match(/^[a-f0-9]{8}/i); + else if (/[0-7]/.test(ch)) stream.match(/^[0-7]{1,2}/); + return "string-2"; + } else { + var next; + while ((next = stream.next()) != null) { + if (next == quote) { state.tokenize = tokenBase; break; } + if (next == "\\") { stream.backUp(1); break; } } - }; - } + return "string"; + } + }; + } - var ALIGN_YES = 1, - ALIGN_NO = 2, - BRACELESS = 4; + var ALIGN_YES = 1, ALIGN_NO = 2, BRACELESS = 4 - function push(state, type, stream) { - state.ctx = { - type: type, - indent: state.indent, - flags: 0, - column: stream.column(), - prev: state.ctx, - }; - } - function setFlag(state, flag) { - var ctx = state.ctx; - state.ctx = { - type: ctx.type, - indent: ctx.indent, - flags: ctx.flags | flag, - column: ctx.column, - prev: ctx.prev, - }; - } - function pop(state) { - state.indent = state.ctx.indent; - state.ctx = state.ctx.prev; - } + function push(state, type, stream) { + state.ctx = {type: type, + indent: state.indent, + flags: 0, + column: stream.column(), + prev: state.ctx}; + } + function setFlag(state, flag) { + var ctx = state.ctx + state.ctx = {type: ctx.type, + indent: ctx.indent, + flags: ctx.flags | flag, + column: ctx.column, + prev: ctx.prev} + } + function pop(state) { + state.indent = state.ctx.indent; + state.ctx = state.ctx.prev; + } - return { - startState: function () { - return { - tokenize: tokenBase, - ctx: { type: 'top', indent: -config.indentUnit, flags: ALIGN_NO }, - indent: 0, - afterIdent: false, - }; - }, + return { + startState: function() { + return {tokenize: tokenBase, + ctx: {type: "top", + indent: -config.indentUnit, + flags: ALIGN_NO}, + indent: 0, + afterIdent: false}; + }, - token: function (stream, state) { - if (stream.sol()) { - if ((state.ctx.flags & 3) == 0) state.ctx.flags |= ALIGN_NO; - if (state.ctx.flags & BRACELESS) pop(state); - state.indent = stream.indentation(); - } - if (stream.eatSpace()) return null; - var style = state.tokenize(stream, state); - if (style != 'comment' && (state.ctx.flags & ALIGN_NO) == 0) - setFlag(state, ALIGN_YES); + token: function(stream, state) { + if (stream.sol()) { + if ((state.ctx.flags & 3) == 0) state.ctx.flags |= ALIGN_NO + if (state.ctx.flags & BRACELESS) pop(state) + state.indent = stream.indentation(); + } + if (stream.eatSpace()) return null; + var style = state.tokenize(stream, state); + if (style != "comment" && (state.ctx.flags & ALIGN_NO) == 0) setFlag(state, ALIGN_YES) - if ( - (curPunc == ';' || curPunc == '{' || curPunc == '}') && - state.ctx.type == 'block' - ) - pop(state); - if (curPunc == '{') push(state, '}', stream); - else if (curPunc == '(') { - push(state, ')', stream); - if (state.afterIdent) state.ctx.argList = true; - } else if (curPunc == '[') push(state, ']', stream); - else if (curPunc == 'block') push(state, 'block', stream); - else if (curPunc == state.ctx.type) pop(state); - else if (state.ctx.type == 'block' && style != 'comment') - setFlag(state, BRACELESS); - state.afterIdent = style == 'variable' || style == 'keyword'; - return style; - }, + if ((curPunc == ";" || curPunc == "{" || curPunc == "}") && state.ctx.type == "block") pop(state); + if (curPunc == "{") push(state, "}", stream); + else if (curPunc == "(") { + push(state, ")", stream); + if (state.afterIdent) state.ctx.argList = true; + } + else if (curPunc == "[") push(state, "]", stream); + else if (curPunc == "block") push(state, "block", stream); + else if (curPunc == state.ctx.type) pop(state); + else if (state.ctx.type == "block" && style != "comment") setFlag(state, BRACELESS) + state.afterIdent = style == "variable" || style == "keyword"; + return style; + }, - indent: function (state, textAfter) { - if (state.tokenize != tokenBase) return 0; - var firstChar = textAfter && textAfter.charAt(0), - ctx = state.ctx, + indent: function(state, textAfter) { + if (state.tokenize != tokenBase) return 0; + var firstChar = textAfter && textAfter.charAt(0), ctx = state.ctx, closing = firstChar == ctx.type; - if (ctx.flags & BRACELESS) ctx = ctx.prev; - if (ctx.type == 'block') - return ctx.indent + (firstChar == '{' ? 0 : config.indentUnit); - else if (ctx.flags & ALIGN_YES) return ctx.column + (closing ? 0 : 1); - else return ctx.indent + (closing ? 0 : config.indentUnit); - }, + if (ctx.flags & BRACELESS) ctx = ctx.prev + if (ctx.type == "block") return ctx.indent + (firstChar == "{" ? 0 : config.indentUnit); + else if (ctx.flags & ALIGN_YES) return ctx.column + (closing ? 0 : 1); + else return ctx.indent + (closing ? 0 : config.indentUnit); + }, - lineComment: '#', - }; - }); + lineComment: "#" + }; +}); + +CodeMirror.defineMIME("text/x-rsrc", "r"); - CodeMirror.defineMIME('text/x-rsrc', 'r'); }); diff --git a/web/static/lib/codemirror/shell.js b/web/static/lib/codemirror/shell.js index d5d29656..9ae9118e 100644 --- a/web/static/lib/codemirror/shell.js +++ b/web/static/lib/codemirror/shell.js @@ -1,249 +1,168 @@ // CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: https://codemirror.net/LICENSE - -(function (mod) { - if (typeof exports == 'object' && typeof module == 'object') - // CommonJS - mod(require('../../lib/codemirror')); - else if (typeof define == 'function' && define.amd) - // AMD - define(['../../lib/codemirror'], mod); - // Plain browser env - else mod(CodeMirror); -})(function (CodeMirror) { - 'use strict'; - - CodeMirror.defineMode('shell', function () { - var words = {}; - function define(style, dict) { - for (var i = 0; i < dict.length; i++) { - words[dict[i]] = style; - } +// Distributed under an MIT license: https://codemirror.net/5/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode('shell', function() { + + var words = {}; + function define(style, dict) { + for(var i = 0; i < dict.length; i++) { + words[dict[i]] = style; } + }; - var commonAtoms = ['true', 'false']; - var commonKeywords = [ - 'if', - 'then', - 'do', - 'else', - 'elif', - 'while', - 'until', - 'for', - 'in', - 'esac', - 'fi', - 'fin', - 'fil', - 'done', - 'exit', - 'set', - 'unset', - 'export', - 'function', - ]; - var commonCommands = [ - 'ab', - 'awk', - 'bash', - 'beep', - 'cat', - 'cc', - 'cd', - 'chown', - 'chmod', - 'chroot', - 'clear', - 'cp', - 'curl', - 'cut', - 'diff', - 'echo', - 'find', - 'gawk', - 'gcc', - 'get', - 'git', - 'grep', - 'hg', - 'kill', - 'killall', - 'ln', - 'ls', - 'make', - 'mkdir', - 'openssl', - 'mv', - 'nc', - 'nl', - 'node', - 'npm', - 'ping', - 'ps', - 'restart', - 'rm', - 'rmdir', - 'sed', - 'service', - 'sh', - 'shopt', - 'shred', - 'source', - 'sort', - 'sleep', - 'ssh', - 'start', - 'stop', - 'su', - 'sudo', - 'svn', - 'tee', - 'telnet', - 'top', - 'touch', - 'vi', - 'vim', - 'wall', - 'wc', - 'wget', - 'who', - 'write', - 'yes', - 'zsh', - ]; - - CodeMirror.registerHelper( - 'hintWords', - 'shell', - commonAtoms.concat(commonKeywords, commonCommands), - ); - - define('atom', commonAtoms); - define('keyword', commonKeywords); - define('builtin', commonCommands); - - function tokenBase(stream, state) { - if (stream.eatSpace()) return null; - - var sol = stream.sol(); - var ch = stream.next(); - - if (ch === '\\') { - stream.next(); - return null; - } - if (ch === "'" || ch === '"' || ch === '`') { - state.tokens.unshift(tokenString(ch, ch === '`' ? 'quote' : 'string')); - return tokenize(stream, state); - } - if (ch === '#') { - if (sol && stream.eat('!')) { - stream.skipToEnd(); - return 'meta'; // 'comment'? - } + var commonAtoms = ["true", "false"]; + var commonKeywords = ["if", "then", "do", "else", "elif", "while", "until", "for", "in", "esac", "fi", + "fin", "fil", "done", "exit", "set", "unset", "export", "function"]; + var commonCommands = ["ab", "awk", "bash", "beep", "cat", "cc", "cd", "chown", "chmod", "chroot", "clear", + "cp", "curl", "cut", "diff", "echo", "find", "gawk", "gcc", "get", "git", "grep", "hg", "kill", "killall", + "ln", "ls", "make", "mkdir", "openssl", "mv", "nc", "nl", "node", "npm", "ping", "ps", "restart", "rm", + "rmdir", "sed", "service", "sh", "shopt", "shred", "source", "sort", "sleep", "ssh", "start", "stop", + "su", "sudo", "svn", "tee", "telnet", "top", "touch", "vi", "vim", "wall", "wc", "wget", "who", "write", + "yes", "zsh"]; + + CodeMirror.registerHelper("hintWords", "shell", commonAtoms.concat(commonKeywords, commonCommands)); + + define('atom', commonAtoms); + define('keyword', commonKeywords); + define('builtin', commonCommands); + + function tokenBase(stream, state) { + if (stream.eatSpace()) return null; + + var sol = stream.sol(); + var ch = stream.next(); + + if (ch === '\\') { + stream.next(); + return null; + } + if (ch === '\'' || ch === '"' || ch === '`') { + state.tokens.unshift(tokenString(ch, ch === "`" ? "quote" : "string")); + return tokenize(stream, state); + } + if (ch === '#') { + if (sol && stream.eat('!')) { stream.skipToEnd(); - return 'comment'; - } - if (ch === '$') { - state.tokens.unshift(tokenDollar); - return tokenize(stream, state); + return 'meta'; // 'comment'? } - if (ch === '+' || ch === '=') { - return 'operator'; + stream.skipToEnd(); + return 'comment'; + } + if (ch === '$') { + state.tokens.unshift(tokenDollar); + return tokenize(stream, state); + } + if (ch === '+' || ch === '=') { + return 'operator'; + } + if (ch === '-') { + stream.eat('-'); + stream.eatWhile(/\w/); + return 'attribute'; + } + if (ch == "<") { + if (stream.match("<<")) return "operator" + var heredoc = stream.match(/^<-?\s*['"]?([^'"]*)['"]?/) + if (heredoc) { + state.tokens.unshift(tokenHeredoc(heredoc[1])) + return 'string-2' } - if (ch === '-') { - stream.eat('-'); - stream.eatWhile(/\w/); - return 'attribute'; + } + if (/\d/.test(ch)) { + stream.eatWhile(/\d/); + if(stream.eol() || !/\w/.test(stream.peek())) { + return 'number'; } - if (/\d/.test(ch)) { - stream.eatWhile(/\d/); - if (stream.eol() || !/\w/.test(stream.peek())) { - return 'number'; + } + stream.eatWhile(/[\w-]/); + var cur = stream.current(); + if (stream.peek() === '=' && /\w+/.test(cur)) return 'def'; + return words.hasOwnProperty(cur) ? words[cur] : null; + } + + function tokenString(quote, style) { + var close = quote == "(" ? ")" : quote == "{" ? "}" : quote + return function(stream, state) { + var next, escaped = false; + while ((next = stream.next()) != null) { + if (next === close && !escaped) { + state.tokens.shift(); + break; + } else if (next === '$' && !escaped && quote !== "'" && stream.peek() != close) { + escaped = true; + stream.backUp(1); + state.tokens.unshift(tokenDollar); + break; + } else if (!escaped && quote !== close && next === quote) { + state.tokens.unshift(tokenString(quote, style)) + return tokenize(stream, state) + } else if (!escaped && /['"]/.test(next) && !/['"]/.test(quote)) { + state.tokens.unshift(tokenStringStart(next, "string")); + stream.backUp(1); + break; } + escaped = !escaped && next === '\\'; } - stream.eatWhile(/[\w-]/); - var cur = stream.current(); - if (stream.peek() === '=' && /\w+/.test(cur)) return 'def'; - return words.hasOwnProperty(cur) ? words[cur] : null; + return style; + }; + }; + + function tokenStringStart(quote, style) { + return function(stream, state) { + state.tokens[0] = tokenString(quote, style) + stream.next() + return tokenize(stream, state) } + } - function tokenString(quote, style) { - var close = quote == '(' ? ')' : quote == '{' ? '}' : quote; - return function (stream, state) { - var next, - escaped = false; - while ((next = stream.next()) != null) { - if (next === close && !escaped) { - state.tokens.shift(); - break; - } else if ( - next === '$' && - !escaped && - quote !== "'" && - stream.peek() != close - ) { - escaped = true; - stream.backUp(1); - state.tokens.unshift(tokenDollar); - break; - } else if (!escaped && quote !== close && next === quote) { - state.tokens.unshift(tokenString(quote, style)); - return tokenize(stream, state); - } else if (!escaped && /['"]/.test(next) && !/['"]/.test(quote)) { - state.tokens.unshift(tokenStringStart(next, 'string')); - stream.backUp(1); - break; - } - escaped = !escaped && next === '\\'; - } - return style; - }; + var tokenDollar = function(stream, state) { + if (state.tokens.length > 1) stream.eat('$'); + var ch = stream.next() + if (/['"({]/.test(ch)) { + state.tokens[0] = tokenString(ch, ch == "(" ? "quote" : ch == "{" ? "def" : "string"); + return tokenize(stream, state); } + if (!/\d/.test(ch)) stream.eatWhile(/\w/); + state.tokens.shift(); + return 'def'; + }; - function tokenStringStart(quote, style) { - return function (stream, state) { - state.tokens[0] = tokenString(quote, style); - stream.next(); - return tokenize(stream, state); - }; + function tokenHeredoc(delim) { + return function(stream, state) { + if (stream.sol() && stream.string == delim) state.tokens.shift() + stream.skipToEnd() + return "string-2" } + } - var tokenDollar = function (stream, state) { - if (state.tokens.length > 1) stream.eat('$'); - var ch = stream.next(); - if (/['"({]/.test(ch)) { - state.tokens[0] = tokenString( - ch, - ch == '(' ? 'quote' : ch == '{' ? 'def' : 'string', - ); - return tokenize(stream, state); - } - if (!/\d/.test(ch)) stream.eatWhile(/\w/); - state.tokens.shift(); - return 'def'; - }; + function tokenize(stream, state) { + return (state.tokens[0] || tokenBase) (stream, state); + }; - function tokenize(stream, state) { - return (state.tokens[0] || tokenBase)(stream, state); - } + return { + startState: function() {return {tokens:[]};}, + token: function(stream, state) { + return tokenize(stream, state); + }, + closeBrackets: "()[]{}''\"\"``", + lineComment: '#', + fold: "brace" + }; +}); - return { - startState: function () { - return { tokens: [] }; - }, - token: function (stream, state) { - return tokenize(stream, state); - }, - closeBrackets: '()[]{}\'\'""``', - lineComment: '#', - fold: 'brace', - }; - }); +CodeMirror.defineMIME('text/x-sh', 'shell'); +// Apache uses a slightly different Media Type for Shell scripts +// http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types +CodeMirror.defineMIME('application/x-sh', 'shell'); - CodeMirror.defineMIME('text/x-sh', 'shell'); - // Apache uses a slightly different Media Type for Shell scripts - // http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types - CodeMirror.defineMIME('application/x-sh', 'shell'); }); diff --git a/web/static/lib/codemirror/simplescrollbars.js b/web/static/lib/codemirror/simplescrollbars.js index 9f397698..f1356a8c 100644 --- a/web/static/lib/codemirror/simplescrollbars.js +++ b/web/static/lib/codemirror/simplescrollbars.js @@ -1,17 +1,15 @@ // CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: https://codemirror.net/LICENSE - -(function (mod) { - if (typeof exports == 'object' && typeof module == 'object') - // CommonJS - mod(require('../../lib/codemirror')); - else if (typeof define == 'function' && define.amd) - // AMD - define(['../../lib/codemirror'], mod); - // Plain browser env - else mod(CodeMirror); -})(function (CodeMirror) { - 'use strict'; +// Distributed under an MIT license: https://codemirror.net/5/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; function Bar(cls, orientation, scroll) { this.orientation = orientation; @@ -19,76 +17,66 @@ this.screen = this.total = this.size = 1; this.pos = 0; - this.node = document.createElement('div'); - this.node.className = cls + '-' + orientation; - this.inner = this.node.appendChild(document.createElement('div')); + this.node = document.createElement("div"); + this.node.className = cls + "-" + orientation; + this.inner = this.node.appendChild(document.createElement("div")); var self = this; - CodeMirror.on(this.inner, 'mousedown', function (e) { + CodeMirror.on(this.inner, "mousedown", function(e) { if (e.which != 1) return; CodeMirror.e_preventDefault(e); - var axis = self.orientation == 'horizontal' ? 'pageX' : 'pageY'; - var start = e[axis], - startpos = self.pos; + var axis = self.orientation == "horizontal" ? "pageX" : "pageY"; + var start = e[axis], startpos = self.pos; function done() { - CodeMirror.off(document, 'mousemove', move); - CodeMirror.off(document, 'mouseup', done); + CodeMirror.off(document, "mousemove", move); + CodeMirror.off(document, "mouseup", done); } function move(e) { if (e.which != 1) return done(); self.moveTo(startpos + (e[axis] - start) * (self.total / self.size)); } - CodeMirror.on(document, 'mousemove', move); - CodeMirror.on(document, 'mouseup', done); + CodeMirror.on(document, "mousemove", move); + CodeMirror.on(document, "mouseup", done); }); - CodeMirror.on(this.node, 'click', function (e) { + CodeMirror.on(this.node, "click", function(e) { CodeMirror.e_preventDefault(e); - var innerBox = self.inner.getBoundingClientRect(), - where; - if (self.orientation == 'horizontal') - where = - e.clientX < innerBox.left ? -1 : e.clientX > innerBox.right ? 1 : 0; + var innerBox = self.inner.getBoundingClientRect(), where; + if (self.orientation == "horizontal") + where = e.clientX < innerBox.left ? -1 : e.clientX > innerBox.right ? 1 : 0; else - where = - e.clientY < innerBox.top ? -1 : e.clientY > innerBox.bottom ? 1 : 0; + where = e.clientY < innerBox.top ? -1 : e.clientY > innerBox.bottom ? 1 : 0; self.moveTo(self.pos + where * self.screen); }); function onWheel(e) { - var moved = - CodeMirror.wheelEventPixels(e)[ - self.orientation == 'horizontal' ? 'x' : 'y' - ]; + var moved = CodeMirror.wheelEventPixels(e)[self.orientation == "horizontal" ? "x" : "y"]; var oldPos = self.pos; self.moveTo(self.pos + moved); if (self.pos != oldPos) CodeMirror.e_preventDefault(e); } - CodeMirror.on(this.node, 'mousewheel', onWheel); - CodeMirror.on(this.node, 'DOMMouseScroll', onWheel); + CodeMirror.on(this.node, "mousewheel", onWheel); + CodeMirror.on(this.node, "DOMMouseScroll", onWheel); } - Bar.prototype.setPos = function (pos, force) { + Bar.prototype.setPos = function(pos, force) { if (pos < 0) pos = 0; if (pos > this.total - this.screen) pos = this.total - this.screen; if (!force && pos == this.pos) return false; this.pos = pos; - this.inner.style[this.orientation == 'horizontal' ? 'left' : 'top'] = - pos * (this.size / this.total) + 'px'; - return true; + this.inner.style[this.orientation == "horizontal" ? "left" : "top"] = + (pos * (this.size / this.total)) + "px"; + return true }; - Bar.prototype.moveTo = function (pos) { + Bar.prototype.moveTo = function(pos) { if (this.setPos(pos)) this.scroll(pos, this.orientation); - }; + } var minButtonSize = 10; - Bar.prototype.update = function (scrollSize, clientSize, barSize) { - var sizeChanged = - this.screen != clientSize || - this.total != scrollSize || - this.size != barSize; + Bar.prototype.update = function(scrollSize, clientSize, barSize) { + var sizeChanged = this.screen != clientSize || this.total != scrollSize || this.size != barSize if (sizeChanged) { this.screen = clientSize; this.total = scrollSize; @@ -100,73 +88,65 @@ this.size -= minButtonSize - buttonSize; buttonSize = minButtonSize; } - this.inner.style[this.orientation == 'horizontal' ? 'width' : 'height'] = - buttonSize + 'px'; + this.inner.style[this.orientation == "horizontal" ? "width" : "height"] = + buttonSize + "px"; this.setPos(this.pos, sizeChanged); }; function SimpleScrollbars(cls, place, scroll) { this.addClass = cls; - this.horiz = new Bar(cls, 'horizontal', scroll); + this.horiz = new Bar(cls, "horizontal", scroll); place(this.horiz.node); - this.vert = new Bar(cls, 'vertical', scroll); + this.vert = new Bar(cls, "vertical", scroll); place(this.vert.node); this.width = null; } - SimpleScrollbars.prototype.update = function (measure) { + SimpleScrollbars.prototype.update = function(measure) { if (this.width == null) { - var style = window.getComputedStyle - ? window.getComputedStyle(this.horiz.node) - : this.horiz.node.currentStyle; + var style = window.getComputedStyle ? window.getComputedStyle(this.horiz.node) : this.horiz.node.currentStyle; if (style) this.width = parseInt(style.height); } var width = this.width || 0; var needsH = measure.scrollWidth > measure.clientWidth + 1; var needsV = measure.scrollHeight > measure.clientHeight + 1; - this.vert.node.style.display = needsV ? 'block' : 'none'; - this.horiz.node.style.display = needsH ? 'block' : 'none'; + this.vert.node.style.display = needsV ? "block" : "none"; + this.horiz.node.style.display = needsH ? "block" : "none"; if (needsV) { - this.vert.update( - measure.scrollHeight, - measure.clientHeight, - measure.viewHeight - (needsH ? width : 0), - ); - this.vert.node.style.bottom = needsH ? width + 'px' : '0'; + this.vert.update(measure.scrollHeight, measure.clientHeight, + measure.viewHeight - (needsH ? width : 0)); + this.vert.node.style.bottom = needsH ? width + "px" : "0"; } if (needsH) { - this.horiz.update( - measure.scrollWidth, - measure.clientWidth, - measure.viewWidth - (needsV ? width : 0) - measure.barLeft, - ); - this.horiz.node.style.right = needsV ? width + 'px' : '0'; - this.horiz.node.style.left = measure.barLeft + 'px'; + this.horiz.update(measure.scrollWidth, measure.clientWidth, + measure.viewWidth - (needsV ? width : 0) - measure.barLeft); + this.horiz.node.style.right = needsV ? width + "px" : "0"; + this.horiz.node.style.left = measure.barLeft + "px"; } - return { right: needsV ? width : 0, bottom: needsH ? width : 0 }; + return {right: needsV ? width : 0, bottom: needsH ? width : 0}; }; - SimpleScrollbars.prototype.setScrollTop = function (pos) { + SimpleScrollbars.prototype.setScrollTop = function(pos) { this.vert.setPos(pos); }; - SimpleScrollbars.prototype.setScrollLeft = function (pos) { + SimpleScrollbars.prototype.setScrollLeft = function(pos) { this.horiz.setPos(pos); }; - SimpleScrollbars.prototype.clear = function () { + SimpleScrollbars.prototype.clear = function() { var parent = this.horiz.node.parentNode; parent.removeChild(this.horiz.node); parent.removeChild(this.vert.node); }; - CodeMirror.scrollbarModel.simple = function (place, scroll) { - return new SimpleScrollbars('CodeMirror-simplescroll', place, scroll); + CodeMirror.scrollbarModel.simple = function(place, scroll) { + return new SimpleScrollbars("CodeMirror-simplescroll", place, scroll); }; - CodeMirror.scrollbarModel.overlay = function (place, scroll) { - return new SimpleScrollbars('CodeMirror-overlayscroll', place, scroll); + CodeMirror.scrollbarModel.overlay = function(place, scroll) { + return new SimpleScrollbars("CodeMirror-overlayscroll", place, scroll); }; }); diff --git a/web/static/lib/codemirror/simplescrollbars.scss b/web/static/lib/codemirror/simplescrollbars.scss index 8d285ccb..5eea7aa1 100644 --- a/web/static/lib/codemirror/simplescrollbars.scss +++ b/web/static/lib/codemirror/simplescrollbars.scss @@ -1,5 +1,4 @@ -.CodeMirror-simplescroll-horizontal div, -.CodeMirror-simplescroll-vertical div { +.CodeMirror-simplescroll-horizontal div, .CodeMirror-simplescroll-vertical div { position: absolute; background: #ccc; -moz-box-sizing: border-box; @@ -8,16 +7,14 @@ border-radius: 2px; } -.CodeMirror-simplescroll-horizontal, -.CodeMirror-simplescroll-vertical { +.CodeMirror-simplescroll-horizontal, .CodeMirror-simplescroll-vertical { position: absolute; z-index: 6; background: #eee; } .CodeMirror-simplescroll-horizontal { - bottom: 0; - left: 0; + bottom: 0; left: 0; height: 8px; } .CodeMirror-simplescroll-horizontal div { @@ -26,8 +23,7 @@ } .CodeMirror-simplescroll-vertical { - right: 0; - top: 0; + right: 0; top: 0; width: 8px; } .CodeMirror-simplescroll-vertical div { @@ -35,27 +31,24 @@ width: 100%; } -.CodeMirror-overlayscroll .CodeMirror-scrollbar-filler, -.CodeMirror-overlayscroll .CodeMirror-gutter-filler { + +.CodeMirror-overlayscroll .CodeMirror-scrollbar-filler, .CodeMirror-overlayscroll .CodeMirror-gutter-filler { display: none; } -.CodeMirror-overlayscroll-horizontal div, -.CodeMirror-overlayscroll-vertical div { +.CodeMirror-overlayscroll-horizontal div, .CodeMirror-overlayscroll-vertical div { position: absolute; background: #bcd; border-radius: 3px; } -.CodeMirror-overlayscroll-horizontal, -.CodeMirror-overlayscroll-vertical { +.CodeMirror-overlayscroll-horizontal, .CodeMirror-overlayscroll-vertical { position: absolute; z-index: 6; } .CodeMirror-overlayscroll-horizontal { - bottom: 0; - left: 0; + bottom: 0; left: 0; height: 6px; } .CodeMirror-overlayscroll-horizontal div { @@ -64,8 +57,7 @@ } .CodeMirror-overlayscroll-vertical { - right: 0; - top: 0; + right: 0; top: 0; width: 6px; } .CodeMirror-overlayscroll-vertical div { diff --git a/web/static/lib/codemirror/sql.js b/web/static/lib/codemirror/sql.js index eee7863f..d3983889 100644 --- a/web/static/lib/codemirror/sql.js +++ b/web/static/lib/codemirror/sql.js @@ -1,263 +1,225 @@ // CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: https://codemirror.net/LICENSE - -(function (mod) { - if (typeof exports == 'object' && typeof module == 'object') - // CommonJS - mod(require('../../lib/codemirror')); - else if (typeof define == 'function' && define.amd) - // AMD - define(['../../lib/codemirror'], mod); - // Plain browser env - else mod(CodeMirror); -})(function (CodeMirror) { - 'use strict'; - - CodeMirror.defineMode('sql', function (config, parserConfig) { - var client = parserConfig.client || {}, - atoms = parserConfig.atoms || { false: true, true: true, null: true }, - builtin = parserConfig.builtin || set(defaultBuiltin), - keywords = parserConfig.keywords || set(sqlKeywords), - operatorChars = parserConfig.operatorChars || /^[*+\-%<>!=&|~^\/]/, - support = parserConfig.support || {}, - hooks = parserConfig.hooks || {}, - dateSQL = parserConfig.dateSQL || { - date: true, - time: true, - timestamp: true, - }, +// Distributed under an MIT license: https://codemirror.net/5/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("sql", function(config, parserConfig) { + var client = parserConfig.client || {}, + atoms = parserConfig.atoms || {"false": true, "true": true, "null": true}, + builtin = parserConfig.builtin || set(defaultBuiltin), + keywords = parserConfig.keywords || set(sqlKeywords), + operatorChars = parserConfig.operatorChars || /^[*+\-%<>!=&|~^\/]/, + support = parserConfig.support || {}, + hooks = parserConfig.hooks || {}, + dateSQL = parserConfig.dateSQL || {"date" : true, "time" : true, "timestamp" : true}, backslashStringEscapes = parserConfig.backslashStringEscapes !== false, - brackets = parserConfig.brackets || /^[\{}\(\)\[\]]/, - punctuation = parserConfig.punctuation || /^[;.,:]/; + brackets = parserConfig.brackets || /^[\{}\(\)\[\]]/, + punctuation = parserConfig.punctuation || /^[;.,:]/ - function tokenBase(stream, state) { - var ch = stream.next(); + function tokenBase(stream, state) { + var ch = stream.next(); - // call hooks from the mime type - if (hooks[ch]) { - var result = hooks[ch](stream, state); - if (result !== false) return result; - } + // call hooks from the mime type + if (hooks[ch]) { + var result = hooks[ch](stream, state); + if (result !== false) return result; + } - if ( - support.hexNumber && - ((ch == '0' && stream.match(/^[xX][0-9a-fA-F]+/)) || - ((ch == 'x' || ch == 'X') && stream.match(/^'[0-9a-fA-F]+'/))) - ) { - // hex - // ref: http://dev.mysql.com/doc/refman/5.5/en/hexadecimal-literals.html - return 'number'; - } else if ( - support.binaryNumber && - (((ch == 'b' || ch == 'B') && stream.match(/^'[01]+'/)) || - (ch == '0' && stream.match(/^b[01]+/))) - ) { - // bitstring - // ref: http://dev.mysql.com/doc/refman/5.5/en/bit-field-literals.html - return 'number'; - } else if (ch.charCodeAt(0) > 47 && ch.charCodeAt(0) < 58) { - // numbers - // ref: http://dev.mysql.com/doc/refman/5.5/en/number-literals.html - stream.match(/^[0-9]*(\.[0-9]+)?([eE][-+]?[0-9]+)?/); - support.decimallessFloat && stream.match(/^\.(?!\.)/); - return 'number'; - } else if ( - ch == '?' && - (stream.eatSpace() || stream.eol() || stream.eat(';')) - ) { - // placeholders - return 'variable-3'; - } else if (ch == "'" || (ch == '"' && support.doubleQuote)) { - // strings - // ref: http://dev.mysql.com/doc/refman/5.5/en/string-literals.html - state.tokenize = tokenLiteral(ch); - return state.tokenize(stream, state); - } else if ( - ((support.nCharCast && (ch == 'n' || ch == 'N')) || - (support.charsetCast && - ch == '_' && - stream.match(/[a-z][a-z0-9]*/i))) && - (stream.peek() == "'" || stream.peek() == '"') - ) { - // charset casting: _utf8'str', N'str', n'str' - // ref: http://dev.mysql.com/doc/refman/5.5/en/string-literals.html - return 'keyword'; - } else if ( - support.escapeConstant && - (ch == 'e' || ch == 'E') && - (stream.peek() == "'" || (stream.peek() == '"' && support.doubleQuote)) - ) { - // escape constant: E'str', e'str' - // ref: https://www.postgresql.org/docs/current/sql-syntax-lexical.html#SQL-SYNTAX-STRINGS-ESCAPE - state.tokenize = function (stream, state) { - return (state.tokenize = tokenLiteral(stream.next(), true))( - stream, - state, - ); - }; - return 'keyword'; - } else if (support.commentSlashSlash && ch == '/' && stream.eat('/')) { - // 1-line comment - stream.skipToEnd(); - return 'comment'; - } else if ( - (support.commentHash && ch == '#') || - (ch == '-' && - stream.eat('-') && - (!support.commentSpaceRequired || stream.eat(' '))) - ) { - // 1-line comments - // ref: https://kb.askmonty.org/en/comment-syntax/ - stream.skipToEnd(); - return 'comment'; - } else if (ch == '/' && stream.eat('*')) { - // multi-line comments - // ref: https://kb.askmonty.org/en/comment-syntax/ - state.tokenize = tokenComment(1); - return state.tokenize(stream, state); - } else if (ch == '.') { - // .1 for 0.1 - if (support.zerolessFloat && stream.match(/^(?:\d+(?:e[+-]?\d+)?)/i)) - return 'number'; - if (stream.match(/^\.+/)) return null; - // .table_name (ODBC) - // // ref: http://dev.mysql.com/doc/refman/5.6/en/identifier-qualifiers.html - if (support.ODBCdotTable && stream.match(/^[\w\d_]+/)) - return 'variable-2'; - } else if (operatorChars.test(ch)) { - // operators - stream.eatWhile(operatorChars); - return 'operator'; - } else if (brackets.test(ch)) { - // brackets - return 'bracket'; - } else if (punctuation.test(ch)) { - // punctuation - stream.eatWhile(punctuation); - return 'punctuation'; - } else if ( - ch == '{' && - (stream.match(/^( )*(d|D|t|T|ts|TS)( )*'[^']*'( )*}/) || - stream.match(/^( )*(d|D|t|T|ts|TS)( )*"[^"]*"( )*}/)) - ) { - // dates (weird ODBC syntax) - // ref: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-literals.html - return 'number'; - } else { - stream.eatWhile(/^[_\w\d]/); - var word = stream.current().toLowerCase(); - // dates (standard SQL syntax) - // ref: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-literals.html - if ( - dateSQL.hasOwnProperty(word) && - (stream.match(/^( )+'[^']*'/) || stream.match(/^( )+"[^"]*"/)) - ) - return 'number'; - if (atoms.hasOwnProperty(word)) return 'atom'; - if (builtin.hasOwnProperty(word)) return 'builtin'; - if (keywords.hasOwnProperty(word)) return 'keyword'; - if (client.hasOwnProperty(word)) return 'string-2'; - return null; + if (support.hexNumber && + ((ch == "0" && stream.match(/^[xX][0-9a-fA-F]+/)) + || (ch == "x" || ch == "X") && stream.match(/^'[0-9a-fA-F]*'/))) { + // hex + // ref: https://dev.mysql.com/doc/refman/8.0/en/hexadecimal-literals.html + return "number"; + } else if (support.binaryNumber && + (((ch == "b" || ch == "B") && stream.match(/^'[01]*'/)) + || (ch == "0" && stream.match(/^b[01]+/)))) { + // bitstring + // ref: https://dev.mysql.com/doc/refman/8.0/en/bit-value-literals.html + return "number"; + } else if (ch.charCodeAt(0) > 47 && ch.charCodeAt(0) < 58) { + // numbers + // ref: https://dev.mysql.com/doc/refman/8.0/en/number-literals.html + stream.match(/^[0-9]*(\.[0-9]+)?([eE][-+]?[0-9]+)?/); + support.decimallessFloat && stream.match(/^\.(?!\.)/); + return "number"; + } else if (ch == "?" && (stream.eatSpace() || stream.eol() || stream.eat(";"))) { + // placeholders + return "variable-3"; + } else if (ch == "'" || (ch == '"' && support.doubleQuote)) { + // strings + // ref: https://dev.mysql.com/doc/refman/8.0/en/string-literals.html + state.tokenize = tokenLiteral(ch); + return state.tokenize(stream, state); + } else if ((((support.nCharCast && (ch == "n" || ch == "N")) + || (support.charsetCast && ch == "_" && stream.match(/[a-z][a-z0-9]*/i))) + && (stream.peek() == "'" || stream.peek() == '"'))) { + // charset casting: _utf8'str', N'str', n'str' + // ref: https://dev.mysql.com/doc/refman/8.0/en/string-literals.html + return "keyword"; + } else if (support.escapeConstant && (ch == "e" || ch == "E") + && (stream.peek() == "'" || (stream.peek() == '"' && support.doubleQuote))) { + // escape constant: E'str', e'str' + // ref: https://www.postgresql.org/docs/current/sql-syntax-lexical.html#SQL-SYNTAX-STRINGS-ESCAPE + state.tokenize = function(stream, state) { + return (state.tokenize = tokenLiteral(stream.next(), true))(stream, state); } + return "keyword"; + } else if (support.commentSlashSlash && ch == "/" && stream.eat("/")) { + // 1-line comment + stream.skipToEnd(); + return "comment"; + } else if ((support.commentHash && ch == "#") + || (ch == "-" && stream.eat("-") && (!support.commentSpaceRequired || stream.eat(" ")))) { + // 1-line comments + // ref: https://kb.askmonty.org/en/comment-syntax/ + stream.skipToEnd(); + return "comment"; + } else if (ch == "/" && stream.eat("*")) { + // multi-line comments + // ref: https://kb.askmonty.org/en/comment-syntax/ + state.tokenize = tokenComment(1); + return state.tokenize(stream, state); + } else if (ch == ".") { + // .1 for 0.1 + if (support.zerolessFloat && stream.match(/^(?:\d+(?:e[+-]?\d+)?)/i)) + return "number"; + if (stream.match(/^\.+/)) + return null + if (stream.match(/^[\w\d_$#]+/)) + return "variable-2"; + } else if (operatorChars.test(ch)) { + // operators + stream.eatWhile(operatorChars); + return "operator"; + } else if (brackets.test(ch)) { + // brackets + return "bracket"; + } else if (punctuation.test(ch)) { + // punctuation + stream.eatWhile(punctuation); + return "punctuation"; + } else if (ch == '{' && + (stream.match(/^( )*(d|D|t|T|ts|TS)( )*'[^']*'( )*}/) || stream.match(/^( )*(d|D|t|T|ts|TS)( )*"[^"]*"( )*}/))) { + // dates (weird ODBC syntax) + // ref: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-literals.html + return "number"; + } else { + stream.eatWhile(/^[_\w\d]/); + var word = stream.current().toLowerCase(); + // dates (standard SQL syntax) + // ref: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-literals.html + if (dateSQL.hasOwnProperty(word) && (stream.match(/^( )+'[^']*'/) || stream.match(/^( )+"[^"]*"/))) + return "number"; + if (atoms.hasOwnProperty(word)) return "atom"; + if (builtin.hasOwnProperty(word)) return "type"; + if (keywords.hasOwnProperty(word)) return "keyword"; + if (client.hasOwnProperty(word)) return "builtin"; + return null; } + } - // 'string', with char specified in quote escaped by '\' - function tokenLiteral(quote, backslashEscapes) { - return function (stream, state) { - var escaped = false, - ch; - while ((ch = stream.next()) != null) { - if (ch == quote && !escaped) { - state.tokenize = tokenBase; - break; - } - escaped = - (backslashStringEscapes || backslashEscapes) && - !escaped && - ch == '\\'; + // 'string', with char specified in quote escaped by '\' + function tokenLiteral(quote, backslashEscapes) { + return function(stream, state) { + var escaped = false, ch; + while ((ch = stream.next()) != null) { + if (ch == quote && !escaped) { + state.tokenize = tokenBase; + break; } - return 'string'; - }; - } - function tokenComment(depth) { - return function (stream, state) { - var m = stream.match(/^.*?(\/\*|\*\/)/); - if (!m) stream.skipToEnd(); - else if (m[1] == '/*') state.tokenize = tokenComment(depth + 1); - else if (depth > 1) state.tokenize = tokenComment(depth - 1); - else state.tokenize = tokenBase; - return 'comment'; - }; + escaped = (backslashStringEscapes || backslashEscapes) && !escaped && ch == "\\"; + } + return "string"; + }; + } + function tokenComment(depth) { + return function(stream, state) { + var m = stream.match(/^.*?(\/\*|\*\/)/) + if (!m) stream.skipToEnd() + else if (m[1] == "/*") state.tokenize = tokenComment(depth + 1) + else if (depth > 1) state.tokenize = tokenComment(depth - 1) + else state.tokenize = tokenBase + return "comment" } + } - function pushContext(stream, state, type) { - state.context = { - prev: state.context, - indent: stream.indentation(), - col: stream.column(), - type: type, - }; - } + function pushContext(stream, state, type) { + state.context = { + prev: state.context, + indent: stream.indentation(), + col: stream.column(), + type: type + }; + } - function popContext(state) { - state.indent = state.context.indent; - state.context = state.context.prev; - } + function popContext(state) { + state.indent = state.context.indent; + state.context = state.context.prev; + } - return { - startState: function () { - return { tokenize: tokenBase, context: null }; - }, + return { + startState: function() { + return {tokenize: tokenBase, context: null}; + }, - token: function (stream, state) { - if (stream.sol()) { - if (state.context && state.context.align == null) - state.context.align = false; - } - if (state.tokenize == tokenBase && stream.eatSpace()) return null; + token: function(stream, state) { + if (stream.sol()) { + if (state.context && state.context.align == null) + state.context.align = false; + } + if (state.tokenize == tokenBase && stream.eatSpace()) return null; + + var style = state.tokenize(stream, state); + if (style == "comment") return style; + + if (state.context && state.context.align == null) + state.context.align = true; + + var tok = stream.current(); + if (tok == "(") + pushContext(stream, state, ")"); + else if (tok == "[") + pushContext(stream, state, "]"); + else if (state.context && state.context.type == tok) + popContext(state); + return style; + }, - var style = state.tokenize(stream, state); - if (style == 'comment') return style; + indent: function(state, textAfter) { + var cx = state.context; + if (!cx) return CodeMirror.Pass; + var closing = textAfter.charAt(0) == cx.type; + if (cx.align) return cx.col + (closing ? 0 : 1); + else return cx.indent + (closing ? 0 : config.indentUnit); + }, - if (state.context && state.context.align == null) - state.context.align = true; - - var tok = stream.current(); - if (tok == '(') pushContext(stream, state, ')'); - else if (tok == '[') pushContext(stream, state, ']'); - else if (state.context && state.context.type == tok) popContext(state); - return style; - }, - - indent: function (state, textAfter) { - var cx = state.context; - if (!cx) return CodeMirror.Pass; - var closing = textAfter.charAt(0) == cx.type; - if (cx.align) return cx.col + (closing ? 0 : 1); - else return cx.indent + (closing ? 0 : config.indentUnit); - }, - - blockCommentStart: '/*', - blockCommentEnd: '*/', - lineComment: support.commentSlashSlash - ? '//' - : support.commentHash - ? '#' - : '--', - closeBrackets: '()[]{}\'\'""``', - }; - }); + blockCommentStart: "/*", + blockCommentEnd: "*/", + lineComment: support.commentSlashSlash ? "//" : support.commentHash ? "#" : "--", + closeBrackets: "()[]{}''\"\"``", + config: parserConfig + }; +}); // `identifier` function hookIdentifier(stream) { // MySQL/MariaDB identifiers - // ref: http://dev.mysql.com/doc/refman/5.6/en/identifier-qualifiers.html + // ref: https://dev.mysql.com/doc/refman/8.0/en/identifier-qualifiers.html var ch; while ((ch = stream.next()) != null) { - if (ch == '`' && !stream.eat('`')) return 'variable-2'; + if (ch == "`" && !stream.eat("`")) return "variable-2"; } stream.backUp(stream.current().length - 1); - return stream.eatWhile(/\w/) ? 'variable-2' : null; + return stream.eatWhile(/\w/) ? "variable-2" : null; } // "identifier" @@ -267,10 +229,10 @@ // ref: http://sqlite.org/lang_keywords.html var ch; while ((ch = stream.next()) != null) { - if (ch == '"' && !stream.eat('"')) return 'variable-2'; + if (ch == "\"" && !stream.eat("\"")) return "variable-2"; } stream.backUp(stream.current().length - 1); - return stream.eatWhile(/\w/) ? 'variable-2' : null; + return stream.eatWhile(/\w/) ? "variable-2" : null; } // variable token @@ -278,309 +240,255 @@ // variables // @@prefix.varName @varName // varName can be quoted with ` or ' or " - // ref: http://dev.mysql.com/doc/refman/5.5/en/user-variables.html - if (stream.eat('@')) { - stream.match(/^session\./); - stream.match(/^local\./); - stream.match(/^global\./); + // ref: https://dev.mysql.com/doc/refman/8.0/en/user-variables.html + if (stream.eat("@")) { + stream.match('session.'); + stream.match('local.'); + stream.match('global.'); } if (stream.eat("'")) { stream.match(/^.*'/); - return 'variable-2'; + return "variable-2"; } else if (stream.eat('"')) { stream.match(/^.*"/); - return 'variable-2'; - } else if (stream.eat('`')) { + return "variable-2"; + } else if (stream.eat("`")) { stream.match(/^.*`/); - return 'variable-2'; + return "variable-2"; } else if (stream.match(/^[0-9a-zA-Z$\.\_]+/)) { - return 'variable-2'; + return "variable-2"; } return null; - } + }; // short client keyword token function hookClient(stream) { // \N means NULL - // ref: http://dev.mysql.com/doc/refman/5.5/en/null-values.html - if (stream.eat('N')) { - return 'atom'; + // ref: https://dev.mysql.com/doc/refman/8.0/en/null-values.html + if (stream.eat("N")) { + return "atom"; } // \g, etc - // ref: http://dev.mysql.com/doc/refman/5.5/en/mysql-commands.html - return stream.match(/^[a-zA-Z.#!?]/) ? 'variable-2' : null; + // ref: https://dev.mysql.com/doc/refman/8.0/en/mysql-commands.html + return stream.match(/^[a-zA-Z.#!?]/) ? "variable-2" : null; } // these keywords are used by all SQL dialects (however, a mode can still overwrite it) - var sqlKeywords = - 'alter and as asc between by count create delete desc distinct drop from group having in insert into is join like not on or order select set table union update values where limit '; + var sqlKeywords = "alter and as asc between by count create delete desc distinct drop from group having in insert into is join like not on or order select set table union update values where limit "; // turn a space-separated list into an array function set(str) { - var obj = {}, - words = str.split(' '); + var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } - var defaultBuiltin = - 'bool boolean bit blob enum long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision real date datetime year unsigned signed decimal numeric'; + var defaultBuiltin = "bool boolean bit blob enum long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision real date datetime year unsigned signed decimal numeric" - // A generic SQL Mode. It's not a standard, it just try to support what is generally supported - CodeMirror.defineMIME('text/x-sql', { - name: 'sql', - keywords: set(sqlKeywords + 'begin'), + // A generic SQL Mode. It's not a standard, it just tries to support what is generally supported + CodeMirror.defineMIME("text/x-sql", { + name: "sql", + keywords: set(sqlKeywords + "begin"), builtin: set(defaultBuiltin), - atoms: set('false true null unknown'), - dateSQL: set('date time timestamp'), - support: set('ODBCdotTable doubleQuote binaryNumber hexNumber'), + atoms: set("false true null unknown"), + dateSQL: set("date time timestamp"), + support: set("doubleQuote binaryNumber hexNumber") }); - CodeMirror.defineMIME('text/x-mssql', { - name: 'sql', - client: set( - '$partition binary_checksum checksum connectionproperty context_info current_request_id error_line error_message error_number error_procedure error_severity error_state formatmessage get_filestream_transaction_context getansinull host_id host_name isnull isnumeric min_active_rowversion newid newsequentialid rowcount_big xact_state object_id', - ), - keywords: set( - sqlKeywords + - 'begin trigger proc view index for add constraint key primary foreign collate clustered nonclustered declare exec go if use index holdlock nolock nowait paglock readcommitted readcommittedlock readpast readuncommitted repeatableread rowlock serializable snapshot tablock tablockx updlock with', - ), - builtin: set( - 'bigint numeric bit smallint decimal smallmoney int tinyint money float real char varchar text nchar nvarchar ntext binary varbinary image cursor timestamp hierarchyid uniqueidentifier sql_variant xml table ', - ), - atoms: set( - 'is not null like and or in left right between inner outer join all any some cross unpivot pivot exists', - ), + CodeMirror.defineMIME("text/x-mssql", { + name: "sql", + client: set("$partition binary_checksum checksum connectionproperty context_info current_request_id error_line error_message error_number error_procedure error_severity error_state formatmessage get_filestream_transaction_context getansinull host_id host_name isnull isnumeric min_active_rowversion newid newsequentialid rowcount_big xact_state object_id"), + keywords: set(sqlKeywords + "begin trigger proc view index for add constraint key primary foreign collate clustered nonclustered declare exec go if use index holdlock nolock nowait paglock readcommitted readcommittedlock readpast readuncommitted repeatableread rowlock serializable snapshot tablock tablockx updlock with"), + builtin: set("bigint numeric bit smallint decimal smallmoney int tinyint money float real char varchar text nchar nvarchar ntext binary varbinary image cursor timestamp hierarchyid uniqueidentifier sql_variant xml table "), + atoms: set("is not null like and or in left right between inner outer join all any some cross unpivot pivot exists"), operatorChars: /^[*+\-%<>!=^\&|\/]/, brackets: /^[\{}\(\)]/, punctuation: /^[;.,:/]/, backslashStringEscapes: false, - dateSQL: set('date datetimeoffset datetime2 smalldatetime datetime time'), + dateSQL: set("date datetimeoffset datetime2 smalldatetime datetime time"), hooks: { - '@': hookVar, - }, + "@": hookVar + } }); - CodeMirror.defineMIME('text/x-mysql', { - name: 'sql', - client: set( - 'charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee', - ), - keywords: set( - sqlKeywords + - 'accessible action add after algorithm all analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general get global grant grants group group_concat handler hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show signal slave slow smallint snapshot soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views warnings when while with work write xa xor year_month zerofill begin do then else loop repeat', - ), - builtin: set( - 'bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric', - ), - atoms: set('false true null unknown'), + CodeMirror.defineMIME("text/x-mysql", { + name: "sql", + client: set("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"), + keywords: set(sqlKeywords + "accessible action add after algorithm all analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general get global grant grants group group_concat handler hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show signal slave slow smallint snapshot soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views warnings when while with work write xa xor year_month zerofill begin do then else loop repeat"), + builtin: set("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric"), + atoms: set("false true null unknown"), operatorChars: /^[*+\-%<>!=&|^]/, - dateSQL: set('date time timestamp'), - support: set( - 'ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired', - ), + dateSQL: set("date time timestamp"), + support: set("decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired"), hooks: { - '@': hookVar, - '`': hookIdentifier, - '\\': hookClient, - }, + "@": hookVar, + "`": hookIdentifier, + "\\": hookClient + } }); - CodeMirror.defineMIME('text/x-mariadb', { - name: 'sql', - client: set( - 'charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee', - ), - keywords: set( - sqlKeywords + - 'accessible action add after algorithm all always analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general generated get global grant grants group groupby_concat handler hard hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password persistent phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show shutdown signal slave slow smallint snapshot soft soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views virtual warnings when while with work write xa xor year_month zerofill begin do then else loop repeat', - ), - builtin: set( - 'bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric', - ), - atoms: set('false true null unknown'), + CodeMirror.defineMIME("text/x-mariadb", { + name: "sql", + client: set("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"), + keywords: set(sqlKeywords + "accessible action add after algorithm all always analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general generated get global grant grants group group_concat handler hard hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password persistent phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show shutdown signal slave slow smallint snapshot soft soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views virtual warnings when while with work write xa xor year_month zerofill begin do then else loop repeat"), + builtin: set("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric"), + atoms: set("false true null unknown"), operatorChars: /^[*+\-%<>!=&|^]/, - dateSQL: set('date time timestamp'), - support: set( - 'ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired', - ), + dateSQL: set("date time timestamp"), + support: set("decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired"), hooks: { - '@': hookVar, - '`': hookIdentifier, - '\\': hookClient, - }, + "@": hookVar, + "`": hookIdentifier, + "\\": hookClient + } }); // provided by the phpLiteAdmin project - phpliteadmin.org - CodeMirror.defineMIME('text/x-sqlite', { - name: 'sql', + CodeMirror.defineMIME("text/x-sqlite", { + name: "sql", // commands of the official SQLite client, ref: https://www.sqlite.org/cli.html#dotcmd - client: set( - 'auth backup bail binary changes check clone databases dbinfo dump echo eqp exit explain fullschema headers help import imposter indexes iotrace limit lint load log mode nullvalue once open output print prompt quit read restore save scanstats schema separator session shell show stats system tables testcase timeout timer trace vfsinfo vfslist vfsname width', - ), + client: set("auth backup bail binary changes check clone databases dbinfo dump echo eqp exit explain fullschema headers help import imposter indexes iotrace limit lint load log mode nullvalue once open output print prompt quit read restore save scanstats schema separator session shell show stats system tables testcase timeout timer trace vfsinfo vfslist vfsname width"), // ref: http://sqlite.org/lang_keywords.html - keywords: set( - sqlKeywords + - 'abort action add after all analyze attach autoincrement before begin cascade case cast check collate column commit conflict constraint cross current_date current_time current_timestamp database default deferrable deferred detach each else end escape except exclusive exists explain fail for foreign full glob if ignore immediate index indexed initially inner instead intersect isnull key left limit match natural no notnull null of offset outer plan pragma primary query raise recursive references regexp reindex release rename replace restrict right rollback row savepoint temp temporary then to transaction trigger unique using vacuum view virtual when with without', - ), + keywords: set(sqlKeywords + "abort action add after all analyze attach autoincrement before begin cascade case cast check collate column commit conflict constraint cross current_date current_time current_timestamp database default deferrable deferred detach each else end escape except exclusive exists explain fail for foreign full glob if ignore immediate index indexed initially inner instead intersect isnull key left limit match natural no notnull null of offset outer plan pragma primary query raise recursive references regexp reindex release rename replace restrict right rollback row savepoint temp temporary then to transaction trigger unique using vacuum view virtual when with without"), // SQLite is weakly typed, ref: http://sqlite.org/datatype3.html. This is just a list of some common types. - builtin: set( - 'bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text clob bigint int int2 int8 integer float double char varchar date datetime year unsigned signed numeric real', - ), + builtin: set("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text clob bigint int int2 int8 integer float double char varchar date datetime year unsigned signed numeric real"), // ref: http://sqlite.org/syntax/literal-value.html - atoms: set('null current_date current_time current_timestamp'), + atoms: set("null current_date current_time current_timestamp"), // ref: http://sqlite.org/lang_expr.html#binaryops operatorChars: /^[*+\-%<>!=&|/~]/, // SQLite is weakly typed, ref: http://sqlite.org/datatype3.html. This is just a list of some common types. - dateSQL: set('date time timestamp datetime'), - support: set('decimallessFloat zerolessFloat'), - identifierQuote: '"', //ref: http://sqlite.org/lang_keywords.html + dateSQL: set("date time timestamp datetime"), + support: set("decimallessFloat zerolessFloat"), + identifierQuote: "\"", //ref: http://sqlite.org/lang_keywords.html hooks: { // bind-parameters ref:http://sqlite.org/lang_expr.html#varparam - '@': hookVar, - ':': hookVar, - '?': hookVar, - $: hookVar, + "@": hookVar, + ":": hookVar, + "?": hookVar, + "$": hookVar, // The preferred way to escape Identifiers is using double quotes, ref: http://sqlite.org/lang_keywords.html - '"': hookIdentifierDoublequote, - // there is also support for backtics, ref: http://sqlite.org/lang_keywords.html - '`': hookIdentifier, - }, + "\"": hookIdentifierDoublequote, + // there is also support for backticks, ref: http://sqlite.org/lang_keywords.html + "`": hookIdentifier + } }); // the query language used by Apache Cassandra is called CQL, but this mime type // is called Cassandra to avoid confusion with Contextual Query Language - CodeMirror.defineMIME('text/x-cassandra', { - name: 'sql', - client: {}, - keywords: set( - 'add all allow alter and any apply as asc authorize batch begin by clustering columnfamily compact consistency count create custom delete desc distinct drop each_quorum exists filtering from grant if in index insert into key keyspace keyspaces level limit local_one local_quorum modify nan norecursive nosuperuser not of on one order password permission permissions primary quorum rename revoke schema select set storage superuser table three to token truncate ttl two type unlogged update use user users using values where with writetime', - ), - builtin: set( - 'ascii bigint blob boolean counter decimal double float frozen inet int list map static text timestamp timeuuid tuple uuid varchar varint', - ), - atoms: set('false true infinity NaN'), + CodeMirror.defineMIME("text/x-cassandra", { + name: "sql", + client: { }, + keywords: set("add all allow alter and any apply as asc authorize batch begin by clustering columnfamily compact consistency count create custom delete desc distinct drop each_quorum exists filtering from grant if in index insert into key keyspace keyspaces level limit local_one local_quorum modify nan norecursive nosuperuser not of on one order password permission permissions primary quorum rename revoke schema select set storage superuser table three to token truncate ttl two type unlogged update use user users using values where with writetime"), + builtin: set("ascii bigint blob boolean counter decimal double float frozen inet int list map static text timestamp timeuuid tuple uuid varchar varint"), + atoms: set("false true infinity NaN"), operatorChars: /^[<>=]/, - dateSQL: {}, - support: set('commentSlashSlash decimallessFloat'), - hooks: {}, + dateSQL: { }, + support: set("commentSlashSlash decimallessFloat"), + hooks: { } }); // this is based on Peter Raganitsch's 'plsql' mode - CodeMirror.defineMIME('text/x-plsql', { - name: 'sql', - client: set( - 'appinfo arraysize autocommit autoprint autorecovery autotrace blockterminator break btitle cmdsep colsep compatibility compute concat copycommit copytypecheck define describe echo editfile embedded escape exec execute feedback flagger flush heading headsep instance linesize lno loboffset logsource long longchunksize markup native newpage numformat numwidth pagesize pause pno recsep recsepchar release repfooter repheader serveroutput shiftinout show showmode size spool sqlblanklines sqlcase sqlcode sqlcontinue sqlnumber sqlpluscompatibility sqlprefix sqlprompt sqlterminator suffix tab term termout time timing trimout trimspool ttitle underline verify version wrap', - ), - keywords: set( - 'abort accept access add all alter and any array arraylen as asc assert assign at attributes audit authorization avg base_table begin between binary_integer body boolean by case cast char char_base check close cluster clusters colauth column comment commit compress connect connected constant constraint crash create current currval cursor data_base database date dba deallocate debugoff debugon decimal declare default definition delay delete desc digits dispose distinct do drop else elseif elsif enable end entry escape exception exception_init exchange exclusive exists exit external fast fetch file for force form from function generic goto grant group having identified if immediate in increment index indexes indicator initial initrans insert interface intersect into is key level library like limited local lock log logging long loop master maxextents maxtrans member minextents minus mislabel mode modify multiset new next no noaudit nocompress nologging noparallel not nowait number_base object of off offline on online only open option or order out package parallel partition pctfree pctincrease pctused pls_integer positive positiven pragma primary prior private privileges procedure public raise range raw read rebuild record ref references refresh release rename replace resource restrict return returning returns reverse revoke rollback row rowid rowlabel rownum rows run savepoint schema segment select separate session set share snapshot some space split sql start statement storage subtype successful synonym tabauth table tables tablespace task terminate then to trigger truncate type union unique unlimited unrecoverable unusable update use using validate value values variable view views when whenever where while with work', - ), - builtin: set( - 'abs acos add_months ascii asin atan atan2 average bfile bfilename bigserial bit blob ceil character chartorowid chr clob concat convert cos cosh count dec decode deref dual dump dup_val_on_index empty error exp false float floor found glb greatest hextoraw initcap instr instrb int integer isopen last_day least length lengthb ln lower lpad ltrim lub make_ref max min mlslabel mod months_between natural naturaln nchar nclob new_time next_day nextval nls_charset_decl_len nls_charset_id nls_charset_name nls_initcap nls_lower nls_sort nls_upper nlssort no_data_found notfound null number numeric nvarchar2 nvl others power rawtohex real reftohex round rowcount rowidtochar rowtype rpad rtrim serial sign signtype sin sinh smallint soundex sqlcode sqlerrm sqrt stddev string substr substrb sum sysdate tan tanh to_char text to_date to_label to_multi_byte to_number to_single_byte translate true trunc uid unlogged upper user userenv varchar varchar2 variance varying vsize xml', - ), + CodeMirror.defineMIME("text/x-plsql", { + name: "sql", + client: set("appinfo arraysize autocommit autoprint autorecovery autotrace blockterminator break btitle cmdsep colsep compatibility compute concat copycommit copytypecheck define describe echo editfile embedded escape exec execute feedback flagger flush heading headsep instance linesize lno loboffset logsource long longchunksize markup native newpage numformat numwidth pagesize pause pno recsep recsepchar release repfooter repheader serveroutput shiftinout show showmode size spool sqlblanklines sqlcase sqlcode sqlcontinue sqlnumber sqlpluscompatibility sqlprefix sqlprompt sqlterminator suffix tab term termout time timing trimout trimspool ttitle underline verify version wrap"), + keywords: set("abort accept access add all alter and any array arraylen as asc assert assign at attributes audit authorization avg base_table begin between binary_integer body boolean by case cast char char_base check close cluster clusters colauth column comment commit compress connect connected constant constraint crash create current currval cursor data_base database date dba deallocate debugoff debugon decimal declare default definition delay delete desc digits dispose distinct do drop else elseif elsif enable end entry escape exception exception_init exchange exclusive exists exit external fast fetch file for force form from function generic goto grant group having identified if immediate in increment index indexes indicator initial initrans insert interface intersect into is key level library like limited local lock log logging long loop master maxextents maxtrans member minextents minus mislabel mode modify multiset new next no noaudit nocompress nologging noparallel not nowait number_base object of off offline on online only open option or order out package parallel partition pctfree pctincrease pctused pls_integer positive positiven pragma primary prior private privileges procedure public raise range raw read rebuild record ref references refresh release rename replace resource restrict return returning returns reverse revoke rollback row rowid rowlabel rownum rows run savepoint schema segment select separate session set share snapshot some space split sql start statement storage subtype successful synonym tabauth table tables tablespace task terminate then to trigger truncate type union unique unlimited unrecoverable unusable update use using validate value values variable view views when whenever where while with work"), + builtin: set("abs acos add_months ascii asin atan atan2 average bfile bfilename bigserial bit blob ceil character chartorowid chr clob concat convert cos cosh count dec decode deref dual dump dup_val_on_index empty error exp false float floor found glb greatest hextoraw initcap instr instrb int integer isopen last_day least length lengthb ln lower lpad ltrim lub make_ref max min mlslabel mod months_between natural naturaln nchar nclob new_time next_day nextval nls_charset_decl_len nls_charset_id nls_charset_name nls_initcap nls_lower nls_sort nls_upper nlssort no_data_found notfound null number numeric nvarchar2 nvl others power rawtohex real reftohex round rowcount rowidtochar rowtype rpad rtrim serial sign signtype sin sinh smallint soundex sqlcode sqlerrm sqrt stddev string substr substrb sum sysdate tan tanh to_char text to_date to_label to_multi_byte to_number to_single_byte translate true trunc uid unlogged upper user userenv varchar varchar2 variance varying vsize xml"), operatorChars: /^[*\/+\-%<>!=~]/, - dateSQL: set('date time timestamp'), - support: set('doubleQuote nCharCast zerolessFloat binaryNumber hexNumber'), + dateSQL: set("date time timestamp"), + support: set("doubleQuote nCharCast zerolessFloat binaryNumber hexNumber") }); // Created to support specific hive keywords - CodeMirror.defineMIME('text/x-hive', { - name: 'sql', - keywords: set( - 'select alter $elem$ $key$ $value$ add after all analyze and archive as asc before between binary both bucket buckets by cascade case cast change cluster clustered clusterstatus collection column columns comment compute concatenate continue create cross cursor data database databases dbproperties deferred delete delimited desc describe directory disable distinct distribute drop else enable end escaped exclusive exists explain export extended external fetch fields fileformat first format formatted from full function functions grant group having hold_ddltime idxproperties if import in index indexes inpath inputdriver inputformat insert intersect into is items join keys lateral left like limit lines load local location lock locks mapjoin materialized minus msck no_drop nocompress not of offline on option or order out outer outputdriver outputformat overwrite partition partitioned partitions percent plus preserve procedure purge range rcfile read readonly reads rebuild recordreader recordwriter recover reduce regexp rename repair replace restrict revoke right rlike row schema schemas semi sequencefile serde serdeproperties set shared show show_database sort sorted ssl statistics stored streamtable table tables tablesample tblproperties temporary terminated textfile then tmp to touch transform trigger unarchive undo union uniquejoin unlock update use using utc utc_tmestamp view when where while with admin authorization char compact compactions conf cube current current_date current_timestamp day decimal defined dependency directories elem_type exchange file following for grouping hour ignore inner interval jar less logical macro minute month more none noscan over owner partialscan preceding pretty principals protection reload rewrite role roles rollup rows second server sets skewed transactions truncate unbounded unset uri user values window year', - ), - builtin: set( - 'bool boolean long timestamp tinyint smallint bigint int float double date datetime unsigned string array struct map uniontype key_type utctimestamp value_type varchar', - ), - atoms: set('false true null unknown'), + CodeMirror.defineMIME("text/x-hive", { + name: "sql", + keywords: set("select alter $elem$ $key$ $value$ add after all analyze and archive as asc before between binary both bucket buckets by cascade case cast change cluster clustered clusterstatus collection column columns comment compute concatenate continue create cross cursor data database databases dbproperties deferred delete delimited desc describe directory disable distinct distribute drop else enable end escaped exclusive exists explain export extended external fetch fields fileformat first format formatted from full function functions grant group having hold_ddltime idxproperties if import in index indexes inpath inputdriver inputformat insert intersect into is items join keys lateral left like limit lines load local location lock locks mapjoin materialized minus msck no_drop nocompress not of offline on option or order out outer outputdriver outputformat overwrite partition partitioned partitions percent plus preserve procedure purge range rcfile read readonly reads rebuild recordreader recordwriter recover reduce regexp rename repair replace restrict revoke right rlike row schema schemas semi sequencefile serde serdeproperties set shared show show_database sort sorted ssl statistics stored streamtable table tables tablesample tblproperties temporary terminated textfile then tmp to touch transform trigger unarchive undo union uniquejoin unlock update use using utc utc_tmestamp view when where while with admin authorization char compact compactions conf cube current current_date current_timestamp day decimal defined dependency directories elem_type exchange file following for grouping hour ignore inner interval jar less logical macro minute month more none noscan over owner partialscan preceding pretty principals protection reload rewrite role roles rollup rows second server sets skewed transactions truncate unbounded unset uri user values window year"), + builtin: set("bool boolean long timestamp tinyint smallint bigint int float double date datetime unsigned string array struct map uniontype key_type utctimestamp value_type varchar"), + atoms: set("false true null unknown"), operatorChars: /^[*+\-%<>!=]/, - dateSQL: set('date timestamp'), - support: set('ODBCdotTable doubleQuote binaryNumber hexNumber'), + dateSQL: set("date timestamp"), + support: set("doubleQuote binaryNumber hexNumber") }); - CodeMirror.defineMIME('text/x-pgsql', { - name: 'sql', - client: set('source'), + CodeMirror.defineMIME("text/x-pgsql", { + name: "sql", + client: set("source"), // For PostgreSQL - https://www.postgresql.org/docs/11/sql-keywords-appendix.html // For pl/pgsql lang - https://github.com/postgres/postgres/blob/REL_11_2/src/pl/plpgsql/src/pl_scanner.c - keywords: set( - sqlKeywords + - 'a abort abs absent absolute access according action ada add admin after aggregate alias all allocate also alter always analyse analyze and any are array array_agg array_max_cardinality as asc asensitive assert assertion assignment asymmetric at atomic attach attribute attributes authorization avg backward base64 before begin begin_frame begin_partition bernoulli between bigint binary bit bit_length blob blocked bom boolean both breadth by c cache call called cardinality cascade cascaded case cast catalog catalog_name ceil ceiling chain char char_length character character_length character_set_catalog character_set_name character_set_schema characteristics characters check checkpoint class class_origin clob close cluster coalesce cobol collate collation collation_catalog collation_name collation_schema collect column column_name columns command_function command_function_code comment comments commit committed concurrently condition condition_number configuration conflict connect connection connection_name constant constraint constraint_catalog constraint_name constraint_schema constraints constructor contains content continue control conversion convert copy corr corresponding cost count covar_pop covar_samp create cross csv cube cume_dist current current_catalog current_date current_default_transform_group current_path current_role current_row current_schema current_time current_timestamp current_transform_group_for_type current_user cursor cursor_name cycle data database datalink datatype date datetime_interval_code datetime_interval_precision day db deallocate debug dec decimal declare default defaults deferrable deferred defined definer degree delete delimiter delimiters dense_rank depends depth deref derived desc describe descriptor detach detail deterministic diagnostics dictionary disable discard disconnect dispatch distinct dlnewcopy dlpreviouscopy dlurlcomplete dlurlcompleteonly dlurlcompletewrite dlurlpath dlurlpathonly dlurlpathwrite dlurlscheme dlurlserver dlvalue do document domain double drop dump dynamic dynamic_function dynamic_function_code each element else elseif elsif empty enable encoding encrypted end end_frame end_partition endexec enforced enum equals errcode error escape event every except exception exclude excluding exclusive exec execute exists exit exp explain expression extension external extract false family fetch file filter final first first_value flag float floor following for force foreach foreign fortran forward found frame_row free freeze from fs full function functions fusion g general generated get global go goto grant granted greatest group grouping groups handler having header hex hierarchy hint hold hour id identity if ignore ilike immediate immediately immutable implementation implicit import in include including increment indent index indexes indicator info inherit inherits initially inline inner inout input insensitive insert instance instantiable instead int integer integrity intersect intersection interval into invoker is isnull isolation join k key key_member key_type label lag language large last last_value lateral lead leading leakproof least left length level library like like_regex limit link listen ln load local localtime localtimestamp location locator lock locked log logged loop lower m map mapping match matched materialized max max_cardinality maxvalue member merge message message_length message_octet_length message_text method min minute minvalue mod mode modifies module month more move multiset mumps name names namespace national natural nchar nclob nesting new next nfc nfd nfkc nfkd nil no none normalize normalized not nothing notice notify notnull nowait nth_value ntile null nullable nullif nulls number numeric object occurrences_regex octet_length octets of off offset oids old on only open operator option options or order ordering ordinality others out outer output over overlaps overlay overriding owned owner p pad parallel parameter parameter_mode parameter_name parameter_ordinal_position parameter_specific_catalog parameter_specific_name parameter_specific_schema parser partial partition pascal passing passthrough password path percent percent_rank percentile_cont percentile_disc perform period permission pg_context pg_datatype_name pg_exception_context pg_exception_detail pg_exception_hint placing plans pli policy portion position position_regex power precedes preceding precision prepare prepared preserve primary print_strict_params prior privileges procedural procedure procedures program public publication query quote raise range rank read reads real reassign recheck recovery recursive ref references referencing refresh regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy regr_syy reindex relative release rename repeatable replace replica requiring reset respect restart restore restrict result result_oid return returned_cardinality returned_length returned_octet_length returned_sqlstate returning returns reverse revoke right role rollback rollup routine routine_catalog routine_name routine_schema routines row row_count row_number rows rowtype rule savepoint scale schema schema_name schemas scope scope_catalog scope_name scope_schema scroll search second section security select selective self sensitive sequence sequences serializable server server_name session session_user set setof sets share show similar simple size skip slice smallint snapshot some source space specific specific_name specifictype sql sqlcode sqlerror sqlexception sqlstate sqlwarning sqrt stable stacked standalone start state statement static statistics stddev_pop stddev_samp stdin stdout storage strict strip structure style subclass_origin submultiset subscription substring substring_regex succeeds sum symmetric sysid system system_time system_user t table table_name tables tablesample tablespace temp template temporary text then ties time timestamp timezone_hour timezone_minute to token top_level_count trailing transaction transaction_active transactions_committed transactions_rolled_back transform transforms translate translate_regex translation treat trigger trigger_catalog trigger_name trigger_schema trim trim_array true truncate trusted type types uescape unbounded uncommitted under unencrypted union unique unknown unlink unlisten unlogged unnamed unnest until untyped update upper uri usage use_column use_variable user user_defined_type_catalog user_defined_type_code user_defined_type_name user_defined_type_schema using vacuum valid validate validator value value_of values var_pop var_samp varbinary varchar variable_conflict variadic varying verbose version versioning view views volatile warning when whenever where while whitespace width_bucket window with within without work wrapper write xml xmlagg xmlattributes xmlbinary xmlcast xmlcomment xmlconcat xmldeclaration xmldocument xmlelement xmlexists xmlforest xmliterate xmlnamespaces xmlparse xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltext xmlvalidate year yes zone', - ), + keywords: set(sqlKeywords + "a abort abs absent absolute access according action ada add admin after aggregate alias all allocate also alter always analyse analyze and any are array array_agg array_max_cardinality as asc asensitive assert assertion assignment asymmetric at atomic attach attribute attributes authorization avg backward base64 before begin begin_frame begin_partition bernoulli between bigint binary bit bit_length blob blocked bom boolean both breadth by c cache call called cardinality cascade cascaded case cast catalog catalog_name ceil ceiling chain char char_length character character_length character_set_catalog character_set_name character_set_schema characteristics characters check checkpoint class class_origin clob close cluster coalesce cobol collate collation collation_catalog collation_name collation_schema collect column column_name columns command_function command_function_code comment comments commit committed concurrently condition condition_number configuration conflict connect connection connection_name constant constraint constraint_catalog constraint_name constraint_schema constraints constructor contains content continue control conversion convert copy corr corresponding cost count covar_pop covar_samp create cross csv cube cume_dist current current_catalog current_date current_default_transform_group current_path current_role current_row current_schema current_time current_timestamp current_transform_group_for_type current_user cursor cursor_name cycle data database datalink datatype date datetime_interval_code datetime_interval_precision day db deallocate debug dec decimal declare default defaults deferrable deferred defined definer degree delete delimiter delimiters dense_rank depends depth deref derived desc describe descriptor detach detail deterministic diagnostics dictionary disable discard disconnect dispatch distinct dlnewcopy dlpreviouscopy dlurlcomplete dlurlcompleteonly dlurlcompletewrite dlurlpath dlurlpathonly dlurlpathwrite dlurlscheme dlurlserver dlvalue do document domain double drop dump dynamic dynamic_function dynamic_function_code each element else elseif elsif empty enable encoding encrypted end end_frame end_partition endexec enforced enum equals errcode error escape event every except exception exclude excluding exclusive exec execute exists exit exp explain expression extension external extract false family fetch file filter final first first_value flag float floor following for force foreach foreign fortran forward found frame_row free freeze from fs full function functions fusion g general generated get global go goto grant granted greatest group grouping groups handler having header hex hierarchy hint hold hour id identity if ignore ilike immediate immediately immutable implementation implicit import in include including increment indent index indexes indicator info inherit inherits initially inline inner inout input insensitive insert instance instantiable instead int integer integrity intersect intersection interval into invoker is isnull isolation join k key key_member key_type label lag language large last last_value lateral lead leading leakproof least left length level library like like_regex limit link listen ln load local localtime localtimestamp location locator lock locked log logged loop lower m map mapping match matched materialized max max_cardinality maxvalue member merge message message_length message_octet_length message_text method min minute minvalue mod mode modifies module month more move multiset mumps name names namespace national natural nchar nclob nesting new next nfc nfd nfkc nfkd nil no none normalize normalized not nothing notice notify notnull nowait nth_value ntile null nullable nullif nulls number numeric object occurrences_regex octet_length octets of off offset oids old on only open operator option options or order ordering ordinality others out outer output over overlaps overlay overriding owned owner p pad parallel parameter parameter_mode parameter_name parameter_ordinal_position parameter_specific_catalog parameter_specific_name parameter_specific_schema parser partial partition pascal passing passthrough password path percent percent_rank percentile_cont percentile_disc perform period permission pg_context pg_datatype_name pg_exception_context pg_exception_detail pg_exception_hint placing plans pli policy portion position position_regex power precedes preceding precision prepare prepared preserve primary print_strict_params prior privileges procedural procedure procedures program public publication query quote raise range rank read reads real reassign recheck recovery recursive ref references referencing refresh regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy regr_syy reindex relative release rename repeatable replace replica requiring reset respect restart restore restrict result result_oid return returned_cardinality returned_length returned_octet_length returned_sqlstate returning returns reverse revoke right role rollback rollup routine routine_catalog routine_name routine_schema routines row row_count row_number rows rowtype rule savepoint scale schema schema_name schemas scope scope_catalog scope_name scope_schema scroll search second section security select selective self sensitive sequence sequences serializable server server_name session session_user set setof sets share show similar simple size skip slice smallint snapshot some source space specific specific_name specifictype sql sqlcode sqlerror sqlexception sqlstate sqlwarning sqrt stable stacked standalone start state statement static statistics stddev_pop stddev_samp stdin stdout storage strict strip structure style subclass_origin submultiset subscription substring substring_regex succeeds sum symmetric sysid system system_time system_user t table table_name tables tablesample tablespace temp template temporary text then ties time timestamp timezone_hour timezone_minute to token top_level_count trailing transaction transaction_active transactions_committed transactions_rolled_back transform transforms translate translate_regex translation treat trigger trigger_catalog trigger_name trigger_schema trim trim_array true truncate trusted type types uescape unbounded uncommitted under unencrypted union unique unknown unlink unlisten unlogged unnamed unnest until untyped update upper uri usage use_column use_variable user user_defined_type_catalog user_defined_type_code user_defined_type_name user_defined_type_schema using vacuum valid validate validator value value_of values var_pop var_samp varbinary varchar variable_conflict variadic varying verbose version versioning view views volatile warning when whenever where while whitespace width_bucket window with within without work wrapper write xml xmlagg xmlattributes xmlbinary xmlcast xmlcomment xmlconcat xmldeclaration xmldocument xmlelement xmlexists xmlforest xmliterate xmlnamespaces xmlparse xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltext xmlvalidate year yes zone"), // https://www.postgresql.org/docs/11/datatype.html - builtin: set( - 'bigint int8 bigserial serial8 bit varying varbit boolean bool box bytea character char varchar cidr circle date double precision float8 inet integer int int4 interval json jsonb line lseg macaddr macaddr8 money numeric decimal path pg_lsn point polygon real float4 smallint int2 smallserial serial2 serial serial4 text time without zone with timetz timestamp timestamptz tsquery tsvector txid_snapshot uuid xml', - ), - atoms: set('false true null unknown'), + builtin: set("bigint int8 bigserial serial8 bit varying varbit boolean bool box bytea character char varchar cidr circle date double precision float8 inet integer int int4 interval json jsonb line lseg macaddr macaddr8 money numeric decimal path pg_lsn point polygon real float4 smallint int2 smallserial serial2 serial serial4 text time zone timetz timestamp timestamptz tsquery tsvector txid_snapshot uuid xml"), + atoms: set("false true null unknown"), operatorChars: /^[*\/+\-%<>!=&|^\/#@?~]/, backslashStringEscapes: false, - dateSQL: set('date time timestamp'), - support: set( - 'ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber nCharCast charsetCast escapeConstant', - ), + dateSQL: set("date time timestamp"), + support: set("decimallessFloat zerolessFloat binaryNumber hexNumber nCharCast charsetCast escapeConstant") }); // Google's SQL-like query language, GQL - CodeMirror.defineMIME('text/x-gql', { - name: 'sql', - keywords: set( - 'ancestor and asc by contains desc descendant distinct from group has in is limit offset on order select superset where', - ), - atoms: set('false true'), - builtin: set( - 'blob datetime first key __key__ string integer double boolean null', - ), - operatorChars: /^[*+\-%<>!=]/, + CodeMirror.defineMIME("text/x-gql", { + name: "sql", + keywords: set("ancestor and asc by contains desc descendant distinct from group has in is limit offset on order select superset where"), + atoms: set("false true"), + builtin: set("blob datetime first key __key__ string integer double boolean null"), + operatorChars: /^[*+\-%<>!=]/ }); // Greenplum - CodeMirror.defineMIME('text/x-gpsql', { - name: 'sql', - client: set('source'), + CodeMirror.defineMIME("text/x-gpsql", { + name: "sql", + client: set("source"), //https://github.com/greenplum-db/gpdb/blob/master/src/include/parser/kwlist.h - keywords: set( - 'abort absolute access action active add admin after aggregate all also alter always analyse analyze and any array as asc assertion assignment asymmetric at authorization backward before begin between bigint binary bit boolean both by cache called cascade cascaded case cast chain char character characteristics check checkpoint class close cluster coalesce codegen collate column comment commit committed concurrency concurrently configuration connection constraint constraints contains content continue conversion copy cost cpu_rate_limit create createdb createexttable createrole createuser cross csv cube current current_catalog current_date current_role current_schema current_time current_timestamp current_user cursor cycle data database day deallocate dec decimal declare decode default defaults deferrable deferred definer delete delimiter delimiters deny desc dictionary disable discard distinct distributed do document domain double drop dxl each else enable encoding encrypted end enum errors escape every except exchange exclude excluding exclusive execute exists explain extension external extract false family fetch fields filespace fill filter first float following for force foreign format forward freeze from full function global grant granted greatest group group_id grouping handler hash having header hold host hour identity if ignore ilike immediate immutable implicit in including inclusive increment index indexes inherit inherits initially inline inner inout input insensitive insert instead int integer intersect interval into invoker is isnull isolation join key language large last leading least left level like limit list listen load local localtime localtimestamp location lock log login mapping master match maxvalue median merge minute minvalue missing mode modifies modify month move name names national natural nchar new newline next no nocreatedb nocreateexttable nocreaterole nocreateuser noinherit nologin none noovercommit nosuperuser not nothing notify notnull nowait null nullif nulls numeric object of off offset oids old on only operator option options or order ordered others out outer over overcommit overlaps overlay owned owner parser partial partition partitions passing password percent percentile_cont percentile_disc placing plans position preceding precision prepare prepared preserve primary prior privileges procedural procedure protocol queue quote randomly range read readable reads real reassign recheck recursive ref references reindex reject relative release rename repeatable replace replica reset resource restart restrict returning returns revoke right role rollback rollup rootpartition row rows rule savepoint scatter schema scroll search second security segment select sequence serializable session session_user set setof sets share show similar simple smallint some split sql stable standalone start statement statistics stdin stdout storage strict strip subpartition subpartitions substring superuser symmetric sysid system table tablespace temp template temporary text then threshold ties time timestamp to trailing transaction treat trigger trim true truncate trusted type unbounded uncommitted unencrypted union unique unknown unlisten until update user using vacuum valid validation validator value values varchar variadic varying verbose version view volatile web when where whitespace window with within without work writable write xml xmlattributes xmlconcat xmlelement xmlexists xmlforest xmlparse xmlpi xmlroot xmlserialize year yes zone', - ), - builtin: set( - 'bigint int8 bigserial serial8 bit varying varbit boolean bool box bytea character char varchar cidr circle date double precision float float8 inet integer int int4 interval json jsonb line lseg macaddr macaddr8 money numeric decimal path pg_lsn point polygon real float4 smallint int2 smallserial serial2 serial serial4 text time without zone with timetz timestamp timestamptz tsquery tsvector txid_snapshot uuid xml', - ), - atoms: set('false true null unknown'), + keywords: set("abort absolute access action active add admin after aggregate all also alter always analyse analyze and any array as asc assertion assignment asymmetric at authorization backward before begin between bigint binary bit boolean both by cache called cascade cascaded case cast chain char character characteristics check checkpoint class close cluster coalesce codegen collate column comment commit committed concurrency concurrently configuration connection constraint constraints contains content continue conversion copy cost cpu_rate_limit create createdb createexttable createrole createuser cross csv cube current current_catalog current_date current_role current_schema current_time current_timestamp current_user cursor cycle data database day deallocate dec decimal declare decode default defaults deferrable deferred definer delete delimiter delimiters deny desc dictionary disable discard distinct distributed do document domain double drop dxl each else enable encoding encrypted end enum errors escape every except exchange exclude excluding exclusive execute exists explain extension external extract false family fetch fields filespace fill filter first float following for force foreign format forward freeze from full function global grant granted greatest group group_id grouping handler hash having header hold host hour identity if ignore ilike immediate immutable implicit in including inclusive increment index indexes inherit inherits initially inline inner inout input insensitive insert instead int integer intersect interval into invoker is isnull isolation join key language large last leading least left level like limit list listen load local localtime localtimestamp location lock log login mapping master match maxvalue median merge minute minvalue missing mode modifies modify month move name names national natural nchar new newline next no nocreatedb nocreateexttable nocreaterole nocreateuser noinherit nologin none noovercommit nosuperuser not nothing notify notnull nowait null nullif nulls numeric object of off offset oids old on only operator option options or order ordered others out outer over overcommit overlaps overlay owned owner parser partial partition partitions passing password percent percentile_cont percentile_disc placing plans position preceding precision prepare prepared preserve primary prior privileges procedural procedure protocol queue quote randomly range read readable reads real reassign recheck recursive ref references reindex reject relative release rename repeatable replace replica reset resource restart restrict returning returns revoke right role rollback rollup rootpartition row rows rule savepoint scatter schema scroll search second security segment select sequence serializable session session_user set setof sets share show similar simple smallint some split sql stable standalone start statement statistics stdin stdout storage strict strip subpartition subpartitions substring superuser symmetric sysid system table tablespace temp template temporary text then threshold ties time timestamp to trailing transaction treat trigger trim true truncate trusted type unbounded uncommitted unencrypted union unique unknown unlisten until update user using vacuum valid validation validator value values varchar variadic varying verbose version view volatile web when where whitespace window with within without work writable write xml xmlattributes xmlconcat xmlelement xmlexists xmlforest xmlparse xmlpi xmlroot xmlserialize year yes zone"), + builtin: set("bigint int8 bigserial serial8 bit varying varbit boolean bool box bytea character char varchar cidr circle date double precision float float8 inet integer int int4 interval json jsonb line lseg macaddr macaddr8 money numeric decimal path pg_lsn point polygon real float4 smallint int2 smallserial serial2 serial serial4 text time without zone with timetz timestamp timestamptz tsquery tsvector txid_snapshot uuid xml"), + atoms: set("false true null unknown"), operatorChars: /^[*+\-%<>!=&|^\/#@?~]/, - dateSQL: set('date time timestamp'), - support: set( - 'ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber nCharCast charsetCast', - ), + dateSQL: set("date time timestamp"), + support: set("decimallessFloat zerolessFloat binaryNumber hexNumber nCharCast charsetCast") }); // Spark SQL - CodeMirror.defineMIME('text/x-sparksql', { - name: 'sql', - keywords: set( - 'add after all alter analyze and anti archive array as asc at between bucket buckets by cache cascade case cast change clear cluster clustered codegen collection column columns comment commit compact compactions compute concatenate cost create cross cube current current_date current_timestamp database databases datata dbproperties defined delete delimited deny desc describe dfs directories distinct distribute drop else end escaped except exchange exists explain export extended external false fields fileformat first following for format formatted from full function functions global grant group grouping having if ignore import in index indexes inner inpath inputformat insert intersect interval into is items join keys last lateral lazy left like limit lines list load local location lock locks logical macro map minus msck natural no not null nulls of on optimize option options or order out outer outputformat over overwrite partition partitioned partitions percent preceding principals purge range recordreader recordwriter recover reduce refresh regexp rename repair replace reset restrict revoke right rlike role roles rollback rollup row rows schema schemas select semi separated serde serdeproperties set sets show skewed sort sorted start statistics stored stratify struct table tables tablesample tblproperties temp temporary terminated then to touch transaction transactions transform true truncate unarchive unbounded uncache union unlock unset use using values view when where window with', - ), - builtin: set( - 'tinyint smallint int bigint boolean float double string binary timestamp decimal array map struct uniontype delimited serde sequencefile textfile rcfile inputformat outputformat', - ), - atoms: set('false true null'), + CodeMirror.defineMIME("text/x-sparksql", { + name: "sql", + keywords: set("add after all alter analyze and anti archive array as asc at between bucket buckets by cache cascade case cast change clear cluster clustered codegen collection column columns comment commit compact compactions compute concatenate cost create cross cube current current_date current_timestamp database databases data dbproperties defined delete delimited deny desc describe dfs directories distinct distribute drop else end escaped except exchange exists explain export extended external false fields fileformat first following for format formatted from full function functions global grant group grouping having if ignore import in index indexes inner inpath inputformat insert intersect interval into is items join keys last lateral lazy left like limit lines list load local location lock locks logical macro map minus msck natural no not null nulls of on optimize option options or order out outer outputformat over overwrite partition partitioned partitions percent preceding principals purge range recordreader recordwriter recover reduce refresh regexp rename repair replace reset restrict revoke right rlike role roles rollback rollup row rows schema schemas select semi separated serde serdeproperties set sets show skewed sort sorted start statistics stored stratify struct table tables tablesample tblproperties temp temporary terminated then to touch transaction transactions transform true truncate unarchive unbounded uncache union unlock unset use using values view when where window with"), + builtin: set("abs acos acosh add_months aggregate and any approx_count_distinct approx_percentile array array_contains array_distinct array_except array_intersect array_join array_max array_min array_position array_remove array_repeat array_sort array_union arrays_overlap arrays_zip ascii asin asinh assert_true atan atan2 atanh avg base64 between bigint bin binary bit_and bit_count bit_get bit_length bit_or bit_xor bool_and bool_or boolean bround btrim cardinality case cast cbrt ceil ceiling char char_length character_length chr coalesce collect_list collect_set concat concat_ws conv corr cos cosh cot count count_if count_min_sketch covar_pop covar_samp crc32 cume_dist current_catalog current_database current_date current_timestamp current_timezone current_user date date_add date_format date_from_unix_date date_part date_sub date_trunc datediff day dayofmonth dayofweek dayofyear decimal decode degrees delimited dense_rank div double e element_at elt encode every exists exp explode explode_outer expm1 extract factorial filter find_in_set first first_value flatten float floor forall format_number format_string from_csv from_json from_unixtime from_utc_timestamp get_json_object getbit greatest grouping grouping_id hash hex hour hypot if ifnull in initcap inline inline_outer input_file_block_length input_file_block_start input_file_name inputformat instr int isnan isnotnull isnull java_method json_array_length json_object_keys json_tuple kurtosis lag last last_day last_value lcase lead least left length levenshtein like ln locate log log10 log1p log2 lower lpad ltrim make_date make_dt_interval make_interval make_timestamp make_ym_interval map map_concat map_entries map_filter map_from_arrays map_from_entries map_keys map_values map_zip_with max max_by md5 mean min min_by minute mod monotonically_increasing_id month months_between named_struct nanvl negative next_day not now nth_value ntile nullif nvl nvl2 octet_length or outputformat overlay parse_url percent_rank percentile percentile_approx pi pmod posexplode posexplode_outer position positive pow power printf quarter radians raise_error rand randn random rank rcfile reflect regexp regexp_extract regexp_extract_all regexp_like regexp_replace repeat replace reverse right rint rlike round row_number rpad rtrim schema_of_csv schema_of_json second sentences sequence sequencefile serde session_window sha sha1 sha2 shiftleft shiftright shiftrightunsigned shuffle sign signum sin sinh size skewness slice smallint some sort_array soundex space spark_partition_id split sqrt stack std stddev stddev_pop stddev_samp str_to_map string struct substr substring substring_index sum tan tanh textfile timestamp timestamp_micros timestamp_millis timestamp_seconds tinyint to_csv to_date to_json to_timestamp to_unix_timestamp to_utc_timestamp transform transform_keys transform_values translate trim trunc try_add try_divide typeof ucase unbase64 unhex uniontype unix_date unix_micros unix_millis unix_seconds unix_timestamp upper uuid var_pop var_samp variance version weekday weekofyear when width_bucket window xpath xpath_boolean xpath_double xpath_float xpath_int xpath_long xpath_number xpath_short xpath_string xxhash64 year zip_with"), + atoms: set("false true null"), operatorChars: /^[*\/+\-%<>!=~&|^]/, - dateSQL: set('date time timestamp'), - support: set('ODBCdotTable doubleQuote zerolessFloat'), + dateSQL: set("date time timestamp"), + support: set("doubleQuote zerolessFloat") }); // Esper - CodeMirror.defineMIME('text/x-esper', { - name: 'sql', - client: set('source'), + CodeMirror.defineMIME("text/x-esper", { + name: "sql", + client: set("source"), // http://www.espertech.com/esper/release-5.5.0/esper-reference/html/appendix_keywords.html - keywords: set( - 'alter and as asc between by count create delete desc distinct drop from group having in insert into is join like not on or order select set table union update values where limit after all and as at asc avedev avg between by case cast coalesce count create current_timestamp day days delete define desc distinct else end escape events every exists false first from full group having hour hours in inner insert instanceof into irstream is istream join last lastweekday left limit like max match_recognize matches median measures metadatasql min minute minutes msec millisecond milliseconds not null offset on or order outer output partition pattern prev prior regexp retain-union retain-intersection right rstream sec second seconds select set some snapshot sql stddev sum then true unidirectional until update variable weekday when where window', - ), + keywords: set("alter and as asc between by count create delete desc distinct drop from group having in insert into is join like not on or order select set table union update values where limit after all and as at asc avedev avg between by case cast coalesce count create current_timestamp day days delete define desc distinct else end escape events every exists false first from full group having hour hours in inner insert instanceof into irstream is istream join last lastweekday left limit like max match_recognize matches median measures metadatasql min minute minutes msec millisecond milliseconds not null offset on or order outer output partition pattern prev prior regexp retain-union retain-intersection right rstream sec second seconds select set some snapshot sql stddev sum then true unidirectional until update variable weekday when where window"), builtin: {}, - atoms: set('false true null'), + atoms: set("false true null"), operatorChars: /^[*+\-%<>!=&|^\/#@?~]/, - dateSQL: set('time'), - support: set('decimallessFloat zerolessFloat binaryNumber hexNumber'), + dateSQL: set("time"), + support: set("decimallessFloat zerolessFloat binaryNumber hexNumber") + }); + + // Trino (formerly known as Presto) + CodeMirror.defineMIME("text/x-trino", { + name: "sql", + // https://github.com/trinodb/trino/blob/bc7a4eeedde28684c7ae6f74cefcaf7c6e782174/core/trino-parser/src/main/antlr4/io/trino/sql/parser/SqlBase.g4#L859-L1129 + // https://github.com/trinodb/trino/blob/bc7a4eeedde28684c7ae6f74cefcaf7c6e782174/docs/src/main/sphinx/functions/list.rst + keywords: set("abs absent acos add admin after all all_match alter analyze and any any_match approx_distinct approx_most_frequent approx_percentile approx_set arbitrary array_agg array_distinct array_except array_intersect array_join array_max array_min array_position array_remove array_sort array_union arrays_overlap as asc asin at at_timezone atan atan2 authorization avg bar bernoulli beta_cdf between bing_tile bing_tile_at bing_tile_coordinates bing_tile_polygon bing_tile_quadkey bing_tile_zoom_level bing_tiles_around bit_count bitwise_and bitwise_and_agg bitwise_left_shift bitwise_not bitwise_or bitwise_or_agg bitwise_right_shift bitwise_right_shift_arithmetic bitwise_xor bool_and bool_or both by call cardinality cascade case cast catalogs cbrt ceil ceiling char2hexint checksum chr classify coalesce codepoint column columns combinations comment commit committed concat concat_ws conditional constraint contains contains_sequence convex_hull_agg copartition corr cos cosh cosine_similarity count count_if covar_pop covar_samp crc32 create cross cube cume_dist current current_catalog current_date current_groups current_path current_role current_schema current_time current_timestamp current_timezone current_user data date_add date_diff date_format date_parse date_trunc day day_of_month day_of_week day_of_year deallocate default define definer degrees delete dense_rank deny desc describe descriptor distinct distributed dow doy drop e element_at else empty empty_approx_set encoding end error escape evaluate_classifier_predictions every except excluding execute exists exp explain extract false features fetch filter final first first_value flatten floor following for format format_datetime format_number from from_base from_base32 from_base64 from_base64url from_big_endian_32 from_big_endian_64 from_encoded_polyline from_geojson_geometry from_hex from_ieee754_32 from_ieee754_64 from_iso8601_date from_iso8601_timestamp from_iso8601_timestamp_nanos from_unixtime from_unixtime_nanos from_utf8 full functions geometric_mean geometry_from_hadoop_shape geometry_invalid_reason geometry_nearest_points geometry_to_bing_tiles geometry_union geometry_union_agg grant granted grants graphviz great_circle_distance greatest group grouping groups hamming_distance hash_counts having histogram hmac_md5 hmac_sha1 hmac_sha256 hmac_sha512 hour human_readable_seconds if ignore in including index infinity initial inner input insert intersect intersection_cardinality into inverse_beta_cdf inverse_normal_cdf invoker io is is_finite is_infinite is_json_scalar is_nan isolation jaccard_index join json_array json_array_contains json_array_get json_array_length json_exists json_extract json_extract_scalar json_format json_object json_parse json_query json_size json_value keep key keys kurtosis lag last last_day_of_month last_value lateral lead leading learn_classifier learn_libsvm_classifier learn_libsvm_regressor learn_regressor least left length level levenshtein_distance like limit line_interpolate_point line_interpolate_points line_locate_point listagg ln local localtime localtimestamp log log10 log2 logical lower lpad ltrim luhn_check make_set_digest map_agg map_concat map_entries map_filter map_from_entries map_keys map_union map_values map_zip_with match match_recognize matched matches materialized max max_by md5 measures merge merge_set_digest millisecond min min_by minute mod month multimap_agg multimap_from_entries murmur3 nan natural next nfc nfd nfkc nfkd ngrams no none none_match normal_cdf normalize not now nth_value ntile null nullif nulls numeric_histogram object objectid_timestamp of offset omit on one only option or order ordinality outer output over overflow parse_data_size parse_datetime parse_duration partition partitions passing past path pattern per percent_rank permute pi position pow power preceding prepare privileges properties prune qdigest_agg quarter quotes radians rand random range rank read recursive reduce reduce_agg refresh regexp_count regexp_extract regexp_extract_all regexp_like regexp_position regexp_replace regexp_split regr_intercept regr_slope regress rename render repeat repeatable replace reset respect restrict returning reverse revoke rgb right role roles rollback rollup round row_number rows rpad rtrim running scalar schema schemas second security seek select sequence serializable session set sets sha1 sha256 sha512 show shuffle sign simplify_geometry sin skewness skip slice some soundex spatial_partitioning spatial_partitions split split_part split_to_map split_to_multimap spooky_hash_v2_32 spooky_hash_v2_64 sqrt st_area st_asbinary st_astext st_boundary st_buffer st_centroid st_contains st_convexhull st_coorddim st_crosses st_difference st_dimension st_disjoint st_distance st_endpoint st_envelope st_envelopeaspts st_equals st_exteriorring st_geometries st_geometryfromtext st_geometryn st_geometrytype st_geomfrombinary st_interiorringn st_interiorrings st_intersection st_intersects st_isclosed st_isempty st_isring st_issimple st_isvalid st_length st_linefromtext st_linestring st_multipoint st_numgeometries st_numinteriorring st_numpoints st_overlaps st_point st_pointn st_points st_polygon st_relate st_startpoint st_symdifference st_touches st_union st_within st_x st_xmax st_xmin st_y st_ymax st_ymin start starts_with stats stddev stddev_pop stddev_samp string strpos subset substr substring sum system table tables tablesample tan tanh tdigest_agg text then ties timestamp_objectid timezone_hour timezone_minute to to_base to_base32 to_base64 to_base64url to_big_endian_32 to_big_endian_64 to_char to_date to_encoded_polyline to_geojson_geometry to_geometry to_hex to_ieee754_32 to_ieee754_64 to_iso8601 to_milliseconds to_spherical_geography to_timestamp to_unixtime to_utf8 trailing transaction transform transform_keys transform_values translate trim trim_array true truncate try try_cast type typeof uescape unbounded uncommitted unconditional union unique unknown unmatched unnest update upper url_decode url_encode url_extract_fragment url_extract_host url_extract_parameter url_extract_path url_extract_port url_extract_protocol url_extract_query use user using utf16 utf32 utf8 validate value value_at_quantile values values_at_quantiles var_pop var_samp variance verbose version view week week_of_year when where width_bucket wilson_interval_lower wilson_interval_upper window with with_timezone within without word_stem work wrapper write xxhash64 year year_of_week yow zip zip_with"), + // https://github.com/trinodb/trino/blob/bc7a4eeedde28684c7ae6f74cefcaf7c6e782174/core/trino-main/src/main/java/io/trino/metadata/TypeRegistry.java#L131-L168 + // https://github.com/trinodb/trino/blob/bc7a4eeedde28684c7ae6f74cefcaf7c6e782174/plugin/trino-ml/src/main/java/io/trino/plugin/ml/MLPlugin.java#L35 + // https://github.com/trinodb/trino/blob/bc7a4eeedde28684c7ae6f74cefcaf7c6e782174/plugin/trino-mongodb/src/main/java/io/trino/plugin/mongodb/MongoPlugin.java#L32 + // https://github.com/trinodb/trino/blob/bc7a4eeedde28684c7ae6f74cefcaf7c6e782174/plugin/trino-geospatial/src/main/java/io/trino/plugin/geospatial/GeoPlugin.java#L37 + builtin: set("array bigint bingtile boolean char codepoints color date decimal double function geometry hyperloglog int integer interval ipaddress joniregexp json json2016 jsonpath kdbtree likepattern map model objectid p4hyperloglog precision qdigest re2jregexp real regressor row setdigest smallint sphericalgeography tdigest time timestamp tinyint uuid varbinary varchar zone"), + atoms: set("false true null unknown"), + // https://trino.io/docs/current/functions/list.html#id1 + operatorChars: /^[[\]|<>=!\-+*/%]/, + dateSQL: set("date time timestamp zone"), + // hexNumber is necessary for VARBINARY literals, e.g. X'65683F' + // but it also enables 0xFF hex numbers, which Trino doesn't support. + support: set("decimallessFloat zerolessFloat hexNumber") }); }); @@ -598,9 +506,12 @@ Commands parsed and executed by the client (not the server). support: A list of supported syntaxes which are not common, but are supported by more than 1 DBMS. - * ODBCdotTable: .tableName * zerolessFloat: .1 - * doubleQuote + * decimallessFloat: 1. + * hexNumber: X'01AF' X'01af' x'01AF' x'01af' 0x01AF 0x01af + * binaryNumber: b'01' B'01' 0b01 + * doubleQuote: "string" + * escapeConstant: E'' * nCharCast: N'string' * charsetCast: _utf8'string' * commentHash: use # char for comments diff --git a/web/static/lib/codemirror/ttcn.scss b/web/static/lib/codemirror/ttcn.scss index 1af850dc..59067a95 100644 --- a/web/static/lib/codemirror/ttcn.scss +++ b/web/static/lib/codemirror/ttcn.scss @@ -1,197 +1,58 @@ -.cm-s-ttcn.CodeMirror { - background: #f5f2f0; - color: black; -} -.cm-s-ttcn .CodeMirror-overlayscroll-vertical { - width: 8px; - transition: width 0.15s linear; -} -.cm-s-ttcn .CodeMirror-overlayscroll-vertical > div { - background: rgba(0, 0, 0, 0.4); -} -.cm-s-ttcn .CodeMirror-overlayscroll-vertical:hover { - width: 12px; -} -.cm-s-ttcn .CodeMirror-overlayscroll-vertical:hover > div { - border-radius: 6px; -} -.cm-s-ttcn .CodeMirror-gutters { - border-right: 1px solid #999; -} -.cm-s-ttcn .CodeMirror-gutter, -.cm-s-ttcn .CodeMirror-linenumbers { - width: 1.4em; - background: #f5f2f0; - padding-right: 0.8em; -} -.cm-s-ttcn pre.CodeMirror-line, -.cm-s-ttcn pre.CodeMirror-line-like { - padding: 0 0.8em; -} +.cm-s-ttcn .cm-quote { color: #090; } +.cm-s-ttcn .cm-negative { color: #d44; } +.cm-s-ttcn .cm-positive { color: #292; } +.cm-s-ttcn .cm-header, .cm-strong { font-weight: bold; } +.cm-s-ttcn .cm-em { font-style: italic; } +.cm-s-ttcn .cm-strikethrough { text-decoration: line-through; } +.cm-s-ttcn .cm-header { color: #00f; font-weight: bold; } -.cm-s-ttcn .cm-quote { - color: #090; -} -.cm-s-ttcn .cm-negative { - color: #d44; -} -.cm-s-ttcn .cm-positive { - color: #292; -} -.cm-s-ttcn .cm-header, -.cm-strong { - font-weight: bold; -} -.cm-s-ttcn .cm-em { - font-style: italic; -} -.cm-s-ttcn .cm-link { - text-decoration: underline; -} -.cm-s-ttcn .cm-strikethrough { - text-decoration: line-through; -} -.cm-s-ttcn .cm-header { - color: #00f; - font-weight: bold; -} +.cm-s-ttcn .cm-atom { color: #219; } +.cm-s-ttcn .cm-attribute { color: #00c; } +.cm-s-ttcn .cm-bracket { color: #997; } +.cm-s-ttcn .cm-comment { color: #333333; } +.cm-s-ttcn .cm-def { color: #00f; } +.cm-s-ttcn .cm-error { color: #f00; } +.cm-s-ttcn .cm-hr { color: #999; } +.cm-s-ttcn .cm-invalidchar { color: #f00; } +.cm-s-ttcn .cm-keyword { font-weight:bold; } +.cm-s-ttcn .cm-link { color: #00c; text-decoration: underline; } +.cm-s-ttcn .cm-meta { color: #555; } +.cm-s-ttcn .cm-qualifier { color: #555; } +.cm-s-ttcn .cm-string { color: #006400; } +.cm-s-ttcn .cm-string-2 { color: #f50; } +.cm-s-ttcn .cm-strong { font-weight: bold; } +.cm-s-ttcn .cm-tag { color: #170; } +.cm-s-ttcn .cm-variable { color: #8B2252; } +.cm-s-ttcn .cm-variable-2 { color: #05a; } +.cm-s-ttcn .cm-variable-3, .cm-s-ttcn .cm-type { color: #085; } -.cm-s-ttcn .cm-atom { - color: #905; -} -.cm-s-ttcn .cm-attribute { - color: #690; -} -.cm-s-ttcn .cm-bracket { - color: #997; -} -.cm-s-ttcn .cm-comment { - color: #333333; -} -.cm-s-ttcn .cm-def { - color: #00f; -} -.cm-s-ttcn .cm-em { - font-style: italic; -} -.cm-s-ttcn .cm-error { - color: #f00; -} -.cm-s-ttcn .cm-hr { - color: #999; -} -.cm-s-ttcn .cm-invalidchar { - color: #f00; -} -.cm-s-ttcn .cm-keyword { - color: #07a; -} -.cm-s-ttcn .cm-link { - color: #00c; - text-decoration: underline; -} -.cm-s-ttcn .cm-meta { - color: #555; -} -.cm-s-ttcn .cm-negative { - color: #d44; -} -.cm-s-ttcn .cm-positive { - color: #292; -} -.cm-s-ttcn .cm-qualifier { - color: #555; -} -.cm-s-ttcn .cm-strikethrough { - text-decoration: line-through; -} -.cm-s-ttcn .cm-string { - color: #690; -} -.cm-s-ttcn .cm-string-2 { - color: #f50; -} -.cm-s-ttcn .cm-strong { - font-weight: bold; -} -.cm-s-ttcn .cm-tag { - color: #170; -} -.cm-s-ttcn .cm-variable { - color: #8b2252; -} -.cm-s-ttcn .cm-variable-2 { - color: #05a; -} -.cm-s-ttcn .cm-variable-3, -.cm-s-ttcn .cm-type { - color: #085; -} - -.cm-s-ttcn .cm-invalidchar { - color: #f00; -} - -.cm-s-ttcn .cm-operator { - color: #9a6e3a; - background: hsla(0, 0%, 100%, 0.5); -} /* ASN */ .cm-s-ttcn .cm-accessTypes, -.cm-s-ttcn .cm-compareTypes { - color: #27408b; -} -.cm-s-ttcn .cm-cmipVerbs { - color: #8b2252; -} -.cm-s-ttcn .cm-modifier { - color: #d2691e; -} -.cm-s-ttcn .cm-status { - color: #8b4545; -} -.cm-s-ttcn .cm-storage { - color: #a020f0; -} -.cm-s-ttcn .cm-tags { - color: #006400; -} +.cm-s-ttcn .cm-compareTypes { color: #27408B; } +.cm-s-ttcn .cm-cmipVerbs { color: #8B2252; } +.cm-s-ttcn .cm-modifier { color:#D2691E; } +.cm-s-ttcn .cm-status { color:#8B4545; } +.cm-s-ttcn .cm-storage { color:#A020F0; } +.cm-s-ttcn .cm-tags { color:#006400; } /* CFG */ -.cm-s-ttcn .cm-externalCommands { - color: #8b4545; - font-weight: bold; -} +.cm-s-ttcn .cm-externalCommands { color: #8B4545; font-weight:bold; } .cm-s-ttcn .cm-fileNCtrlMaskOptions, -.cm-s-ttcn .cm-sectionTitle { - color: #2e8b57; - font-weight: bold; -} +.cm-s-ttcn .cm-sectionTitle { color: #2E8B57; font-weight:bold; } /* TTCN */ .cm-s-ttcn .cm-booleanConsts, .cm-s-ttcn .cm-otherConsts, -.cm-s-ttcn .cm-verdictConsts { - color: #006400; -} +.cm-s-ttcn .cm-verdictConsts { color: #006400; } .cm-s-ttcn .cm-configOps, .cm-s-ttcn .cm-functionOps, .cm-s-ttcn .cm-portOps, .cm-s-ttcn .cm-sutOps, .cm-s-ttcn .cm-timerOps, -.cm-s-ttcn .cm-verdictOps { - color: #0000ff; -} +.cm-s-ttcn .cm-verdictOps { color: #0000FF; } .cm-s-ttcn .cm-preprocessor, .cm-s-ttcn .cm-templateMatch, -.cm-s-ttcn .cm-ttcn3Macros { - color: #27408b; -} -.cm-s-ttcn .cm-types { - color: #a52a2a; - font-weight: bold; -} -.cm-s-ttcn .cm-visibilityModifiers { - font-weight: bold; -} +.cm-s-ttcn .cm-ttcn3Macros { color: #27408B; } +.cm-s-ttcn .cm-types { color: #A52A2A; font-weight:bold; } +.cm-s-ttcn .cm-visibilityModifiers { font-weight:bold; } diff --git a/web/templates/pages/connection/all.html.j2 b/web/templates/pages/connection/all.html.j2 index 8f21c1da..5c77bf5a 100644 --- a/web/templates/pages/connection/all.html.j2 +++ b/web/templates/pages/connection/all.html.j2 @@ -19,9 +19,9 @@
{% for d in connections %} {% if loop.index0 > 0 and loop.index0 % 4 == 0 or loop.index0==connections|length %}
{% endif %} - {% if loop.index0 % 4 == 0 or loop.index0 ==0 %}
{% endif %} -
-
+ {% if loop.index0 % 4 == 0 or loop.index0 ==0 %}
- +
- +
- +
- +
- +
- +
- +
- +
diff --git a/web/templates/pages/project/new.html.j2 b/web/templates/pages/project/new.html.j2 index 1e80c77f..55e2fbb9 100644 --- a/web/templates/pages/project/new.html.j2 +++ b/web/templates/pages/project/new.html.j2 @@ -25,6 +25,7 @@ New Project {% endif %} + {% if error %}
Error: {{ error }}
{% endif %}
@@ -49,10 +50,9 @@
+ type="checkbox" /> - +
{% endif %}
diff --git a/web/templates/pages/project/one.html.j2 b/web/templates/pages/project/one.html.j2 index dfc7927d..7370a853 100644 --- a/web/templates/pages/project/one.html.j2 +++ b/web/templates/pages/project/one.html.j2 @@ -54,7 +54,7 @@
{% if p.sequence_tasks == 1 %} - Tasks will run in sequence by rank (ascending) and then name (alpha ascending). + Tasks will run in sequence by rank (ascending) with tasks having same rank running at same time. {% else %} Tasks will run in parallel. {% endif %} @@ -71,43 +71,9 @@

Cron Schedule - Run on specific dates/times

Run - + - {% if p.cron_month != None or p.cron_year != None %}every{% endif %} - {% if p.cron_month != None %}{{ p.cron_month|cron_month }},{% endif %} - {% if p.cron_year != None %}{{ p.cron_year }}{% endif %} - - - - {% if p.cron_week != None %} - on the - {{ p.cron_week|num_st }} - week of the year, - {% endif %} - - - - {% if p.cron_week_day != None %} - on - {{ p.cron_week_day|cron_week_day }} - , - {% endif %} - - - - {% if p.cron_day != None %} - on the - {{ p.cron_day|num_st }} - day of the month, - {% endif %} - - - - {% if p.cron_hour or p.cron_min or p.cron_sec %} - at - {{ p.cron_hour|time }}:{{ p.cron_min|time }}:{{ p.cron_sec|time }} - (hh:mm:ss), - {% endif %} + {{ cron_desc }} diff --git a/web/tests/__init__.py b/web/tests/__init__.py index f8616900..50a87b88 100644 --- a/web/tests/__init__.py +++ b/web/tests/__init__.py @@ -5,6 +5,7 @@ poetry run pytest tests/ \ --cov --cov-append --cov-branch --cov-report=term-missing --disable-warnings """ + import sys from pathlib import Path diff --git a/web/tests/test_auth.py b/web/tests/test_auth.py index 6348cfee..8939c23d 100644 --- a/web/tests/test_auth.py +++ b/web/tests/test_auth.py @@ -11,7 +11,6 @@ """ - from flask import url_for from flask.wrappers import Response from flask_login import current_user diff --git a/web/tests/test_dashboard.py b/web/tests/test_dashboard.py index aaa35bb3..a8afafce 100644 --- a/web/tests/test_dashboard.py +++ b/web/tests/test_dashboard.py @@ -12,7 +12,6 @@ """ - from pytest import fixture from web.extensions import db @@ -144,9 +143,7 @@ def test_orphaned_delete(client_fixture: fixture) -> None: response = client_fixture.get("/dash/orphans/delete", follow_redirects=True) assert response.status_code == 200 - assert "Failed to delete orphans. Scheduler offline." in response.get_data( - as_text=True - ) + assert "Failed to delete orphans. Scheduler offline." in response.get_data(as_text=True) def test_errored_run(client_fixture: fixture) -> None: diff --git a/web/tests/test_filters.py b/web/tests/test_filters.py index 7c9ad2ef..a9fa7bfd 100644 --- a/web/tests/test_filters.py +++ b/web/tests/test_filters.py @@ -11,6 +11,7 @@ """ + import datetime diff --git a/web/tests/test_projects.py b/web/tests/test_projects.py index 97690484..efbe2734 100644 --- a/web/tests/test_projects.py +++ b/web/tests/test_projects.py @@ -11,6 +11,7 @@ """ + import time from datetime import datetime @@ -37,9 +38,7 @@ def test_projects_home(client_fixture: fixture) -> None: # if we have a project, we should go to the project list page p_id, t_id = create_demo_task(db.session) - page = client_fixture.get( - url_for("project_bp.all_projects"), follow_redirects=False - ) + page = client_fixture.get(url_for("project_bp.all_projects"), follow_redirects=False) assert page.status_code == 200 assert page.request.path == url_for("project_bp.all_projects") assert "Projects" in page.get_data(as_text=True) @@ -147,7 +146,7 @@ def test_create_cron_project(client_fixture: fixture) -> None: "project_name": "test cron project", "project_desc": "my cron project description", "project_cron": "1", - "project_cron_year": "1", + "project_cron_year": "1970", "project_cron_mnth": "1", "project_cron_week": "1", "project_cron_day": "1", @@ -199,7 +198,7 @@ def test_edit_project(client_fixture: fixture) -> None: "project_name": "test cron project", "project_desc": "my cron project description", "project_cron": "1", - "project_cron_year": "1", + "project_cron_year": "2024", "project_cron_mnth": "1", "project_cron_week": "1", "project_cron_day": "1", diff --git a/web/tests/test_tables.py b/web/tests/test_tables.py index 180d9b52..adc4770b 100644 --- a/web/tests/test_tables.py +++ b/web/tests/test_tables.py @@ -11,6 +11,7 @@ """ + import json from pytest import fixture @@ -127,7 +128,4 @@ def test_table_tasks_files(client_fixture: fixture) -> None: task = Task.query.first() if task: - assert ( - client_fixture.get("/table/task/" + str(task.id) + "/files").status_code - == 200 - ) + assert client_fixture.get("/table/task/" + str(task.id) + "/files").status_code == 200 diff --git a/web/tests/test_task_controls.py b/web/tests/test_task_controls.py index 9f3517de..ce92d129 100644 --- a/web/tests/test_task_controls.py +++ b/web/tests/test_task_controls.py @@ -11,6 +11,7 @@ """ + import json import time diff --git a/web/tests/test_task_edit.py b/web/tests/test_task_edit.py index 067ca8d7..8db9311d 100644 --- a/web/tests/test_task_edit.py +++ b/web/tests/test_task_edit.py @@ -11,6 +11,7 @@ """ + from flask import request, url_for from pytest import fixture diff --git a/web/tests/test_tasks.py b/web/tests/test_tasks.py index 9fbd9f8c..7baaf472 100644 --- a/web/tests/test_tasks.py +++ b/web/tests/test_tasks.py @@ -91,9 +91,7 @@ def test_one_task(client_fixture: fixture) -> None: # check valid task _, t_id = create_demo_task(db.session) - page = client_fixture.get( - url_for("task_bp.one_task", task_id=t_id), follow_redirects=False - ) + page = client_fixture.get(url_for("task_bp.one_task", task_id=t_id), follow_redirects=False) assert page.status_code == 200 diff --git a/web/web/admin.py b/web/web/admin.py index 54cc38ea..3a85f1d6 100644 --- a/web/web/admin.py +++ b/web/web/admin.py @@ -1,6 +1,5 @@ """Admin web views.""" - import json import platform from pathlib import Path @@ -100,9 +99,7 @@ def reset_tasks() -> Response: def pause_scheduler() -> Response: """Stop all jobs from future runs.""" try: - output = json.loads( - requests.get(app.config["SCHEDULER_HOST"] + "/pause", timeout=60).text - ) + output = json.loads(requests.get(app.config["SCHEDULER_HOST"] + "/pause", timeout=60).text) if output.get("error"): msg = output["error"] @@ -152,9 +149,7 @@ def resume_scheduler() -> Response: def kill_scheduler() -> Response: """Kill the scheduler.""" try: - output = json.loads( - requests.get(app.config["SCHEDULER_HOST"] + "/kill", timeout=60).text - ) + output = json.loads(requests.get(app.config["SCHEDULER_HOST"] + "/kill", timeout=60).text) msg = output["message"] add_user_log(msg, 0) diff --git a/web/web/assets.py b/web/web/assets.py index f98f3927..e21ac62e 100644 --- a/web/web/assets.py +++ b/web/web/assets.py @@ -3,7 +3,6 @@ CSS assets are compiles from scss to css with gulp. Webassets combines the output css and versions them nicely. """ - from flask_assets import Bundle from webassets.filter import register_filter from webassets_rollup import Rollup diff --git a/web/web/auth.py b/web/web/auth.py index 08835bf4..d777dc28 100644 --- a/web/web/auth.py +++ b/web/web/auth.py @@ -105,16 +105,14 @@ def login() -> Union[str, Response]: .lower() ) user.email = ( - ldap_details.get(app.config["LDAP_ATTR_MAP"]["email"])[0] - .decode("utf-8") - .lower() + ldap_details.get(app.config["LDAP_ATTR_MAP"]["email"])[0].decode("utf-8").lower() + ) + user.full_name = ldap_details.get(app.config["LDAP_ATTR_MAP"]["full_name"])[0].decode( + "utf-8" ) - user.full_name = ldap_details.get(app.config["LDAP_ATTR_MAP"]["full_name"])[ + user.first_name = ldap_details.get(app.config["LDAP_ATTR_MAP"]["first_name"])[ 0 ].decode("utf-8") - user.first_name = ldap_details.get( - app.config["LDAP_ATTR_MAP"]["first_name"] - )[0].decode("utf-8") db.session.add(user) db.session.commit() diff --git a/web/web/connection.py b/web/web/connection.py index 4fdd6fdf..3f647142 100644 --- a/web/web/connection.py +++ b/web/web/connection.py @@ -92,9 +92,7 @@ def edit_connection(connection_id: int) -> Union[str, Response]: db.session.add(log) db.session.commit() flash("Connection edited.") - return redirect( - url_for("connection_bp.one_connection", connection_id=connection_id) - ) + return redirect(url_for("connection_bp.one_connection", connection_id=connection_id)) @connection_bp.route("/connection/new", methods=["POST", "GET"]) @@ -155,9 +153,7 @@ def delete_connection(connection_id: int) -> Response: return redirect(url_for("connection_bp.all_connections")) -@connection_bp.route( - "/connection//sftp//delete", methods=["GET"] -) +@connection_bp.route("/connection//sftp//delete", methods=["GET"]) @login_required def delete_connection_sftp(connection_id: int, sftp_id: int) -> Response: """Delete a SFTP connection.""" @@ -172,20 +168,14 @@ def delete_connection_sftp(connection_id: int, sftp_id: int) -> Response: db.session.commit() flash("Connection deleted.") - return redirect( - url_for("connection_bp.one_connection", connection_id=connection_id) - ) + return redirect(url_for("connection_bp.one_connection", connection_id=connection_id)) -@connection_bp.route( - "/connection//sftp//edit", methods=["GET", "POST"] -) +@connection_bp.route("/connection//sftp//edit", methods=["GET", "POST"]) @login_required def edit_connection_sftp(connection_id: int, sftp_id: int) -> Union[Response, str]: """Edit a SFTP connection.""" - sftp = ConnectionSftp.query.filter_by( - id=sftp_id, connection_id=connection_id - ).first_or_404() + sftp = ConnectionSftp.query.filter_by(id=sftp_id, connection_id=connection_id).first_or_404() if request.method == "GET": return render_template( "pages/connection/sftp_edit.html.j2", @@ -204,16 +194,12 @@ def edit_connection_sftp(connection_id: int, sftp_id: int) -> Union[Response, st "path": form.get("path", "", type=str).strip(), "username": form.get("username", "", type=str).strip(), "key": ( - em_encrypt( - form.get("ssh_key", "", type=str).strip(), app.config["PASS_KEY"] - ) + em_encrypt(form.get("ssh_key", "", type=str).strip(), app.config["PASS_KEY"]) if form.get("ssh_key", type=str) else None ), "password": ( - em_encrypt( - form.get("password", "", type=str).strip(), app.config["PASS_KEY"] - ) + em_encrypt(form.get("password", "", type=str).strip(), app.config["PASS_KEY"]) if form.get("password", type=str) else None ), @@ -238,9 +224,7 @@ def edit_connection_sftp(connection_id: int, sftp_id: int) -> Union[Response, st db.session.commit() flash("Connection updated.") - return redirect( - url_for("connection_bp.one_connection", connection_id=connection_id) - ) + return redirect(url_for("connection_bp.one_connection", connection_id=connection_id)) @connection_bp.route("/connection//sftp/new", methods=["GET", "POST"]) @@ -264,23 +248,17 @@ def new_connection_sftp(connection_id: int) -> Union[str, Response]: path=form.get("path", "", type=str).strip(), username=form.get("username", "", type=str).strip(), key=( - em_encrypt( - form.get("ssh_key", "", type=str).strip(), app.config["PASS_KEY"] - ) + em_encrypt(form.get("ssh_key", "", type=str).strip(), app.config["PASS_KEY"]) if form.get("ssh_key", type=str) else None ), password=( - em_encrypt( - form.get("password", "", type=str).strip(), app.config["PASS_KEY"] - ) + em_encrypt(form.get("password", "", type=str).strip(), app.config["PASS_KEY"]) if form.get("password", type=str) else None ), key_password=( - em_encrypt( - form.get("key_password", "", type=str).strip(), app.config["PASS_KEY"] - ) + em_encrypt(form.get("key_password", "", type=str).strip(), app.config["PASS_KEY"]) if form.get("key_password", type=str) else None ), @@ -297,9 +275,7 @@ def new_connection_sftp(connection_id: int) -> Union[str, Response]: db.session.commit() flash("Connection added.") - return redirect( - url_for("connection_bp.one_connection", connection_id=connection_id) - ) + return redirect(url_for("connection_bp.one_connection", connection_id=connection_id)) @connection_bp.route("/connection//ssh//delete", methods=["GET"]) @@ -315,9 +291,7 @@ def delete_connection_ssh(connection_id: int, ssh_id: int) -> Response: db.session.add(log) db.session.commit() flash("Connection deleted.") - return redirect( - url_for("connection_bp.one_connection", connection_id=connection_id) - ) + return redirect(url_for("connection_bp.one_connection", connection_id=connection_id)) @connection_bp.route("/connection//ssh/new", methods=["GET", "POST"]) @@ -340,9 +314,7 @@ def new_connection_ssh(connection_id: int) -> Union[str, Response]: port=form.get("port", 22, type=int), username=form.get("username", "", type=str).strip(), password=( - em_encrypt( - form.get("password", "", type=str).strip(), app.config["PASS_KEY"] - ) + em_encrypt(form.get("password", "", type=str).strip(), app.config["PASS_KEY"]) if form.get("password", type=str) else None ), @@ -359,20 +331,14 @@ def new_connection_ssh(connection_id: int) -> Union[str, Response]: db.session.commit() flash("Connection added.") - return redirect( - url_for("connection_bp.one_connection", connection_id=connection_id) - ) + return redirect(url_for("connection_bp.one_connection", connection_id=connection_id)) -@connection_bp.route( - "/connection//ssh//edit", methods=["GET", "POST"] -) +@connection_bp.route("/connection//ssh//edit", methods=["GET", "POST"]) @login_required def edit_connection_ssh(connection_id: int, ssh_id: int) -> Union[Response, str]: """Edit a SSH connection.""" - ssh = ConnectionSsh.query.filter_by( - id=ssh_id, connection_id=connection_id - ).first_or_404() + ssh = ConnectionSsh.query.filter_by(id=ssh_id, connection_id=connection_id).first_or_404() if request.method == "GET": return render_template( "pages/connection/ssh_edit.html.j2", @@ -390,9 +356,7 @@ def edit_connection_ssh(connection_id: int, ssh_id: int) -> Union[Response, str] "port": form.get("port", 22, type=int), "username": form.get("username", "", type=str).strip(), "password": ( - em_encrypt( - form.get("password", "", type=str).strip(), app.config["PASS_KEY"] - ) + em_encrypt(form.get("password", "", type=str).strip(), app.config["PASS_KEY"]) if form.get("password", type=str) else None ), @@ -407,9 +371,7 @@ def edit_connection_ssh(connection_id: int, ssh_id: int) -> Union[Response, str] db.session.add(log) db.session.commit() flash("Connection updated.") - return redirect( - url_for("connection_bp.one_connection", connection_id=connection_id) - ) + return redirect(url_for("connection_bp.one_connection", connection_id=connection_id)) @connection_bp.route("/connection//smb//delete", methods=["GET"]) @@ -426,9 +388,7 @@ def delete_connection_smb(connection_id: int, smb_id: int) -> Response: db.session.commit() flash("Connection deleted.") - return redirect( - url_for("connection_bp.one_connection", connection_id=connection_id) - ) + return redirect(url_for("connection_bp.one_connection", connection_id=connection_id)) @connection_bp.route("/connection//smb/new", methods=["GET", "POST"]) @@ -453,9 +413,7 @@ def new_connection_smb(connection_id: int) -> Union[Response, str]: path=form.get("path", "", type=str).strip(), username=form.get("username", "", type=str).strip(), password=( - em_encrypt( - form.get("password", "", type=str).strip(), app.config["PASS_KEY"] - ) + em_encrypt(form.get("password", "", type=str).strip(), app.config["PASS_KEY"]) if form.get("password", type=str) else None ), @@ -472,20 +430,14 @@ def new_connection_smb(connection_id: int) -> Union[Response, str]: db.session.commit() flash("Connection added.") - return redirect( - url_for("connection_bp.one_connection", connection_id=connection_id) - ) + return redirect(url_for("connection_bp.one_connection", connection_id=connection_id)) -@connection_bp.route( - "/connection//smb//edit", methods=["GET", "POST"] -) +@connection_bp.route("/connection//smb//edit", methods=["GET", "POST"]) @login_required def edit_connection_smb(connection_id: int, smb_id: int) -> Union[Response, str]: """Edit a SMB connection.""" - smb = ConnectionSmb.query.filter_by( - id=smb_id, connection_id=connection_id - ).first_or_404() + smb = ConnectionSmb.query.filter_by(id=smb_id, connection_id=connection_id).first_or_404() if request.method == "GET": return render_template( "pages/connection/smb_edit.html.j2", @@ -505,9 +457,7 @@ def edit_connection_smb(connection_id: int, smb_id: int) -> Union[Response, str] "path": form.get("path", "", type=str).strip(), "username": form.get("username", "", type=str).strip(), "password": ( - em_encrypt( - form.get("password", "", type=str).strip(), app.config["PASS_KEY"] - ) + em_encrypt(form.get("password", "", type=str).strip(), app.config["PASS_KEY"]) if form.get("password", type=str) else None ), @@ -523,9 +473,7 @@ def edit_connection_smb(connection_id: int, smb_id: int) -> Union[Response, str] db.session.add(log) db.session.commit() flash("Connection updated.") - return redirect( - url_for("connection_bp.one_connection", connection_id=connection_id) - ) + return redirect(url_for("connection_bp.one_connection", connection_id=connection_id)) @connection_bp.route("/connection//ftp//delete", methods=["GET"]) @@ -542,9 +490,7 @@ def delete_connection_ftp(connection_id: int, ftp_id: int) -> Response: db.session.commit() flash("Connection deleted.") - return redirect( - url_for("connection_bp.one_connection", connection_id=connection_id) - ) + return redirect(url_for("connection_bp.one_connection", connection_id=connection_id)) @connection_bp.route("/connection//ftp/new", methods=["GET", "POST"]) @@ -567,9 +513,7 @@ def new_connection_ftp(connection_id: int) -> Union[Response, str]: path=form.get("path", "", type=str).strip(), username=form.get("username", "", type=str).strip(), password=( - em_encrypt( - form.get("password", "", type=str).strip(), app.config["PASS_KEY"] - ) + em_encrypt(form.get("password", "", type=str).strip(), app.config["PASS_KEY"]) if form.get("password", type=str) else None ), @@ -586,20 +530,14 @@ def new_connection_ftp(connection_id: int) -> Union[Response, str]: db.session.commit() flash("Connection added.") - return redirect( - url_for("connection_bp.one_connection", connection_id=connection_id) - ) + return redirect(url_for("connection_bp.one_connection", connection_id=connection_id)) -@connection_bp.route( - "/connection//ftp//edit", methods=["GET", "POST"] -) +@connection_bp.route("/connection//ftp//edit", methods=["GET", "POST"]) @login_required def edit_connection_ftp(connection_id: int, ftp_id: int) -> Union[Response, str]: """Edit a FTP connection.""" - ftp = ConnectionFtp.query.filter_by( - id=ftp_id, connection_id=connection_id - ).first_or_404() + ftp = ConnectionFtp.query.filter_by(id=ftp_id, connection_id=connection_id).first_or_404() if request.method == "GET": return render_template( "pages/connection/ftp_edit.html.j2", @@ -617,9 +555,7 @@ def edit_connection_ftp(connection_id: int, ftp_id: int) -> Union[Response, str] "path": form.get("path", "", type=str).strip(), "username": form.get("username", "", type=str).strip(), "password": ( - em_encrypt( - form.get("password", "", type=str).strip(), app.config["PASS_KEY"] - ) + em_encrypt(form.get("password", "", type=str).strip(), app.config["PASS_KEY"]) if form.get("password", type=str) else None ), @@ -636,9 +572,7 @@ def edit_connection_ftp(connection_id: int, ftp_id: int) -> Union[Response, str] db.session.commit() flash("Connection updated.") - return redirect( - url_for("connection_bp.one_connection", connection_id=connection_id) - ) + return redirect(url_for("connection_bp.one_connection", connection_id=connection_id)) @connection_bp.route("/connection//gpg//delete", methods=["GET"]) @@ -654,9 +588,7 @@ def delete_connection_gpg(connection_id: int, gpg_id: int) -> Response: db.session.add(log) db.session.commit() flash("Connection deleted.") - return redirect( - url_for("connection_bp.one_connection", connection_id=connection_id) - ) + return redirect(url_for("connection_bp.one_connection", connection_id=connection_id)) @connection_bp.route("/connection/gpg/new", methods=["GET", "POST"]) @@ -693,20 +625,14 @@ def new_connection_gpg(connection_id: int) -> Union[Response, str]: db.session.commit() flash("Connection added.") - return redirect( - url_for("connection_bp.one_connection", connection_id=connection_id) - ) + return redirect(url_for("connection_bp.one_connection", connection_id=connection_id)) -@connection_bp.route( - "/connection//gpg//edit", methods=["GET", "POST"] -) +@connection_bp.route("/connection//gpg//edit", methods=["GET", "POST"]) @login_required def edit_connection_gpg(connection_id: int, gpg_id: int) -> Union[str, Response]: """Edit a GPG connection.""" - gpg = ConnectionGpg.query.filter_by( - id=gpg_id, connection_id=connection_id - ).first_or_404() + gpg = ConnectionGpg.query.filter_by(id=gpg_id, connection_id=connection_id).first_or_404() if request.method == "GET": return render_template( "pages/connection/gpg_edit.html.j2", @@ -721,9 +647,7 @@ def edit_connection_gpg(connection_id: int, gpg_id: int) -> Union[str, Response] { "name": form.get("name", "undefined", type=str).strip(), "key": ( - em_encrypt( - form.get("key", "", type=str).strip(), app.config["PASS_KEY"] - ) + em_encrypt(form.get("key", "", type=str).strip(), app.config["PASS_KEY"]) if form.get("key", type=str) else None ), @@ -739,20 +663,14 @@ def edit_connection_gpg(connection_id: int, gpg_id: int) -> Union[str, Response] db.session.add(log) db.session.commit() flash("Connection updated.") - return redirect( - url_for("connection_bp.one_connection", connection_id=connection_id) - ) + return redirect(url_for("connection_bp.one_connection", connection_id=connection_id)) -@connection_bp.route( - "/connection//database//delete", methods=["GET"] -) +@connection_bp.route("/connection//database//delete", methods=["GET"]) @login_required def delete_connection_database(connection_id: int, database_id: int) -> Response: """Delete a database connection.""" - ConnectionDatabase.query.filter_by( - connection_id=connection_id, id=database_id - ).delete() + ConnectionDatabase.query.filter_by(connection_id=connection_id, id=database_id).delete() db.session.commit() log = TaskLog( status_id=7, @@ -760,18 +678,14 @@ def delete_connection_database(connection_id: int, database_id: int) -> Response ) db.session.add(log) db.session.commit() - return redirect( - url_for("connection_bp.one_connection", connection_id=connection_id) - ) + return redirect(url_for("connection_bp.one_connection", connection_id=connection_id)) @connection_bp.route( "/connection//database//edit", methods=["GET", "POST"] ) @login_required -def edit_connection_database( - connection_id: int, database_id: int -) -> Union[Response, str]: +def edit_connection_database(connection_id: int, database_id: int) -> Union[Response, str]: """Edit a database connection.""" database = ConnectionDatabase.query.filter_by( id=database_id, connection_id=connection_id @@ -810,14 +724,10 @@ def edit_connection_database( db.session.commit() flash("Changes saved.") - return redirect( - url_for("connection_bp.one_connection", connection_id=connection_id) - ) + return redirect(url_for("connection_bp.one_connection", connection_id=connection_id)) -@connection_bp.route( - "/connection//database/new", methods=["GET", "POST"] -) +@connection_bp.route("/connection//database/new", methods=["GET", "POST"]) @login_required def new_connection_database(connection_id: int) -> Union[Response, str]: """Create a database connection.""" @@ -852,9 +762,7 @@ def new_connection_database(connection_id: int) -> Union[Response, str]: db.session.add(log) db.session.commit() flash("Connection added.") - return redirect( - url_for("connection_bp.one_connection", connection_id=connection_id) - ) + return redirect(url_for("connection_bp.one_connection", connection_id=connection_id)) @connection_bp.route("/connection/ssh//status") @@ -862,9 +770,7 @@ def new_connection_database(connection_id: int) -> Union[Response, str]: def ssh_online(ssh_id: int) -> str: """Check if connection is online.""" try: - return requests.get( - f"{app.config['RUNNER_HOST']}/ssh/{ssh_id}/status", timeout=60 - ).text + return requests.get(f"{app.config['RUNNER_HOST']}/ssh/{ssh_id}/status", timeout=60).text except BaseException as e: return f'Offline' @@ -886,9 +792,7 @@ def database_online(database_id: int) -> str: def sftp_online(sftp_id: int) -> str: """Check if connection is online.""" try: - return requests.get( - f"{app.config['RUNNER_HOST']}/sftp/{sftp_id}/status", timeout=60 - ).text + return requests.get(f"{app.config['RUNNER_HOST']}/sftp/{sftp_id}/status", timeout=60).text except BaseException as e: return f'Offline' @@ -898,9 +802,7 @@ def sftp_online(sftp_id: int) -> str: def ftp_online(ftp_id: int) -> str: """Check if connection is online.""" try: - return requests.get( - f"{app.config['RUNNER_HOST']}/ftp/{ftp_id}/status", timeout=60 - ).text + return requests.get(f"{app.config['RUNNER_HOST']}/ftp/{ftp_id}/status", timeout=60).text except BaseException as e: return f'Offline' @@ -910,8 +812,6 @@ def ftp_online(ftp_id: int) -> str: def smb_online(smb_id: int) -> str: """Check if connection is online.""" try: - return requests.get( - f"{app.config['RUNNER_HOST']}/smb/{smb_id}/status", timeout=60 - ).text + return requests.get(f"{app.config['RUNNER_HOST']}/smb/{smb_id}/status", timeout=60).text except BaseException as e: return f'Offline' diff --git a/web/web/dashboard.py b/web/web/dashboard.py index 9cc31d3a..dc09efaa 100644 --- a/web/web/dashboard.py +++ b/web/web/dashboard.py @@ -32,7 +32,7 @@ @dashboard_bp.route("/search") @login_required -def search() -> dict: +def search() -> Response: """Search data.""" my_json = {} @@ -66,9 +66,9 @@ def search() -> dict: .all() ) for row in connections: - connection_json[ - url_for("connection_bp.one_connection", connection_id=row[0]) - ] = " / ".join([x for x in row[1:] if x.strip()]) + connection_json[url_for("connection_bp.one_connection", connection_id=row[0])] = ( + " / ".join([x for x in row[1:] if x.strip()]) + ) connection_sftp = {} sftp_connections = db.session.query( @@ -77,11 +77,10 @@ def search() -> dict: ConnectionSftp.name, ConnectionSftp.address, ) - for row in sftp_connections.all(): + for row2 in sftp_connections.all(): connection_sftp[ - url_for("connection_bp.one_connection", connection_id=row[0]) - + f"?s={row[1]}" - ] = " / ".join([x for x in row[2:] if x.strip()]) + url_for("connection_bp.one_connection", connection_id=row2[0]) + f"?s={row2[1]}" + ] = " / ".join([x for x in row2[2:] if x.strip()]) connection_ftp = {} ftp_connections = db.session.query( ConnectionFtp.connection_id, @@ -89,20 +88,18 @@ def search() -> dict: ConnectionFtp.name, ConnectionFtp.address, ) - for row in ftp_connections.all(): + for row3 in ftp_connections.all(): connection_ftp[ - url_for("connection_bp.one_connection", connection_id=row[0]) - + f"?s={row[1]}" - ] = " / ".join([x for x in row[2:] if x.strip()]) + url_for("connection_bp.one_connection", connection_id=row3[0]) + f"?s={row3[1]}" + ] = " / ".join([x for x in row3[2:] if x.strip()]) connection_database = {} database_connections = db.session.query( ConnectionDatabase.connection_id, ConnectionDatabase.id, ConnectionDatabase.name ) - for row in database_connections.all(): + for row4 in database_connections.all(): connection_database[ - url_for("connection_bp.one_connection", connection_id=row[0]) - + f"?s={row[1]}" - ] = " / ".join([x for x in row[2:] if x.strip()]) + url_for("connection_bp.one_connection", connection_id=row4[0]) + f"?s={row4[1]}" + ] = " / ".join([x for x in row4[2:] if x.strip()]) connection_smb = {} smb_connections = db.session.query( ConnectionSmb.connection_id, @@ -112,11 +109,10 @@ def search() -> dict: ConnectionSmb.server_ip, ConnectionSmb.share_name, ) - for row in smb_connections.all(): + for row5 in smb_connections.all(): connection_smb[ - url_for("connection_bp.one_connection", connection_id=row[0]) - + f"?s={row[1]}" - ] = " / ".join([x for x in row[2:] if x.strip()]) + url_for("connection_bp.one_connection", connection_id=row5[0]) + f"?s={row5[1]}" + ] = " / ".join([x for x in row5[2:] if x.strip()]) connection_ssh = {} ssh_connections = db.session.query( ConnectionSsh.connection_id, @@ -124,20 +120,18 @@ def search() -> dict: ConnectionSsh.name, ConnectionSsh.address, ) - for row in ssh_connections.all(): + for row6 in ssh_connections.all(): connection_ssh[ - url_for("connection_bp.one_connection", connection_id=row[0]) - + f"?s={row[1]}" - ] = " / ".join([x for x in row[2:] if x.strip()]) + url_for("connection_bp.one_connection", connection_id=row6[0]) + f"?s={row6[1]}" + ] = " / ".join([x for x in row6[2:] if x.strip()]) connection_gpg = {} gpg_connections = db.session.query( ConnectionGpg.connection_id, ConnectionGpg.id, ConnectionGpg.name ) - for row in gpg_connections.all(): + for row7 in gpg_connections.all(): connection_gpg[ - url_for("connection_bp.one_connection", connection_id=row[0]) - + f"?s={row[1]}" - ] = " / ".join([x for x in row[2:] if x.strip()]) + url_for("connection_bp.one_connection", connection_id=row7[0]) + f"?s={row7[1]}" + ] = " / ".join([x for x in row7[2:] if x.strip()]) my_json["connection"] = connection_json my_json["sftp connection"] = connection_sftp @@ -226,9 +220,7 @@ def dash_orphans_delete() -> Response: """Button to delete any jobs without a linked tasks.""" try: output = json.loads( - requests.get( - app.config["SCHEDULER_HOST"] + "/delete-orphans", timeout=60 - ).text, + requests.get(app.config["SCHEDULER_HOST"] + "/delete-orphans", timeout=60).text, ) msg = output["message"] add_user_log(msg, 0) diff --git a/web/web/executors.py b/web/web/executors.py index 4ee8cb99..83e227df 100644 --- a/web/web/executors.py +++ b/web/web/executors.py @@ -15,6 +15,7 @@ from flask import jsonify from flask_login import current_user, login_required from sqlalchemy import and_, or_ +from werkzeug.wrappers import Response from web import db, executor, redis_client from web.model import Project, Task, TaskLog @@ -27,7 +28,7 @@ @executors_bp.route("/executor/status") @login_required -def executor_status() -> dict: +def executor_status() -> Response: """Get list of active executor jobs.""" active_executors = json.loads( redis_client.get(f"atlas_hub_executors-{current_user.id}") or json.dumps({}) @@ -67,9 +68,7 @@ def submit_executor(name: str, *args: Any) -> None: future.add_done_callback(func) # update active executor list - redis_client.set( - f"atlas_hub_executors-{current_user.id}", json.dumps(active_executors) - ) + redis_client.set(f"atlas_hub_executors-{current_user.id}", json.dumps(active_executors)) def executor_finished(name: str, future: Future) -> None: @@ -78,9 +77,7 @@ def executor_finished(name: str, future: Future) -> None: redis_client.get(f"atlas_hub_executors-{current_user.id}") or json.dumps({}) ) active_executors[name + "-done"] = future.result() - redis_client.set( - f"atlas_hub_executors-{current_user.id}", json.dumps(active_executors) - ) + redis_client.set(f"atlas_hub_executors-{current_user.id}", json.dumps(active_executors)) def send_task_to_scheduler(task_id: int) -> None: @@ -118,58 +115,54 @@ def send_task_to_scheduler(task_id: int) -> None: raise ValueError("Failed to schedule, scheduler is offline.") -def send_task_to_runner(task_id: int) -> None: +def send_task_to_runner(task: Task) -> None: """Silently send task or raise an error.""" - task = Task.query.filter_by(id=task_id).first() - # task only runs if not sequence, or first in sequence. try: if task.project and task.project.sequence_tasks == 1: # only add job if its first in sequence - if ( - Task.query.filter_by(project_id=task.project_id) - .filter_by(enabled=1) - .order_by(Task.order.asc(), Task.name.asc()) # type: ignore[union-attr] - .first() - ).id == int(task_id): - requests.get( - app.config["SCHEDULER_HOST"] + "/run/" + str(task.id), timeout=60 + first_sequence = ( + db.session.execute( + db.select(Task) + .filter_by(project_id=task.project_id, enabled=1) + .order_by(Task.order.asc()) + .limit(1) ) + .scalars() + .first() + .order + ) + if first_sequence is not None and task.order == first_sequence: + requests.get(app.config["SCHEDULER_HOST"] + "/run/" + str(task.id), timeout=60) log = TaskLog( - task_id=task_id, + task_id=task.id, status_id=7, - message=(current_user.full_name or "none") - + ": Task sent to runner.", + message=(current_user.full_name or "none") + ": Task sent to runner.", ) db.session.add(log) db.session.commit() else: log = TaskLog( - task_id=task_id, + task_id=task.id, status_id=7, message=(current_user.full_name or "none") + ": Task not sent to runner - it is a sequence task that should not run first.", ) db.session.add(log) db.session.commit() - raise ValueError( - "Task was not scheduled. It is not the first sequence task." - ) + raise ValueError("Task was not scheduled. It is not the first sequence task.") else: - requests.get( - app.config["SCHEDULER_HOST"] + "/run/" + str(task.id), timeout=60 - ) + requests.get(app.config["SCHEDULER_HOST"] + "/run/" + str(task.id), timeout=60) except (requests.exceptions.ConnectionError, urllib3.exceptions.NewConnectionError): logging.error({"empty_msg": "Error - Scheduler offline."}) log = TaskLog( - task_id=task_id, + task_id=task.id, status_id=7, error=1, - message=(current_user.full_name or "none") - + ": Failed to send task to runner.", + message=(current_user.full_name or "none") + ": Failed to send task to runner.", ) db.session.add(log) db.session.commit() @@ -177,48 +170,38 @@ def send_task_to_runner(task_id: int) -> None: raise ValueError("Error - Scheduler offline.") -def sub_enable_task(task_id: int) -> None: +def sub_enable_task(task: Task) -> None: """Shared function for enabling a task.""" - redis_client.delete("runner_" + str(task_id) + "_attempt") - task = Task.query.filter_by(id=task_id).first() + redis_client.delete("runner_" + str(task.id) + "_attempt") # task only goes to scheduler if not sequence, or first in sequence. - if task.project and task.project.sequence_tasks == 1: + if task.project.sequence_tasks == 1: # only add job if its first in sequence - if Task.query.filter( - or_( # type: ignore[type-var] - and_(Task.project_id == task.project_id, Task.enabled == 1), - Task.id == task_id, + first_sequence = ( + db.session.execute( + db.select(Task) + .filter_by(project_id=task.project_id, enabled=1) + .order_by(Task.order.asc()) + .limit(1) ) - ).order_by( - Task.order.asc(), Task.name.asc() # type: ignore[union-attr] - ).first() is not None and ( - Task.query.filter( - or_( # type: ignore[type-var] - and_(Task.project_id == task.project_id, Task.enabled == 1), - Task.id == task_id, - ) - ) - .order_by(Task.order.asc(), Task.name.asc()) # type: ignore[union-attr] + .scalars() .first() - ).id == int( - task_id - ): - send_task_to_scheduler(task_id) + .order + ) + if first_sequence is not None and task.order == first_sequence: + send_task_to_scheduler(task_id=task.id) else: # make sure it is not in the scheduler. - requests.get( - app.config["SCHEDULER_HOST"] + "/delete/" + str(task_id), timeout=60 - ) + requests.get(app.config["SCHEDULER_HOST"] + "/delete/" + str(task.id), timeout=60) else: - send_task_to_scheduler(task_id) + send_task_to_scheduler(task.id) # show as enabled only if we made it to scheduler task.enabled = 1 db.session.commit() log = TaskLog( - task_id=task_id, + task_id=task.id, status_id=7, message=(current_user.full_name or "none") + ": Task enabled.", ) @@ -245,7 +228,7 @@ def enable_task(task_list: List[int]) -> str: ) try: for task in tasks: - sub_enable_task(task.id) + sub_enable_task(task) # pylint: disable=W0703 except BaseException as e: print(full_stack()) # noqa: T201 @@ -253,7 +236,7 @@ def enable_task(task_list: List[int]) -> str: return "Task added, sequence updated." try: - sub_enable_task(task_id) + sub_enable_task(task) return "Task added." # pylint: disable=W0703 except BaseException as e: @@ -263,26 +246,40 @@ def enable_task(task_list: List[int]) -> str: def run_project(project_list: List[int]) -> str: """Running enabled project tasks.""" project_id: int = project_list[0] - project = Project.query.filter_by(id=project_id).first() - - tasks = Task.query.filter_by(project_id=project_id, enabled=1).order_by( - Task.order.asc(), Task.name.asc() # type: ignore[union-attr] + project_sequence = ( + db.session.execute(db.select(Project).filter_by(id=project_id).limit(1)) + .scalars() + .first() + .sequence_tasks ) - if project.sequence_tasks == 1: - # run first enabled, order by rank, name - send_task_to_runner(tasks.first().id) - log = TaskLog( - task_id=tasks.first().id, - status_id=7, - message=(current_user.full_name or "none") + ": Task manually run.", + tasks = ( + db.session.execute( + db.select(Task).filter_by(project_id=project_id, enabled=1).order_by(Task.order.asc()) ) + .scalars() + .all() + ) + + if project_sequence == 1: + # get the order of the first result + task_sequence = tasks[0].order + + # run all lowest level sequence tasks + for task in tasks: + if task.order == task_sequence: + send_task_to_runner(task) + log = TaskLog( + task_id=task.id, + status_id=7, + message=(current_user.full_name or "none") + ": Task manually run.", + ) db.session.add(log) db.session.commit() return "Project sequence run started." for task in tasks: - send_task_to_runner(task.id) + send_task_to_runner(task) log = TaskLog( task_id=task.id, status_id=7, @@ -345,7 +342,7 @@ def schedule_project(project_list: List[int]) -> str: db.session.commit() for task in tasks: - sub_enable_task(task.id) + sub_enable_task(task) # pylint: disable=broad-except except BaseException as e: @@ -354,11 +351,7 @@ def schedule_project(project_list: List[int]) -> str: log = TaskLog( status_id=7, error=1, - message=( - (current_user.full_name or "none") - + ": Failed to schedule task.\n" - + str(e) - ), + message=((current_user.full_name or "none") + ": Failed to schedule task.\n" + str(e)), ) db.session.add(log) db.session.commit() @@ -379,7 +372,7 @@ def enable_project(project_list: List[int]) -> str: db.session.commit() for task in tasks: - sub_enable_task(task.id) + sub_enable_task(task) # pylint: disable=broad-except except BaseException as e: @@ -389,9 +382,7 @@ def enable_project(project_list: List[int]) -> str: status_id=7, error=1, message=( - (current_user.full_name or "none") - + ": Failed to enable project.\n" - + str(e) + (current_user.full_name or "none") + ": Failed to enable project.\n" + str(e) ), ) db.session.add(log) @@ -404,9 +395,7 @@ def enable_project(project_list: List[int]) -> str: def sub_disable_task(task_id: int) -> None: """Shared function for disabling a task.""" try: - requests.get( - app.config["SCHEDULER_HOST"] + "/delete/" + str(task_id), timeout=60 - ) + requests.get(app.config["SCHEDULER_HOST"] + "/delete/" + str(task_id), timeout=60) # also clear retry counter redis_client.delete(f"runner_{task_id}_attempt") @@ -437,10 +426,8 @@ def disable_task(task_list: List[int]) -> str: if task.project and task.project.sequence_tasks == 1: # update sequence - for task in Task.query.filter_by( - project_id=task.project_id, enabled=1 - ).all(): - sub_enable_task(task.id) + for task in Task.query.filter_by(project_id=task.project_id, enabled=1).all(): + sub_enable_task(task) return "Task disabled, sequence updated." return "Task disabled." @@ -469,7 +456,7 @@ def schedule_enabled_tasks(*args: Any) -> str: """Sending enabled tasks to scheduler.""" try: for task in Task.query.filter_by(enabled=1).all(): - sub_enable_task(task.id) + sub_enable_task(task) return "Tasks sent to scheduler." # pylint: disable=W0703 @@ -483,7 +470,7 @@ def run_scheduled_tasks(*args: Any) -> None: tasks = Task.query.filter(enabled=1).all() for task in tasks: - send_task_to_runner(task.id) + send_task_to_runner(task) # pylint: disable=W0613 @@ -522,7 +509,7 @@ def run_errored_tasks(*args: Any) -> str: try: for task in tasks: if task.project.cron == 1 or task.project.intv == 1: - send_task_to_runner(task.id) + send_task_to_runner(task) return "Started running all errored tasks that have a schedule." except ValueError: return "Failed to run errored tasks, Scheduler is offline." diff --git a/web/web/filters.py b/web/web/filters.py index 5adeb214..6b0370b6 100644 --- a/web/web/filters.py +++ b/web/web/filters.py @@ -13,7 +13,7 @@ filters_bp = Blueprint("filters_bp", __name__) sys.path.append(str(Path(__file__).parents[2]) + "/scripts") -from scripts.crypto import em_decrypt +from crypto import em_decrypt @filters_bp.app_template_filter("duration") diff --git a/web/web/ldap_auth.py b/web/web/ldap_auth.py index acd59874..68ff35e4 100644 --- a/web/web/ldap_auth.py +++ b/web/web/ldap_auth.py @@ -2,6 +2,7 @@ Modification of Flask-SimpleLDAP script by https://github.com/alexferl/flask-simpleldap. """ + # mypy: ignore-errors import re @@ -116,9 +117,7 @@ def bind(self): """ conn = self.initialize try: - conn.simple_bind_s( - self.app.config["LDAP_USERNAME"], self.app.config["LDAP_PASSWORD"] - ) + conn.simple_bind_s(self.app.config["LDAP_USERNAME"], self.app.config["LDAP_PASSWORD"]) return conn except ldap.LDAPError as e: raise LDAPException(self.error(e.args)) from e @@ -144,17 +143,13 @@ def bind_user(self, username, password): return try: conn = self.initialize - _user_dn = ( - user_dn.decode("utf-8") if isinstance(user_dn, bytes) else user_dn - ) + _user_dn = user_dn.decode("utf-8") if isinstance(user_dn, bytes) else user_dn conn.simple_bind_s(_user_dn, password) return self.get_object_details(user=username) # True except ldap.LDAPError: return - def get_object_details( - self, user=None, group=None, query_filter=None, dn_only=False - ): + def get_object_details(self, user=None, group=None, query_filter=None, dn_only=False): """Return a ``dict`` with the object's (user or group) details. :param str user: Username of the user object you want details for. @@ -242,20 +237,15 @@ def get_user_groups(self, user): conn.unbind_s() if records: if self.app.config["LDAP_OPENLDAP"]: - group_member_filter = self.app.config[ - "LDAP_GROUP_MEMBER_FILTER_FIELD" - ] + group_member_filter = self.app.config["LDAP_GROUP_MEMBER_FILTER_FIELD"] groups = [ - (record[1][group_member_filter][0]).decode("utf-8") - for record in records + (record[1][group_member_filter][0]).decode("utf-8") for record in records ] return groups if self.app.config["LDAP_USER_GROUPS_FIELD"] in records[0][1]: groups = records[0][1][self.app.config["LDAP_USER_GROUPS_FIELD"]] - result = [ - re.findall(b"(?:cn=|CN=)(.*?),", group)[0] for group in groups - ] + result = [re.findall(b"(?:cn=|CN=)(.*?),", group)[0] for group in groups] return [x.decode("utf-8") for x in result] except ldap.LDAPError as e: raise LDAPException(self.error(e.args)) from e diff --git a/web/web/project.py b/web/web/project.py index c706643f..a1bc8366 100644 --- a/web/web/project.py +++ b/web/web/project.py @@ -3,6 +3,8 @@ import datetime from typing import Optional, Union +from cron_descriptor import ExpressionDescriptor +from cron_validator import CronValidator from crypto import em_encrypt from flask import Blueprint from flask import current_app as app @@ -42,9 +44,7 @@ def all_projects() -> Union[Response, str]: .group_by(User.full_name, User.id) .all() ) - return render_template( - "pages/project/all.html.j2", title="Projects", owners=owners - ) + return render_template("pages/project/all.html.j2", title="Projects", owners=owners) return redirect(url_for("project_bp.new_project_form")) @@ -96,6 +96,19 @@ def one_project(project_id: int) -> Union[str, Response]: .order_by(Task.order.asc(), Task.name.asc()) # type: ignore[attr-defined, union-attr] .first() ) + try: + desc = ExpressionDescriptor( + cron_year=me.cron_year, + cron_month=me.cron_month, + cron_week=me.cron_week, + cron_day=me.cron_day, + cron_week_day=me.cron_week_day, + cron_hour=me.cron_hour, + cron_min=me.cron_min, + cron_sec=me.cron_sec, + ).get_full_description() + except ValueError as e: + desc = e return render_template( "pages/project/one.html.j2", @@ -103,6 +116,7 @@ def one_project(project_id: int) -> Union[str, Response]: has_secrets=any(p.sensitive == 1 for p in me.params), title=me.name, task=first_task, + cron_desc=desc, ) flash("The project does not exist.") @@ -116,9 +130,7 @@ def edit_project_form(project_id: int) -> Union[str, Response]: me = Project.query.filter_by(id=project_id).first() if me: - return render_template( - "pages/project/new.html.j2", p=me, title="Editing " + me.name - ) + return render_template("pages/project/new.html.j2", p=me, title="Editing " + me.name) flash("The project does not exist.") return redirect(url_for("project_bp.all_projects")) @@ -126,17 +138,47 @@ def edit_project_form(project_id: int) -> Union[str, Response]: @project_bp.route("/project//edit", methods=["POST"]) @login_required -def edit_project(project_id: int) -> Response: +def edit_project(project_id: int) -> Union[str, Response]: """Save project edits.""" cache.clear() - + error = None project = get_or_create(db.session, Project, id=project_id) # get filter query for update me = Project.query.filter_by(id=project.id) - + me2 = Project.query.filter_by(id=project_id).first() form = request.form - + cron = form.get("project_cron", 0, type=int) + cron_year = form.get("project_cron_year", None, type=str) + cron_month = form.get("project_cron_mnth", None, type=str) + cron_week = form.get("project_cron_week", None, type=str) + cron_day = form.get("project_cron_day", None, type=str) + cron_week_day = form.get("project_cron_wday", None, type=str) + cron_hour = form.get("project_cron_hour", None, type=str) + cron_min = form.get("project_cron_min", None, type=str) + cron_sec = form.get("project_cron_sec", None, type=str) + if cron == 1: + try: + CronValidator( + cron=cron, + cron_year=cron_year, + cron_month=cron_month, + cron_week=cron_week, + cron_day=cron_day, + cron_week_day=cron_week_day, + cron_hour=cron_hour, + cron_min=cron_min, + cron_sec=cron_sec, + ).validate() + + except ValueError as e: + error = str(e) + return render_template( + "pages/project/new.html.j2", + p=me2, + title="Editing " + me2.name, + error=error, + ) # pylint: disable=R1735 me.update( dict( # noqa: C408 @@ -149,25 +191,21 @@ def edit_project(project_id: int) -> Response: ), updater_id=current_user.id, sequence_tasks=form.get("run_tasks_in_sequence", 0, type=int), - cron=form.get("project_cron", 0, type=int), - cron_year=form.get("project_cron_year", None, type=int), - cron_month=form.get("project_cron_mnth", None, type=int), - cron_week=form.get("project_cron_week", None, type=int), - cron_day=form.get("project_cron_day", None, type=int), - cron_week_day=form.get("project_cron_wday", None, type=int), - cron_hour=form.get("project_cron_hour", None, type=int), - cron_min=form.get("project_cron_min", None, type=int), - cron_sec=form.get("project_cron_sec", None, type=int), - cron_start_date=form_to_date( - form.get("project_cron_sdate", None, type=str) - ), + cron=cron, + cron_year=cron_year, + cron_month=cron_month, + cron_week=cron_week, + cron_day=cron_day, + cron_week_day=cron_week_day, + cron_hour=cron_hour, + cron_min=cron_min, + cron_sec=cron_sec, + cron_start_date=form_to_date(form.get("project_cron_sdate", None, type=str)), cron_end_date=form_to_date(form.get("project_cron_edate", None, type=str)), intv=form.get("project_intv", 0, type=int), intv_value=form.get("project_intv_value", None, type=int), intv_type=form.get("project_intv_intv", None, type=str), - intv_start_date=form_to_date( - form.get("project_intv_sdate", None, type=str) - ), + intv_start_date=form_to_date(form.get("project_intv_sdate", None, type=str)), intv_end_date=form_to_date(form.get("project_intv_edate", None, type=str)), ooff=form.get("project_ooff", 0, type=int), ooff_date=form_to_date(form.get("project_ooff_date", None, type=str)), @@ -220,10 +258,43 @@ def new_project_form() -> str: @project_bp.route("/project/new", methods=["POST"]) @login_required -def new_project() -> Response: +def new_project() -> Union[str, Response]: """Save a new project.""" cache.clear() + error = None form = request.form + cron = form.get("project_cron", 0, type=int) + cron_year = form.get("project_cron_year", None, type=str) + cron_month = form.get("project_cron_mnth", None, type=str) + cron_week = form.get("project_cron_week", None, type=str) + cron_day = form.get("project_cron_day", None, type=str) + cron_week_day = form.get("project_cron_wday", None, type=str) + cron_hour = form.get("project_cron_hour", None, type=str) + cron_min = form.get("project_cron_min", None, type=str) + cron_sec = form.get("project_cron_sec", None, type=str) + + if cron == 1: + try: + CronValidator( + cron=cron, + cron_year=cron_year, + cron_month=cron_month, + cron_week=cron_week, + cron_day=cron_day, + cron_week_day=cron_week_day, + cron_hour=cron_hour, + cron_min=cron_min, + cron_sec=cron_sec, + ).validate() + + except ValueError as e: + error = str(e) + return render_template( + "pages/project/new.html.j2", + p=Project.query.filter_by(id=0).first(), + title="New Project", + error=error, + ) # create project me = Project( @@ -233,15 +304,15 @@ def new_project() -> Response: creator_id=current_user.id, updater_id=current_user.id, sequence_tasks=form.get("run_tasks_in_sequence", 0, type=int), - cron=form.get("project_cron", 0, type=int), - cron_year=form.get("project_cron_year", None, type=int), - cron_month=form.get("project_cron_mnth", None, type=int), - cron_week=form.get("project_cron_week", None, type=int), - cron_day=form.get("project_cron_day", None, type=int), - cron_week_day=form.get("project_cron_wday", None, type=int), - cron_hour=form.get("project_cron_hour", None, type=int), - cron_min=form.get("project_cron_min", None, type=int), - cron_sec=form.get("project_cron_sec", None, type=int), + cron=cron, + cron_year=cron_year, + cron_month=cron_month, + cron_week=cron_week, + cron_day=cron_day, + cron_week_day=cron_week_day, + cron_hour=cron_hour, + cron_min=cron_min, + cron_sec=cron_sec, cron_start_date=form_to_date(form.get("project_cron_sdate", None, type=str)), cron_end_date=form_to_date(form.get("project_cron_edate", None, type=str)), intv=form.get("project_intv", 0, type=int), @@ -319,15 +390,11 @@ def delete_project(project_id: int) -> Response: db.session.commit() # delete tasks - db.session.query(Task).filter(Task.project_id == project_id).delete( - synchronize_session=False - ) + db.session.query(Task).filter(Task.project_id == project_id).delete(synchronize_session=False) db.session.commit() # delete params - ProjectParam.query.filter_by(project_id=project_id).delete( - synchronize_session=False - ) + ProjectParam.query.filter_by(project_id=project_id).delete(synchronize_session=False) db.session.commit() # delete project @@ -419,9 +486,7 @@ def duplicate_project(project_id: int) -> Response: db.session.add(new_param) db.session.commit() - return redirect( - url_for("project_bp.one_project", project_id=my_project_copy.id) - ) + return redirect(url_for("project_bp.one_project", project_id=my_project_copy.id)) flash("Project does not exist.") return redirect(url_for("project_bp.all_projects")) diff --git a/web/web/saml_auth.py b/web/web/saml_auth.py index 8236617d..5881964d 100644 --- a/web/web/saml_auth.py +++ b/web/web/saml_auth.py @@ -1,6 +1,5 @@ """SAML Login/Logout web views.""" - from flask import Blueprint, Flask, abort from flask import current_app as app from flask import flash, make_response, redirect, request, session, url_for @@ -66,9 +65,7 @@ def idp_initiated() -> Response: logging.warning(identity) if identity: - account_name = identity.get(app.config["SAML_ATTR_MAP"]["account_name"])[ - 0 - ].lower() + account_name = identity.get(app.config["SAML_ATTR_MAP"]["account_name"])[0].lower() email = identity.get(app.config["SAML_ATTR_MAP"]["email"])[0].lower() diff --git a/web/web/table.py b/web/web/table.py index e18eee61..37380a80 100644 --- a/web/web/table.py +++ b/web/web/table.py @@ -116,14 +116,12 @@ def project_list(my_type: str = "all") -> Response: me.append( { "Name": f'{status_icon}{proj["Name"]}', - "Last Run": relative_to_now(proj["Last Run"]) - if proj["Last Run"] - else "", - "Next Run": datetime.datetime.strftime( - proj["Next Run"], " %m/%-d/%y %H:%M" - ) - if proj["Next Run"] and isinstance(proj["Next Run"], datetime.datetime) - else (proj["Next Run"] if proj["Next Run"] else "None"), + "Last Run": relative_to_now(proj["Last Run"]) if proj["Last Run"] else "", + "Next Run": ( + datetime.datetime.strftime(proj["Next Run"], " %m/%-d/%y %H:%M") + if proj["Next Run"] and isinstance(proj["Next Run"], datetime.datetime) + else (proj["Next Run"] if proj["Next Run"] else "None") + ), "Tasks": str((proj["Tasks"] or 0)), } ) @@ -176,13 +174,11 @@ def tasklog_userevents() -> Response: me.append( { - "Task Name": '' - + log["Task Name"] - + "" - if log["Task Name"] - else "N/A", + "Task Name": ( + '' + log["Task Name"] + "" + if log["Task Name"] + else "N/A" + ), "Run Id": ( "' + task["Task Name"] + "", - "Project Name": '' - + task["Project Name"] - + "" - if task["Project Id"] - else "Orphan :'(", + "Project Name": ( + '' + + task["Project Name"] + + "" + if task["Project Id"] + else "Orphan :'(" + ), "Connection": task["Connection"], - "Enabled": "Disable" - if task["Enabled"] == 1 - else "Enable", - "Last Run": datetime.datetime.strftime( - task["Last Run"], "%a, %b %-d, %Y %H:%M:%S" - ) - if task["Last Run"] and isinstance(task["Last Run"], datetime.datetime) - else (task["Last Run"] if task["Last Run"] else "Never"), - "Run Now": "Run Now", + "Enabled": ( + "Disable" + if task["Enabled"] == 1 + else "Enable" + ), + "Last Run": ( + datetime.datetime.strftime(task["Last Run"], "%a, %b %-d, %Y %H:%M:%S") + if task["Last Run"] and isinstance(task["Last Run"], datetime.datetime) + else (task["Last Run"] if task["Last Run"] else "Never") + ), + "Run Now": "Run Now", "Status": task["Status"] if task["Status"] else "None", - "Next Run": datetime.datetime.strftime( - task["Next Run"], "%a, %b %-d, %Y %H:%M:%S" - ) - if task["Next Run"] and isinstance(task["Next Run"], datetime.datetime) - else (task["Next Run"] if task["Next Run"] else "None"), - "class": "error" - if task["Status Id"] == 2 - or (not task["Next Run"] and task["Enabled"] == 1) - else "", + "Next Run": ( + datetime.datetime.strftime(task["Next Run"], "%a, %b %-d, %Y %H:%M:%S") + if task["Next Run"] and isinstance(task["Next Run"], datetime.datetime) + else (task["Next Run"] if task["Next Run"] else "None") + ), + "class": ( + "error" + if task["Status Id"] == 2 or (not task["Next Run"] and task["Enabled"] == 1) + else "" + ), } ) @@ -458,8 +457,7 @@ def connection_tasks(connection_id: int) -> Response: def table_jobs_orphans() -> Response: """Get a table of any jobs without a linked task.""" active_tasks = [ - x[0] - for x in db.session.query().select_from(Task).add_columns(text("task.id")).all() + x[0] for x in db.session.query().select_from(Task).add_columns(text("task.id")).all() ] page = request.args.get("p", default=1, type=int) @@ -479,9 +477,7 @@ def table_jobs_orphans() -> Response: if int(job["id"]) not in active_tasks: table.append( { - "Action": "Delete", + "Action": "Delete", "Name": job["name"], "Id": job["id"], "Next Run": job["next_run_time"], @@ -554,9 +550,7 @@ def dash_tasks(task_type: str) -> Response: elif task_type == "scheduled": try: ids = json.loads( - requests.get( - app.config["SCHEDULER_HOST"] + "/scheduled", timeout=60 - ).text + requests.get(app.config["SCHEDULER_HOST"] + "/scheduled", timeout=60).text ) tasks = tasks.filter(and_(Task.id.in_(ids), Task.enabled == 1)) # type: ignore[attr-defined, union-attr] except ( @@ -620,17 +614,13 @@ def dash_tasks(task_type: str) -> Response: if task["Owner Id"] else "" ), - "Last Run": relative_to_now(task["Last Run"]) - if task["Last Run"] - else "Never", - "Started": relative_to_now(task["Last Run"]) - if task["Last Run"] - else "Never", - "Next Run": datetime.datetime.strftime( - task["Next Run"], "%m/%-d/%y %H:%M" - ) - if task["Next Run"] and isinstance(task["Next Run"], datetime.datetime) - else (task["Next Run"] if task["Next Run"] else "None"), + "Last Run": relative_to_now(task["Last Run"]) if task["Last Run"] else "Never", + "Started": relative_to_now(task["Last Run"]) if task["Last Run"] else "Never", + "Next Run": ( + datetime.datetime.strftime(task["Next Run"], "%m/%-d/%y %H:%M") + if task["Next Run"] and isinstance(task["Next Run"], datetime.datetime) + else (task["Next Run"] if task["Next Run"] else "None") + ), "Actions": ( ( "{enabled}{status_icon}{task["Name"]}
', "Last Run": relative_to_now(task["Last Run"]) if task["Last Run"] else "", - "Next Run": datetime.datetime.strftime(task["Next Run"], "%m/%-d/%y %H:%M") - if task["Next Run"] and isinstance(task["Next Run"], datetime.datetime) - else (task["Next Run"] if task["Next Run"] else ""), + "Next Run": ( + datetime.datetime.strftime(task["Next Run"], "%m/%-d/%y %H:%M") + if task["Next Run"] and isinstance(task["Next Run"], datetime.datetime) + else (task["Next Run"] if task["Next Run"] else "") + ), } if my_type == "all": data["Owner"] = ( - "" - + task["Owner"] - + "" + "" + task["Owner"] + "" if task["Owner"] else "" ) @@ -798,7 +786,9 @@ def project_all_tasks(project_id: int) -> Response: .outerjoin(TaskStatus, TaskStatus.id == Task.status_id) .filter(Task.project_id == project_id) .add_columns(*cols.values()) - .order_by(text(str(cols[split_sort[0]]) + " " + split_sort[1])) + .order_by( + Task.order.asc(), Task.name.asc(), text(str(cols[split_sort[0]]) + " " + split_sort[1]) + ) ) me.append({"total": str(tasks.count() or 0)}) # runs.total @@ -829,18 +819,14 @@ def project_all_tasks(project_id: int) -> Response: me.append( { "Name": f'
{enabled}{status_icon}{task["Name"]}
', - "Last Run": relative_to_now(task["Last Run"]) - if task["Last Run"] - else "", - "Run Now": "Run Now", - "Next Run": datetime.datetime.strftime( - task["Next Run"], "%m/%-d/%y %H:%M" - ) - if task["Next Run"] and isinstance(task["Next Run"], datetime.datetime) - else (task["Next Run"] if task["Next Run"] else ""), - "Run Rank": (task["Run Rank"] if "Run Rank" in task else None), + "Last Run": relative_to_now(task["Last Run"]) if task["Last Run"] else "", + "Run Now": "Run Now", + "Next Run": ( + datetime.datetime.strftime(task["Next Run"], "%m/%-d/%y %H:%M") + if task["Next Run"] and isinstance(task["Next Run"], datetime.datetime) + else (task["Next Run"] if task["Next Run"] else "") + ), + "Run Rank": task.get("Run Rank", None), } ) @@ -893,12 +879,14 @@ def task_log(task_id: int) -> Response: { "log_id": log["log_id"], "job_id": ("(" + str(log["job_id"]) + ")" if log["job_id"] else ""), - "date": datetime.datetime.strftime( - log["date"], - "%m/%-d/%y %H:%M:%S", - ) - if log["date"] and isinstance(log["date"], datetime.datetime) - else (log["date"] if log["date"] else "None"), + "date": ( + datetime.datetime.strftime( + log["date"], + "%m/%-d/%y %H:%M:%S", + ) + if log["date"] and isinstance(log["date"], datetime.datetime) + else (log["date"] if log["date"] else "None") + ), "status": log["status"] if log["status"] else "None", "message": html.escape(log["message"]), "class": "error" if log["status_id"] == 2 or log["error"] == 1 else "", @@ -945,11 +933,7 @@ def dash_log() -> Response: .order_by(text(str(cols[split_sort[0]]) + " " + split_sort[1])) ) - me = [ - { - "head": '["Task Name", "Project Name", "Owner", "Status", "Status Date", "Message"]' - } - ] + me = [{"head": '["Task Name", "Project Name", "Owner", "Status", "Status Date", "Message"]'}] me.append({"total": str(logs.count() or 0)}) # runs.total me.append({"page": str(page)}) # page me.append({"page_size": str(10)}) @@ -961,38 +945,35 @@ def dash_log() -> Response: me.append( { - "Task Name": '' - + log["Task Name"] - + "" - if log["Task Name"] - else "N/A", + "Task Name": ( + '' + log["Task Name"] + "" + if log["Task Name"] + else "N/A" + ), "Project Name": ( - '' - + log["Project Name"] - + "" - ) - if log["Project Id"] - else "N/A", + ( + '' + + log["Project Name"] + + "" + ) + if log["Project Id"] + else "N/A" + ), "Owner": ( - "" - + log["Owner"] - + "" + "" + log["Owner"] + "" if log["Owner"] else "N/A" ), - "Status Date": datetime.datetime.strftime( - log["Status Date"], - "%a, %b %-d, %Y %H:%M:%S.%f", - ) - if log["Status Date"] - and isinstance(log["Status Date"], datetime.datetime) - else (log["Status Date"] if log["Status Date"] else "None"), + "Status Date": ( + datetime.datetime.strftime( + log["Status Date"], + "%a, %b %-d, %Y %H:%M:%S.%f", + ) + if log["Status Date"] and isinstance(log["Status Date"], datetime.datetime) + else (log["Status Date"] if log["Status Date"] else "None") + ), "my_date_sort": log["Status Date"], "Status": log["Status"] if log["Status"] else "None", "Message": ( @@ -1052,11 +1033,7 @@ def dash_error_log() -> Response: .order_by(text(str(cols[split_sort[0]]) + " " + split_sort[1])) ) - me = [ - { - "head": '["Task Name", "Project Name", "Owner", "Status", "Status Date", "Message"]' - } - ] + me = [{"head": '["Task Name", "Project Name", "Owner", "Status", "Status Date", "Message"]'}] me.append({"total": str(logs.count() or 0)}) # runs.total me.append({"page": str(page)}) # page me.append({"page_size": str(10)}) @@ -1068,38 +1045,35 @@ def dash_error_log() -> Response: me.append( { - "Task Name": '' - + log["Task Name"] - + "" - if log["Task Name"] - else "N/A", + "Task Name": ( + '' + log["Task Name"] + "" + if log["Task Name"] + else "N/A" + ), "Project Name": ( - '' - + log["Project Name"] - + "" - ) - if log["Project Id"] - else "N/A", + ( + '' + + log["Project Name"] + + "" + ) + if log["Project Id"] + else "N/A" + ), "Owner": ( - "" - + log["Owner"] - + "" + "" + log["Owner"] + "" if log["Owner"] else "N/A" ), - "Status Date": datetime.datetime.strftime( - log["Status Date"], - "%a, %b %-d, %Y %H:%M:%S.%f", - ) - if log["Status Date"] - and isinstance(log["Status Date"], datetime.datetime) - else (log["Status Date"] if log["Status Date"] else "None"), + "Status Date": ( + datetime.datetime.strftime( + log["Status Date"], + "%a, %b %-d, %Y %H:%M:%S.%f", + ) + if log["Status Date"] and isinstance(log["Status Date"], datetime.datetime) + else (log["Status Date"] if log["Status Date"] else "None") + ), "my_date_sort": log["Status Date"], "Status": log["Status"] if log["Status"] else "None", "Message": ( @@ -1148,11 +1122,7 @@ def one_task_files(task_id: int) -> Response: .order_by(text(str(cols[split_sort[0]]) + " " + split_sort[1])) ) - me = [ - { - "head": '["File Name", "Run Id", "Created", "md5 Hash", "File Size", "Action"]' - } - ] + me = [{"head": '["File Name", "Run Id", "Created", "md5 Hash", "File Size", "Action"]'}] me.append({"total": str(my_files.count() or 0)}) # runs.total me.append({"page": str(page)}) # page me.append({"page_size": str(10)}) @@ -1180,8 +1150,7 @@ def one_task_files(task_id: int) -> Response: my_file["Created"], "%a, %b %-d, %Y %H:%M:%S.%f", ) - if my_file["Created"] - and isinstance(my_file["Created"], datetime.datetime) + if my_file["Created"] and isinstance(my_file["Created"], datetime.datetime) else (my_file["Created"] if my_file["Created"] else "N/A") ), "File Size": my_file["File Size"], @@ -1220,8 +1189,7 @@ def one_task_files(task_id: int) -> Response: + "/file/" + str(my_file["File Id"]) + "/sendEmail' >Send to Email
" - if task.email_completion == 1 - and task.email_completion_file == 1 + if task.email_completion == 1 and task.email_completion_file == 1 else "" ) + ( diff --git a/web/web/task.py b/web/web/task.py index 7aee40db..0ac6045b 100644 --- a/web/web/task.py +++ b/web/web/task.py @@ -243,11 +243,7 @@ def task_get_processing_code(task_id: int) -> str: def task_sftp_dest() -> str: """Template to add sftp destination to a task.""" org = request.args.get("org", default=1, type=int) - dest = ( - ConnectionSftp.query.filter_by(connection_id=org) - .order_by(ConnectionSftp.name) - .all() - ) + dest = ConnectionSftp.query.filter_by(connection_id=org).order_by(ConnectionSftp.name).all() org = Connection.query.filter_by(id=org).first() return render_template( @@ -263,11 +259,7 @@ def task_sftp_dest() -> str: def task_gpg_file() -> str: """Template to add gpg encryption to a task.""" org = request.args.get("org", default=1, type=int) - dest = ( - ConnectionGpg.query.filter_by(connection_id=org) - .order_by(ConnectionGpg.name) - .all() - ) + dest = ConnectionGpg.query.filter_by(connection_id=org).order_by(ConnectionGpg.name).all() org = Connection.query.filter_by(id=org).first() return render_template( @@ -283,11 +275,7 @@ def task_gpg_file() -> str: def task_sftp_source() -> str: """Template to add sftp source to a task.""" org = request.args.get("org", default=1, type=int) - dest = ( - ConnectionSftp.query.filter_by(connection_id=org) - .order_by(ConnectionSftp.name) - .all() - ) + dest = ConnectionSftp.query.filter_by(connection_id=org).order_by(ConnectionSftp.name).all() org = Connection.query.filter_by(id=org).first() return render_template( @@ -303,11 +291,7 @@ def task_sftp_source() -> str: def task_ssh_source() -> str: """Template to add ssh source to a task.""" org = request.args.get("org", default=1, type=int) - dest = ( - ConnectionSsh.query.filter_by(connection_id=org) - .order_by(ConnectionSsh.name) - .all() - ) + dest = ConnectionSsh.query.filter_by(connection_id=org).order_by(ConnectionSsh.name).all() org = Connection.query.filter_by(id=org).first() return render_template( @@ -323,11 +307,7 @@ def task_ssh_source() -> str: def task_sftp_query() -> str: """Template to add sftp query source to a task.""" org = request.args.get("org", default=1, type=int) - dest = ( - ConnectionSftp.query.filter_by(connection_id=org) - .order_by(ConnectionSftp.name) - .all() - ) + dest = ConnectionSftp.query.filter_by(connection_id=org).order_by(ConnectionSftp.name).all() org = Connection.query.filter_by(id=org).first() return render_template( @@ -343,11 +323,7 @@ def task_sftp_query() -> str: def task_sftp_processing() -> str: """Template to add sftp processing source to a task.""" org = request.args.get("org", default=1, type=int) - dest = ( - ConnectionSftp.query.filter_by(connection_id=org) - .order_by(ConnectionSftp.name) - .all() - ) + dest = ConnectionSftp.query.filter_by(connection_id=org).order_by(ConnectionSftp.name).all() org = Connection.query.filter_by(id=org).first() @@ -364,11 +340,7 @@ def task_sftp_processing() -> str: def task_ftp_dest() -> str: """Template to add ftp destination to a task.""" org = request.args.get("org", default=1, type=int) - dest = ( - ConnectionFtp.query.filter_by(connection_id=org) - .order_by(ConnectionFtp.name) - .all() - ) + dest = ConnectionFtp.query.filter_by(connection_id=org).order_by(ConnectionFtp.name).all() org = Connection.query.filter_by(id=org).first() return render_template( @@ -381,11 +353,7 @@ def task_ftp_dest() -> str: def task_ftp_source() -> str: """Template to add ftp source to a task.""" org = request.args.get("org", default=1, type=int) - dest = ( - ConnectionFtp.query.filter_by(connection_id=org) - .order_by(ConnectionFtp.name) - .all() - ) + dest = ConnectionFtp.query.filter_by(connection_id=org).order_by(ConnectionFtp.name).all() org = Connection.query.filter_by(id=org).first() return render_template( @@ -401,11 +369,7 @@ def task_ftp_source() -> str: def task_ftp_processing() -> str: """Template to add ftp processing source to a task.""" org = request.args.get("org", default=1, type=int) - dest = ( - ConnectionFtp.query.filter_by(connection_id=org) - .order_by(ConnectionFtp.name) - .all() - ) + dest = ConnectionFtp.query.filter_by(connection_id=org).order_by(ConnectionFtp.name).all() org = Connection.query.filter_by(id=org).first() return render_template( "pages/task/processing/ftp_processing.html.j2", @@ -420,11 +384,7 @@ def task_ftp_processing() -> str: def task_ftp_query() -> str: """Template to add ftp query source to a task.""" org = request.args.get("org", default=1, type=int) - dest = ( - ConnectionFtp.query.filter_by(connection_id=org) - .order_by(ConnectionFtp.name) - .all() - ) + dest = ConnectionFtp.query.filter_by(connection_id=org).order_by(ConnectionFtp.name).all() org = Connection.query.filter_by(id=org).first() return render_template( @@ -440,11 +400,7 @@ def task_ftp_query() -> str: def task_smb_source() -> str: """Template to add smb source to a task.""" org = request.args.get("org", default=1, type=int) - dest = ( - ConnectionSmb.query.filter_by(connection_id=org) - .order_by(ConnectionSmb.name) - .all() - ) + dest = ConnectionSmb.query.filter_by(connection_id=org).order_by(ConnectionSmb.name).all() org = Connection.query.filter_by(id=org).first() return render_template( @@ -460,11 +416,7 @@ def task_smb_source() -> str: def task_smb_dest() -> str: """Template to add smb destination to a task.""" org = request.args.get("org", default=1, type=int) - dest = ( - ConnectionSmb.query.filter_by(connection_id=org) - .order_by(ConnectionSmb.name) - .all() - ) + dest = ConnectionSmb.query.filter_by(connection_id=org).order_by(ConnectionSmb.name).all() org = Connection.query.filter_by(id=org).first() return render_template( @@ -477,11 +429,7 @@ def task_smb_dest() -> str: def task_smb_query() -> str: """Template to add smb query source to a task.""" org = request.args.get("org", default=1, type=int) - query = ( - ConnectionSmb.query.filter_by(connection_id=org) - .order_by(ConnectionSmb.name) - .all() - ) + query = ConnectionSmb.query.filter_by(connection_id=org).order_by(ConnectionSmb.name).all() org = Connection.query.filter_by(id=org).first() return render_template( @@ -498,9 +446,7 @@ def task_smb_processing() -> str: """Template to add smb processing source to a task.""" org = request.args.get("org", default=1, type=int) processing = ( - ConnectionSmb.query.filter_by(connection_id=org) - .order_by(ConnectionSmb.name) - .all() + ConnectionSmb.query.filter_by(connection_id=org).order_by(ConnectionSmb.name).all() ) org = Connection.query.filter_by(id=org).first() diff --git a/web/web/task_controls.py b/web/web/task_controls.py index 729f6e0d..4e0b0ece 100644 --- a/web/web/task_controls.py +++ b/web/web/task_controls.py @@ -22,35 +22,68 @@ def run_task(task_id: int) -> Response: task = Task.query.filter_by(id=task_id).first() redis_client.delete("runner_" + str(task_id) + "_attempt") if task: - try: - requests.get( - app.config["SCHEDULER_HOST"] + "/run/" + str(task_id), timeout=60 - ) - log = TaskLog( # type: ignore[call-arg] - task_id=task.id, - status_id=7, - message=(current_user.full_name or "none") + ": Task manually run.", - ) - db.session.add(log) - db.session.commit() - flash("Task run started.") - # pylint: disable=broad-except - except BaseException as e: - log = TaskLog( # type: ignore[call-arg] - status_id=7, - error=1, - task_id=task_id, - message=( - (current_user.full_name or "none") - + ": Failed to manually run task. (" - + str(task_id) - + ")\n" - + str(e) - ), - ) - db.session.add(log) - db.session.commit() - flash("Failed to run task.") + # if the task is a sequence and enabled + # then kick off all other tasks with same rank. + if task.project.sequence_tasks == 1 and task.enabled == 1: + tasks = db.session.execute( + db.select(Task).filter_by(project_id=task.project_id, enabled=1, order=task.order) + ).scalars() + for tsk in tasks: + try: + requests.get(app.config["SCHEDULER_HOST"] + "/run/" + str(tsk.id), timeout=60) + log = TaskLog( # type: ignore[call-arg] + task_id=tsk.id, + status_id=7, + message=(current_user.full_name or "none") + ": Task manually run.", + ) + db.session.add(log) + db.session.commit() + flash("Task run started.") + # pylint: disable=broad-except + except BaseException as e: + log = TaskLog( # type: ignore[call-arg] + status_id=7, + error=1, + task_id=tsk.id, + message=( + (current_user.full_name or "none") + + ": Failed to manually run task. (" + + str(tsk.id) + + ")\n" + + str(e) + ), + ) + db.session.add(log) + db.session.commit() + flash("Failed to run task.") + else: + try: + requests.get(app.config["SCHEDULER_HOST"] + "/run/" + str(task_id), timeout=60) + log = TaskLog( # type: ignore[call-arg] + task_id=task.id, + status_id=7, + message=(current_user.full_name or "none") + ": Task manually run.", + ) + db.session.add(log) + db.session.commit() + flash("Task run started.") + # pylint: disable=broad-except + except BaseException as e: + log = TaskLog( # type: ignore[call-arg] + status_id=7, + error=1, + task_id=task_id, + message=( + (current_user.full_name or "none") + + ": Failed to manually run task. (" + + str(task_id) + + ")\n" + + str(e) + ), + ) + db.session.add(log) + db.session.commit() + flash("Failed to run task.") return redirect(url_for("task_bp.one_task", task_id=task_id)) @@ -104,7 +137,6 @@ def duplicate_task(task_id: int) -> Response: new_task.creator_id = current_user.id new_task.updater_id = current_user.id new_task.status_id = None - new_task.order = None new_task.name = str(my_task.name or "") + " - Duplicated" db.session.add(new_task) @@ -122,7 +154,7 @@ def duplicate_task(task_id: int) -> Response: db.session.add(new_param) db.session.commit() - return redirect(url_for("task_bp.one_task", task_id=new_task.id)) + return redirect(url_for("task_edit_bp.task_edit_get", task_id=new_task.id)) flash("Task does not exist.") return redirect(url_for("task_bp.all_tasks")) @@ -135,9 +167,7 @@ def task_status(task_id: int) -> Response: task = Task.query.filter_by(id=task_id).first() if task: - attempt = ( - redis_client.zincrby("runner_" + str(task_id) + "_attempt", 0, "inc") or 0 - ) + attempt = redis_client.zincrby("runner_" + str(task_id) + "_attempt", 0, "inc") or 0 return jsonify( { @@ -157,17 +187,13 @@ def task_status(task_id: int) -> Response: else "N/A" ), "next_run_abs": ( - " (%s)" - % task.next_run.astimezone().strftime("%a, %b %-d, %Y %H:%M:%S") + " (%s)" % task.next_run.astimezone().strftime("%a, %b %-d, %Y %H:%M:%S") if task.next_run # and task.next_run > datetime.datetime.now() else "" ), - "last_run": ( - relative_to_now(task.last_run.astimezone()) if task.last_run else "" - ), + "last_run": (relative_to_now(task.last_run.astimezone()) if task.last_run else ""), "last_run_abs": ( - " (%s)" - % task.last_run.astimezone().strftime("%a, %b %-d, %Y %H:%M:%S") + " (%s)" % task.last_run.astimezone().strftime("%a, %b %-d, %Y %H:%M:%S") if task.last_run else "" ), @@ -199,10 +225,7 @@ def delete_task(task_id: int) -> Response: log = TaskLog( # type: ignore[call-arg] status_id=7, - message=(current_user.full_name or "none") - + ": Task deleted. (" - + str(task_id) - + ")", + message=(current_user.full_name or "none") + ": Task deleted. (" + str(task_id) + ")", ) db.session.add(log) db.session.commit() @@ -258,8 +281,7 @@ def reset_task(task_id: int) -> Response: log = TaskLog( # type: ignore[call-arg] task_id=task.id, status_id=7, - message=(current_user.full_name or "none") - + ": Reset task status to completed.", + message=(current_user.full_name or "none") + ": Reset task status to completed.", ) db.session.add(log) db.session.commit() diff --git a/web/web/task_edit.py b/web/web/task_edit.py index d370036c..104aef04 100644 --- a/web/web/task_edit.py +++ b/web/web/task_edit.py @@ -42,17 +42,11 @@ def task_new_get(project_id: int) -> Union[str, Response]: me = Project.query.filter_by(id=project_id).first() if me: source_type = TaskSourceType.query.order_by(TaskSourceType.name).all() - source_query_type = TaskSourceQueryType.query.order_by( - TaskSourceQueryType.name - ).all() + source_query_type = TaskSourceQueryType.query.order_by(TaskSourceQueryType.name).all() source = ConnectionDatabase.query.order_by(ConnectionDatabase.name).all() conn = Connection.query.order_by(Connection.name).all() - file_type = TaskDestinationFileType.query.order_by( - TaskDestinationFileType.id - ).all() - processing_type = TaskProcessingType.query.order_by( - TaskProcessingType.name - ).all() + file_type = TaskDestinationFileType.query.order_by(TaskDestinationFileType.id).all() + processing_type = TaskProcessingType.query.order_by(TaskProcessingType.name).all() quote_level = QuoteLevel.query.order_by(QuoteLevel.id).all() return render_template( @@ -90,26 +84,20 @@ def task_new(project_id: int) -> Union[str, Response]: order=form.get("task-rank", 0, type=int), source_type_id=form.get("sourceType", None, type=int), source_database_id=form.get("task-source-database", None, type=int), - source_query_include_header=form.get( - "task_include_query_headers", None, type=int - ), + source_query_include_header=form.get("task_include_query_headers", None, type=int), source_smb_id=form.get("task-source-smb", None, type=int), source_smb_file=form.get("sourceSmbFile", None, type=str), source_smb_ignore_delimiter=form.get("task_smb_ignore_delimiter", 0, type=int), source_smb_delimiter=form.get("sourceSmbDelimiter", None, type=str), source_sftp_id=form.get("task-source-sftp", None, type=int), source_sftp_file=form.get("sourceSftpFile", None, type=str), - source_sftp_ignore_delimiter=form.get( - "task_sftp_ignore_delimiter", None, type=int - ), + source_sftp_ignore_delimiter=form.get("task_sftp_ignore_delimiter", None, type=int), enable_source_cache=form.get("task_enable_source_cache", None, type=int), source_require_sql_output=form.get("task_require_sql_output", None, type=int), source_sftp_delimiter=form.get("sourceSftpDelimiter", None, type=str), source_ftp_id=form.get("task-source-ftp", None, type=int), source_ftp_file=form.get("sourceFtpFile", None, type=str), - source_ftp_ignore_delimiter=form.get( - "task_ftp_ignore_delimiter", None, type=int - ), + source_ftp_ignore_delimiter=form.get("task_ftp_ignore_delimiter", None, type=int), source_ftp_delimiter=form.get("sourceFtpDelimiter", None, type=str), source_ssh_id=form.get("task-source-ssh", None, type=int), source_query_type_id=form.get("sourceQueryType", None, type=int), @@ -146,38 +134,28 @@ def task_new(project_id: int) -> Union[str, Response]: ), destination_file_delimiter=form.get("fileDelimiter", None, type=str), destination_file_line_terminator=form.get("fileTerminator", None, type=str), - destination_ignore_delimiter=form.get( - "task_ignore_file_delimiter", None, type=int - ), + destination_ignore_delimiter=form.get("task_ignore_file_delimiter", None, type=int), file_gpg=form.get("task_file_gpg", 0, type=int), file_gpg_id=form.get("task-file-gpg", None, type=int), destination_sftp=form.get("task_save_sftp", 0, type=int), destination_sftp_id=form.get("task-destination-sftp", None, type=int), destination_sftp_overwrite=form.get("task_overwrite_sftp", None, type=int), - destination_sftp_dont_send_empty_file=form.get( - "task_sftp_dont_send_empty", 0, type=int - ), + destination_sftp_dont_send_empty_file=form.get("task_sftp_dont_send_empty", 0, type=int), destination_ftp=form.get("task_save_ftp", 0, type=int), destination_ftp_id=form.get("task-destination-ftp", None, type=int), destination_ftp_overwrite=form.get("task_overwrite_ftp", None, type=int), - destination_ftp_dont_send_empty_file=form.get( - "task_ftp_dont_send_empty", 0, type=int - ), + destination_ftp_dont_send_empty_file=form.get("task_ftp_dont_send_empty", 0, type=int), destination_smb=form.get("task_save_smb", 0, type=int), destination_smb_id=form.get("task-destination-smb", None, type=int), destination_smb_overwrite=form.get("task_overwrite_smb", None, type=int), - destination_smb_dont_send_empty_file=form.get( - "task_smb_dont_send_empty", 0, type=int - ), + destination_smb_dont_send_empty_file=form.get("task_smb_dont_send_empty", 0, type=int), email_completion=form.get("task_send_completion_email", 0, type=int), email_completion_recipients=form.get("completionEmailRecip", "", type=str), email_completion_message=form.get("completion_email_msg", "", type=str), email_completion_subject=form.get("completionEmailSubject", "", type=str), email_completion_log=form.get("task_send_completion_email_log", 0, type=int), email_completion_file=form.get("task_send_output", 0, type=int), - email_completion_dont_send_empty_file=form.get( - "task_dont_send_empty", 0, type=int - ), + email_completion_dont_send_empty_file=form.get("task_dont_send_empty", 0, type=int), email_completion_file_embed=form.get("task_embed_output", 0, type=int), email_error=form.get("task_send_error_email", 0, type=int), email_error_recipients=form.get("errorEmailRecip", "", type=str), @@ -232,20 +210,14 @@ def task_edit_get(task_id: int) -> Union[Response, str]: if me: source_type = TaskSourceType.query.order_by(TaskSourceType.name).all() - processing_type = TaskProcessingType.query.order_by( - TaskProcessingType.name - ).all() - source_query_type = TaskSourceQueryType.query.order_by( - TaskSourceQueryType.name - ).all() + processing_type = TaskProcessingType.query.order_by(TaskProcessingType.name).all() + source_query_type = TaskSourceQueryType.query.order_by(TaskSourceQueryType.name).all() source = ConnectionDatabase.query.order_by(ConnectionDatabase.name).all() conn = Connection.query.order_by(Connection.name).all() - file_type = TaskDestinationFileType.query.order_by( - TaskDestinationFileType.id - ).all() + file_type = TaskDestinationFileType.query.order_by(TaskDestinationFileType.id).all() sftp_dest = ( ConnectionSftp.query.filter_by( connection_id=me.destination_sftp_conn.connection_id @@ -268,60 +240,42 @@ def task_edit_get(task_id: int) -> Union[Response, str]: else "" ) gpg_file = ( - ( - ConnectionGpg.query.filter_by( - connection_id=me.file_gpg_conn.connection_id - ).all() - ) + (ConnectionGpg.query.filter_by(connection_id=me.file_gpg_conn.connection_id).all()) if me.file_gpg_conn else "" ) sftp_source = ( - ConnectionSftp.query.filter_by( - connection_id=me.source_sftp_conn.connection_id - ).all() + ConnectionSftp.query.filter_by(connection_id=me.source_sftp_conn.connection_id).all() if me.source_sftp_id else "" ) sftp_query = ( - ConnectionSftp.query.filter_by( - connection_id=me.query_sftp_conn.connection_id - ).all() + ConnectionSftp.query.filter_by(connection_id=me.query_sftp_conn.connection_id).all() if me.query_sftp_id else "" ) ssh_source = ( - ConnectionSsh.query.filter_by( - connection_id=me.source_ssh_conn.connection_id - ).all() + ConnectionSsh.query.filter_by(connection_id=me.source_ssh_conn.connection_id).all() if me.source_ssh_id else "" ) ftp_source = ( - ConnectionFtp.query.filter_by( - connection_id=me.source_ftp_conn.connection_id - ).all() + ConnectionFtp.query.filter_by(connection_id=me.source_ftp_conn.connection_id).all() if me.source_ftp_id else "" ) ftp_query = ( - ConnectionFtp.query.filter_by( - connection_id=me.query_ftp_conn.connection_id - ).all() + ConnectionFtp.query.filter_by(connection_id=me.query_ftp_conn.connection_id).all() if me.query_ftp_id else "" ) smb_source = ( - ConnectionSmb.query.filter_by( - connection_id=me.source_smb_conn.connection_id - ).all() + ConnectionSmb.query.filter_by(connection_id=me.source_smb_conn.connection_id).all() if me.source_smb_id else "" ) smb_query = ( - ConnectionSmb.query.filter_by( - connection_id=me.query_smb_conn.connection_id - ).all() + ConnectionSmb.query.filter_by(connection_id=me.query_smb_conn.connection_id).all() if me.query_smb_id else "" ) @@ -341,16 +295,12 @@ def task_edit_get(task_id: int) -> Union[Response, str]: else "" ) ftp_processing = ( - ConnectionFtp.query.filter_by( - connection_id=me.processing_ftp_conn.connection_id - ).all() + ConnectionFtp.query.filter_by(connection_id=me.processing_ftp_conn.connection_id).all() if me.processing_ftp_id else "" ) smb_processing = ( - ConnectionSmb.query.filter_by( - connection_id=me.processing_smb_conn.connection_id - ).all() + ConnectionSmb.query.filter_by(connection_id=me.processing_smb_conn.connection_id).all() if me.processing_smb_id else "" ) @@ -411,30 +361,20 @@ def task_edit_post(task_id: int) -> Response: order=form.get("task-rank", 0, type=int), source_type_id=form.get("sourceType", None, type=int), source_database_id=form.get("task-source-database", None, type=int), - source_query_include_header=form.get( - "task_include_query_headers", None, type=int - ), + source_query_include_header=form.get("task_include_query_headers", None, type=int), source_smb_id=form.get("task-source-smb", None, type=int), source_smb_file=form.get("sourceSmbFile", None, type=str), - source_smb_ignore_delimiter=form.get( - "task_smb_ignore_delimiter", 0, type=int - ), + source_smb_ignore_delimiter=form.get("task_smb_ignore_delimiter", 0, type=int), source_smb_delimiter=form.get("sourceSmbDelimiter", None, type=str), source_sftp_id=form.get("task-source-sftp", None, type=int), source_sftp_file=form.get("sourceSftpFile", None, type=str), - source_sftp_ignore_delimiter=form.get( - "task_sftp_ignore_delimiter", None, type=int - ), + source_sftp_ignore_delimiter=form.get("task_sftp_ignore_delimiter", None, type=int), source_sftp_delimiter=form.get("sourceSftpDelimiter", None, type=str), source_ftp_id=form.get("task-source-ftp", None, type=int), source_ftp_file=form.get("sourceFtpFile", None, type=str), - source_ftp_ignore_delimiter=form.get( - "task_ftp_ignore_delimiter", None, type=int - ), + source_ftp_ignore_delimiter=form.get("task_ftp_ignore_delimiter", None, type=int), enable_source_cache=form.get("task_enable_source_cache", None, type=int), - source_require_sql_output=form.get( - "task_require_sql_output", None, type=int - ), + source_require_sql_output=form.get("task_require_sql_output", None, type=int), source_ftp_delimiter=form.get("sourceFtpDelimiter", None, type=str), source_ssh_id=form.get("task-source-ssh", None, type=int), source_query_type_id=form.get("sourceQueryType", None, type=int), @@ -471,9 +411,7 @@ def task_edit_post(task_id: int) -> Response: ), destination_file_delimiter=form.get("fileDelimiter", None, type=str), destination_file_line_terminator=form.get("fileTerminator", None, type=str), - destination_ignore_delimiter=form.get( - "task_ignore_file_delimiter", None, type=int - ), + destination_ignore_delimiter=form.get("task_ignore_file_delimiter", None, type=int), file_gpg=form.get("task_file_gpg", 0, type=int), file_gpg_id=form.get("task-file-gpg", None, type=int), destination_sftp=form.get("task_save_sftp", 0, type=int), @@ -485,26 +423,18 @@ def task_edit_post(task_id: int) -> Response: destination_ftp=form.get("task_save_ftp", 0, type=int), destination_ftp_id=form.get("task-destination-ftp", None, type=int), destination_ftp_overwrite=form.get("task_overwrite_ftp", None, type=int), - destination_ftp_dont_send_empty_file=form.get( - "task_ftp_dont_send_empty", 0, type=int - ), + destination_ftp_dont_send_empty_file=form.get("task_ftp_dont_send_empty", 0, type=int), destination_smb=form.get("task_save_smb", 0, type=int), destination_smb_id=form.get("task-destination-smb", None, type=int), destination_smb_overwrite=form.get("task_overwrite_smb", None, type=int), - destination_smb_dont_send_empty_file=form.get( - "task_smb_dont_send_empty", 0, type=int - ), + destination_smb_dont_send_empty_file=form.get("task_smb_dont_send_empty", 0, type=int), email_completion=form.get("task_send_completion_email", 0, type=int), email_completion_recipients=form.get("completionEmailRecip", "", type=str), email_completion_message=form.get("completion_email_msg", "", type=str), email_completion_subject=form.get("completionEmailSubject", "", type=str), - email_completion_log=form.get( - "task_send_completion_email_log", 0, type=int - ), + email_completion_log=form.get("task_send_completion_email_log", 0, type=int), email_completion_file=form.get("task_send_output", 0, type=int), - email_completion_dont_send_empty_file=form.get( - "task_dont_send_empty", 0, type=int - ), + email_completion_dont_send_empty_file=form.get("task_dont_send_empty", 0, type=int), email_completion_file_embed=form.get("task_embed_output", 0, type=int), email_error=form.get("task_send_error_email", 0, type=int), email_error_recipients=form.get("errorEmailRecip", "", type=str), diff --git a/web/web/task_files.py b/web/web/task_files.py index 6b8ade9f..0436996e 100644 --- a/web/web/task_files.py +++ b/web/web/task_files.py @@ -158,7 +158,7 @@ def one_task_file_send_email(task_id: int, file_id: int) -> Response: try: my_file = TaskFile.query.filter_by(id=file_id).first() output = requests.get( - f"{app.config['RUNNER_HOST']}/send_email/{task_id}/{my_file.job_id}/{file_id}", + f"{app.config['RUNNER_HOST']}/send_email/{my_file.job_id}/{file_id}", timeout=60, ).json() if output.get("error"): @@ -198,9 +198,7 @@ def one_task_file_download(file_id: int) -> Response: ) source_file = json.loads( - requests.get( - "%s/file/%s" % (app.config["RUNNER_HOST"], file_id), timeout=60 - ).text, + requests.get("%s/file/%s" % (app.config["RUNNER_HOST"], file_id), timeout=60).text, ).get("message") def stream_and_remove_file() -> Generator: @@ -210,9 +208,7 @@ def stream_and_remove_file() -> Generator: # check if it is a zip if zipfile.is_zipfile(source_file): - return send_file( - source_file, as_attachment=True, attachment_filename=my_file.name - ) + return send_file(source_file, as_attachment=True, download_name=my_file.name) # otherwise, stream it. # pylint: disable=R1732