diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..ab1f416
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,10 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Ignored default folder with query files
+/queries/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
+# Editor-based HTTP Client requests
+/httpRequests/
diff --git a/.idea/Thesis.iml b/.idea/Thesis.iml
new file mode 100644
index 0000000..f571432
--- /dev/null
+++ b/.idea/Thesis.iml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000..105ce2d
--- /dev/null
+++ b/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..db8786c
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..8424307
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/CACHEDIR.TAG b/CACHEDIR.TAG
new file mode 100644
index 0000000..837feef
--- /dev/null
+++ b/CACHEDIR.TAG
@@ -0,0 +1,4 @@
+Signature: 8a477f597d28d172789f06886806bc55
+# This file is a cache directory tag created by Python virtualenv.
+# For information about cache directory tags, see:
+# https://bford.info/cachedir/
\ No newline at end of file
diff --git a/bin/activate b/bin/activate
new file mode 100644
index 0000000..d390710
--- /dev/null
+++ b/bin/activate
@@ -0,0 +1,87 @@
+# This file must be used with "source bin/activate" *from bash*
+# you cannot run it directly
+
+
+if [ "${BASH_SOURCE-}" = "$0" ]; then
+ echo "You must source this script: \$ source $0" >&2
+ exit 33
+fi
+
+deactivate () {
+ unset -f pydoc >/dev/null 2>&1 || true
+
+ # reset old environment variables
+ # ! [ -z ${VAR+_} ] returns true if VAR is declared at all
+ if ! [ -z "${_OLD_VIRTUAL_PATH:+_}" ] ; then
+ PATH="$_OLD_VIRTUAL_PATH"
+ export PATH
+ unset _OLD_VIRTUAL_PATH
+ fi
+ if ! [ -z "${_OLD_VIRTUAL_PYTHONHOME+_}" ] ; then
+ PYTHONHOME="$_OLD_VIRTUAL_PYTHONHOME"
+ export PYTHONHOME
+ unset _OLD_VIRTUAL_PYTHONHOME
+ fi
+
+ # The hash command must be called to get it to forget past
+ # commands. Without forgetting past commands the $PATH changes
+ # we made may not be respected
+ hash -r 2>/dev/null
+
+ if ! [ -z "${_OLD_VIRTUAL_PS1+_}" ] ; then
+ PS1="$_OLD_VIRTUAL_PS1"
+ export PS1
+ unset _OLD_VIRTUAL_PS1
+ fi
+
+ unset VIRTUAL_ENV
+ unset VIRTUAL_ENV_PROMPT
+ if [ ! "${1-}" = "nondestructive" ] ; then
+ # Self destruct!
+ unset -f deactivate
+ fi
+}
+
+# unset irrelevant variables
+deactivate nondestructive
+
+VIRTUAL_ENV=/home/zin/projects/Thesis
+if ([ "$OSTYPE" = "cygwin" ] || [ "$OSTYPE" = "msys" ]) && $(command -v cygpath &> /dev/null) ; then
+ VIRTUAL_ENV=$(cygpath -u "$VIRTUAL_ENV")
+fi
+export VIRTUAL_ENV
+
+_OLD_VIRTUAL_PATH="$PATH"
+PATH="$VIRTUAL_ENV/"bin":$PATH"
+export PATH
+
+if [ "x"'' != x ] ; then
+ VIRTUAL_ENV_PROMPT=''
+else
+ VIRTUAL_ENV_PROMPT=$(basename "$VIRTUAL_ENV")
+fi
+export VIRTUAL_ENV_PROMPT
+
+# unset PYTHONHOME if set
+if ! [ -z "${PYTHONHOME+_}" ] ; then
+ _OLD_VIRTUAL_PYTHONHOME="$PYTHONHOME"
+ unset PYTHONHOME
+fi
+
+if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT-}" ] ; then
+ _OLD_VIRTUAL_PS1="${PS1-}"
+ PS1="(${VIRTUAL_ENV_PROMPT}) ${PS1-}"
+ export PS1
+fi
+
+# Make sure to unalias pydoc if it's already there
+alias pydoc 2>/dev/null >/dev/null && unalias pydoc || true
+
+pydoc () {
+ python -m pydoc "$@"
+}
+
+# The hash command must be called to get it to forget past
+# commands. Without forgetting past commands the $PATH changes
+# we made may not be respected
+hash -r 2>/dev/null || true
diff --git a/bin/activate.csh b/bin/activate.csh
new file mode 100644
index 0000000..08ccc2d
--- /dev/null
+++ b/bin/activate.csh
@@ -0,0 +1,55 @@
+# This file must be used with "source bin/activate.csh" *from csh*.
+# You cannot run it directly.
+# Created by Davide Di Blasi .
+
+set newline='\
+'
+
+alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH:q" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT:q" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; unsetenv VIRTUAL_ENV_PROMPT; test "\!:*" != "nondestructive" && unalias deactivate && unalias pydoc'
+
+# Unset irrelevant variables.
+deactivate nondestructive
+
+setenv VIRTUAL_ENV /home/zin/projects/Thesis
+
+set _OLD_VIRTUAL_PATH="$PATH:q"
+setenv PATH "$VIRTUAL_ENV:q/"bin":$PATH:q"
+
+
+
+if ('' != "") then
+ setenv VIRTUAL_ENV_PROMPT ''
+else
+ setenv VIRTUAL_ENV_PROMPT "$VIRTUAL_ENV:t:q"
+endif
+
+if ( $?VIRTUAL_ENV_DISABLE_PROMPT ) then
+ if ( $VIRTUAL_ENV_DISABLE_PROMPT == "" ) then
+ set do_prompt = "1"
+ else
+ set do_prompt = "0"
+ endif
+else
+ set do_prompt = "1"
+endif
+
+if ( $do_prompt == "1" ) then
+ # Could be in a non-interactive environment,
+ # in which case, $prompt is undefined and we wouldn't
+ # care about the prompt anyway.
+ if ( $?prompt ) then
+ set _OLD_VIRTUAL_PROMPT="$prompt:q"
+ if ( "$prompt:q" =~ *"$newline:q"* ) then
+ :
+ else
+ set prompt = '('"$VIRTUAL_ENV_PROMPT:q"') '"$prompt:q"
+ endif
+ endif
+endif
+
+unset env_name
+unset do_prompt
+
+alias pydoc python -m pydoc
+
+rehash
diff --git a/bin/activate.fish b/bin/activate.fish
new file mode 100644
index 0000000..fe1dac8
--- /dev/null
+++ b/bin/activate.fish
@@ -0,0 +1,103 @@
+# This file must be used using `source bin/activate.fish` *within a running fish ( http://fishshell.com ) session*.
+# Do not run it directly.
+
+function _bashify_path -d "Converts a fish path to something bash can recognize"
+ set fishy_path $argv
+ set bashy_path $fishy_path[1]
+ for path_part in $fishy_path[2..-1]
+ set bashy_path "$bashy_path:$path_part"
+ end
+ echo $bashy_path
+end
+
+function _fishify_path -d "Converts a bash path to something fish can recognize"
+ echo $argv | tr ':' '\n'
+end
+
+function deactivate -d 'Exit virtualenv mode and return to the normal environment.'
+ # reset old environment variables
+ if test -n "$_OLD_VIRTUAL_PATH"
+ # https://github.com/fish-shell/fish-shell/issues/436 altered PATH handling
+ if test (echo $FISH_VERSION | head -c 1) -lt 3
+ set -gx PATH (_fishify_path "$_OLD_VIRTUAL_PATH")
+ else
+ set -gx PATH $_OLD_VIRTUAL_PATH
+ end
+ set -e _OLD_VIRTUAL_PATH
+ end
+
+ if test -n "$_OLD_VIRTUAL_PYTHONHOME"
+ set -gx PYTHONHOME "$_OLD_VIRTUAL_PYTHONHOME"
+ set -e _OLD_VIRTUAL_PYTHONHOME
+ end
+
+ if test -n "$_OLD_FISH_PROMPT_OVERRIDE"
+ and functions -q _old_fish_prompt
+ # Set an empty local `$fish_function_path` to allow the removal of `fish_prompt` using `functions -e`.
+ set -l fish_function_path
+
+ # Erase virtualenv's `fish_prompt` and restore the original.
+ functions -e fish_prompt
+ functions -c _old_fish_prompt fish_prompt
+ functions -e _old_fish_prompt
+ set -e _OLD_FISH_PROMPT_OVERRIDE
+ end
+
+ set -e VIRTUAL_ENV
+ set -e VIRTUAL_ENV_PROMPT
+
+ if test "$argv[1]" != 'nondestructive'
+ # Self-destruct!
+ functions -e pydoc
+ functions -e deactivate
+ functions -e _bashify_path
+ functions -e _fishify_path
+ end
+end
+
+# Unset irrelevant variables.
+deactivate nondestructive
+
+set -gx VIRTUAL_ENV /home/zin/projects/Thesis
+
+# https://github.com/fish-shell/fish-shell/issues/436 altered PATH handling
+if test (echo $FISH_VERSION | head -c 1) -lt 3
+ set -gx _OLD_VIRTUAL_PATH (_bashify_path $PATH)
+else
+ set -gx _OLD_VIRTUAL_PATH $PATH
+end
+set -gx PATH "$VIRTUAL_ENV"'/'bin $PATH
+
+# Prompt override provided?
+# If not, just use the environment name.
+if test -n ''
+ set -gx VIRTUAL_ENV_PROMPT ''
+else
+ set -gx VIRTUAL_ENV_PROMPT (basename "$VIRTUAL_ENV")
+end
+
+# Unset `$PYTHONHOME` if set.
+if set -q PYTHONHOME
+ set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME
+ set -e PYTHONHOME
+end
+
+function pydoc
+ python -m pydoc $argv
+end
+
+if test -z "$VIRTUAL_ENV_DISABLE_PROMPT"
+ # Copy the current `fish_prompt` function as `_old_fish_prompt`.
+ functions -c fish_prompt _old_fish_prompt
+
+ function fish_prompt
+ # Run the user's prompt first; it might depend on (pipe)status.
+ set -l prompt (_old_fish_prompt)
+
+ printf '(%s) ' $VIRTUAL_ENV_PROMPT
+
+ string join -- \n $prompt # handle multi-line prompts
+ end
+
+ set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV"
+end
diff --git a/bin/activate.nu b/bin/activate.nu
new file mode 100644
index 0000000..bc881df
--- /dev/null
+++ b/bin/activate.nu
@@ -0,0 +1,96 @@
+# virtualenv activation module
+# Activate with `overlay use activate.nu`
+# Deactivate with `deactivate`, as usual
+#
+# To customize the overlay name, you can call `overlay use activate.nu as foo`,
+# but then simply `deactivate` won't work because it is just an alias to hide
+# the "activate" overlay. You'd need to call `overlay hide foo` manually.
+
+export-env {
+ def is-string [x] {
+ ($x | describe) == 'string'
+ }
+
+ def has-env [...names] {
+ $names | each {|n|
+ $n in $env
+ } | all {|i| $i == true}
+ }
+
+ # Emulates a `test -z`, but better as it handles e.g 'false'
+ def is-env-true [name: string] {
+ if (has-env $name) {
+ # Try to parse 'true', '0', '1', and fail if not convertible
+ let parsed = (do -i { $env | get $name | into bool })
+ if ($parsed | describe) == 'bool' {
+ $parsed
+ } else {
+ not ($env | get -i $name | is-empty)
+ }
+ } else {
+ false
+ }
+ }
+
+ let virtual_env = r#'/home/zin/projects/Thesis'#
+ let bin = r#'bin'#
+
+ let is_windows = ($nu.os-info.family) == 'windows'
+ let path_name = (if (has-env 'Path') {
+ 'Path'
+ } else {
+ 'PATH'
+ }
+ )
+
+ let venv_path = ([$virtual_env $bin] | path join)
+ let new_path = ($env | get $path_name | prepend $venv_path)
+
+ # If there is no default prompt, then use the env name instead
+ let virtual_env_prompt = (if (r#''# | is-empty) {
+ ($virtual_env | path basename)
+ } else {
+ r#''#
+ })
+
+ let new_env = {
+ $path_name : $new_path
+ VIRTUAL_ENV : $virtual_env
+ VIRTUAL_ENV_PROMPT : $virtual_env_prompt
+ }
+
+ let new_env = (if (is-env-true 'VIRTUAL_ENV_DISABLE_PROMPT') {
+ $new_env
+ } else {
+ # Creating the new prompt for the session
+ let virtual_prefix = $'(char lparen)($virtual_env_prompt)(char rparen) '
+
+ # Back up the old prompt builder
+ let old_prompt_command = (if (has-env 'PROMPT_COMMAND') {
+ $env.PROMPT_COMMAND
+ } else {
+ ''
+ })
+
+ let new_prompt = (if (has-env 'PROMPT_COMMAND') {
+ if 'closure' in ($old_prompt_command | describe) {
+ {|| $'($virtual_prefix)(do $old_prompt_command)' }
+ } else {
+ {|| $'($virtual_prefix)($old_prompt_command)' }
+ }
+ } else {
+ {|| $'($virtual_prefix)' }
+ })
+
+ $new_env | merge {
+ PROMPT_COMMAND : $new_prompt
+ VIRTUAL_PREFIX : $virtual_prefix
+ }
+ })
+
+ # Environment variables that will be loaded as the virtual env
+ load-env $new_env
+}
+
+export alias pydoc = python -m pydoc
+export alias deactivate = overlay hide activate
diff --git a/bin/activate.ps1 b/bin/activate.ps1
new file mode 100644
index 0000000..3333e2b
--- /dev/null
+++ b/bin/activate.ps1
@@ -0,0 +1,61 @@
+$script:THIS_PATH = $myinvocation.mycommand.path
+$script:BASE_DIR = Split-Path (Resolve-Path "$THIS_PATH/..") -Parent
+
+function global:deactivate([switch] $NonDestructive) {
+ if (Test-Path variable:_OLD_VIRTUAL_PATH) {
+ $env:PATH = $variable:_OLD_VIRTUAL_PATH
+ Remove-Variable "_OLD_VIRTUAL_PATH" -Scope global
+ }
+
+ if (Test-Path function:_old_virtual_prompt) {
+ $function:prompt = $function:_old_virtual_prompt
+ Remove-Item function:\_old_virtual_prompt
+ }
+
+ if ($env:VIRTUAL_ENV) {
+ Remove-Item env:VIRTUAL_ENV -ErrorAction SilentlyContinue
+ }
+
+ if ($env:VIRTUAL_ENV_PROMPT) {
+ Remove-Item env:VIRTUAL_ENV_PROMPT -ErrorAction SilentlyContinue
+ }
+
+ if (!$NonDestructive) {
+ # Self destruct!
+ Remove-Item function:deactivate
+ Remove-Item function:pydoc
+ }
+}
+
+function global:pydoc {
+ python -m pydoc $args
+}
+
+# unset irrelevant variables
+deactivate -nondestructive
+
+$VIRTUAL_ENV = $BASE_DIR
+$env:VIRTUAL_ENV = $VIRTUAL_ENV
+
+if ('' -ne "") {
+ $env:VIRTUAL_ENV_PROMPT = ''
+}
+else {
+ $env:VIRTUAL_ENV_PROMPT = $( Split-Path $env:VIRTUAL_ENV -Leaf )
+}
+
+New-Variable -Scope global -Name _OLD_VIRTUAL_PATH -Value $env:PATH
+
+$env:PATH = "$env:VIRTUAL_ENV/" + 'bin' + ':' + $env:PATH
+if (!$env:VIRTUAL_ENV_DISABLE_PROMPT) {
+ function global:_old_virtual_prompt {
+ ""
+ }
+ $function:_old_virtual_prompt = $function:prompt
+
+ function global:prompt {
+ # Add the custom prefix to the existing prompt
+ $previous_prompt_value = & $function:_old_virtual_prompt
+ ("(" + $env:VIRTUAL_ENV_PROMPT + ") " + $previous_prompt_value)
+ }
+}
diff --git a/bin/activate_this.py b/bin/activate_this.py
new file mode 100644
index 0000000..9860618
--- /dev/null
+++ b/bin/activate_this.py
@@ -0,0 +1,38 @@
+"""
+Activate virtualenv for current interpreter:
+
+import runpy
+runpy.run_path(this_file)
+
+This can be used when you must use an existing Python interpreter, not the virtualenv bin/python.
+""" # noqa: D415
+
+from __future__ import annotations
+
+import os
+import site
+import sys
+
+try:
+ abs_file = os.path.abspath(__file__)
+except NameError as exc:
+ msg = "You must use import runpy; runpy.run_path(this_file)"
+ raise AssertionError(msg) from exc
+
+bin_dir = os.path.dirname(abs_file)
+base = bin_dir[: -len('bin') - 1] # strip away the bin part from the __file__, plus the path separator
+
+# prepend bin to PATH (this file is inside the bin directory)
+os.environ["PATH"] = os.pathsep.join([bin_dir, *os.environ.get("PATH", "").split(os.pathsep)])
+os.environ["VIRTUAL_ENV"] = base # virtual env is right above bin directory
+os.environ["VIRTUAL_ENV_PROMPT"] = '' or os.path.basename(base)
+
+# add the virtual environments libraries to the host python import mechanism
+prev_length = len(sys.path)
+for lib in '../lib/python3.12/site-packages'.split(os.pathsep):
+ path = os.path.realpath(os.path.join(bin_dir, lib))
+ site.addsitedir(path.decode("utf-8") if '' else path)
+sys.path[:] = sys.path[prev_length:] + sys.path[0:prev_length]
+
+sys.real_prefix = sys.prefix
+sys.prefix = base
diff --git a/bin/debugpy b/bin/debugpy
new file mode 100755
index 0000000..edb1763
--- /dev/null
+++ b/bin/debugpy
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from debugpy.server.cli import main
+if __name__ == "__main__":
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
+ sys.exit(main())
diff --git a/bin/debugpy-adapter b/bin/debugpy-adapter
new file mode 100755
index 0000000..05fb64e
--- /dev/null
+++ b/bin/debugpy-adapter
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from debugpy.adapter.__main__ import main
+if __name__ == "__main__":
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
+ sys.exit(main())
diff --git a/bin/f2py b/bin/f2py
new file mode 100755
index 0000000..c06aedb
--- /dev/null
+++ b/bin/f2py
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from numpy.f2py.f2py2e import main
+if __name__ == "__main__":
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
+ sys.exit(main())
diff --git a/bin/fonttools b/bin/fonttools
new file mode 100755
index 0000000..22c5a4a
--- /dev/null
+++ b/bin/fonttools
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from fontTools.__main__ import main
+if __name__ == "__main__":
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
+ sys.exit(main())
diff --git a/bin/httpx b/bin/httpx
new file mode 100755
index 0000000..60452ce
--- /dev/null
+++ b/bin/httpx
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from httpx import main
+if __name__ == "__main__":
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
+ sys.exit(main())
diff --git a/bin/ipython b/bin/ipython
new file mode 100755
index 0000000..e552738
--- /dev/null
+++ b/bin/ipython
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from IPython import start_ipython
+if __name__ == "__main__":
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
+ sys.exit(start_ipython())
diff --git a/bin/ipython3 b/bin/ipython3
new file mode 100755
index 0000000..e552738
--- /dev/null
+++ b/bin/ipython3
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from IPython import start_ipython
+if __name__ == "__main__":
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
+ sys.exit(start_ipython())
diff --git a/bin/isympy b/bin/isympy
new file mode 100755
index 0000000..a2c48fb
--- /dev/null
+++ b/bin/isympy
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from isympy import main
+if __name__ == "__main__":
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
+ sys.exit(main())
diff --git a/bin/jlpm b/bin/jlpm
new file mode 100755
index 0000000..70c6c91
--- /dev/null
+++ b/bin/jlpm
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from jupyterlab.jlpmapp import main
+if __name__ == "__main__":
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
+ sys.exit(main())
diff --git a/bin/jsonpointer b/bin/jsonpointer
new file mode 100755
index 0000000..ff29a23
--- /dev/null
+++ b/bin/jsonpointer
@@ -0,0 +1,67 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+
+
+import argparse
+import json
+import sys
+
+import jsonpointer
+
+parser = argparse.ArgumentParser(
+ description='Resolve a JSON pointer on JSON files')
+
+# Accept pointer as argument or as file
+ptr_group = parser.add_mutually_exclusive_group(required=True)
+
+ptr_group.add_argument('-f', '--pointer-file', type=argparse.FileType('r'),
+ nargs='?',
+ help='File containing a JSON pointer expression')
+
+ptr_group.add_argument('POINTER', type=str, nargs='?',
+ help='A JSON pointer expression')
+
+parser.add_argument('FILE', type=argparse.FileType('r'), nargs='+',
+ help='Files for which the pointer should be resolved')
+parser.add_argument('--indent', type=int, default=None,
+ help='Indent output by n spaces')
+parser.add_argument('-v', '--version', action='version',
+ version='%(prog)s ' + jsonpointer.__version__)
+
+
+def main():
+ try:
+ resolve_files()
+ except KeyboardInterrupt:
+ sys.exit(1)
+
+
+def parse_pointer(args):
+ if args.POINTER:
+ ptr = args.POINTER
+ elif args.pointer_file:
+ ptr = args.pointer_file.read().strip()
+ else:
+ parser.print_usage()
+ sys.exit(1)
+
+ return ptr
+
+
+def resolve_files():
+ """ Resolve a JSON pointer on JSON files """
+ args = parser.parse_args()
+
+ ptr = parse_pointer(args)
+
+ for f in args.FILE:
+ doc = json.load(f)
+ try:
+ result = jsonpointer.resolve_pointer(doc, ptr)
+ print(json.dumps(result, indent=args.indent))
+ except jsonpointer.JsonPointerException as e:
+ print('Could not resolve pointer: %s' % str(e), file=sys.stderr)
+
+
+if __name__ == "__main__":
+ main()
diff --git a/bin/jsonschema b/bin/jsonschema
new file mode 100755
index 0000000..c6e3d3e
--- /dev/null
+++ b/bin/jsonschema
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from jsonschema.cli import main
+if __name__ == "__main__":
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
+ sys.exit(main())
diff --git a/bin/jupyter b/bin/jupyter
new file mode 100755
index 0000000..87d740e
--- /dev/null
+++ b/bin/jupyter
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from jupyter_core.command import main
+if __name__ == "__main__":
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
+ sys.exit(main())
diff --git a/bin/jupyter-dejavu b/bin/jupyter-dejavu
new file mode 100755
index 0000000..1caf6f8
--- /dev/null
+++ b/bin/jupyter-dejavu
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from nbconvert.nbconvertapp import dejavu_main
+if __name__ == "__main__":
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
+ sys.exit(dejavu_main())
diff --git a/bin/jupyter-events b/bin/jupyter-events
new file mode 100755
index 0000000..700913c
--- /dev/null
+++ b/bin/jupyter-events
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from jupyter_events.cli import main
+if __name__ == "__main__":
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
+ sys.exit(main())
diff --git a/bin/jupyter-execute b/bin/jupyter-execute
new file mode 100755
index 0000000..925512b
--- /dev/null
+++ b/bin/jupyter-execute
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from nbclient.cli import main
+if __name__ == "__main__":
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
+ sys.exit(main())
diff --git a/bin/jupyter-kernel b/bin/jupyter-kernel
new file mode 100755
index 0000000..8c9b839
--- /dev/null
+++ b/bin/jupyter-kernel
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from jupyter_client.kernelapp import main
+if __name__ == "__main__":
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
+ sys.exit(main())
diff --git a/bin/jupyter-kernelspec b/bin/jupyter-kernelspec
new file mode 100755
index 0000000..b53dd9b
--- /dev/null
+++ b/bin/jupyter-kernelspec
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from jupyter_client.kernelspecapp import KernelSpecApp
+if __name__ == "__main__":
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
+ sys.exit(KernelSpecApp.launch_instance())
diff --git a/bin/jupyter-lab b/bin/jupyter-lab
new file mode 100755
index 0000000..49f25c4
--- /dev/null
+++ b/bin/jupyter-lab
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from jupyterlab.labapp import main
+if __name__ == "__main__":
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
+ sys.exit(main())
diff --git a/bin/jupyter-labextension b/bin/jupyter-labextension
new file mode 100755
index 0000000..943ea32
--- /dev/null
+++ b/bin/jupyter-labextension
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from jupyterlab.labextensions import main
+if __name__ == "__main__":
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
+ sys.exit(main())
diff --git a/bin/jupyter-labhub b/bin/jupyter-labhub
new file mode 100755
index 0000000..3a55fa3
--- /dev/null
+++ b/bin/jupyter-labhub
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from jupyterlab.labhubapp import main
+if __name__ == "__main__":
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
+ sys.exit(main())
diff --git a/bin/jupyter-migrate b/bin/jupyter-migrate
new file mode 100755
index 0000000..34b7c68
--- /dev/null
+++ b/bin/jupyter-migrate
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from jupyter_core.migrate import main
+if __name__ == "__main__":
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
+ sys.exit(main())
diff --git a/bin/jupyter-nbconvert b/bin/jupyter-nbconvert
new file mode 100755
index 0000000..d5d7852
--- /dev/null
+++ b/bin/jupyter-nbconvert
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from nbconvert.nbconvertapp import main
+if __name__ == "__main__":
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
+ sys.exit(main())
diff --git a/bin/jupyter-run b/bin/jupyter-run
new file mode 100755
index 0000000..8df04c6
--- /dev/null
+++ b/bin/jupyter-run
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from jupyter_client.runapp import RunApp
+if __name__ == "__main__":
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
+ sys.exit(RunApp.launch_instance())
diff --git a/bin/jupyter-server b/bin/jupyter-server
new file mode 100755
index 0000000..1480696
--- /dev/null
+++ b/bin/jupyter-server
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from jupyter_server.serverapp import main
+if __name__ == "__main__":
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
+ sys.exit(main())
diff --git a/bin/jupyter-troubleshoot b/bin/jupyter-troubleshoot
new file mode 100755
index 0000000..06ab8e8
--- /dev/null
+++ b/bin/jupyter-troubleshoot
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from jupyter_core.troubleshoot import main
+if __name__ == "__main__":
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
+ sys.exit(main())
diff --git a/bin/jupyter-trust b/bin/jupyter-trust
new file mode 100755
index 0000000..7079733
--- /dev/null
+++ b/bin/jupyter-trust
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from nbformat.sign import TrustNotebookApp
+if __name__ == "__main__":
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
+ sys.exit(TrustNotebookApp.launch_instance())
diff --git a/bin/normalizer b/bin/normalizer
new file mode 100755
index 0000000..14bdf2e
--- /dev/null
+++ b/bin/normalizer
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from charset_normalizer.cli import cli_detect
+if __name__ == "__main__":
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
+ sys.exit(cli_detect())
diff --git a/bin/numpy-config b/bin/numpy-config
new file mode 100755
index 0000000..473a273
--- /dev/null
+++ b/bin/numpy-config
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from numpy._configtool import main
+if __name__ == "__main__":
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
+ sys.exit(main())
diff --git a/bin/pip b/bin/pip
new file mode 100755
index 0000000..463bce3
--- /dev/null
+++ b/bin/pip
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from pip._internal.cli.main import main
+if __name__ == '__main__':
+ sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
+ sys.exit(main())
diff --git a/bin/pip-3.12 b/bin/pip-3.12
new file mode 100755
index 0000000..463bce3
--- /dev/null
+++ b/bin/pip-3.12
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from pip._internal.cli.main import main
+if __name__ == '__main__':
+ sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
+ sys.exit(main())
diff --git a/bin/pip3 b/bin/pip3
new file mode 100755
index 0000000..463bce3
--- /dev/null
+++ b/bin/pip3
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from pip._internal.cli.main import main
+if __name__ == '__main__':
+ sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
+ sys.exit(main())
diff --git a/bin/pip3.12 b/bin/pip3.12
new file mode 100755
index 0000000..463bce3
--- /dev/null
+++ b/bin/pip3.12
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from pip._internal.cli.main import main
+if __name__ == '__main__':
+ sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
+ sys.exit(main())
diff --git a/bin/proton b/bin/proton
new file mode 100755
index 0000000..ea25227
--- /dev/null
+++ b/bin/proton
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from triton.profiler.proton import main
+if __name__ == "__main__":
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
+ sys.exit(main())
diff --git a/bin/proton-viewer b/bin/proton-viewer
new file mode 100755
index 0000000..df5dd67
--- /dev/null
+++ b/bin/proton-viewer
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from triton.profiler.viewer import main
+if __name__ == "__main__":
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
+ sys.exit(main())
diff --git a/bin/pybabel b/bin/pybabel
new file mode 100755
index 0000000..cc9bc97
--- /dev/null
+++ b/bin/pybabel
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from babel.messages.frontend import main
+if __name__ == "__main__":
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
+ sys.exit(main())
diff --git a/bin/pyftmerge b/bin/pyftmerge
new file mode 100755
index 0000000..7817908
--- /dev/null
+++ b/bin/pyftmerge
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from fontTools.merge import main
+if __name__ == "__main__":
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
+ sys.exit(main())
diff --git a/bin/pyftsubset b/bin/pyftsubset
new file mode 100755
index 0000000..a53afdb
--- /dev/null
+++ b/bin/pyftsubset
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from fontTools.subset import main
+if __name__ == "__main__":
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
+ sys.exit(main())
diff --git a/bin/pygmentize b/bin/pygmentize
new file mode 100755
index 0000000..794ed2c
--- /dev/null
+++ b/bin/pygmentize
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from pygments.cmdline import main
+if __name__ == "__main__":
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
+ sys.exit(main())
diff --git a/bin/pyjson5 b/bin/pyjson5
new file mode 100755
index 0000000..5333311
--- /dev/null
+++ b/bin/pyjson5
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from json5.tool import main
+if __name__ == "__main__":
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
+ sys.exit(main())
diff --git a/bin/python b/bin/python
new file mode 120000
index 0000000..ae65fda
--- /dev/null
+++ b/bin/python
@@ -0,0 +1 @@
+/usr/bin/python3
\ No newline at end of file
diff --git a/bin/python3 b/bin/python3
new file mode 120000
index 0000000..d8654aa
--- /dev/null
+++ b/bin/python3
@@ -0,0 +1 @@
+python
\ No newline at end of file
diff --git a/bin/python3.12 b/bin/python3.12
new file mode 120000
index 0000000..d8654aa
--- /dev/null
+++ b/bin/python3.12
@@ -0,0 +1 @@
+python
\ No newline at end of file
diff --git a/bin/send2trash b/bin/send2trash
new file mode 100755
index 0000000..5750af0
--- /dev/null
+++ b/bin/send2trash
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from send2trash.__main__ import main
+if __name__ == "__main__":
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
+ sys.exit(main())
diff --git a/bin/torchfrtrace b/bin/torchfrtrace
new file mode 100755
index 0000000..820eea8
--- /dev/null
+++ b/bin/torchfrtrace
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from tools.flight_recorder.fr_trace import main
+if __name__ == "__main__":
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
+ sys.exit(main())
diff --git a/bin/torchrun b/bin/torchrun
new file mode 100755
index 0000000..3c9a70b
--- /dev/null
+++ b/bin/torchrun
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from torch.distributed.run import main
+if __name__ == "__main__":
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
+ sys.exit(main())
diff --git a/bin/tqdm b/bin/tqdm
new file mode 100755
index 0000000..160cb5c
--- /dev/null
+++ b/bin/tqdm
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from tqdm.cli import main
+if __name__ == "__main__":
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
+ sys.exit(main())
diff --git a/bin/ttx b/bin/ttx
new file mode 100755
index 0000000..fa62fde
--- /dev/null
+++ b/bin/ttx
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from fontTools.ttx import main
+if __name__ == "__main__":
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
+ sys.exit(main())
diff --git a/bin/wsdump b/bin/wsdump
new file mode 100755
index 0000000..3a2a7b2
--- /dev/null
+++ b/bin/wsdump
@@ -0,0 +1,8 @@
+#!/home/zin/projects/Thesis/bin/python
+# -*- coding: utf-8 -*-
+import re
+import sys
+from websocket._wsdump import main
+if __name__ == "__main__":
+ sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0])
+ sys.exit(main())
diff --git a/etc/jupyter/jupyter_notebook_config.d/jupyterlab.json b/etc/jupyter/jupyter_notebook_config.d/jupyterlab.json
new file mode 100644
index 0000000..5b5dcda
--- /dev/null
+++ b/etc/jupyter/jupyter_notebook_config.d/jupyterlab.json
@@ -0,0 +1,7 @@
+{
+ "NotebookApp": {
+ "nbserver_extensions": {
+ "jupyterlab": true
+ }
+ }
+}
diff --git a/etc/jupyter/jupyter_server_config.d/jupyter-lsp-jupyter-server.json b/etc/jupyter/jupyter_server_config.d/jupyter-lsp-jupyter-server.json
new file mode 100644
index 0000000..9e37d4e
--- /dev/null
+++ b/etc/jupyter/jupyter_server_config.d/jupyter-lsp-jupyter-server.json
@@ -0,0 +1,7 @@
+{
+ "ServerApp": {
+ "jpserver_extensions": {
+ "jupyter_lsp": true
+ }
+ }
+}
diff --git a/etc/jupyter/jupyter_server_config.d/jupyter_server_terminals.json b/etc/jupyter/jupyter_server_config.d/jupyter_server_terminals.json
new file mode 100644
index 0000000..97c80c2
--- /dev/null
+++ b/etc/jupyter/jupyter_server_config.d/jupyter_server_terminals.json
@@ -0,0 +1,7 @@
+{
+ "ServerApp": {
+ "jpserver_extensions": {
+ "jupyter_server_terminals": true
+ }
+ }
+}
diff --git a/etc/jupyter/jupyter_server_config.d/jupyterlab.json b/etc/jupyter/jupyter_server_config.d/jupyterlab.json
new file mode 100644
index 0000000..99cc084
--- /dev/null
+++ b/etc/jupyter/jupyter_server_config.d/jupyterlab.json
@@ -0,0 +1,7 @@
+{
+ "ServerApp": {
+ "jpserver_extensions": {
+ "jupyterlab": true
+ }
+ }
+}
diff --git a/etc/jupyter/jupyter_server_config.d/notebook_shim.json b/etc/jupyter/jupyter_server_config.d/notebook_shim.json
new file mode 100644
index 0000000..1e789c3
--- /dev/null
+++ b/etc/jupyter/jupyter_server_config.d/notebook_shim.json
@@ -0,0 +1,7 @@
+{
+ "ServerApp": {
+ "jpserver_extensions": {
+ "notebook_shim": true
+ }
+ }
+}
diff --git a/poetry.lock b/poetry.lock
new file mode 100644
index 0000000..3e06c62
--- /dev/null
+++ b/poetry.lock
@@ -0,0 +1,3820 @@
+# This file is automatically @generated by Poetry 2.2.1 and should not be changed by hand.
+
+[[package]]
+name = "anyio"
+version = "4.12.1"
+description = "High-level concurrency and networking framework on top of asyncio or Trio"
+optional = false
+python-versions = ">=3.9"
+groups = ["main"]
+files = [
+ {file = "anyio-4.12.1-py3-none-any.whl", hash = "sha256:d405828884fc140aa80a3c667b8beed277f1dfedec42ba031bd6ac3db606ab6c"},
+ {file = "anyio-4.12.1.tar.gz", hash = "sha256:41cfcc3a4c85d3f05c932da7c26d0201ac36f72abd4435ba90d0464a3ffed703"},
+]
+
+[package.dependencies]
+idna = ">=2.8"
+typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""}
+
+[package.extras]
+trio = ["trio (>=0.31.0) ; python_version < \"3.10\"", "trio (>=0.32.0) ; python_version >= \"3.10\""]
+
+[[package]]
+name = "appnope"
+version = "0.1.4"
+description = "Disable App Nap on macOS >= 10.9"
+optional = false
+python-versions = ">=3.6"
+groups = ["main"]
+markers = "platform_system == \"Darwin\""
+files = [
+ {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"},
+ {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"},
+]
+
+[[package]]
+name = "argon2-cffi"
+version = "25.1.0"
+description = "Argon2 for Python"
+optional = false
+python-versions = ">=3.8"
+groups = ["main"]
+files = [
+ {file = "argon2_cffi-25.1.0-py3-none-any.whl", hash = "sha256:fdc8b074db390fccb6eb4a3604ae7231f219aa669a2652e0f20e16ba513d5741"},
+ {file = "argon2_cffi-25.1.0.tar.gz", hash = "sha256:694ae5cc8a42f4c4e2bf2ca0e64e51e23a040c6a517a85074683d3959e1346c1"},
+]
+
+[package.dependencies]
+argon2-cffi-bindings = "*"
+
+[[package]]
+name = "argon2-cffi-bindings"
+version = "25.1.0"
+description = "Low-level CFFI bindings for Argon2"
+optional = false
+python-versions = ">=3.9"
+groups = ["main"]
+files = [
+ {file = "argon2_cffi_bindings-25.1.0-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:3d3f05610594151994ca9ccb3c771115bdb4daef161976a266f0dd8aa9996b8f"},
+ {file = "argon2_cffi_bindings-25.1.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:8b8efee945193e667a396cbc7b4fb7d357297d6234d30a489905d96caabde56b"},
+ {file = "argon2_cffi_bindings-25.1.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:3c6702abc36bf3ccba3f802b799505def420a1b7039862014a65db3205967f5a"},
+ {file = "argon2_cffi_bindings-25.1.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a1c70058c6ab1e352304ac7e3b52554daadacd8d453c1752e547c76e9c99ac44"},
+ {file = "argon2_cffi_bindings-25.1.0-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e2fd3bfbff3c5d74fef31a722f729bf93500910db650c925c2d6ef879a7e51cb"},
+ {file = "argon2_cffi_bindings-25.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:c4f9665de60b1b0e99bcd6be4f17d90339698ce954cfd8d9cf4f91c995165a92"},
+ {file = "argon2_cffi_bindings-25.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ba92837e4a9aa6a508c8d2d7883ed5a8f6c308c89a4790e1e447a220deb79a85"},
+ {file = "argon2_cffi_bindings-25.1.0-cp314-cp314t-win32.whl", hash = "sha256:84a461d4d84ae1295871329b346a97f68eade8c53b6ed9a7ca2d7467f3c8ff6f"},
+ {file = "argon2_cffi_bindings-25.1.0-cp314-cp314t-win_amd64.whl", hash = "sha256:b55aec3565b65f56455eebc9b9f34130440404f27fe21c3b375bf1ea4d8fbae6"},
+ {file = "argon2_cffi_bindings-25.1.0-cp314-cp314t-win_arm64.whl", hash = "sha256:87c33a52407e4c41f3b70a9c2d3f6056d88b10dad7695be708c5021673f55623"},
+ {file = "argon2_cffi_bindings-25.1.0-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:aecba1723ae35330a008418a91ea6cfcedf6d31e5fbaa056a166462ff066d500"},
+ {file = "argon2_cffi_bindings-25.1.0-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:2630b6240b495dfab90aebe159ff784d08ea999aa4b0d17efa734055a07d2f44"},
+ {file = "argon2_cffi_bindings-25.1.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:7aef0c91e2c0fbca6fc68e7555aa60ef7008a739cbe045541e438373bc54d2b0"},
+ {file = "argon2_cffi_bindings-25.1.0-cp39-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1e021e87faa76ae0d413b619fe2b65ab9a037f24c60a1e6cc43457ae20de6dc6"},
+ {file = "argon2_cffi_bindings-25.1.0-cp39-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d3e924cfc503018a714f94a49a149fdc0b644eaead5d1f089330399134fa028a"},
+ {file = "argon2_cffi_bindings-25.1.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c87b72589133f0346a1cb8d5ecca4b933e3c9b64656c9d175270a000e73b288d"},
+ {file = "argon2_cffi_bindings-25.1.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:1db89609c06afa1a214a69a462ea741cf735b29a57530478c06eb81dd403de99"},
+ {file = "argon2_cffi_bindings-25.1.0-cp39-abi3-win32.whl", hash = "sha256:473bcb5f82924b1becbb637b63303ec8d10e84c8d241119419897a26116515d2"},
+ {file = "argon2_cffi_bindings-25.1.0-cp39-abi3-win_amd64.whl", hash = "sha256:a98cd7d17e9f7ce244c0803cad3c23a7d379c301ba618a5fa76a67d116618b98"},
+ {file = "argon2_cffi_bindings-25.1.0-cp39-abi3-win_arm64.whl", hash = "sha256:b0fdbcf513833809c882823f98dc2f931cf659d9a1429616ac3adebb49f5db94"},
+ {file = "argon2_cffi_bindings-25.1.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:6dca33a9859abf613e22733131fc9194091c1fa7cb3e131c143056b4856aa47e"},
+ {file = "argon2_cffi_bindings-25.1.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:21378b40e1b8d1655dd5310c84a40fc19a9aa5e6366e835ceb8576bf0fea716d"},
+ {file = "argon2_cffi_bindings-25.1.0-pp310-pypy310_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5d588dec224e2a83edbdc785a5e6f3c6cd736f46bfd4b441bbb5aa1f5085e584"},
+ {file = "argon2_cffi_bindings-25.1.0-pp310-pypy310_pp73-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5acb4e41090d53f17ca1110c3427f0a130f944b896fc8c83973219c97f57b690"},
+ {file = "argon2_cffi_bindings-25.1.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:da0c79c23a63723aa5d782250fbf51b768abca630285262fb5144ba5ae01e520"},
+ {file = "argon2_cffi_bindings-25.1.0.tar.gz", hash = "sha256:b957f3e6ea4d55d820e40ff76f450952807013d361a65d7f28acc0acbf29229d"},
+]
+
+[package.dependencies]
+cffi = [
+ {version = ">=1.0.1", markers = "python_version < \"3.14\""},
+ {version = ">=2.0.0b1", markers = "python_version >= \"3.14\""},
+]
+
+[[package]]
+name = "arrow"
+version = "1.4.0"
+description = "Better dates & times for Python"
+optional = false
+python-versions = ">=3.8"
+groups = ["main"]
+files = [
+ {file = "arrow-1.4.0-py3-none-any.whl", hash = "sha256:749f0769958ebdc79c173ff0b0670d59051a535fa26e8eba02953dc19eb43205"},
+ {file = "arrow-1.4.0.tar.gz", hash = "sha256:ed0cc050e98001b8779e84d461b0098c4ac597e88704a655582b21d116e526d7"},
+]
+
+[package.dependencies]
+python-dateutil = ">=2.7.0"
+tzdata = {version = "*", markers = "python_version >= \"3.9\""}
+
+[package.extras]
+doc = ["doc8", "sphinx (>=7.0.0)", "sphinx-autobuild", "sphinx-autodoc-typehints", "sphinx_rtd_theme (>=1.3.0)"]
+test = ["dateparser (==1.*)", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytz (==2025.2)", "simplejson (==3.*)"]
+
+[[package]]
+name = "asttokens"
+version = "3.0.1"
+description = "Annotate AST trees with source code positions"
+optional = false
+python-versions = ">=3.8"
+groups = ["main"]
+files = [
+ {file = "asttokens-3.0.1-py3-none-any.whl", hash = "sha256:15a3ebc0f43c2d0a50eeafea25e19046c68398e487b9f1f5b517f7c0f40f976a"},
+ {file = "asttokens-3.0.1.tar.gz", hash = "sha256:71a4ee5de0bde6a31d64f6b13f2293ac190344478f081c3d1bccfcf5eacb0cb7"},
+]
+
+[package.extras]
+astroid = ["astroid (>=2,<5)"]
+test = ["astroid (>=2,<5)", "pytest (<9.0)", "pytest-cov", "pytest-xdist"]
+
+[[package]]
+name = "async-lru"
+version = "2.0.5"
+description = "Simple LRU cache for asyncio"
+optional = false
+python-versions = ">=3.9"
+groups = ["main"]
+files = [
+ {file = "async_lru-2.0.5-py3-none-any.whl", hash = "sha256:ab95404d8d2605310d345932697371a5f40def0487c03d6d0ad9138de52c9943"},
+ {file = "async_lru-2.0.5.tar.gz", hash = "sha256:481d52ccdd27275f42c43a928b4a50c3bfb2d67af4e78b170e3e0bb39c66e5bb"},
+]
+
+[[package]]
+name = "attrs"
+version = "25.4.0"
+description = "Classes Without Boilerplate"
+optional = false
+python-versions = ">=3.9"
+groups = ["main"]
+files = [
+ {file = "attrs-25.4.0-py3-none-any.whl", hash = "sha256:adcf7e2a1fb3b36ac48d97835bb6d8ade15b8dcce26aba8bf1d14847b57a3373"},
+ {file = "attrs-25.4.0.tar.gz", hash = "sha256:16d5969b87f0859ef33a48b35d55ac1be6e42ae49d5e853b597db70c35c57e11"},
+]
+
+[[package]]
+name = "babel"
+version = "2.17.0"
+description = "Internationalization utilities"
+optional = false
+python-versions = ">=3.8"
+groups = ["main"]
+files = [
+ {file = "babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2"},
+ {file = "babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d"},
+]
+
+[package.extras]
+dev = ["backports.zoneinfo ; python_version < \"3.9\"", "freezegun (>=1.0,<2.0)", "jinja2 (>=3.0)", "pytest (>=6.0)", "pytest-cov", "pytz", "setuptools", "tzdata ; sys_platform == \"win32\""]
+
+[[package]]
+name = "beautifulsoup4"
+version = "4.14.3"
+description = "Screen-scraping library"
+optional = false
+python-versions = ">=3.7.0"
+groups = ["main"]
+files = [
+ {file = "beautifulsoup4-4.14.3-py3-none-any.whl", hash = "sha256:0918bfe44902e6ad8d57732ba310582e98da931428d231a5ecb9e7c703a735bb"},
+ {file = "beautifulsoup4-4.14.3.tar.gz", hash = "sha256:6292b1c5186d356bba669ef9f7f051757099565ad9ada5dd630bd9de5fa7fb86"},
+]
+
+[package.dependencies]
+soupsieve = ">=1.6.1"
+typing-extensions = ">=4.0.0"
+
+[package.extras]
+cchardet = ["cchardet"]
+chardet = ["chardet"]
+charset-normalizer = ["charset-normalizer"]
+html5lib = ["html5lib"]
+lxml = ["lxml"]
+
+[[package]]
+name = "bleach"
+version = "6.3.0"
+description = "An easy safelist-based HTML-sanitizing tool."
+optional = false
+python-versions = ">=3.10"
+groups = ["main"]
+files = [
+ {file = "bleach-6.3.0-py3-none-any.whl", hash = "sha256:fe10ec77c93ddf3d13a73b035abaac7a9f5e436513864ccdad516693213c65d6"},
+ {file = "bleach-6.3.0.tar.gz", hash = "sha256:6f3b91b1c0a02bb9a78b5a454c92506aa0fdf197e1d5e114d2e00c6f64306d22"},
+]
+
+[package.dependencies]
+tinycss2 = {version = ">=1.1.0,<1.5", optional = true, markers = "extra == \"css\""}
+webencodings = "*"
+
+[package.extras]
+css = ["tinycss2 (>=1.1.0,<1.5)"]
+
+[[package]]
+name = "certifi"
+version = "2026.1.4"
+description = "Python package for providing Mozilla's CA Bundle."
+optional = false
+python-versions = ">=3.7"
+groups = ["main"]
+files = [
+ {file = "certifi-2026.1.4-py3-none-any.whl", hash = "sha256:9943707519e4add1115f44c2bc244f782c0249876bf51b6599fee1ffbedd685c"},
+ {file = "certifi-2026.1.4.tar.gz", hash = "sha256:ac726dd470482006e014ad384921ed6438c457018f4b3d204aea4281258b2120"},
+]
+
+[[package]]
+name = "cffi"
+version = "2.0.0"
+description = "Foreign Function Interface for Python calling C code."
+optional = false
+python-versions = ">=3.9"
+groups = ["main"]
+files = [
+ {file = "cffi-2.0.0-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:0cf2d91ecc3fcc0625c2c530fe004f82c110405f101548512cce44322fa8ac44"},
+ {file = "cffi-2.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f73b96c41e3b2adedc34a7356e64c8eb96e03a3782b535e043a986276ce12a49"},
+ {file = "cffi-2.0.0-cp310-cp310-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:53f77cbe57044e88bbd5ed26ac1d0514d2acf0591dd6bb02a3ae37f76811b80c"},
+ {file = "cffi-2.0.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3e837e369566884707ddaf85fc1744b47575005c0a229de3327f8f9a20f4efeb"},
+ {file = "cffi-2.0.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:5eda85d6d1879e692d546a078b44251cdd08dd1cfb98dfb77b670c97cee49ea0"},
+ {file = "cffi-2.0.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9332088d75dc3241c702d852d4671613136d90fa6881da7d770a483fd05248b4"},
+ {file = "cffi-2.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fc7de24befaeae77ba923797c7c87834c73648a05a4bde34b3b7e5588973a453"},
+ {file = "cffi-2.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cf364028c016c03078a23b503f02058f1814320a56ad535686f90565636a9495"},
+ {file = "cffi-2.0.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e11e82b744887154b182fd3e7e8512418446501191994dbf9c9fc1f32cc8efd5"},
+ {file = "cffi-2.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8ea985900c5c95ce9db1745f7933eeef5d314f0565b27625d9a10ec9881e1bfb"},
+ {file = "cffi-2.0.0-cp310-cp310-win32.whl", hash = "sha256:1f72fb8906754ac8a2cc3f9f5aaa298070652a0ffae577e0ea9bd480dc3c931a"},
+ {file = "cffi-2.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:b18a3ed7d5b3bd8d9ef7a8cb226502c6bf8308df1525e1cc676c3680e7176739"},
+ {file = "cffi-2.0.0-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:b4c854ef3adc177950a8dfc81a86f5115d2abd545751a304c5bcf2c2c7283cfe"},
+ {file = "cffi-2.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2de9a304e27f7596cd03d16f1b7c72219bd944e99cc52b84d0145aefb07cbd3c"},
+ {file = "cffi-2.0.0-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:baf5215e0ab74c16e2dd324e8ec067ef59e41125d3eade2b863d294fd5035c92"},
+ {file = "cffi-2.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:730cacb21e1bdff3ce90babf007d0a0917cc3e6492f336c2f0134101e0944f93"},
+ {file = "cffi-2.0.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:6824f87845e3396029f3820c206e459ccc91760e8fa24422f8b0c3d1731cbec5"},
+ {file = "cffi-2.0.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9de40a7b0323d889cf8d23d1ef214f565ab154443c42737dfe52ff82cf857664"},
+ {file = "cffi-2.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8941aaadaf67246224cee8c3803777eed332a19d909b47e29c9842ef1e79ac26"},
+ {file = "cffi-2.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a05d0c237b3349096d3981b727493e22147f934b20f6f125a3eba8f994bec4a9"},
+ {file = "cffi-2.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:94698a9c5f91f9d138526b48fe26a199609544591f859c870d477351dc7b2414"},
+ {file = "cffi-2.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:5fed36fccc0612a53f1d4d9a816b50a36702c28a2aa880cb8a122b3466638743"},
+ {file = "cffi-2.0.0-cp311-cp311-win32.whl", hash = "sha256:c649e3a33450ec82378822b3dad03cc228b8f5963c0c12fc3b1e0ab940f768a5"},
+ {file = "cffi-2.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:66f011380d0e49ed280c789fbd08ff0d40968ee7b665575489afa95c98196ab5"},
+ {file = "cffi-2.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:c6638687455baf640e37344fe26d37c404db8b80d037c3d29f58fe8d1c3b194d"},
+ {file = "cffi-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d"},
+ {file = "cffi-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c"},
+ {file = "cffi-2.0.0-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe"},
+ {file = "cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062"},
+ {file = "cffi-2.0.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e"},
+ {file = "cffi-2.0.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037"},
+ {file = "cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba"},
+ {file = "cffi-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94"},
+ {file = "cffi-2.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187"},
+ {file = "cffi-2.0.0-cp312-cp312-win32.whl", hash = "sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18"},
+ {file = "cffi-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5"},
+ {file = "cffi-2.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6"},
+ {file = "cffi-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb"},
+ {file = "cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca"},
+ {file = "cffi-2.0.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b"},
+ {file = "cffi-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b"},
+ {file = "cffi-2.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2"},
+ {file = "cffi-2.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3"},
+ {file = "cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26"},
+ {file = "cffi-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c"},
+ {file = "cffi-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b"},
+ {file = "cffi-2.0.0-cp313-cp313-win32.whl", hash = "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27"},
+ {file = "cffi-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75"},
+ {file = "cffi-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91"},
+ {file = "cffi-2.0.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5"},
+ {file = "cffi-2.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13"},
+ {file = "cffi-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b"},
+ {file = "cffi-2.0.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c"},
+ {file = "cffi-2.0.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef"},
+ {file = "cffi-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775"},
+ {file = "cffi-2.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205"},
+ {file = "cffi-2.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1"},
+ {file = "cffi-2.0.0-cp314-cp314-win32.whl", hash = "sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f"},
+ {file = "cffi-2.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25"},
+ {file = "cffi-2.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad"},
+ {file = "cffi-2.0.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9"},
+ {file = "cffi-2.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d"},
+ {file = "cffi-2.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c"},
+ {file = "cffi-2.0.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8"},
+ {file = "cffi-2.0.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc"},
+ {file = "cffi-2.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592"},
+ {file = "cffi-2.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512"},
+ {file = "cffi-2.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4"},
+ {file = "cffi-2.0.0-cp314-cp314t-win32.whl", hash = "sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e"},
+ {file = "cffi-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6"},
+ {file = "cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9"},
+ {file = "cffi-2.0.0-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:fe562eb1a64e67dd297ccc4f5addea2501664954f2692b69a76449ec7913ecbf"},
+ {file = "cffi-2.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:de8dad4425a6ca6e4e5e297b27b5c824ecc7581910bf9aee86cb6835e6812aa7"},
+ {file = "cffi-2.0.0-cp39-cp39-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:4647afc2f90d1ddd33441e5b0e85b16b12ddec4fca55f0d9671fef036ecca27c"},
+ {file = "cffi-2.0.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3f4d46d8b35698056ec29bca21546e1551a205058ae1a181d871e278b0b28165"},
+ {file = "cffi-2.0.0-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:e6e73b9e02893c764e7e8d5bb5ce277f1a009cd5243f8228f75f842bf937c534"},
+ {file = "cffi-2.0.0-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:cb527a79772e5ef98fb1d700678fe031e353e765d1ca2d409c92263c6d43e09f"},
+ {file = "cffi-2.0.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:61d028e90346df14fedc3d1e5441df818d095f3b87d286825dfcbd6459b7ef63"},
+ {file = "cffi-2.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0f6084a0ea23d05d20c3edcda20c3d006f9b6f3fefeac38f59262e10cef47ee2"},
+ {file = "cffi-2.0.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1cd13c99ce269b3ed80b417dcd591415d3372bcac067009b6e0f59c7d4015e65"},
+ {file = "cffi-2.0.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:89472c9762729b5ae1ad974b777416bfda4ac5642423fa93bd57a09204712322"},
+ {file = "cffi-2.0.0-cp39-cp39-win32.whl", hash = "sha256:2081580ebb843f759b9f617314a24ed5738c51d2aee65d31e02f6f7a2b97707a"},
+ {file = "cffi-2.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:b882b3df248017dba09d6b16defe9b5c407fe32fc7c65a9c69798e6175601be9"},
+ {file = "cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529"},
+]
+
+[package.dependencies]
+pycparser = {version = "*", markers = "implementation_name != \"PyPy\""}
+
+[[package]]
+name = "charset-normalizer"
+version = "3.4.4"
+description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
+optional = false
+python-versions = ">=3.7"
+groups = ["main"]
+files = [
+ {file = "charset_normalizer-3.4.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e824f1492727fa856dd6eda4f7cee25f8518a12f3c4a56a74e8095695089cf6d"},
+ {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4bd5d4137d500351a30687c2d3971758aac9a19208fc110ccb9d7188fbe709e8"},
+ {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:027f6de494925c0ab2a55eab46ae5129951638a49a34d87f4c3eda90f696b4ad"},
+ {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f820802628d2694cb7e56db99213f930856014862f3fd943d290ea8438d07ca8"},
+ {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:798d75d81754988d2565bff1b97ba5a44411867c0cf32b77a7e8f8d84796b10d"},
+ {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9d1bb833febdff5c8927f922386db610b49db6e0d4f4ee29601d71e7c2694313"},
+ {file = "charset_normalizer-3.4.4-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:9cd98cdc06614a2f768d2b7286d66805f94c48cde050acdbbb7db2600ab3197e"},
+ {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:077fbb858e903c73f6c9db43374fd213b0b6a778106bc7032446a8e8b5b38b93"},
+ {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:244bfb999c71b35de57821b8ea746b24e863398194a4014e4c76adc2bbdfeff0"},
+ {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:64b55f9dce520635f018f907ff1b0df1fdc31f2795a922fb49dd14fbcdf48c84"},
+ {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:faa3a41b2b66b6e50f84ae4a68c64fcd0c44355741c6374813a800cd6695db9e"},
+ {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:6515f3182dbe4ea06ced2d9e8666d97b46ef4c75e326b79bb624110f122551db"},
+ {file = "charset_normalizer-3.4.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cc00f04ed596e9dc0da42ed17ac5e596c6ccba999ba6bd92b0e0aef2f170f2d6"},
+ {file = "charset_normalizer-3.4.4-cp310-cp310-win32.whl", hash = "sha256:f34be2938726fc13801220747472850852fe6b1ea75869a048d6f896838c896f"},
+ {file = "charset_normalizer-3.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:a61900df84c667873b292c3de315a786dd8dac506704dea57bc957bd31e22c7d"},
+ {file = "charset_normalizer-3.4.4-cp310-cp310-win_arm64.whl", hash = "sha256:cead0978fc57397645f12578bfd2d5ea9138ea0fac82b2f63f7f7c6877986a69"},
+ {file = "charset_normalizer-3.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6e1fcf0720908f200cd21aa4e6750a48ff6ce4afe7ff5a79a90d5ed8a08296f8"},
+ {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f819d5fe9234f9f82d75bdfa9aef3a3d72c4d24a6e57aeaebba32a704553aa0"},
+ {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:a59cb51917aa591b1c4e6a43c132f0cdc3c76dbad6155df4e28ee626cc77a0a3"},
+ {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8ef3c867360f88ac904fd3f5e1f902f13307af9052646963ee08ff4f131adafc"},
+ {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d9e45d7faa48ee908174d8fe84854479ef838fc6a705c9315372eacbc2f02897"},
+ {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:840c25fb618a231545cbab0564a799f101b63b9901f2569faecd6b222ac72381"},
+ {file = "charset_normalizer-3.4.4-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ca5862d5b3928c4940729dacc329aa9102900382fea192fc5e52eb69d6093815"},
+ {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d9c7f57c3d666a53421049053eaacdd14bbd0a528e2186fcb2e672effd053bb0"},
+ {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:277e970e750505ed74c832b4bf75dac7476262ee2a013f5574dd49075879e161"},
+ {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:31fd66405eaf47bb62e8cd575dc621c56c668f27d46a61d975a249930dd5e2a4"},
+ {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:0d3d8f15c07f86e9ff82319b3d9ef6f4bf907608f53fe9d92b28ea9ae3d1fd89"},
+ {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:9f7fcd74d410a36883701fafa2482a6af2ff5ba96b9a620e9e0721e28ead5569"},
+ {file = "charset_normalizer-3.4.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ebf3e58c7ec8a8bed6d66a75d7fb37b55e5015b03ceae72a8e7c74495551e224"},
+ {file = "charset_normalizer-3.4.4-cp311-cp311-win32.whl", hash = "sha256:eecbc200c7fd5ddb9a7f16c7decb07b566c29fa2161a16cf67b8d068bd21690a"},
+ {file = "charset_normalizer-3.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:5ae497466c7901d54b639cf42d5b8c1b6a4fead55215500d2f486d34db48d016"},
+ {file = "charset_normalizer-3.4.4-cp311-cp311-win_arm64.whl", hash = "sha256:65e2befcd84bc6f37095f5961e68a6f077bf44946771354a28ad434c2cce0ae1"},
+ {file = "charset_normalizer-3.4.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0a98e6759f854bd25a58a73fa88833fba3b7c491169f86ce1180c948ab3fd394"},
+ {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b5b290ccc2a263e8d185130284f8501e3e36c5e02750fc6b6bdeb2e9e96f1e25"},
+ {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74bb723680f9f7a6234dcf67aea57e708ec1fbdf5699fb91dfd6f511b0a320ef"},
+ {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f1e34719c6ed0b92f418c7c780480b26b5d9c50349e9a9af7d76bf757530350d"},
+ {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2437418e20515acec67d86e12bf70056a33abdacb5cb1655042f6538d6b085a8"},
+ {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:11d694519d7f29d6cd09f6ac70028dba10f92f6cdd059096db198c283794ac86"},
+ {file = "charset_normalizer-3.4.4-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ac1c4a689edcc530fc9d9aa11f5774b9e2f33f9a0c6a57864e90908f5208d30a"},
+ {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:21d142cc6c0ec30d2efee5068ca36c128a30b0f2c53c1c07bd78cb6bc1d3be5f"},
+ {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:5dbe56a36425d26d6cfb40ce79c314a2e4dd6211d51d6d2191c00bed34f354cc"},
+ {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5bfbb1b9acf3334612667b61bd3002196fe2a1eb4dd74d247e0f2a4d50ec9bbf"},
+ {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:d055ec1e26e441f6187acf818b73564e6e6282709e9bcb5b63f5b23068356a15"},
+ {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:af2d8c67d8e573d6de5bc30cdb27e9b95e49115cd9baad5ddbd1a6207aaa82a9"},
+ {file = "charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:780236ac706e66881f3b7f2f32dfe90507a09e67d1d454c762cf642e6e1586e0"},
+ {file = "charset_normalizer-3.4.4-cp312-cp312-win32.whl", hash = "sha256:5833d2c39d8896e4e19b689ffc198f08ea58116bee26dea51e362ecc7cd3ed26"},
+ {file = "charset_normalizer-3.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:a79cfe37875f822425b89a82333404539ae63dbdddf97f84dcbc3d339aae9525"},
+ {file = "charset_normalizer-3.4.4-cp312-cp312-win_arm64.whl", hash = "sha256:376bec83a63b8021bb5c8ea75e21c4ccb86e7e45ca4eb81146091b56599b80c3"},
+ {file = "charset_normalizer-3.4.4-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e1f185f86a6f3403aa2420e815904c67b2f9ebc443f045edd0de921108345794"},
+ {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b39f987ae8ccdf0d2642338faf2abb1862340facc796048b604ef14919e55ed"},
+ {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3162d5d8ce1bb98dd51af660f2121c55d0fa541b46dff7bb9b9f86ea1d87de72"},
+ {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:81d5eb2a312700f4ecaa977a8235b634ce853200e828fbadf3a9c50bab278328"},
+ {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5bd2293095d766545ec1a8f612559f6b40abc0eb18bb2f5d1171872d34036ede"},
+ {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a8a8b89589086a25749f471e6a900d3f662d1d3b6e2e59dcecf787b1cc3a1894"},
+ {file = "charset_normalizer-3.4.4-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc7637e2f80d8530ee4a78e878bce464f70087ce73cf7c1caf142416923b98f1"},
+ {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f8bf04158c6b607d747e93949aa60618b61312fe647a6369f88ce2ff16043490"},
+ {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:554af85e960429cf30784dd47447d5125aaa3b99a6f0683589dbd27e2f45da44"},
+ {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:74018750915ee7ad843a774364e13a3db91682f26142baddf775342c3f5b1133"},
+ {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:c0463276121fdee9c49b98908b3a89c39be45d86d1dbaa22957e38f6321d4ce3"},
+ {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:362d61fd13843997c1c446760ef36f240cf81d3ebf74ac62652aebaf7838561e"},
+ {file = "charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9a26f18905b8dd5d685d6d07b0cdf98a79f3c7a918906af7cc143ea2e164c8bc"},
+ {file = "charset_normalizer-3.4.4-cp313-cp313-win32.whl", hash = "sha256:9b35f4c90079ff2e2edc5b26c0c77925e5d2d255c42c74fdb70fb49b172726ac"},
+ {file = "charset_normalizer-3.4.4-cp313-cp313-win_amd64.whl", hash = "sha256:b435cba5f4f750aa6c0a0d92c541fb79f69a387c91e61f1795227e4ed9cece14"},
+ {file = "charset_normalizer-3.4.4-cp313-cp313-win_arm64.whl", hash = "sha256:542d2cee80be6f80247095cc36c418f7bddd14f4a6de45af91dfad36d817bba2"},
+ {file = "charset_normalizer-3.4.4-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:da3326d9e65ef63a817ecbcc0df6e94463713b754fe293eaa03da99befb9a5bd"},
+ {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8af65f14dc14a79b924524b1e7fffe304517b2bff5a58bf64f30b98bbc5079eb"},
+ {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74664978bb272435107de04e36db5a9735e78232b85b77d45cfb38f758efd33e"},
+ {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:752944c7ffbfdd10c074dc58ec2d5a8a4cd9493b314d367c14d24c17684ddd14"},
+ {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d1f13550535ad8cff21b8d757a3257963e951d96e20ec82ab44bc64aeb62a191"},
+ {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ecaae4149d99b1c9e7b88bb03e3221956f68fd6d50be2ef061b2381b61d20838"},
+ {file = "charset_normalizer-3.4.4-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:cb6254dc36b47a990e59e1068afacdcd02958bdcce30bb50cc1700a8b9d624a6"},
+ {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c8ae8a0f02f57a6e61203a31428fa1d677cbe50c93622b4149d5c0f319c1d19e"},
+ {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:47cc91b2f4dd2833fddaedd2893006b0106129d4b94fdb6af1f4ce5a9965577c"},
+ {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:82004af6c302b5d3ab2cfc4cc5f29db16123b1a8417f2e25f9066f91d4411090"},
+ {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:2b7d8f6c26245217bd2ad053761201e9f9680f8ce52f0fcd8d0755aeae5b2152"},
+ {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:799a7a5e4fb2d5898c60b640fd4981d6a25f1c11790935a44ce38c54e985f828"},
+ {file = "charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:99ae2cffebb06e6c22bdc25801d7b30f503cc87dbd283479e7b606f70aff57ec"},
+ {file = "charset_normalizer-3.4.4-cp314-cp314-win32.whl", hash = "sha256:f9d332f8c2a2fcbffe1378594431458ddbef721c1769d78e2cbc06280d8155f9"},
+ {file = "charset_normalizer-3.4.4-cp314-cp314-win_amd64.whl", hash = "sha256:8a6562c3700cce886c5be75ade4a5db4214fda19fede41d9792d100288d8f94c"},
+ {file = "charset_normalizer-3.4.4-cp314-cp314-win_arm64.whl", hash = "sha256:de00632ca48df9daf77a2c65a484531649261ec9f25489917f09e455cb09ddb2"},
+ {file = "charset_normalizer-3.4.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ce8a0633f41a967713a59c4139d29110c07e826d131a316b50ce11b1d79b4f84"},
+ {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eaabd426fe94daf8fd157c32e571c85cb12e66692f15516a83a03264b08d06c3"},
+ {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c4ef880e27901b6cc782f1b95f82da9313c0eb95c3af699103088fa0ac3ce9ac"},
+ {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2aaba3b0819274cc41757a1da876f810a3e4d7b6eb25699253a4effef9e8e4af"},
+ {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:778d2e08eda00f4256d7f672ca9fef386071c9202f5e4607920b86d7803387f2"},
+ {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f155a433c2ec037d4e8df17d18922c3a0d9b3232a396690f17175d2946f0218d"},
+ {file = "charset_normalizer-3.4.4-cp38-cp38-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a8bf8d0f749c5757af2142fe7903a9df1d2e8aa3841559b2bad34b08d0e2bcf3"},
+ {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:194f08cbb32dc406d6e1aea671a68be0823673db2832b38405deba2fb0d88f63"},
+ {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_armv7l.whl", hash = "sha256:6aee717dcfead04c6eb1ce3bd29ac1e22663cdea57f943c87d1eab9a025438d7"},
+ {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:cd4b7ca9984e5e7985c12bc60a6f173f3c958eae74f3ef6624bb6b26e2abbae4"},
+ {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_riscv64.whl", hash = "sha256:b7cf1017d601aa35e6bb650b6ad28652c9cd78ee6caff19f3c28d03e1c80acbf"},
+ {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:e912091979546adf63357d7e2ccff9b44f026c075aeaf25a52d0e95ad2281074"},
+ {file = "charset_normalizer-3.4.4-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:5cb4d72eea50c8868f5288b7f7f33ed276118325c1dfd3957089f6b519e1382a"},
+ {file = "charset_normalizer-3.4.4-cp38-cp38-win32.whl", hash = "sha256:837c2ce8c5a65a2035be9b3569c684358dfbf109fd3b6969630a87535495ceaa"},
+ {file = "charset_normalizer-3.4.4-cp38-cp38-win_amd64.whl", hash = "sha256:44c2a8734b333e0578090c4cd6b16f275e07aa6614ca8715e6c038e865e70576"},
+ {file = "charset_normalizer-3.4.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a9768c477b9d7bd54bc0c86dbaebdec6f03306675526c9927c0e8a04e8f94af9"},
+ {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1bee1e43c28aa63cb16e5c14e582580546b08e535299b8b6158a7c9c768a1f3d"},
+ {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:fd44c878ea55ba351104cb93cc85e74916eb8fa440ca7903e57575e97394f608"},
+ {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:0f04b14ffe5fdc8c4933862d8306109a2c51e0704acfa35d51598eb45a1e89fc"},
+ {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:cd09d08005f958f370f539f186d10aec3377d55b9eeb0d796025d4886119d76e"},
+ {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4fe7859a4e3e8457458e2ff592f15ccb02f3da787fcd31e0183879c3ad4692a1"},
+ {file = "charset_normalizer-3.4.4-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fa09f53c465e532f4d3db095e0c55b615f010ad81803d383195b6b5ca6cbf5f3"},
+ {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7fa17817dc5625de8a027cb8b26d9fefa3ea28c8253929b8d6649e705d2835b6"},
+ {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:5947809c8a2417be3267efc979c47d76a079758166f7d43ef5ae8e9f92751f88"},
+ {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:4902828217069c3c5c71094537a8e623f5d097858ac6ca8252f7b4d10b7560f1"},
+ {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:7c308f7e26e4363d79df40ca5b2be1c6ba9f02bdbccfed5abddb7859a6ce72cf"},
+ {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:2c9d3c380143a1fedbff95a312aa798578371eb29da42106a29019368a475318"},
+ {file = "charset_normalizer-3.4.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:cb01158d8b88ee68f15949894ccc6712278243d95f344770fa7593fa2d94410c"},
+ {file = "charset_normalizer-3.4.4-cp39-cp39-win32.whl", hash = "sha256:2677acec1a2f8ef614c6888b5b4ae4060cc184174a938ed4e8ef690e15d3e505"},
+ {file = "charset_normalizer-3.4.4-cp39-cp39-win_amd64.whl", hash = "sha256:f8e160feb2aed042cd657a72acc0b481212ed28b1b9a95c0cee1621b524e1966"},
+ {file = "charset_normalizer-3.4.4-cp39-cp39-win_arm64.whl", hash = "sha256:b5d84d37db046c5ca74ee7bb47dd6cbc13f80665fdde3e8040bdd3fb015ecb50"},
+ {file = "charset_normalizer-3.4.4-py3-none-any.whl", hash = "sha256:7a32c560861a02ff789ad905a2fe94e3f840803362c84fecf1851cb4cf3dc37f"},
+ {file = "charset_normalizer-3.4.4.tar.gz", hash = "sha256:94537985111c35f28720e43603b8e7b43a6ecfb2ce1d3058bbe955b73404e21a"},
+]
+
+[[package]]
+name = "colorama"
+version = "0.4.6"
+description = "Cross-platform colored terminal text."
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
+groups = ["main"]
+markers = "sys_platform == \"win32\" or platform_system == \"Windows\""
+files = [
+ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"},
+ {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
+]
+
+[[package]]
+name = "comm"
+version = "0.2.3"
+description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc."
+optional = false
+python-versions = ">=3.8"
+groups = ["main"]
+files = [
+ {file = "comm-0.2.3-py3-none-any.whl", hash = "sha256:c615d91d75f7f04f095b30d1c1711babd43bdc6419c1be9886a85f2f4e489417"},
+ {file = "comm-0.2.3.tar.gz", hash = "sha256:2dc8048c10962d55d7ad693be1e7045d891b7ce8d999c97963a5e3e99c055971"},
+]
+
+[package.extras]
+test = ["pytest"]
+
+[[package]]
+name = "contourpy"
+version = "1.3.3"
+description = "Python library for calculating contours of 2D quadrilateral grids"
+optional = false
+python-versions = ">=3.11"
+groups = ["main"]
+files = [
+ {file = "contourpy-1.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:709a48ef9a690e1343202916450bc48b9e51c049b089c7f79a267b46cffcdaa1"},
+ {file = "contourpy-1.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:23416f38bfd74d5d28ab8429cc4d63fa67d5068bd711a85edb1c3fb0c3e2f381"},
+ {file = "contourpy-1.3.3-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:929ddf8c4c7f348e4c0a5a3a714b5c8542ffaa8c22954862a46ca1813b667ee7"},
+ {file = "contourpy-1.3.3-cp311-cp311-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:9e999574eddae35f1312c2b4b717b7885d4edd6cb46700e04f7f02db454e67c1"},
+ {file = "contourpy-1.3.3-cp311-cp311-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0bf67e0e3f482cb69779dd3061b534eb35ac9b17f163d851e2a547d56dba0a3a"},
+ {file = "contourpy-1.3.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:51e79c1f7470158e838808d4a996fa9bac72c498e93d8ebe5119bc1e6becb0db"},
+ {file = "contourpy-1.3.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:598c3aaece21c503615fd59c92a3598b428b2f01bfb4b8ca9c4edeecc2438620"},
+ {file = "contourpy-1.3.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:322ab1c99b008dad206d406bb61d014cf0174df491ae9d9d0fac6a6fda4f977f"},
+ {file = "contourpy-1.3.3-cp311-cp311-win32.whl", hash = "sha256:fd907ae12cd483cd83e414b12941c632a969171bf90fc937d0c9f268a31cafff"},
+ {file = "contourpy-1.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:3519428f6be58431c56581f1694ba8e50626f2dd550af225f82fb5f5814d2a42"},
+ {file = "contourpy-1.3.3-cp311-cp311-win_arm64.whl", hash = "sha256:15ff10bfada4bf92ec8b31c62bf7c1834c244019b4a33095a68000d7075df470"},
+ {file = "contourpy-1.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b08a32ea2f8e42cf1d4be3169a98dd4be32bafe4f22b6c4cb4ba810fa9e5d2cb"},
+ {file = "contourpy-1.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:556dba8fb6f5d8742f2923fe9457dbdd51e1049c4a43fd3986a0b14a1d815fc6"},
+ {file = "contourpy-1.3.3-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:92d9abc807cf7d0e047b95ca5d957cf4792fcd04e920ca70d48add15c1a90ea7"},
+ {file = "contourpy-1.3.3-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b2e8faa0ed68cb29af51edd8e24798bb661eac3bd9f65420c1887b6ca89987c8"},
+ {file = "contourpy-1.3.3-cp312-cp312-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:626d60935cf668e70a5ce6ff184fd713e9683fb458898e4249b63be9e28286ea"},
+ {file = "contourpy-1.3.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4d00e655fcef08aba35ec9610536bfe90267d7ab5ba944f7032549c55a146da1"},
+ {file = "contourpy-1.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:451e71b5a7d597379ef572de31eeb909a87246974d960049a9848c3bc6c41bf7"},
+ {file = "contourpy-1.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:459c1f020cd59fcfe6650180678a9993932d80d44ccde1fa1868977438f0b411"},
+ {file = "contourpy-1.3.3-cp312-cp312-win32.whl", hash = "sha256:023b44101dfe49d7d53932be418477dba359649246075c996866106da069af69"},
+ {file = "contourpy-1.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:8153b8bfc11e1e4d75bcb0bff1db232f9e10b274e0929de9d608027e0d34ff8b"},
+ {file = "contourpy-1.3.3-cp312-cp312-win_arm64.whl", hash = "sha256:07ce5ed73ecdc4a03ffe3e1b3e3c1166db35ae7584be76f65dbbe28a7791b0cc"},
+ {file = "contourpy-1.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:177fb367556747a686509d6fef71d221a4b198a3905fe824430e5ea0fda54eb5"},
+ {file = "contourpy-1.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d002b6f00d73d69333dac9d0b8d5e84d9724ff9ef044fd63c5986e62b7c9e1b1"},
+ {file = "contourpy-1.3.3-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:348ac1f5d4f1d66d3322420f01d42e43122f43616e0f194fc1c9f5d830c5b286"},
+ {file = "contourpy-1.3.3-cp313-cp313-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:655456777ff65c2c548b7c454af9c6f33f16c8884f11083244b5819cc214f1b5"},
+ {file = "contourpy-1.3.3-cp313-cp313-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:644a6853d15b2512d67881586bd03f462c7ab755db95f16f14d7e238f2852c67"},
+ {file = "contourpy-1.3.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4debd64f124ca62069f313a9cb86656ff087786016d76927ae2cf37846b006c9"},
+ {file = "contourpy-1.3.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a15459b0f4615b00bbd1e91f1b9e19b7e63aea7483d03d804186f278c0af2659"},
+ {file = "contourpy-1.3.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ca0fdcd73925568ca027e0b17ab07aad764be4706d0a925b89227e447d9737b7"},
+ {file = "contourpy-1.3.3-cp313-cp313-win32.whl", hash = "sha256:b20c7c9a3bf701366556e1b1984ed2d0cedf999903c51311417cf5f591d8c78d"},
+ {file = "contourpy-1.3.3-cp313-cp313-win_amd64.whl", hash = "sha256:1cadd8b8969f060ba45ed7c1b714fe69185812ab43bd6b86a9123fe8f99c3263"},
+ {file = "contourpy-1.3.3-cp313-cp313-win_arm64.whl", hash = "sha256:fd914713266421b7536de2bfa8181aa8c699432b6763a0ea64195ebe28bff6a9"},
+ {file = "contourpy-1.3.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:88df9880d507169449d434c293467418b9f6cbe82edd19284aa0409e7fdb933d"},
+ {file = "contourpy-1.3.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:d06bb1f751ba5d417047db62bca3c8fde202b8c11fb50742ab3ab962c81e8216"},
+ {file = "contourpy-1.3.3-cp313-cp313t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e4e6b05a45525357e382909a4c1600444e2a45b4795163d3b22669285591c1ae"},
+ {file = "contourpy-1.3.3-cp313-cp313t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ab3074b48c4e2cf1a960e6bbeb7f04566bf36b1861d5c9d4d8ac04b82e38ba20"},
+ {file = "contourpy-1.3.3-cp313-cp313t-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6c3d53c796f8647d6deb1abe867daeb66dcc8a97e8455efa729516b997b8ed99"},
+ {file = "contourpy-1.3.3-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:50ed930df7289ff2a8d7afeb9603f8289e5704755c7e5c3bbd929c90c817164b"},
+ {file = "contourpy-1.3.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4feffb6537d64b84877da813a5c30f1422ea5739566abf0bd18065ac040e120a"},
+ {file = "contourpy-1.3.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:2b7e9480ffe2b0cd2e787e4df64270e3a0440d9db8dc823312e2c940c167df7e"},
+ {file = "contourpy-1.3.3-cp313-cp313t-win32.whl", hash = "sha256:283edd842a01e3dcd435b1c5116798d661378d83d36d337b8dde1d16a5fc9ba3"},
+ {file = "contourpy-1.3.3-cp313-cp313t-win_amd64.whl", hash = "sha256:87acf5963fc2b34825e5b6b048f40e3635dd547f590b04d2ab317c2619ef7ae8"},
+ {file = "contourpy-1.3.3-cp313-cp313t-win_arm64.whl", hash = "sha256:3c30273eb2a55024ff31ba7d052dde990d7d8e5450f4bbb6e913558b3d6c2301"},
+ {file = "contourpy-1.3.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fde6c716d51c04b1c25d0b90364d0be954624a0ee9d60e23e850e8d48353d07a"},
+ {file = "contourpy-1.3.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:cbedb772ed74ff5be440fa8eee9bd49f64f6e3fc09436d9c7d8f1c287b121d77"},
+ {file = "contourpy-1.3.3-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:22e9b1bd7a9b1d652cd77388465dc358dafcd2e217d35552424aa4f996f524f5"},
+ {file = "contourpy-1.3.3-cp314-cp314-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a22738912262aa3e254e4f3cb079a95a67132fc5a063890e224393596902f5a4"},
+ {file = "contourpy-1.3.3-cp314-cp314-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:afe5a512f31ee6bd7d0dda52ec9864c984ca3d66664444f2d72e0dc4eb832e36"},
+ {file = "contourpy-1.3.3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f64836de09927cba6f79dcd00fdd7d5329f3fccc633468507079c829ca4db4e3"},
+ {file = "contourpy-1.3.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1fd43c3be4c8e5fd6e4f2baeae35ae18176cf2e5cced681cca908addf1cdd53b"},
+ {file = "contourpy-1.3.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:6afc576f7b33cf00996e5c1102dc2a8f7cc89e39c0b55df93a0b78c1bd992b36"},
+ {file = "contourpy-1.3.3-cp314-cp314-win32.whl", hash = "sha256:66c8a43a4f7b8df8b71ee1840e4211a3c8d93b214b213f590e18a1beca458f7d"},
+ {file = "contourpy-1.3.3-cp314-cp314-win_amd64.whl", hash = "sha256:cf9022ef053f2694e31d630feaacb21ea24224be1c3ad0520b13d844274614fd"},
+ {file = "contourpy-1.3.3-cp314-cp314-win_arm64.whl", hash = "sha256:95b181891b4c71de4bb404c6621e7e2390745f887f2a026b2d99e92c17892339"},
+ {file = "contourpy-1.3.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:33c82d0138c0a062380332c861387650c82e4cf1747aaa6938b9b6516762e772"},
+ {file = "contourpy-1.3.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:ea37e7b45949df430fe649e5de8351c423430046a2af20b1c1961cae3afcda77"},
+ {file = "contourpy-1.3.3-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d304906ecc71672e9c89e87c4675dc5c2645e1f4269a5063b99b0bb29f232d13"},
+ {file = "contourpy-1.3.3-cp314-cp314t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ca658cd1a680a5c9ea96dc61cdbae1e85c8f25849843aa799dfd3cb370ad4fbe"},
+ {file = "contourpy-1.3.3-cp314-cp314t-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ab2fd90904c503739a75b7c8c5c01160130ba67944a7b77bbf36ef8054576e7f"},
+ {file = "contourpy-1.3.3-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7301b89040075c30e5768810bc96a8e8d78085b47d8be6e4c3f5a0b4ed478a0"},
+ {file = "contourpy-1.3.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:2a2a8b627d5cc6b7c41a4beff6c5ad5eb848c88255fda4a8745f7e901b32d8e4"},
+ {file = "contourpy-1.3.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:fd6ec6be509c787f1caf6b247f0b1ca598bef13f4ddeaa126b7658215529ba0f"},
+ {file = "contourpy-1.3.3-cp314-cp314t-win32.whl", hash = "sha256:e74a9a0f5e3fff48fb5a7f2fd2b9b70a3fe014a67522f79b7cca4c0c7e43c9ae"},
+ {file = "contourpy-1.3.3-cp314-cp314t-win_amd64.whl", hash = "sha256:13b68d6a62db8eafaebb8039218921399baf6e47bf85006fd8529f2a08ef33fc"},
+ {file = "contourpy-1.3.3-cp314-cp314t-win_arm64.whl", hash = "sha256:b7448cb5a725bb1e35ce88771b86fba35ef418952474492cf7c764059933ff8b"},
+ {file = "contourpy-1.3.3-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:cd5dfcaeb10f7b7f9dc8941717c6c2ade08f587be2226222c12b25f0483ed497"},
+ {file = "contourpy-1.3.3-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:0c1fc238306b35f246d61a1d416a627348b5cf0648648a031e14bb8705fcdfe8"},
+ {file = "contourpy-1.3.3-pp311-pypy311_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:70f9aad7de812d6541d29d2bbf8feb22ff7e1c299523db288004e3157ff4674e"},
+ {file = "contourpy-1.3.3-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5ed3657edf08512fc3fe81b510e35c2012fbd3081d2e26160f27ca28affec989"},
+ {file = "contourpy-1.3.3-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:3d1a3799d62d45c18bafd41c5fa05120b96a28079f2393af559b843d1a966a77"},
+ {file = "contourpy-1.3.3.tar.gz", hash = "sha256:083e12155b210502d0bca491432bb04d56dc3432f95a979b429f2848c3dbe880"},
+]
+
+[package.dependencies]
+numpy = ">=1.25"
+
+[package.extras]
+bokeh = ["bokeh", "selenium"]
+docs = ["furo", "sphinx (>=7.2)", "sphinx-copybutton"]
+mypy = ["bokeh", "contourpy[bokeh,docs]", "docutils-stubs", "mypy (==1.17.0)", "types-Pillow"]
+test = ["Pillow", "contourpy[test-no-images]", "matplotlib"]
+test-no-images = ["pytest", "pytest-cov", "pytest-rerunfailures", "pytest-xdist", "wurlitzer"]
+
+[[package]]
+name = "cycler"
+version = "0.12.1"
+description = "Composable style cycles"
+optional = false
+python-versions = ">=3.8"
+groups = ["main"]
+files = [
+ {file = "cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30"},
+ {file = "cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c"},
+]
+
+[package.extras]
+docs = ["ipython", "matplotlib", "numpydoc", "sphinx"]
+tests = ["pytest", "pytest-cov", "pytest-xdist"]
+
+[[package]]
+name = "debugpy"
+version = "1.8.19"
+description = "An implementation of the Debug Adapter Protocol for Python"
+optional = false
+python-versions = ">=3.8"
+groups = ["main"]
+files = [
+ {file = "debugpy-1.8.19-cp310-cp310-macosx_15_0_x86_64.whl", hash = "sha256:fce6da15d73be5935b4438435c53adb512326a3e11e4f90793ea87cd9f018254"},
+ {file = "debugpy-1.8.19-cp310-cp310-manylinux_2_34_x86_64.whl", hash = "sha256:e24b1652a1df1ab04d81e7ead446a91c226de704ff5dde6bd0a0dbaab07aa3f2"},
+ {file = "debugpy-1.8.19-cp310-cp310-win32.whl", hash = "sha256:327cb28c3ad9e17bc925efc7f7018195fd4787c2fe4b7af1eec11f1d19bdec62"},
+ {file = "debugpy-1.8.19-cp310-cp310-win_amd64.whl", hash = "sha256:b7dd275cf2c99e53adb9654f5ae015f70415bbe2bacbe24cfee30d54b6aa03c5"},
+ {file = "debugpy-1.8.19-cp311-cp311-macosx_15_0_universal2.whl", hash = "sha256:c5dcfa21de1f735a4f7ced4556339a109aa0f618d366ede9da0a3600f2516d8b"},
+ {file = "debugpy-1.8.19-cp311-cp311-manylinux_2_34_x86_64.whl", hash = "sha256:806d6800246244004625d5222d7765874ab2d22f3ba5f615416cf1342d61c488"},
+ {file = "debugpy-1.8.19-cp311-cp311-win32.whl", hash = "sha256:783a519e6dfb1f3cd773a9bda592f4887a65040cb0c7bd38dde410f4e53c40d4"},
+ {file = "debugpy-1.8.19-cp311-cp311-win_amd64.whl", hash = "sha256:14035cbdbb1fe4b642babcdcb5935c2da3b1067ac211c5c5a8fdc0bb31adbcaa"},
+ {file = "debugpy-1.8.19-cp312-cp312-macosx_15_0_universal2.whl", hash = "sha256:bccb1540a49cde77edc7ce7d9d075c1dbeb2414751bc0048c7a11e1b597a4c2e"},
+ {file = "debugpy-1.8.19-cp312-cp312-manylinux_2_34_x86_64.whl", hash = "sha256:e9c68d9a382ec754dc05ed1d1b4ed5bd824b9f7c1a8cd1083adb84b3c93501de"},
+ {file = "debugpy-1.8.19-cp312-cp312-win32.whl", hash = "sha256:6599cab8a783d1496ae9984c52cb13b7c4a3bd06a8e6c33446832a5d97ce0bee"},
+ {file = "debugpy-1.8.19-cp312-cp312-win_amd64.whl", hash = "sha256:66e3d2fd8f2035a8f111eb127fa508469dfa40928a89b460b41fd988684dc83d"},
+ {file = "debugpy-1.8.19-cp313-cp313-macosx_15_0_universal2.whl", hash = "sha256:91e35db2672a0abaf325f4868fcac9c1674a0d9ad9bb8a8c849c03a5ebba3e6d"},
+ {file = "debugpy-1.8.19-cp313-cp313-manylinux_2_34_x86_64.whl", hash = "sha256:85016a73ab84dea1c1f1dcd88ec692993bcbe4532d1b49ecb5f3c688ae50c606"},
+ {file = "debugpy-1.8.19-cp313-cp313-win32.whl", hash = "sha256:b605f17e89ba0ecee994391194285fada89cee111cfcd29d6f2ee11cbdc40976"},
+ {file = "debugpy-1.8.19-cp313-cp313-win_amd64.whl", hash = "sha256:c30639998a9f9cd9699b4b621942c0179a6527f083c72351f95c6ab1728d5b73"},
+ {file = "debugpy-1.8.19-cp314-cp314-macosx_15_0_universal2.whl", hash = "sha256:1e8c4d1bd230067bf1bbcdbd6032e5a57068638eb28b9153d008ecde288152af"},
+ {file = "debugpy-1.8.19-cp314-cp314-manylinux_2_34_x86_64.whl", hash = "sha256:d40c016c1f538dbf1762936e3aeb43a89b965069d9f60f9e39d35d9d25e6b809"},
+ {file = "debugpy-1.8.19-cp314-cp314-win32.whl", hash = "sha256:0601708223fe1cd0e27c6cce67a899d92c7d68e73690211e6788a4b0e1903f5b"},
+ {file = "debugpy-1.8.19-cp314-cp314-win_amd64.whl", hash = "sha256:8e19a725f5d486f20e53a1dde2ab8bb2c9607c40c00a42ab646def962b41125f"},
+ {file = "debugpy-1.8.19-cp38-cp38-macosx_15_0_x86_64.whl", hash = "sha256:d9b6f633fd2865af2afba2beb0c1819b6ecd4aed1c8f90f5d1bbca3272306b10"},
+ {file = "debugpy-1.8.19-cp38-cp38-manylinux_2_34_x86_64.whl", hash = "sha256:a21bfdea088f713df05fa246ba0520f6ba44dd7eaec224742f51987a6979a648"},
+ {file = "debugpy-1.8.19-cp38-cp38-win32.whl", hash = "sha256:b1cb98e5325da3059ca24445fca48314bfddfdf65ce1b59ff07055e723f06bd2"},
+ {file = "debugpy-1.8.19-cp38-cp38-win_amd64.whl", hash = "sha256:c9b9bf440141a36836bdbe4320a2b126bb38aafa85e1aed05d7bfbb0e2a278bf"},
+ {file = "debugpy-1.8.19-cp39-cp39-macosx_15_0_x86_64.whl", hash = "sha256:c047177ab2d286451f242b855b650d313198c4a987140d4b35218b2855a64a4a"},
+ {file = "debugpy-1.8.19-cp39-cp39-manylinux_2_34_x86_64.whl", hash = "sha256:4468de0c30012d367944f0eab4ecb8371736e8ef9522a465f61214f344c11183"},
+ {file = "debugpy-1.8.19-cp39-cp39-win32.whl", hash = "sha256:7b62c0f015120ede25e5124a5f9d8a424e1208e3d96a36c89958f046ee21fff6"},
+ {file = "debugpy-1.8.19-cp39-cp39-win_amd64.whl", hash = "sha256:76f566baaf7f3e06adbe67ffedccd2ee911d1e486f55931939ce3f0fe1090774"},
+ {file = "debugpy-1.8.19-py2.py3-none-any.whl", hash = "sha256:360ffd231a780abbc414ba0f005dad409e71c78637efe8f2bd75837132a41d38"},
+ {file = "debugpy-1.8.19.tar.gz", hash = "sha256:eea7e5987445ab0b5ed258093722d5ecb8bb72217c5c9b1e21f64efe23ddebdb"},
+]
+
+[[package]]
+name = "decorator"
+version = "5.2.1"
+description = "Decorators for Humans"
+optional = false
+python-versions = ">=3.8"
+groups = ["main"]
+files = [
+ {file = "decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a"},
+ {file = "decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360"},
+]
+
+[[package]]
+name = "defusedxml"
+version = "0.7.1"
+description = "XML bomb protection for Python stdlib modules"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+groups = ["main"]
+files = [
+ {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"},
+ {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"},
+]
+
+[[package]]
+name = "executing"
+version = "2.2.1"
+description = "Get the currently executing AST node of a frame, and other information"
+optional = false
+python-versions = ">=3.8"
+groups = ["main"]
+files = [
+ {file = "executing-2.2.1-py2.py3-none-any.whl", hash = "sha256:760643d3452b4d777d295bb167ccc74c64a81df23fb5e08eff250c425a4b2017"},
+ {file = "executing-2.2.1.tar.gz", hash = "sha256:3632cc370565f6648cc328b32435bd120a1e4ebb20c77e3fdde9a13cd1e533c4"},
+]
+
+[package.extras]
+tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich ; python_version >= \"3.11\""]
+
+[[package]]
+name = "fastjsonschema"
+version = "2.21.2"
+description = "Fastest Python implementation of JSON schema"
+optional = false
+python-versions = "*"
+groups = ["main"]
+files = [
+ {file = "fastjsonschema-2.21.2-py3-none-any.whl", hash = "sha256:1c797122d0a86c5cace2e54bf4e819c36223b552017172f32c5c024a6b77e463"},
+ {file = "fastjsonschema-2.21.2.tar.gz", hash = "sha256:b1eb43748041c880796cd077f1a07c3d94e93ae84bba5ed36800a33554ae05de"},
+]
+
+[package.extras]
+devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benchmark", "pytest-cache", "validictory"]
+
+[[package]]
+name = "filelock"
+version = "3.20.3"
+description = "A platform independent file lock."
+optional = false
+python-versions = ">=3.10"
+groups = ["main"]
+files = [
+ {file = "filelock-3.20.3-py3-none-any.whl", hash = "sha256:4b0dda527ee31078689fc205ec4f1c1bf7d56cf88b6dc9426c4f230e46c2dce1"},
+ {file = "filelock-3.20.3.tar.gz", hash = "sha256:18c57ee915c7ec61cff0ecf7f0f869936c7c30191bb0cf406f1341778d0834e1"},
+]
+
+[[package]]
+name = "findingemo-light"
+version = "1.0.0"
+description = "FindingEmo-Light: Data only."
+optional = false
+python-versions = ">=3.6"
+groups = ["main"]
+files = [
+ {file = "findingemo_light-1.0.0-py3-none-any.whl", hash = "sha256:b60a71a077e6211cfc96477bbdd8e66fe5c6b26a9600331e69e0785ef56454c5"},
+ {file = "findingemo_light-1.0.0.tar.gz", hash = "sha256:6c8371981ddc6a3402921b07a927a9cd45fed07399126433a89a90fea60802ea"},
+]
+
+[package.dependencies]
+requests = ">=2.25.0"
+termcolor = ">=2.0.0"
+
+[[package]]
+name = "fonttools"
+version = "4.61.1"
+description = "Tools to manipulate font files"
+optional = false
+python-versions = ">=3.10"
+groups = ["main"]
+files = [
+ {file = "fonttools-4.61.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7c7db70d57e5e1089a274cbb2b1fd635c9a24de809a231b154965d415d6c6d24"},
+ {file = "fonttools-4.61.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5fe9fd43882620017add5eabb781ebfbc6998ee49b35bd7f8f79af1f9f99a958"},
+ {file = "fonttools-4.61.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d8db08051fc9e7d8bc622f2112511b8107d8f27cd89e2f64ec45e9825e8288da"},
+ {file = "fonttools-4.61.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a76d4cb80f41ba94a6691264be76435e5f72f2cb3cab0b092a6212855f71c2f6"},
+ {file = "fonttools-4.61.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a13fc8aeb24bad755eea8f7f9d409438eb94e82cf86b08fe77a03fbc8f6a96b1"},
+ {file = "fonttools-4.61.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b846a1fcf8beadeb9ea4f44ec5bdde393e2f1569e17d700bfc49cd69bde75881"},
+ {file = "fonttools-4.61.1-cp310-cp310-win32.whl", hash = "sha256:78a7d3ab09dc47ac1a363a493e6112d8cabed7ba7caad5f54dbe2f08676d1b47"},
+ {file = "fonttools-4.61.1-cp310-cp310-win_amd64.whl", hash = "sha256:eff1ac3cc66c2ac7cda1e64b4e2f3ffef474b7335f92fc3833fc632d595fcee6"},
+ {file = "fonttools-4.61.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c6604b735bb12fef8e0efd5578c9fb5d3d8532d5001ea13a19cddf295673ee09"},
+ {file = "fonttools-4.61.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5ce02f38a754f207f2f06557523cd39a06438ba3aafc0639c477ac409fc64e37"},
+ {file = "fonttools-4.61.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:77efb033d8d7ff233385f30c62c7c79271c8885d5c9657d967ede124671bbdfb"},
+ {file = "fonttools-4.61.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:75c1a6dfac6abd407634420c93864a1e274ebc1c7531346d9254c0d8f6ca00f9"},
+ {file = "fonttools-4.61.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0de30bfe7745c0d1ffa2b0b7048fb7123ad0d71107e10ee090fa0b16b9452e87"},
+ {file = "fonttools-4.61.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:58b0ee0ab5b1fc9921eccfe11d1435added19d6494dde14e323f25ad2bc30c56"},
+ {file = "fonttools-4.61.1-cp311-cp311-win32.whl", hash = "sha256:f79b168428351d11e10c5aeb61a74e1851ec221081299f4cf56036a95431c43a"},
+ {file = "fonttools-4.61.1-cp311-cp311-win_amd64.whl", hash = "sha256:fe2efccb324948a11dd09d22136fe2ac8a97d6c1347cf0b58a911dcd529f66b7"},
+ {file = "fonttools-4.61.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f3cb4a569029b9f291f88aafc927dd53683757e640081ca8c412781ea144565e"},
+ {file = "fonttools-4.61.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:41a7170d042e8c0024703ed13b71893519a1a6d6e18e933e3ec7507a2c26a4b2"},
+ {file = "fonttools-4.61.1-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:10d88e55330e092940584774ee5e8a6971b01fc2f4d3466a1d6c158230880796"},
+ {file = "fonttools-4.61.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:15acc09befd16a0fb8a8f62bc147e1a82817542d72184acca9ce6e0aeda9fa6d"},
+ {file = "fonttools-4.61.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e6bcdf33aec38d16508ce61fd81838f24c83c90a1d1b8c68982857038673d6b8"},
+ {file = "fonttools-4.61.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5fade934607a523614726119164ff621e8c30e8fa1ffffbbd358662056ba69f0"},
+ {file = "fonttools-4.61.1-cp312-cp312-win32.whl", hash = "sha256:75da8f28eff26defba42c52986de97b22106cb8f26515b7c22443ebc9c2d3261"},
+ {file = "fonttools-4.61.1-cp312-cp312-win_amd64.whl", hash = "sha256:497c31ce314219888c0e2fce5ad9178ca83fe5230b01a5006726cdf3ac9f24d9"},
+ {file = "fonttools-4.61.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8c56c488ab471628ff3bfa80964372fc13504ece601e0d97a78ee74126b2045c"},
+ {file = "fonttools-4.61.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:dc492779501fa723b04d0ab1f5be046797fee17d27700476edc7ee9ae535a61e"},
+ {file = "fonttools-4.61.1-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:64102ca87e84261419c3747a0d20f396eb024bdbeb04c2bfb37e2891f5fadcb5"},
+ {file = "fonttools-4.61.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4c1b526c8d3f615a7b1867f38a9410849c8f4aef078535742198e942fba0e9bd"},
+ {file = "fonttools-4.61.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:41ed4b5ec103bd306bb68f81dc166e77409e5209443e5773cb4ed837bcc9b0d3"},
+ {file = "fonttools-4.61.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b501c862d4901792adaec7c25b1ecc749e2662543f68bb194c42ba18d6eec98d"},
+ {file = "fonttools-4.61.1-cp313-cp313-win32.whl", hash = "sha256:4d7092bb38c53bbc78e9255a59158b150bcdc115a1e3b3ce0b5f267dc35dd63c"},
+ {file = "fonttools-4.61.1-cp313-cp313-win_amd64.whl", hash = "sha256:21e7c8d76f62ab13c9472ccf74515ca5b9a761d1bde3265152a6dc58700d895b"},
+ {file = "fonttools-4.61.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:fff4f534200a04b4a36e7ae3cb74493afe807b517a09e99cb4faa89a34ed6ecd"},
+ {file = "fonttools-4.61.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:d9203500f7c63545b4ce3799319fe4d9feb1a1b89b28d3cb5abd11b9dd64147e"},
+ {file = "fonttools-4.61.1-cp314-cp314-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:fa646ecec9528bef693415c79a86e733c70a4965dd938e9a226b0fc64c9d2e6c"},
+ {file = "fonttools-4.61.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:11f35ad7805edba3aac1a3710d104592df59f4b957e30108ae0ba6c10b11dd75"},
+ {file = "fonttools-4.61.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b931ae8f62db78861b0ff1ac017851764602288575d65b8e8ff1963fed419063"},
+ {file = "fonttools-4.61.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:b148b56f5de675ee16d45e769e69f87623a4944f7443850bf9a9376e628a89d2"},
+ {file = "fonttools-4.61.1-cp314-cp314-win32.whl", hash = "sha256:9b666a475a65f4e839d3d10473fad6d47e0a9db14a2f4a224029c5bfde58ad2c"},
+ {file = "fonttools-4.61.1-cp314-cp314-win_amd64.whl", hash = "sha256:4f5686e1fe5fce75d82d93c47a438a25bf0d1319d2843a926f741140b2b16e0c"},
+ {file = "fonttools-4.61.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:e76ce097e3c57c4bcb67c5aa24a0ecdbd9f74ea9219997a707a4061fbe2707aa"},
+ {file = "fonttools-4.61.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:9cfef3ab326780c04d6646f68d4b4742aae222e8b8ea1d627c74e38afcbc9d91"},
+ {file = "fonttools-4.61.1-cp314-cp314t-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:a75c301f96db737e1c5ed5fd7d77d9c34466de16095a266509e13da09751bd19"},
+ {file = "fonttools-4.61.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:91669ccac46bbc1d09e9273546181919064e8df73488ea087dcac3e2968df9ba"},
+ {file = "fonttools-4.61.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:c33ab3ca9d3ccd581d58e989d67554e42d8d4ded94ab3ade3508455fe70e65f7"},
+ {file = "fonttools-4.61.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:664c5a68ec406f6b1547946683008576ef8b38275608e1cee6c061828171c118"},
+ {file = "fonttools-4.61.1-cp314-cp314t-win32.whl", hash = "sha256:aed04cabe26f30c1647ef0e8fbb207516fd40fe9472e9439695f5c6998e60ac5"},
+ {file = "fonttools-4.61.1-cp314-cp314t-win_amd64.whl", hash = "sha256:2180f14c141d2f0f3da43f3a81bc8aa4684860f6b0e6f9e165a4831f24e6a23b"},
+ {file = "fonttools-4.61.1-py3-none-any.whl", hash = "sha256:17d2bf5d541add43822bcf0c43d7d847b160c9bb01d15d5007d84e2217aaa371"},
+ {file = "fonttools-4.61.1.tar.gz", hash = "sha256:6675329885c44657f826ef01d9e4fb33b9158e9d93c537d84ad8399539bc6f69"},
+]
+
+[package.extras]
+all = ["brotli (>=1.0.1) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; platform_python_implementation != \"CPython\"", "lxml (>=4.0)", "lz4 (>=1.7.4.2)", "matplotlib", "munkres ; platform_python_implementation == \"PyPy\"", "pycairo", "scipy ; platform_python_implementation != \"PyPy\"", "skia-pathops (>=0.5.0)", "sympy", "uharfbuzz (>=0.45.0)", "unicodedata2 (>=17.0.0) ; python_version <= \"3.14\"", "xattr ; sys_platform == \"darwin\"", "zopfli (>=0.1.4)"]
+graphite = ["lz4 (>=1.7.4.2)"]
+interpolatable = ["munkres ; platform_python_implementation == \"PyPy\"", "pycairo", "scipy ; platform_python_implementation != \"PyPy\""]
+lxml = ["lxml (>=4.0)"]
+pathops = ["skia-pathops (>=0.5.0)"]
+plot = ["matplotlib"]
+repacker = ["uharfbuzz (>=0.45.0)"]
+symfont = ["sympy"]
+type1 = ["xattr ; sys_platform == \"darwin\""]
+unicode = ["unicodedata2 (>=17.0.0) ; python_version <= \"3.14\""]
+woff = ["brotli (>=1.0.1) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; platform_python_implementation != \"CPython\"", "zopfli (>=0.1.4)"]
+
+[[package]]
+name = "fqdn"
+version = "1.5.1"
+description = "Validates fully-qualified domain names against RFC 1123, so that they are acceptable to modern bowsers"
+optional = false
+python-versions = ">=2.7, !=3.0, !=3.1, !=3.2, !=3.3, !=3.4, <4"
+groups = ["main"]
+files = [
+ {file = "fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014"},
+ {file = "fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f"},
+]
+
+[[package]]
+name = "fsspec"
+version = "2026.1.0"
+description = "File-system specification"
+optional = false
+python-versions = ">=3.10"
+groups = ["main"]
+files = [
+ {file = "fsspec-2026.1.0-py3-none-any.whl", hash = "sha256:cb76aa913c2285a3b49bdd5fc55b1d7c708d7208126b60f2eb8194fe1b4cbdcc"},
+ {file = "fsspec-2026.1.0.tar.gz", hash = "sha256:e987cb0496a0d81bba3a9d1cee62922fb395e7d4c3b575e57f547953334fe07b"},
+]
+
+[package.extras]
+abfs = ["adlfs"]
+adl = ["adlfs"]
+arrow = ["pyarrow (>=1)"]
+dask = ["dask", "distributed"]
+dev = ["pre-commit", "ruff (>=0.5)"]
+doc = ["numpydoc", "sphinx", "sphinx-design", "sphinx-rtd-theme", "yarl"]
+dropbox = ["dropbox", "dropboxdrivefs", "requests"]
+full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "dask", "distributed", "dropbox", "dropboxdrivefs", "fusepy", "gcsfs (>2024.2.0)", "libarchive-c", "ocifs", "panel", "paramiko", "pyarrow (>=1)", "pygit2", "requests", "s3fs (>2024.2.0)", "smbprotocol", "tqdm"]
+fuse = ["fusepy"]
+gcs = ["gcsfs"]
+git = ["pygit2"]
+github = ["requests"]
+gs = ["gcsfs"]
+gui = ["panel"]
+hdfs = ["pyarrow (>=1)"]
+http = ["aiohttp (!=4.0.0a0,!=4.0.0a1)"]
+libarchive = ["libarchive-c"]
+oci = ["ocifs"]
+s3 = ["s3fs"]
+sftp = ["paramiko"]
+smb = ["smbprotocol"]
+ssh = ["paramiko"]
+test = ["aiohttp (!=4.0.0a0,!=4.0.0a1)", "numpy", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "requests"]
+test-downstream = ["aiobotocore (>=2.5.4,<3.0.0)", "dask[dataframe,test]", "moto[server] (>4,<5)", "pytest-timeout", "xarray"]
+test-full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "backports-zstd ; python_version < \"3.14\"", "cloudpickle", "dask", "distributed", "dropbox", "dropboxdrivefs", "fastparquet", "fusepy", "gcsfs", "jinja2", "kerchunk", "libarchive-c", "lz4", "notebook", "numpy", "ocifs", "pandas", "panel", "paramiko", "pyarrow", "pyarrow (>=1)", "pyftpdlib", "pygit2", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "python-snappy", "requests", "smbprotocol", "tqdm", "urllib3", "zarr"]
+tqdm = ["tqdm"]
+
+[[package]]
+name = "h11"
+version = "0.16.0"
+description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1"
+optional = false
+python-versions = ">=3.8"
+groups = ["main"]
+files = [
+ {file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86"},
+ {file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1"},
+]
+
+[[package]]
+name = "httpcore"
+version = "1.0.9"
+description = "A minimal low-level HTTP client."
+optional = false
+python-versions = ">=3.8"
+groups = ["main"]
+files = [
+ {file = "httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55"},
+ {file = "httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8"},
+]
+
+[package.dependencies]
+certifi = "*"
+h11 = ">=0.16"
+
+[package.extras]
+asyncio = ["anyio (>=4.0,<5.0)"]
+http2 = ["h2 (>=3,<5)"]
+socks = ["socksio (==1.*)"]
+trio = ["trio (>=0.22.0,<1.0)"]
+
+[[package]]
+name = "httpx"
+version = "0.28.1"
+description = "The next generation HTTP client."
+optional = false
+python-versions = ">=3.8"
+groups = ["main"]
+files = [
+ {file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad"},
+ {file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc"},
+]
+
+[package.dependencies]
+anyio = "*"
+certifi = "*"
+httpcore = "==1.*"
+idna = "*"
+
+[package.extras]
+brotli = ["brotli ; platform_python_implementation == \"CPython\"", "brotlicffi ; platform_python_implementation != \"CPython\""]
+cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"]
+http2 = ["h2 (>=3,<5)"]
+socks = ["socksio (==1.*)"]
+zstd = ["zstandard (>=0.18.0)"]
+
+[[package]]
+name = "idna"
+version = "3.11"
+description = "Internationalized Domain Names in Applications (IDNA)"
+optional = false
+python-versions = ">=3.8"
+groups = ["main"]
+files = [
+ {file = "idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea"},
+ {file = "idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902"},
+]
+
+[package.extras]
+all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"]
+
+[[package]]
+name = "ipykernel"
+version = "7.1.0"
+description = "IPython Kernel for Jupyter"
+optional = false
+python-versions = ">=3.10"
+groups = ["main"]
+files = [
+ {file = "ipykernel-7.1.0-py3-none-any.whl", hash = "sha256:763b5ec6c5b7776f6a8d7ce09b267693b4e5ce75cb50ae696aaefb3c85e1ea4c"},
+ {file = "ipykernel-7.1.0.tar.gz", hash = "sha256:58a3fc88533d5930c3546dc7eac66c6d288acde4f801e2001e65edc5dc9cf0db"},
+]
+
+[package.dependencies]
+appnope = {version = ">=0.1.2", markers = "platform_system == \"Darwin\""}
+comm = ">=0.1.1"
+debugpy = ">=1.6.5"
+ipython = ">=7.23.1"
+jupyter-client = ">=8.0.0"
+jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0"
+matplotlib-inline = ">=0.1"
+nest-asyncio = ">=1.4"
+packaging = ">=22"
+psutil = ">=5.7"
+pyzmq = ">=25"
+tornado = ">=6.2"
+traitlets = ">=5.4.0"
+
+[package.extras]
+cov = ["coverage[toml]", "matplotlib", "pytest-cov", "trio"]
+docs = ["intersphinx-registry", "myst-parser", "pydata-sphinx-theme", "sphinx (<8.2.0)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "trio"]
+pyqt5 = ["pyqt5"]
+pyside6 = ["pyside6"]
+test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0,<9)", "pytest-asyncio (>=0.23.5)", "pytest-cov", "pytest-timeout"]
+
+[[package]]
+name = "ipython"
+version = "9.9.0"
+description = "IPython: Productive Interactive Computing"
+optional = false
+python-versions = ">=3.11"
+groups = ["main"]
+files = [
+ {file = "ipython-9.9.0-py3-none-any.whl", hash = "sha256:b457fe9165df2b84e8ec909a97abcf2ed88f565970efba16b1f7229c283d252b"},
+ {file = "ipython-9.9.0.tar.gz", hash = "sha256:48fbed1b2de5e2c7177eefa144aba7fcb82dac514f09b57e2ac9da34ddb54220"},
+]
+
+[package.dependencies]
+colorama = {version = ">=0.4.4", markers = "sys_platform == \"win32\""}
+decorator = ">=4.3.2"
+ipython-pygments-lexers = ">=1.0.0"
+jedi = ">=0.18.1"
+matplotlib-inline = ">=0.1.5"
+pexpect = {version = ">4.3", markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\""}
+prompt_toolkit = ">=3.0.41,<3.1.0"
+pygments = ">=2.11.0"
+stack_data = ">=0.6.0"
+traitlets = ">=5.13.0"
+typing_extensions = {version = ">=4.6", markers = "python_version < \"3.12\""}
+
+[package.extras]
+all = ["argcomplete (>=3.0)", "ipython[doc,matplotlib,terminal,test,test-extra]"]
+black = ["black"]
+doc = ["docrepr", "exceptiongroup", "intersphinx_registry", "ipykernel", "ipython[matplotlib,test]", "setuptools (>=70.0)", "sphinx (>=8.0)", "sphinx-rtd-theme (>=0.1.8)", "sphinx_toml (==0.0.4)", "typing_extensions"]
+matplotlib = ["matplotlib (>3.9)"]
+test = ["packaging (>=20.1.0)", "pytest (>=7.0.0)", "pytest-asyncio (>=1.0.0)", "setuptools (>=61.2)", "testpath (>=0.2)"]
+test-extra = ["curio", "ipykernel (>6.30)", "ipython[matplotlib]", "ipython[test]", "jupyter_ai", "nbclient", "nbformat", "numpy (>=1.27)", "pandas (>2.1)", "trio (>=0.1.0)"]
+
+[[package]]
+name = "ipython-pygments-lexers"
+version = "1.1.1"
+description = "Defines a variety of Pygments lexers for highlighting IPython code."
+optional = false
+python-versions = ">=3.8"
+groups = ["main"]
+files = [
+ {file = "ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c"},
+ {file = "ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81"},
+]
+
+[package.dependencies]
+pygments = "*"
+
+[[package]]
+name = "ipywidgets"
+version = "8.1.8"
+description = "Jupyter interactive widgets"
+optional = false
+python-versions = ">=3.7"
+groups = ["main"]
+files = [
+ {file = "ipywidgets-8.1.8-py3-none-any.whl", hash = "sha256:ecaca67aed704a338f88f67b1181b58f821ab5dc89c1f0f5ef99db43c1c2921e"},
+ {file = "ipywidgets-8.1.8.tar.gz", hash = "sha256:61f969306b95f85fba6b6986b7fe45d73124d1d9e3023a8068710d47a22ea668"},
+]
+
+[package.dependencies]
+comm = ">=0.1.3"
+ipython = ">=6.1.0"
+jupyterlab_widgets = ">=3.0.15,<3.1.0"
+traitlets = ">=4.3.1"
+widgetsnbextension = ">=4.0.14,<4.1.0"
+
+[package.extras]
+test = ["ipykernel", "jsonschema", "pytest (>=3.6.0)", "pytest-cov", "pytz"]
+
+[[package]]
+name = "isoduration"
+version = "20.11.0"
+description = "Operations with ISO 8601 durations"
+optional = false
+python-versions = ">=3.7"
+groups = ["main"]
+files = [
+ {file = "isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042"},
+ {file = "isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9"},
+]
+
+[package.dependencies]
+arrow = ">=0.15.0"
+
+[[package]]
+name = "jedi"
+version = "0.19.2"
+description = "An autocompletion tool for Python that can be used for text editors."
+optional = false
+python-versions = ">=3.6"
+groups = ["main"]
+files = [
+ {file = "jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9"},
+ {file = "jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0"},
+]
+
+[package.dependencies]
+parso = ">=0.8.4,<0.9.0"
+
+[package.extras]
+docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alabaster (==0.7.12)", "babel (==2.9.1)", "chardet (==4.0.0)", "commonmark (==0.8.1)", "docutils (==0.17.1)", "future (==0.18.2)", "idna (==2.10)", "imagesize (==1.2.0)", "mock (==1.0.1)", "packaging (==20.9)", "pyparsing (==2.4.7)", "pytz (==2021.1)", "readthedocs-sphinx-ext (==2.1.4)", "recommonmark (==0.5.0)", "requests (==2.25.1)", "six (==1.15.0)", "snowballstemmer (==2.1.0)", "sphinx (==1.8.5)", "sphinx-rtd-theme (==0.4.3)", "sphinxcontrib-serializinghtml (==1.1.4)", "sphinxcontrib-websupport (==1.2.4)", "urllib3 (==1.26.4)"]
+qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"]
+testing = ["Django", "attrs", "colorama", "docopt", "pytest (<9.0.0)"]
+
+[[package]]
+name = "jinja2"
+version = "3.1.6"
+description = "A very fast and expressive template engine."
+optional = false
+python-versions = ">=3.7"
+groups = ["main"]
+files = [
+ {file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"},
+ {file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"},
+]
+
+[package.dependencies]
+MarkupSafe = ">=2.0"
+
+[package.extras]
+i18n = ["Babel (>=2.7)"]
+
+[[package]]
+name = "joblib"
+version = "1.5.3"
+description = "Lightweight pipelining with Python functions"
+optional = false
+python-versions = ">=3.9"
+groups = ["main"]
+files = [
+ {file = "joblib-1.5.3-py3-none-any.whl", hash = "sha256:5fc3c5039fc5ca8c0276333a188bbd59d6b7ab37fe6632daa76bc7f9ec18e713"},
+ {file = "joblib-1.5.3.tar.gz", hash = "sha256:8561a3269e6801106863fd0d6d84bb737be9e7631e33aaed3fb9ce5953688da3"},
+]
+
+[[package]]
+name = "json5"
+version = "0.13.0"
+description = "A Python implementation of the JSON5 data format."
+optional = false
+python-versions = ">=3.8.0"
+groups = ["main"]
+files = [
+ {file = "json5-0.13.0-py3-none-any.whl", hash = "sha256:9a08e1dd65f6a4d4c6fa82d216cf2477349ec2346a38fd70cc11d2557499fbcc"},
+ {file = "json5-0.13.0.tar.gz", hash = "sha256:b1edf8d487721c0bf64d83c28e91280781f6e21f4a797d3261c7c828d4c165bf"},
+]
+
+[[package]]
+name = "jsonpointer"
+version = "3.0.0"
+description = "Identify specific nodes in a JSON document (RFC 6901)"
+optional = false
+python-versions = ">=3.7"
+groups = ["main"]
+files = [
+ {file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942"},
+ {file = "jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"},
+]
+
+[[package]]
+name = "jsonschema"
+version = "4.26.0"
+description = "An implementation of JSON Schema validation for Python"
+optional = false
+python-versions = ">=3.10"
+groups = ["main"]
+files = [
+ {file = "jsonschema-4.26.0-py3-none-any.whl", hash = "sha256:d489f15263b8d200f8387e64b4c3a75f06629559fb73deb8fdfb525f2dab50ce"},
+ {file = "jsonschema-4.26.0.tar.gz", hash = "sha256:0c26707e2efad8aa1bfc5b7ce170f3fccc2e4918ff85989ba9ffa9facb2be326"},
+]
+
+[package.dependencies]
+attrs = ">=22.2.0"
+fqdn = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+idna = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+isoduration = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+jsonpointer = {version = ">1.13", optional = true, markers = "extra == \"format-nongpl\""}
+jsonschema-specifications = ">=2023.03.6"
+referencing = ">=0.28.4"
+rfc3339-validator = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+rfc3986-validator = {version = ">0.1.0", optional = true, markers = "extra == \"format-nongpl\""}
+rfc3987-syntax = {version = ">=1.1.0", optional = true, markers = "extra == \"format-nongpl\""}
+rpds-py = ">=0.25.0"
+uri-template = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+webcolors = {version = ">=24.6.0", optional = true, markers = "extra == \"format-nongpl\""}
+
+[package.extras]
+format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"]
+format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "rfc3987-syntax (>=1.1.0)", "uri-template", "webcolors (>=24.6.0)"]
+
+[[package]]
+name = "jsonschema-specifications"
+version = "2025.9.1"
+description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry"
+optional = false
+python-versions = ">=3.9"
+groups = ["main"]
+files = [
+ {file = "jsonschema_specifications-2025.9.1-py3-none-any.whl", hash = "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe"},
+ {file = "jsonschema_specifications-2025.9.1.tar.gz", hash = "sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d"},
+]
+
+[package.dependencies]
+referencing = ">=0.31.0"
+
+[[package]]
+name = "jupyter"
+version = "1.1.1"
+description = "Jupyter metapackage. Install all the Jupyter components in one go."
+optional = false
+python-versions = "*"
+groups = ["main"]
+files = [
+ {file = "jupyter-1.1.1-py2.py3-none-any.whl", hash = "sha256:7a59533c22af65439b24bbe60373a4e95af8f16ac65a6c00820ad378e3f7cc83"},
+ {file = "jupyter-1.1.1.tar.gz", hash = "sha256:d55467bceabdea49d7e3624af7e33d59c37fff53ed3a350e1ac957bed731de7a"},
+]
+
+[package.dependencies]
+ipykernel = "*"
+ipywidgets = "*"
+jupyter-console = "*"
+jupyterlab = "*"
+nbconvert = "*"
+notebook = "*"
+
+[[package]]
+name = "jupyter-client"
+version = "8.8.0"
+description = "Jupyter protocol implementation and client libraries"
+optional = false
+python-versions = ">=3.10"
+groups = ["main"]
+files = [
+ {file = "jupyter_client-8.8.0-py3-none-any.whl", hash = "sha256:f93a5b99c5e23a507b773d3a1136bd6e16c67883ccdbd9a829b0bbdb98cd7d7a"},
+ {file = "jupyter_client-8.8.0.tar.gz", hash = "sha256:d556811419a4f2d96c869af34e854e3f059b7cc2d6d01a9cd9c85c267691be3e"},
+]
+
+[package.dependencies]
+jupyter-core = ">=5.1"
+python-dateutil = ">=2.8.2"
+pyzmq = ">=25.0"
+tornado = ">=6.4.1"
+traitlets = ">=5.3"
+
+[package.extras]
+docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"]
+orjson = ["orjson"]
+test = ["anyio", "coverage", "ipykernel (>=6.14)", "msgpack", "mypy ; platform_python_implementation != \"PyPy\"", "paramiko ; sys_platform == \"win32\"", "pre-commit", "pytest", "pytest-cov", "pytest-jupyter[client] (>=0.6.2)", "pytest-timeout"]
+
+[[package]]
+name = "jupyter-console"
+version = "6.6.3"
+description = "Jupyter terminal console"
+optional = false
+python-versions = ">=3.7"
+groups = ["main"]
+files = [
+ {file = "jupyter_console-6.6.3-py3-none-any.whl", hash = "sha256:309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485"},
+ {file = "jupyter_console-6.6.3.tar.gz", hash = "sha256:566a4bf31c87adbfadf22cdf846e3069b59a71ed5da71d6ba4d8aaad14a53539"},
+]
+
+[package.dependencies]
+ipykernel = ">=6.14"
+ipython = "*"
+jupyter-client = ">=7.0.0"
+jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0"
+prompt-toolkit = ">=3.0.30"
+pygments = "*"
+pyzmq = ">=17"
+traitlets = ">=5.4"
+
+[package.extras]
+test = ["flaky", "pexpect", "pytest"]
+
+[[package]]
+name = "jupyter-core"
+version = "5.9.1"
+description = "Jupyter core package. A base package on which Jupyter projects rely."
+optional = false
+python-versions = ">=3.10"
+groups = ["main"]
+files = [
+ {file = "jupyter_core-5.9.1-py3-none-any.whl", hash = "sha256:ebf87fdc6073d142e114c72c9e29a9d7ca03fad818c5d300ce2adc1fb0743407"},
+ {file = "jupyter_core-5.9.1.tar.gz", hash = "sha256:4d09aaff303b9566c3ce657f580bd089ff5c91f5f89cf7d8846c3cdf465b5508"},
+]
+
+[package.dependencies]
+platformdirs = ">=2.5"
+traitlets = ">=5.3"
+
+[package.extras]
+docs = ["intersphinx-registry", "myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphinxcontrib-spelling", "traitlets"]
+test = ["ipykernel", "pre-commit", "pytest (<9)", "pytest-cov", "pytest-timeout"]
+
+[[package]]
+name = "jupyter-events"
+version = "0.12.0"
+description = "Jupyter Event System library"
+optional = false
+python-versions = ">=3.9"
+groups = ["main"]
+files = [
+ {file = "jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb"},
+ {file = "jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b"},
+]
+
+[package.dependencies]
+jsonschema = {version = ">=4.18.0", extras = ["format-nongpl"]}
+packaging = "*"
+python-json-logger = ">=2.0.4"
+pyyaml = ">=5.3"
+referencing = "*"
+rfc3339-validator = "*"
+rfc3986-validator = ">=0.1.1"
+traitlets = ">=5.3"
+
+[package.extras]
+cli = ["click", "rich"]
+docs = ["jupyterlite-sphinx", "myst-parser", "pydata-sphinx-theme (>=0.16)", "sphinx (>=8)", "sphinxcontrib-spelling"]
+test = ["click", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "pytest-console-scripts", "rich"]
+
+[[package]]
+name = "jupyter-lsp"
+version = "2.3.0"
+description = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server"
+optional = false
+python-versions = ">=3.8"
+groups = ["main"]
+files = [
+ {file = "jupyter_lsp-2.3.0-py3-none-any.whl", hash = "sha256:e914a3cb2addf48b1c7710914771aaf1819d46b2e5a79b0f917b5478ec93f34f"},
+ {file = "jupyter_lsp-2.3.0.tar.gz", hash = "sha256:458aa59339dc868fb784d73364f17dbce8836e906cd75fd471a325cba02e0245"},
+]
+
+[package.dependencies]
+jupyter_server = ">=1.1.2"
+
+[[package]]
+name = "jupyter-server"
+version = "2.17.0"
+description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications."
+optional = false
+python-versions = ">=3.9"
+groups = ["main"]
+files = [
+ {file = "jupyter_server-2.17.0-py3-none-any.whl", hash = "sha256:e8cb9c7db4251f51ed307e329b81b72ccf2056ff82d50524debde1ee1870e13f"},
+ {file = "jupyter_server-2.17.0.tar.gz", hash = "sha256:c38ea898566964c888b4772ae1ed58eca84592e88251d2cfc4d171f81f7e99d5"},
+]
+
+[package.dependencies]
+anyio = ">=3.1.0"
+argon2-cffi = ">=21.1"
+jinja2 = ">=3.0.3"
+jupyter-client = ">=7.4.4"
+jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0"
+jupyter-events = ">=0.11.0"
+jupyter-server-terminals = ">=0.4.4"
+nbconvert = ">=6.4.4"
+nbformat = ">=5.3.0"
+overrides = {version = ">=5.0", markers = "python_version < \"3.12\""}
+packaging = ">=22.0"
+prometheus-client = ">=0.9"
+pywinpty = {version = ">=2.0.1", markers = "os_name == \"nt\""}
+pyzmq = ">=24"
+send2trash = ">=1.8.2"
+terminado = ">=0.8.3"
+tornado = ">=6.2.0"
+traitlets = ">=5.6.0"
+websocket-client = ">=1.7"
+
+[package.extras]
+docs = ["ipykernel", "jinja2", "jupyter-client", "myst-parser", "nbformat", "prometheus-client", "pydata-sphinx-theme", "send2trash", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-openapi (>=0.8.0)", "sphinxcontrib-spelling", "sphinxemoji", "tornado", "typing-extensions"]
+test = ["flaky", "ipykernel", "pre-commit", "pytest (>=7.0,<9)", "pytest-console-scripts", "pytest-jupyter[server] (>=0.7)", "pytest-timeout", "requests"]
+
+[[package]]
+name = "jupyter-server-terminals"
+version = "0.5.3"
+description = "A Jupyter Server Extension Providing Terminals."
+optional = false
+python-versions = ">=3.8"
+groups = ["main"]
+files = [
+ {file = "jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa"},
+ {file = "jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269"},
+]
+
+[package.dependencies]
+pywinpty = {version = ">=2.0.3", markers = "os_name == \"nt\""}
+terminado = ">=0.8.3"
+
+[package.extras]
+docs = ["jinja2", "jupyter-server", "mistune (<4.0)", "myst-parser", "nbformat", "packaging", "pydata-sphinx-theme", "sphinxcontrib-github-alt", "sphinxcontrib-openapi", "sphinxcontrib-spelling", "sphinxemoji", "tornado"]
+test = ["jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-jupyter[server] (>=0.5.3)", "pytest-timeout"]
+
+[[package]]
+name = "jupyterlab"
+version = "4.5.1"
+description = "JupyterLab computational environment"
+optional = false
+python-versions = ">=3.9"
+groups = ["main"]
+files = [
+ {file = "jupyterlab-4.5.1-py3-none-any.whl", hash = "sha256:31b059de96de0754ff1f2ce6279774b6aab8c34d7082e9752db58207c99bd514"},
+ {file = "jupyterlab-4.5.1.tar.gz", hash = "sha256:09da1ddfbd9eec18b5101dbb8515612aa1e47443321fb99503725a88e93d20d9"},
+]
+
+[package.dependencies]
+async-lru = ">=1.0.0"
+httpx = ">=0.25.0,<1"
+ipykernel = ">=6.5.0,<6.30.0 || >6.30.0"
+jinja2 = ">=3.0.3"
+jupyter-core = "*"
+jupyter-lsp = ">=2.0.0"
+jupyter-server = ">=2.4.0,<3"
+jupyterlab-server = ">=2.28.0,<3"
+notebook-shim = ">=0.2"
+packaging = "*"
+setuptools = ">=41.1.0"
+tornado = ">=6.2.0"
+traitlets = "*"
+
+[package.extras]
+dev = ["build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.11.12)"]
+docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-jupyter", "sphinx (>=1.8,<8.2.0)", "sphinx-copybutton"]
+docs-screenshots = ["altair (==6.0.0)", "ipython (==8.16.1)", "ipywidgets (==8.1.5)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.3.post1)", "matplotlib (==3.10.0)", "nbconvert (>=7.0.0)", "pandas (==2.2.3)", "scipy (==1.15.1)"]
+test = ["coverage", "pytest (>=7.0)", "pytest-check-links (>=0.7)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter (>=0.5.3)", "pytest-timeout", "pytest-tornasync", "requests", "requests-cache", "virtualenv"]
+upgrade-extension = ["copier (>=9,<10)", "jinja2-time (<0.3)", "pydantic (<3.0)", "pyyaml-include (<3.0)", "tomli-w (<2.0)"]
+
+[[package]]
+name = "jupyterlab-pygments"
+version = "0.3.0"
+description = "Pygments theme using JupyterLab CSS variables"
+optional = false
+python-versions = ">=3.8"
+groups = ["main"]
+files = [
+ {file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780"},
+ {file = "jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d"},
+]
+
+[[package]]
+name = "jupyterlab-server"
+version = "2.28.0"
+description = "A set of server components for JupyterLab and JupyterLab like applications."
+optional = false
+python-versions = ">=3.8"
+groups = ["main"]
+files = [
+ {file = "jupyterlab_server-2.28.0-py3-none-any.whl", hash = "sha256:e4355b148fdcf34d312bbbc80f22467d6d20460e8b8736bf235577dd18506968"},
+ {file = "jupyterlab_server-2.28.0.tar.gz", hash = "sha256:35baa81898b15f93573e2deca50d11ac0ae407ebb688299d3a5213265033712c"},
+]
+
+[package.dependencies]
+babel = ">=2.10"
+jinja2 = ">=3.0.3"
+json5 = ">=0.9.0"
+jsonschema = ">=4.18.0"
+jupyter-server = ">=1.21,<3"
+packaging = ">=21.3"
+requests = ">=2.31"
+
+[package.extras]
+docs = ["autodoc-traits", "jinja2 (<3.2.0)", "mistune (<4)", "myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-copybutton", "sphinxcontrib-openapi (>0.8)"]
+openapi = ["openapi-core (>=0.18.0,<0.19.0)", "ruamel-yaml"]
+test = ["hatch", "ipykernel", "openapi-core (>=0.18.0,<0.19.0)", "openapi-spec-validator (>=0.6.0,<0.8.0)", "pytest (>=7.0,<8)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter[server] (>=0.6.2)", "pytest-timeout", "requests-mock", "ruamel-yaml", "sphinxcontrib-spelling", "strict-rfc3339", "werkzeug"]
+
+[[package]]
+name = "jupyterlab-widgets"
+version = "3.0.16"
+description = "Jupyter interactive widgets for JupyterLab"
+optional = false
+python-versions = ">=3.7"
+groups = ["main"]
+files = [
+ {file = "jupyterlab_widgets-3.0.16-py3-none-any.whl", hash = "sha256:45fa36d9c6422cf2559198e4db481aa243c7a32d9926b500781c830c80f7ecf8"},
+ {file = "jupyterlab_widgets-3.0.16.tar.gz", hash = "sha256:423da05071d55cf27a9e602216d35a3a65a3e41cdf9c5d3b643b814ce38c19e0"},
+]
+
+[[package]]
+name = "kiwisolver"
+version = "1.4.9"
+description = "A fast implementation of the Cassowary constraint solver"
+optional = false
+python-versions = ">=3.10"
+groups = ["main"]
+files = [
+ {file = "kiwisolver-1.4.9-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b4b4d74bda2b8ebf4da5bd42af11d02d04428b2c32846e4c2c93219df8a7987b"},
+ {file = "kiwisolver-1.4.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:fb3b8132019ea572f4611d770991000d7f58127560c4889729248eb5852a102f"},
+ {file = "kiwisolver-1.4.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:84fd60810829c27ae375114cd379da1fa65e6918e1da405f356a775d49a62bcf"},
+ {file = "kiwisolver-1.4.9-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b78efa4c6e804ecdf727e580dbb9cba85624d2e1c6b5cb059c66290063bd99a9"},
+ {file = "kiwisolver-1.4.9-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d4efec7bcf21671db6a3294ff301d2fc861c31faa3c8740d1a94689234d1b415"},
+ {file = "kiwisolver-1.4.9-cp310-cp310-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:90f47e70293fc3688b71271100a1a5453aa9944a81d27ff779c108372cf5567b"},
+ {file = "kiwisolver-1.4.9-cp310-cp310-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8fdca1def57a2e88ef339de1737a1449d6dbf5fab184c54a1fca01d541317154"},
+ {file = "kiwisolver-1.4.9-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:9cf554f21be770f5111a1690d42313e140355e687e05cf82cb23d0a721a64a48"},
+ {file = "kiwisolver-1.4.9-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fc1795ac5cd0510207482c3d1d3ed781143383b8cfd36f5c645f3897ce066220"},
+ {file = "kiwisolver-1.4.9-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:ccd09f20ccdbbd341b21a67ab50a119b64a403b09288c27481575105283c1586"},
+ {file = "kiwisolver-1.4.9-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:540c7c72324d864406a009d72f5d6856f49693db95d1fbb46cf86febef873634"},
+ {file = "kiwisolver-1.4.9-cp310-cp310-win_amd64.whl", hash = "sha256:ede8c6d533bc6601a47ad4046080d36b8fc99f81e6f1c17b0ac3c2dc91ac7611"},
+ {file = "kiwisolver-1.4.9-cp310-cp310-win_arm64.whl", hash = "sha256:7b4da0d01ac866a57dd61ac258c5607b4cd677f63abaec7b148354d2b2cdd536"},
+ {file = "kiwisolver-1.4.9-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:eb14a5da6dc7642b0f3a18f13654847cd8b7a2550e2645a5bda677862b03ba16"},
+ {file = "kiwisolver-1.4.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:39a219e1c81ae3b103643d2aedb90f1ef22650deb266ff12a19e7773f3e5f089"},
+ {file = "kiwisolver-1.4.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2405a7d98604b87f3fc28b1716783534b1b4b8510d8142adca34ee0bc3c87543"},
+ {file = "kiwisolver-1.4.9-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:dc1ae486f9abcef254b5618dfb4113dd49f94c68e3e027d03cf0143f3f772b61"},
+ {file = "kiwisolver-1.4.9-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8a1f570ce4d62d718dce3f179ee78dac3b545ac16c0c04bb363b7607a949c0d1"},
+ {file = "kiwisolver-1.4.9-cp311-cp311-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:cb27e7b78d716c591e88e0a09a2139c6577865d7f2e152488c2cc6257f460872"},
+ {file = "kiwisolver-1.4.9-cp311-cp311-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:15163165efc2f627eb9687ea5f3a28137217d217ac4024893d753f46bce9de26"},
+ {file = "kiwisolver-1.4.9-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bdee92c56a71d2b24c33a7d4c2856bd6419d017e08caa7802d2963870e315028"},
+ {file = "kiwisolver-1.4.9-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:412f287c55a6f54b0650bd9b6dce5aceddb95864a1a90c87af16979d37c89771"},
+ {file = "kiwisolver-1.4.9-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:2c93f00dcba2eea70af2be5f11a830a742fe6b579a1d4e00f47760ef13be247a"},
+ {file = "kiwisolver-1.4.9-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f117e1a089d9411663a3207ba874f31be9ac8eaa5b533787024dc07aeb74f464"},
+ {file = "kiwisolver-1.4.9-cp311-cp311-win_amd64.whl", hash = "sha256:be6a04e6c79819c9a8c2373317d19a96048e5a3f90bec587787e86a1153883c2"},
+ {file = "kiwisolver-1.4.9-cp311-cp311-win_arm64.whl", hash = "sha256:0ae37737256ba2de764ddc12aed4956460277f00c4996d51a197e72f62f5eec7"},
+ {file = "kiwisolver-1.4.9-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:ac5a486ac389dddcc5bef4f365b6ae3ffff2c433324fb38dd35e3fab7c957999"},
+ {file = "kiwisolver-1.4.9-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f2ba92255faa7309d06fe44c3a4a97efe1c8d640c2a79a5ef728b685762a6fd2"},
+ {file = "kiwisolver-1.4.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a2899935e724dd1074cb568ce7ac0dce28b2cd6ab539c8e001a8578eb106d14"},
+ {file = "kiwisolver-1.4.9-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f6008a4919fdbc0b0097089f67a1eb55d950ed7e90ce2cc3e640abadd2757a04"},
+ {file = "kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:67bb8b474b4181770f926f7b7d2f8c0248cbcb78b660fdd41a47054b28d2a752"},
+ {file = "kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2327a4a30d3ee07d2fbe2e7933e8a37c591663b96ce42a00bc67461a87d7df77"},
+ {file = "kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7a08b491ec91b1d5053ac177afe5290adacf1f0f6307d771ccac5de30592d198"},
+ {file = "kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d8fc5c867c22b828001b6a38d2eaeb88160bf5783c6cb4a5e440efc981ce286d"},
+ {file = "kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:3b3115b2581ea35bb6d1f24a4c90af37e5d9b49dcff267eeed14c3893c5b86ab"},
+ {file = "kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:858e4c22fb075920b96a291928cb7dea5644e94c0ee4fcd5af7e865655e4ccf2"},
+ {file = "kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ed0fecd28cc62c54b262e3736f8bb2512d8dcfdc2bcf08be5f47f96bf405b145"},
+ {file = "kiwisolver-1.4.9-cp312-cp312-win_amd64.whl", hash = "sha256:f68208a520c3d86ea51acf688a3e3002615a7f0238002cccc17affecc86a8a54"},
+ {file = "kiwisolver-1.4.9-cp312-cp312-win_arm64.whl", hash = "sha256:2c1a4f57df73965f3f14df20b80ee29e6a7930a57d2d9e8491a25f676e197c60"},
+ {file = "kiwisolver-1.4.9-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a5d0432ccf1c7ab14f9949eec60c5d1f924f17c037e9f8b33352fa05799359b8"},
+ {file = "kiwisolver-1.4.9-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efb3a45b35622bb6c16dbfab491a8f5a391fe0e9d45ef32f4df85658232ca0e2"},
+ {file = "kiwisolver-1.4.9-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1a12cf6398e8a0a001a059747a1cbf24705e18fe413bc22de7b3d15c67cffe3f"},
+ {file = "kiwisolver-1.4.9-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b67e6efbf68e077dd71d1a6b37e43e1a99d0bff1a3d51867d45ee8908b931098"},
+ {file = "kiwisolver-1.4.9-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5656aa670507437af0207645273ccdfee4f14bacd7f7c67a4306d0dcaeaf6eed"},
+ {file = "kiwisolver-1.4.9-cp313-cp313-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:bfc08add558155345129c7803b3671cf195e6a56e7a12f3dde7c57d9b417f525"},
+ {file = "kiwisolver-1.4.9-cp313-cp313-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:40092754720b174e6ccf9e845d0d8c7d8e12c3d71e7fc35f55f3813e96376f78"},
+ {file = "kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:497d05f29a1300d14e02e6441cf0f5ee81c1ff5a304b0d9fb77423974684e08b"},
+ {file = "kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:bdd1a81a1860476eb41ac4bc1e07b3f07259e6d55bbf739b79c8aaedcf512799"},
+ {file = "kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:e6b93f13371d341afee3be9f7c5964e3fe61d5fa30f6a30eb49856935dfe4fc3"},
+ {file = "kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d75aa530ccfaa593da12834b86a0724f58bff12706659baa9227c2ccaa06264c"},
+ {file = "kiwisolver-1.4.9-cp313-cp313-win_amd64.whl", hash = "sha256:dd0a578400839256df88c16abddf9ba14813ec5f21362e1fe65022e00c883d4d"},
+ {file = "kiwisolver-1.4.9-cp313-cp313-win_arm64.whl", hash = "sha256:d4188e73af84ca82468f09cadc5ac4db578109e52acb4518d8154698d3a87ca2"},
+ {file = "kiwisolver-1.4.9-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:5a0f2724dfd4e3b3ac5a82436a8e6fd16baa7d507117e4279b660fe8ca38a3a1"},
+ {file = "kiwisolver-1.4.9-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:1b11d6a633e4ed84fc0ddafd4ebfd8ea49b3f25082c04ad12b8315c11d504dc1"},
+ {file = "kiwisolver-1.4.9-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61874cdb0a36016354853593cffc38e56fc9ca5aa97d2c05d3dcf6922cd55a11"},
+ {file = "kiwisolver-1.4.9-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:60c439763a969a6af93b4881db0eed8fadf93ee98e18cbc35bc8da868d0c4f0c"},
+ {file = "kiwisolver-1.4.9-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:92a2f997387a1b79a75e7803aa7ded2cfbe2823852ccf1ba3bcf613b62ae3197"},
+ {file = "kiwisolver-1.4.9-cp313-cp313t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a31d512c812daea6d8b3be3b2bfcbeb091dbb09177706569bcfc6240dcf8b41c"},
+ {file = "kiwisolver-1.4.9-cp313-cp313t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:52a15b0f35dad39862d376df10c5230155243a2c1a436e39eb55623ccbd68185"},
+ {file = "kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a30fd6fdef1430fd9e1ba7b3398b5ee4e2887783917a687d86ba69985fb08748"},
+ {file = "kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:cc9617b46837c6468197b5945e196ee9ca43057bb7d9d1ae688101e4e1dddf64"},
+ {file = "kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:0ab74e19f6a2b027ea4f845a78827969af45ce790e6cb3e1ebab71bdf9f215ff"},
+ {file = "kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dba5ee5d3981160c28d5490f0d1b7ed730c22470ff7f6cc26cfcfaacb9896a07"},
+ {file = "kiwisolver-1.4.9-cp313-cp313t-win_arm64.whl", hash = "sha256:0749fd8f4218ad2e851e11cc4dc05c7cbc0cbc4267bdfdb31782e65aace4ee9c"},
+ {file = "kiwisolver-1.4.9-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:9928fe1eb816d11ae170885a74d074f57af3a0d65777ca47e9aeb854a1fba386"},
+ {file = "kiwisolver-1.4.9-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:d0005b053977e7b43388ddec89fa567f43d4f6d5c2c0affe57de5ebf290dc552"},
+ {file = "kiwisolver-1.4.9-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:2635d352d67458b66fd0667c14cb1d4145e9560d503219034a18a87e971ce4f3"},
+ {file = "kiwisolver-1.4.9-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:767c23ad1c58c9e827b649a9ab7809fd5fd9db266a9cf02b0e926ddc2c680d58"},
+ {file = "kiwisolver-1.4.9-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:72d0eb9fba308b8311685c2268cf7d0a0639a6cd027d8128659f72bdd8a024b4"},
+ {file = "kiwisolver-1.4.9-cp314-cp314-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f68e4f3eeca8fb22cc3d731f9715a13b652795ef657a13df1ad0c7dc0e9731df"},
+ {file = "kiwisolver-1.4.9-cp314-cp314-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d84cd4061ae292d8ac367b2c3fa3aad11cb8625a95d135fe93f286f914f3f5a6"},
+ {file = "kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:a60ea74330b91bd22a29638940d115df9dc00af5035a9a2a6ad9399ffb4ceca5"},
+ {file = "kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:ce6a3a4e106cf35c2d9c4fa17c05ce0b180db622736845d4315519397a77beaf"},
+ {file = "kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:77937e5e2a38a7b48eef0585114fe7930346993a88060d0bf886086d2aa49ef5"},
+ {file = "kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:24c175051354f4a28c5d6a31c93906dc653e2bf234e8a4bbfb964892078898ce"},
+ {file = "kiwisolver-1.4.9-cp314-cp314-win_amd64.whl", hash = "sha256:0763515d4df10edf6d06a3c19734e2566368980d21ebec439f33f9eb936c07b7"},
+ {file = "kiwisolver-1.4.9-cp314-cp314-win_arm64.whl", hash = "sha256:0e4e2bf29574a6a7b7f6cb5fa69293b9f96c928949ac4a53ba3f525dffb87f9c"},
+ {file = "kiwisolver-1.4.9-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:d976bbb382b202f71c67f77b0ac11244021cfa3f7dfd9e562eefcea2df711548"},
+ {file = "kiwisolver-1.4.9-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:2489e4e5d7ef9a1c300a5e0196e43d9c739f066ef23270607d45aba368b91f2d"},
+ {file = "kiwisolver-1.4.9-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:e2ea9f7ab7fbf18fffb1b5434ce7c69a07582f7acc7717720f1d69f3e806f90c"},
+ {file = "kiwisolver-1.4.9-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b34e51affded8faee0dfdb705416153819d8ea9250bbbf7ea1b249bdeb5f1122"},
+ {file = "kiwisolver-1.4.9-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d8aacd3d4b33b772542b2e01beb50187536967b514b00003bdda7589722d2a64"},
+ {file = "kiwisolver-1.4.9-cp314-cp314t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7cf974dd4e35fa315563ac99d6287a1024e4dc2077b8a7d7cd3d2fb65d283134"},
+ {file = "kiwisolver-1.4.9-cp314-cp314t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:85bd218b5ecfbee8c8a82e121802dcb519a86044c9c3b2e4aef02fa05c6da370"},
+ {file = "kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:0856e241c2d3df4efef7c04a1e46b1936b6120c9bcf36dd216e3acd84bc4fb21"},
+ {file = "kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:9af39d6551f97d31a4deebeac6f45b156f9755ddc59c07b402c148f5dbb6482a"},
+ {file = "kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:bb4ae2b57fc1d8cbd1cf7b1d9913803681ffa903e7488012be5b76dedf49297f"},
+ {file = "kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:aedff62918805fb62d43a4aa2ecd4482c380dc76cd31bd7c8878588a61bd0369"},
+ {file = "kiwisolver-1.4.9-cp314-cp314t-win_amd64.whl", hash = "sha256:1fa333e8b2ce4d9660f2cda9c0e1b6bafcfb2457a9d259faa82289e73ec24891"},
+ {file = "kiwisolver-1.4.9-cp314-cp314t-win_arm64.whl", hash = "sha256:4a48a2ce79d65d363597ef7b567ce3d14d68783d2b2263d98db3d9477805ba32"},
+ {file = "kiwisolver-1.4.9-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:4d1d9e582ad4d63062d34077a9a1e9f3c34088a2ec5135b1f7190c07cf366527"},
+ {file = "kiwisolver-1.4.9-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:deed0c7258ceb4c44ad5ec7d9918f9f14fd05b2be86378d86cf50e63d1e7b771"},
+ {file = "kiwisolver-1.4.9-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0a590506f303f512dff6b7f75fd2fd18e16943efee932008fe7140e5fa91d80e"},
+ {file = "kiwisolver-1.4.9-pp310-pypy310_pp73-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e09c2279a4d01f099f52d5c4b3d9e208e91edcbd1a175c9662a8b16e000fece9"},
+ {file = "kiwisolver-1.4.9-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c9e7cdf45d594ee04d5be1b24dd9d49f3d1590959b2271fb30b5ca2b262c00fb"},
+ {file = "kiwisolver-1.4.9-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:720e05574713db64c356e86732c0f3c5252818d05f9df320f0ad8380641acea5"},
+ {file = "kiwisolver-1.4.9-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:17680d737d5335b552994a2008fab4c851bcd7de33094a82067ef3a576ff02fa"},
+ {file = "kiwisolver-1.4.9-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:85b5352f94e490c028926ea567fc569c52ec79ce131dadb968d3853e809518c2"},
+ {file = "kiwisolver-1.4.9-pp311-pypy311_pp73-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:464415881e4801295659462c49461a24fb107c140de781d55518c4b80cb6790f"},
+ {file = "kiwisolver-1.4.9-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:fb940820c63a9590d31d88b815e7a3aa5915cad3ce735ab45f0c730b39547de1"},
+ {file = "kiwisolver-1.4.9.tar.gz", hash = "sha256:c3b22c26c6fd6811b0ae8363b95ca8ce4ea3c202d3d0975b2914310ceb1bcc4d"},
+]
+
+[[package]]
+name = "lark"
+version = "1.3.1"
+description = "a modern parsing library"
+optional = false
+python-versions = ">=3.8"
+groups = ["main"]
+files = [
+ {file = "lark-1.3.1-py3-none-any.whl", hash = "sha256:c629b661023a014c37da873b4ff58a817398d12635d3bbb2c5a03be7fe5d1e12"},
+ {file = "lark-1.3.1.tar.gz", hash = "sha256:b426a7a6d6d53189d318f2b6236ab5d6429eaf09259f1ca33eb716eed10d2905"},
+]
+
+[package.extras]
+atomic-cache = ["atomicwrites"]
+interegular = ["interegular (>=0.3.1,<0.4.0)"]
+nearley = ["js2py"]
+regex = ["regex"]
+
+[[package]]
+name = "markupsafe"
+version = "3.0.3"
+description = "Safely add untrusted strings to HTML/XML markup."
+optional = false
+python-versions = ">=3.9"
+groups = ["main"]
+files = [
+ {file = "markupsafe-3.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2f981d352f04553a7171b8e44369f2af4055f888dfb147d55e42d29e29e74559"},
+ {file = "markupsafe-3.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e1c1493fb6e50ab01d20a22826e57520f1284df32f2d8601fdd90b6304601419"},
+ {file = "markupsafe-3.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1ba88449deb3de88bd40044603fafffb7bc2b055d626a330323a9ed736661695"},
+ {file = "markupsafe-3.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f42d0984e947b8adf7dd6dde396e720934d12c506ce84eea8476409563607591"},
+ {file = "markupsafe-3.0.3-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c0c0b3ade1c0b13b936d7970b1d37a57acde9199dc2aecc4c336773e1d86049c"},
+ {file = "markupsafe-3.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0303439a41979d9e74d18ff5e2dd8c43ed6c6001fd40e5bf2e43f7bd9bbc523f"},
+ {file = "markupsafe-3.0.3-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:d2ee202e79d8ed691ceebae8e0486bd9a2cd4794cec4824e1c99b6f5009502f6"},
+ {file = "markupsafe-3.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:177b5253b2834fe3678cb4a5f0059808258584c559193998be2601324fdeafb1"},
+ {file = "markupsafe-3.0.3-cp310-cp310-win32.whl", hash = "sha256:2a15a08b17dd94c53a1da0438822d70ebcd13f8c3a95abe3a9ef9f11a94830aa"},
+ {file = "markupsafe-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:c4ffb7ebf07cfe8931028e3e4c85f0357459a3f9f9490886198848f4fa002ec8"},
+ {file = "markupsafe-3.0.3-cp310-cp310-win_arm64.whl", hash = "sha256:e2103a929dfa2fcaf9bb4e7c091983a49c9ac3b19c9061b6d5427dd7d14d81a1"},
+ {file = "markupsafe-3.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1cc7ea17a6824959616c525620e387f6dd30fec8cb44f649e31712db02123dad"},
+ {file = "markupsafe-3.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4bd4cd07944443f5a265608cc6aab442e4f74dff8088b0dfc8238647b8f6ae9a"},
+ {file = "markupsafe-3.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b5420a1d9450023228968e7e6a9ce57f65d148ab56d2313fcd589eee96a7a50"},
+ {file = "markupsafe-3.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0bf2a864d67e76e5c9a34dc26ec616a66b9888e25e7b9460e1c76d3293bd9dbf"},
+ {file = "markupsafe-3.0.3-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc51efed119bc9cfdf792cdeaa4d67e8f6fcccab66ed4bfdd6bde3e59bfcbb2f"},
+ {file = "markupsafe-3.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:068f375c472b3e7acbe2d5318dea141359e6900156b5b2ba06a30b169086b91a"},
+ {file = "markupsafe-3.0.3-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:7be7b61bb172e1ed687f1754f8e7484f1c8019780f6f6b0786e76bb01c2ae115"},
+ {file = "markupsafe-3.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f9e130248f4462aaa8e2552d547f36ddadbeaa573879158d721bbd33dfe4743a"},
+ {file = "markupsafe-3.0.3-cp311-cp311-win32.whl", hash = "sha256:0db14f5dafddbb6d9208827849fad01f1a2609380add406671a26386cdf15a19"},
+ {file = "markupsafe-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:de8a88e63464af587c950061a5e6a67d3632e36df62b986892331d4620a35c01"},
+ {file = "markupsafe-3.0.3-cp311-cp311-win_arm64.whl", hash = "sha256:3b562dd9e9ea93f13d53989d23a7e775fdfd1066c33494ff43f5418bc8c58a5c"},
+ {file = "markupsafe-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d53197da72cc091b024dd97249dfc7794d6a56530370992a5e1a08983ad9230e"},
+ {file = "markupsafe-3.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1872df69a4de6aead3491198eaf13810b565bdbeec3ae2dc8780f14458ec73ce"},
+ {file = "markupsafe-3.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3a7e8ae81ae39e62a41ec302f972ba6ae23a5c5396c8e60113e9066ef893da0d"},
+ {file = "markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d6dd0be5b5b189d31db7cda48b91d7e0a9795f31430b7f271219ab30f1d3ac9d"},
+ {file = "markupsafe-3.0.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:94c6f0bb423f739146aec64595853541634bde58b2135f27f61c1ffd1cd4d16a"},
+ {file = "markupsafe-3.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:be8813b57049a7dc738189df53d69395eba14fb99345e0a5994914a3864c8a4b"},
+ {file = "markupsafe-3.0.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:83891d0e9fb81a825d9a6d61e3f07550ca70a076484292a70fde82c4b807286f"},
+ {file = "markupsafe-3.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:77f0643abe7495da77fb436f50f8dab76dbc6e5fd25d39589a0f1fe6548bfa2b"},
+ {file = "markupsafe-3.0.3-cp312-cp312-win32.whl", hash = "sha256:d88b440e37a16e651bda4c7c2b930eb586fd15ca7406cb39e211fcff3bf3017d"},
+ {file = "markupsafe-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:26a5784ded40c9e318cfc2bdb30fe164bdb8665ded9cd64d500a34fb42067b1c"},
+ {file = "markupsafe-3.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:35add3b638a5d900e807944a078b51922212fb3dedb01633a8defc4b01a3c85f"},
+ {file = "markupsafe-3.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795"},
+ {file = "markupsafe-3.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219"},
+ {file = "markupsafe-3.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6"},
+ {file = "markupsafe-3.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfcd093f13f0f0b7fdd0f198b90053bf7b2f02a3927a30e63f3ccc9df56b676"},
+ {file = "markupsafe-3.0.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:509fa21c6deb7a7a273d629cf5ec029bc209d1a51178615ddf718f5918992ab9"},
+ {file = "markupsafe-3.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4afe79fb3de0b7097d81da19090f4df4f8d3a2b3adaa8764138aac2e44f3af1"},
+ {file = "markupsafe-3.0.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:795e7751525cae078558e679d646ae45574b47ed6e7771863fcc079a6171a0fc"},
+ {file = "markupsafe-3.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8485f406a96febb5140bfeca44a73e3ce5116b2501ac54fe953e488fb1d03b12"},
+ {file = "markupsafe-3.0.3-cp313-cp313-win32.whl", hash = "sha256:bdd37121970bfd8be76c5fb069c7751683bdf373db1ed6c010162b2a130248ed"},
+ {file = "markupsafe-3.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:9a1abfdc021a164803f4d485104931fb8f8c1efd55bc6b748d2f5774e78b62c5"},
+ {file = "markupsafe-3.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:7e68f88e5b8799aa49c85cd116c932a1ac15caaa3f5db09087854d218359e485"},
+ {file = "markupsafe-3.0.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:218551f6df4868a8d527e3062d0fb968682fe92054e89978594c28e642c43a73"},
+ {file = "markupsafe-3.0.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3524b778fe5cfb3452a09d31e7b5adefeea8c5be1d43c4f810ba09f2ceb29d37"},
+ {file = "markupsafe-3.0.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4e885a3d1efa2eadc93c894a21770e4bc67899e3543680313b09f139e149ab19"},
+ {file = "markupsafe-3.0.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8709b08f4a89aa7586de0aadc8da56180242ee0ada3999749b183aa23df95025"},
+ {file = "markupsafe-3.0.3-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b8512a91625c9b3da6f127803b166b629725e68af71f8184ae7e7d54686a56d6"},
+ {file = "markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b79b7a16f7fedff2495d684f2b59b0457c3b493778c9eed31111be64d58279f"},
+ {file = "markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:12c63dfb4a98206f045aa9563db46507995f7ef6d83b2f68eda65c307c6829eb"},
+ {file = "markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8f71bc33915be5186016f675cd83a1e08523649b0e33efdb898db577ef5bb009"},
+ {file = "markupsafe-3.0.3-cp313-cp313t-win32.whl", hash = "sha256:69c0b73548bc525c8cb9a251cddf1931d1db4d2258e9599c28c07ef3580ef354"},
+ {file = "markupsafe-3.0.3-cp313-cp313t-win_amd64.whl", hash = "sha256:1b4b79e8ebf6b55351f0d91fe80f893b4743f104bff22e90697db1590e47a218"},
+ {file = "markupsafe-3.0.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ad2cf8aa28b8c020ab2fc8287b0f823d0a7d8630784c31e9ee5edea20f406287"},
+ {file = "markupsafe-3.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:eaa9599de571d72e2daf60164784109f19978b327a3910d3e9de8c97b5b70cfe"},
+ {file = "markupsafe-3.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c47a551199eb8eb2121d4f0f15ae0f923d31350ab9280078d1e5f12b249e0026"},
+ {file = "markupsafe-3.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f34c41761022dd093b4b6896d4810782ffbabe30f2d443ff5f083e0cbbb8c737"},
+ {file = "markupsafe-3.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:457a69a9577064c05a97c41f4e65148652db078a3a509039e64d3467b9e7ef97"},
+ {file = "markupsafe-3.0.3-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e8afc3f2ccfa24215f8cb28dcf43f0113ac3c37c2f0f0806d8c70e4228c5cf4d"},
+ {file = "markupsafe-3.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ec15a59cf5af7be74194f7ab02d0f59a62bdcf1a537677ce67a2537c9b87fcda"},
+ {file = "markupsafe-3.0.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:0eb9ff8191e8498cca014656ae6b8d61f39da5f95b488805da4bb029cccbfbaf"},
+ {file = "markupsafe-3.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2713baf880df847f2bece4230d4d094280f4e67b1e813eec43b4c0e144a34ffe"},
+ {file = "markupsafe-3.0.3-cp314-cp314-win32.whl", hash = "sha256:729586769a26dbceff69f7a7dbbf59ab6572b99d94576a5592625d5b411576b9"},
+ {file = "markupsafe-3.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:bdc919ead48f234740ad807933cdf545180bfbe9342c2bb451556db2ed958581"},
+ {file = "markupsafe-3.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:5a7d5dc5140555cf21a6fefbdbf8723f06fcd2f63ef108f2854de715e4422cb4"},
+ {file = "markupsafe-3.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:1353ef0c1b138e1907ae78e2f6c63ff67501122006b0f9abad68fda5f4ffc6ab"},
+ {file = "markupsafe-3.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1085e7fbddd3be5f89cc898938f42c0b3c711fdcb37d75221de2666af647c175"},
+ {file = "markupsafe-3.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1b52b4fb9df4eb9ae465f8d0c228a00624de2334f216f178a995ccdcf82c4634"},
+ {file = "markupsafe-3.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fed51ac40f757d41b7c48425901843666a6677e3e8eb0abcff09e4ba6e664f50"},
+ {file = "markupsafe-3.0.3-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f190daf01f13c72eac4efd5c430a8de82489d9cff23c364c3ea822545032993e"},
+ {file = "markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e56b7d45a839a697b5eb268c82a71bd8c7f6c94d6fd50c3d577fa39a9f1409f5"},
+ {file = "markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:f3e98bb3798ead92273dc0e5fd0f31ade220f59a266ffd8a4f6065e0a3ce0523"},
+ {file = "markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5678211cb9333a6468fb8d8be0305520aa073f50d17f089b5b4b477ea6e67fdc"},
+ {file = "markupsafe-3.0.3-cp314-cp314t-win32.whl", hash = "sha256:915c04ba3851909ce68ccc2b8e2cd691618c4dc4c4232fb7982bca3f41fd8c3d"},
+ {file = "markupsafe-3.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4faffd047e07c38848ce017e8725090413cd80cbc23d86e55c587bf979e579c9"},
+ {file = "markupsafe-3.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:32001d6a8fc98c8cb5c947787c5d08b0a50663d139f1305bac5885d98d9b40fa"},
+ {file = "markupsafe-3.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:15d939a21d546304880945ca1ecb8a039db6b4dc49b2c5a400387cdae6a62e26"},
+ {file = "markupsafe-3.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f71a396b3bf33ecaa1626c255855702aca4d3d9fea5e051b41ac59a9c1c41edc"},
+ {file = "markupsafe-3.0.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0f4b68347f8c5eab4a13419215bdfd7f8c9b19f2b25520968adfad23eb0ce60c"},
+ {file = "markupsafe-3.0.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e8fc20152abba6b83724d7ff268c249fa196d8259ff481f3b1476383f8f24e42"},
+ {file = "markupsafe-3.0.3-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:949b8d66bc381ee8b007cd945914c721d9aba8e27f71959d750a46f7c282b20b"},
+ {file = "markupsafe-3.0.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:3537e01efc9d4dccdf77221fb1cb3b8e1a38d5428920e0657ce299b20324d758"},
+ {file = "markupsafe-3.0.3-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:591ae9f2a647529ca990bc681daebdd52c8791ff06c2bfa05b65163e28102ef2"},
+ {file = "markupsafe-3.0.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a320721ab5a1aba0a233739394eb907f8c8da5c98c9181d1161e77a0c8e36f2d"},
+ {file = "markupsafe-3.0.3-cp39-cp39-win32.whl", hash = "sha256:df2449253ef108a379b8b5d6b43f4b1a8e81a061d6537becd5582fba5f9196d7"},
+ {file = "markupsafe-3.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:7c3fb7d25180895632e5d3148dbdc29ea38ccb7fd210aa27acbd1201a1902c6e"},
+ {file = "markupsafe-3.0.3-cp39-cp39-win_arm64.whl", hash = "sha256:38664109c14ffc9e7437e86b4dceb442b0096dfe3541d7864d9cbe1da4cf36c8"},
+ {file = "markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698"},
+]
+
+[[package]]
+name = "matplotlib"
+version = "3.10.8"
+description = "Python plotting package"
+optional = false
+python-versions = ">=3.10"
+groups = ["main"]
+files = [
+ {file = "matplotlib-3.10.8-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:00270d217d6b20d14b584c521f810d60c5c78406dc289859776550df837dcda7"},
+ {file = "matplotlib-3.10.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:37b3c1cc42aa184b3f738cfa18c1c1d72fd496d85467a6cf7b807936d39aa656"},
+ {file = "matplotlib-3.10.8-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ee40c27c795bda6a5292e9cff9890189d32f7e3a0bf04e0e3c9430c4a00c37df"},
+ {file = "matplotlib-3.10.8-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a48f2b74020919552ea25d222d5cc6af9ca3f4eb43a93e14d068457f545c2a17"},
+ {file = "matplotlib-3.10.8-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f254d118d14a7f99d616271d6c3c27922c092dac11112670b157798b89bf4933"},
+ {file = "matplotlib-3.10.8-cp310-cp310-win_amd64.whl", hash = "sha256:f9b587c9c7274c1613a30afabf65a272114cd6cdbe67b3406f818c79d7ab2e2a"},
+ {file = "matplotlib-3.10.8-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:6be43b667360fef5c754dda5d25a32e6307a03c204f3c0fc5468b78fa87b4160"},
+ {file = "matplotlib-3.10.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a2b336e2d91a3d7006864e0990c83b216fcdca64b5a6484912902cef87313d78"},
+ {file = "matplotlib-3.10.8-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:efb30e3baaea72ce5928e32bab719ab4770099079d66726a62b11b1ef7273be4"},
+ {file = "matplotlib-3.10.8-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d56a1efd5bfd61486c8bc968fa18734464556f0fb8e51690f4ac25d85cbbbbc2"},
+ {file = "matplotlib-3.10.8-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:238b7ce5717600615c895050239ec955d91f321c209dd110db988500558e70d6"},
+ {file = "matplotlib-3.10.8-cp311-cp311-win_amd64.whl", hash = "sha256:18821ace09c763ec93aef5eeff087ee493a24051936d7b9ebcad9662f66501f9"},
+ {file = "matplotlib-3.10.8-cp311-cp311-win_arm64.whl", hash = "sha256:bab485bcf8b1c7d2060b4fcb6fc368a9e6f4cd754c9c2fea281f4be21df394a2"},
+ {file = "matplotlib-3.10.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:64fcc24778ca0404ce0cb7b6b77ae1f4c7231cdd60e6778f999ee05cbd581b9a"},
+ {file = "matplotlib-3.10.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b9a5ca4ac220a0cdd1ba6bcba3608547117d30468fefce49bb26f55c1a3d5c58"},
+ {file = "matplotlib-3.10.8-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3ab4aabc72de4ff77b3ec33a6d78a68227bf1123465887f9905ba79184a1cc04"},
+ {file = "matplotlib-3.10.8-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:24d50994d8c5816ddc35411e50a86ab05f575e2530c02752e02538122613371f"},
+ {file = "matplotlib-3.10.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:99eefd13c0dc3b3c1b4d561c1169e65fe47aab7b8158754d7c084088e2329466"},
+ {file = "matplotlib-3.10.8-cp312-cp312-win_amd64.whl", hash = "sha256:dd80ecb295460a5d9d260df63c43f4afbdd832d725a531f008dad1664f458adf"},
+ {file = "matplotlib-3.10.8-cp312-cp312-win_arm64.whl", hash = "sha256:3c624e43ed56313651bc18a47f838b60d7b8032ed348911c54906b130b20071b"},
+ {file = "matplotlib-3.10.8-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:3f2e409836d7f5ac2f1c013110a4d50b9f7edc26328c108915f9075d7d7a91b6"},
+ {file = "matplotlib-3.10.8-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:56271f3dac49a88d7fca5060f004d9d22b865f743a12a23b1e937a0be4818ee1"},
+ {file = "matplotlib-3.10.8-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a0a7f52498f72f13d4a25ea70f35f4cb60642b466cbb0a9be951b5bc3f45a486"},
+ {file = "matplotlib-3.10.8-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:646d95230efb9ca614a7a594d4fcacde0ac61d25e37dd51710b36477594963ce"},
+ {file = "matplotlib-3.10.8-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f89c151aab2e2e23cb3fe0acad1e8b82841fd265379c4cecd0f3fcb34c15e0f6"},
+ {file = "matplotlib-3.10.8-cp313-cp313-win_amd64.whl", hash = "sha256:e8ea3e2d4066083e264e75c829078f9e149fa119d27e19acd503de65e0b13149"},
+ {file = "matplotlib-3.10.8-cp313-cp313-win_arm64.whl", hash = "sha256:c108a1d6fa78a50646029cb6d49808ff0fc1330fda87fa6f6250c6b5369b6645"},
+ {file = "matplotlib-3.10.8-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:ad3d9833a64cf48cc4300f2b406c3d0f4f4724a91c0bd5640678a6ba7c102077"},
+ {file = "matplotlib-3.10.8-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:eb3823f11823deade26ce3b9f40dcb4a213da7a670013929f31d5f5ed1055b22"},
+ {file = "matplotlib-3.10.8-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d9050fee89a89ed57b4fb2c1bfac9a3d0c57a0d55aed95949eedbc42070fea39"},
+ {file = "matplotlib-3.10.8-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b44d07310e404ba95f8c25aa5536f154c0a8ec473303535949e52eb71d0a1565"},
+ {file = "matplotlib-3.10.8-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:0a33deb84c15ede243aead39f77e990469fff93ad1521163305095b77b72ce4a"},
+ {file = "matplotlib-3.10.8-cp313-cp313t-win_amd64.whl", hash = "sha256:3a48a78d2786784cc2413e57397981fb45c79e968d99656706018d6e62e57958"},
+ {file = "matplotlib-3.10.8-cp313-cp313t-win_arm64.whl", hash = "sha256:15d30132718972c2c074cd14638c7f4592bd98719e2308bccea40e0538bc0cb5"},
+ {file = "matplotlib-3.10.8-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:b53285e65d4fa4c86399979e956235deb900be5baa7fc1218ea67fbfaeaadd6f"},
+ {file = "matplotlib-3.10.8-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:32f8dce744be5569bebe789e46727946041199030db8aeb2954d26013a0eb26b"},
+ {file = "matplotlib-3.10.8-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4cf267add95b1c88300d96ca837833d4112756045364f5c734a2276038dae27d"},
+ {file = "matplotlib-3.10.8-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2cf5bd12cecf46908f286d7838b2abc6c91cda506c0445b8223a7c19a00df008"},
+ {file = "matplotlib-3.10.8-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:41703cc95688f2516b480f7f339d8851a6035f18e100ee6a32bc0b8536a12a9c"},
+ {file = "matplotlib-3.10.8-cp314-cp314-win_amd64.whl", hash = "sha256:83d282364ea9f3e52363da262ce32a09dfe241e4080dcedda3c0db059d3c1f11"},
+ {file = "matplotlib-3.10.8-cp314-cp314-win_arm64.whl", hash = "sha256:2c1998e92cd5999e295a731bcb2911c75f597d937341f3030cc24ef2733d78a8"},
+ {file = "matplotlib-3.10.8-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:b5a2b97dbdc7d4f353ebf343744f1d1f1cca8aa8bfddb4262fcf4306c3761d50"},
+ {file = "matplotlib-3.10.8-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:3f5c3e4da343bba819f0234186b9004faba952cc420fbc522dc4e103c1985908"},
+ {file = "matplotlib-3.10.8-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f62550b9a30afde8c1c3ae450e5eb547d579dd69b25c2fc7a1c67f934c1717a"},
+ {file = "matplotlib-3.10.8-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:495672de149445ec1b772ff2c9ede9b769e3cb4f0d0aa7fa730d7f59e2d4e1c1"},
+ {file = "matplotlib-3.10.8-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:595ba4d8fe983b88f0eec8c26a241e16d6376fe1979086232f481f8f3f67494c"},
+ {file = "matplotlib-3.10.8-cp314-cp314t-win_amd64.whl", hash = "sha256:25d380fe8b1dc32cf8f0b1b448470a77afb195438bafdf1d858bfb876f3edf7b"},
+ {file = "matplotlib-3.10.8-cp314-cp314t-win_arm64.whl", hash = "sha256:113bb52413ea508ce954a02c10ffd0d565f9c3bc7f2eddc27dfe1731e71c7b5f"},
+ {file = "matplotlib-3.10.8-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:f97aeb209c3d2511443f8797e3e5a569aebb040d4f8bc79aa3ee78a8fb9e3dd8"},
+ {file = "matplotlib-3.10.8-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:fb061f596dad3a0f52b60dc6a5dec4a0c300dec41e058a7efe09256188d170b7"},
+ {file = "matplotlib-3.10.8-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:12d90df9183093fcd479f4172ac26b322b1248b15729cb57f42f71f24c7e37a3"},
+ {file = "matplotlib-3.10.8-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:6da7c2ce169267d0d066adcf63758f0604aa6c3eebf67458930f9d9b79ad1db1"},
+ {file = "matplotlib-3.10.8-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:9153c3292705be9f9c64498a8872118540c3f4123d1a1c840172edf262c8be4a"},
+ {file = "matplotlib-3.10.8-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1ae029229a57cd1e8fe542485f27e7ca7b23aa9e8944ddb4985d0bc444f1eca2"},
+ {file = "matplotlib-3.10.8.tar.gz", hash = "sha256:2299372c19d56bcd35cf05a2738308758d32b9eaed2371898d8f5bd33f084aa3"},
+]
+
+[package.dependencies]
+contourpy = ">=1.0.1"
+cycler = ">=0.10"
+fonttools = ">=4.22.0"
+kiwisolver = ">=1.3.1"
+numpy = ">=1.23"
+packaging = ">=20.0"
+pillow = ">=8"
+pyparsing = ">=3"
+python-dateutil = ">=2.7"
+
+[package.extras]
+dev = ["meson-python (>=0.13.1,<0.17.0)", "pybind11 (>=2.13.2,!=2.13.3)", "setuptools (>=64)", "setuptools_scm (>=7)"]
+
+[[package]]
+name = "matplotlib-inline"
+version = "0.2.1"
+description = "Inline Matplotlib backend for Jupyter"
+optional = false
+python-versions = ">=3.9"
+groups = ["main"]
+files = [
+ {file = "matplotlib_inline-0.2.1-py3-none-any.whl", hash = "sha256:d56ce5156ba6085e00a9d54fead6ed29a9c47e215cd1bba2e976ef39f5710a76"},
+ {file = "matplotlib_inline-0.2.1.tar.gz", hash = "sha256:e1ee949c340d771fc39e241ea75683deb94762c8fa5f2927ec57c83c4dffa9fe"},
+]
+
+[package.dependencies]
+traitlets = "*"
+
+[package.extras]
+test = ["flake8", "nbdime", "nbval", "notebook", "pytest"]
+
+[[package]]
+name = "mistune"
+version = "3.2.0"
+description = "A sane and fast Markdown parser with useful plugins and renderers"
+optional = false
+python-versions = ">=3.8"
+groups = ["main"]
+files = [
+ {file = "mistune-3.2.0-py3-none-any.whl", hash = "sha256:febdc629a3c78616b94393c6580551e0e34cc289987ec6c35ed3f4be42d0eee1"},
+ {file = "mistune-3.2.0.tar.gz", hash = "sha256:708487c8a8cdd99c9d90eb3ed4c3ed961246ff78ac82f03418f5183ab70e398a"},
+]
+
+[[package]]
+name = "mpmath"
+version = "1.3.0"
+description = "Python library for arbitrary-precision floating-point arithmetic"
+optional = false
+python-versions = "*"
+groups = ["main"]
+files = [
+ {file = "mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c"},
+ {file = "mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f"},
+]
+
+[package.extras]
+develop = ["codecov", "pycodestyle", "pytest (>=4.6)", "pytest-cov", "wheel"]
+docs = ["sphinx"]
+gmpy = ["gmpy2 (>=2.1.0a4) ; platform_python_implementation != \"PyPy\""]
+tests = ["pytest (>=4.6)"]
+
+[[package]]
+name = "nbclient"
+version = "0.10.4"
+description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor."
+optional = false
+python-versions = ">=3.10.0"
+groups = ["main"]
+files = [
+ {file = "nbclient-0.10.4-py3-none-any.whl", hash = "sha256:9162df5a7373d70d606527300a95a975a47c137776cd942e52d9c7e29ff83440"},
+ {file = "nbclient-0.10.4.tar.gz", hash = "sha256:1e54091b16e6da39e297b0ece3e10f6f29f4ac4e8ee515d29f8a7099bd6553c9"},
+]
+
+[package.dependencies]
+jupyter-client = ">=6.1.12"
+jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0"
+nbformat = ">=5.1.3"
+traitlets = ">=5.4"
+
+[package.extras]
+dev = ["pre-commit"]
+docs = ["autodoc-traits", "flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "mock", "moto", "myst-parser", "nbconvert (>=7.1.0)", "pytest (>=9.0.1,<10)", "pytest-asyncio (>=1.3.0)", "pytest-cov (>=4.0)", "sphinx (>=1.7)", "sphinx-book-theme", "sphinxcontrib-spelling", "testpath", "xmltodict"]
+test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>=7.1.0)", "pytest (>=9.0.1,<10)", "pytest-asyncio (>=1.3.0)", "pytest-cov (>=4.0)", "testpath", "xmltodict"]
+
+[[package]]
+name = "nbconvert"
+version = "7.16.6"
+description = "Converting Jupyter Notebooks (.ipynb files) to other formats. Output formats include asciidoc, html, latex, markdown, pdf, py, rst, script. nbconvert can be used both as a Python library (`import nbconvert`) or as a command line tool (invoked as `jupyter nbconvert ...`)."
+optional = false
+python-versions = ">=3.8"
+groups = ["main"]
+files = [
+ {file = "nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b"},
+ {file = "nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582"},
+]
+
+[package.dependencies]
+beautifulsoup4 = "*"
+bleach = {version = "!=5.0.0", extras = ["css"]}
+defusedxml = "*"
+jinja2 = ">=3.0"
+jupyter-core = ">=4.7"
+jupyterlab-pygments = "*"
+markupsafe = ">=2.0"
+mistune = ">=2.0.3,<4"
+nbclient = ">=0.5.0"
+nbformat = ">=5.7"
+packaging = "*"
+pandocfilters = ">=1.4.1"
+pygments = ">=2.4.1"
+traitlets = ">=5.1"
+
+[package.extras]
+all = ["flaky", "ipykernel", "ipython", "ipywidgets (>=7.5)", "myst-parser", "nbsphinx (>=0.2.12)", "playwright", "pydata-sphinx-theme", "pyqtwebengine (>=5.15)", "pytest (>=7)", "sphinx (==5.0.2)", "sphinxcontrib-spelling", "tornado (>=6.1)"]
+docs = ["ipykernel", "ipython", "myst-parser", "nbsphinx (>=0.2.12)", "pydata-sphinx-theme", "sphinx (==5.0.2)", "sphinxcontrib-spelling"]
+qtpdf = ["pyqtwebengine (>=5.15)"]
+qtpng = ["pyqtwebengine (>=5.15)"]
+serve = ["tornado (>=6.1)"]
+test = ["flaky", "ipykernel", "ipywidgets (>=7.5)", "pytest (>=7)"]
+webpdf = ["playwright"]
+
+[[package]]
+name = "nbformat"
+version = "5.10.4"
+description = "The Jupyter Notebook format"
+optional = false
+python-versions = ">=3.8"
+groups = ["main"]
+files = [
+ {file = "nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b"},
+ {file = "nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a"},
+]
+
+[package.dependencies]
+fastjsonschema = ">=2.15"
+jsonschema = ">=2.6"
+jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0"
+traitlets = ">=5.1"
+
+[package.extras]
+docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"]
+test = ["pep440", "pre-commit", "pytest", "testpath"]
+
+[[package]]
+name = "nest-asyncio"
+version = "1.6.0"
+description = "Patch asyncio to allow nested event loops"
+optional = false
+python-versions = ">=3.5"
+groups = ["main"]
+files = [
+ {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"},
+ {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"},
+]
+
+[[package]]
+name = "networkx"
+version = "3.6"
+description = "Python package for creating and manipulating graphs and networks"
+optional = false
+python-versions = ">=3.11"
+groups = ["main"]
+markers = "python_version == \"3.14\""
+files = [
+ {file = "networkx-3.6-py3-none-any.whl", hash = "sha256:cdb395b105806062473d3be36458d8f1459a4e4b98e236a66c3a48996e07684f"},
+ {file = "networkx-3.6.tar.gz", hash = "sha256:285276002ad1f7f7da0f7b42f004bcba70d381e936559166363707fdad3d72ad"},
+]
+
+[package.extras]
+benchmarking = ["asv", "virtualenv"]
+default = ["matplotlib (>=3.8)", "numpy (>=1.25)", "pandas (>=2.0)", "scipy (>=1.11.2)"]
+developer = ["mypy (>=1.15)", "pre-commit (>=4.1)"]
+doc = ["intersphinx-registry", "myst-nb (>=1.1)", "numpydoc (>=1.8.0)", "pillow (>=10)", "pydata-sphinx-theme (>=0.16)", "sphinx (>=8.0)", "sphinx-gallery (>=0.18)", "texext (>=0.6.7)"]
+example = ["cairocffi (>=1.7)", "contextily (>=1.6)", "igraph (>=0.11)", "iplotx (>=0.9.0)", "momepy (>=0.7.2)", "osmnx (>=2.0.0)", "scikit-learn (>=1.5)", "seaborn (>=0.13)"]
+extra = ["lxml (>=4.6)", "pydot (>=3.0.1)", "pygraphviz (>=1.14)", "sympy (>=1.10)"]
+release = ["build (>=0.10)", "changelist (==0.5)", "twine (>=4.0)", "wheel (>=0.40)"]
+test = ["pytest (>=7.2)", "pytest-cov (>=4.0)", "pytest-xdist (>=3.0)"]
+test-extras = ["pytest-mpl", "pytest-randomly"]
+
+[[package]]
+name = "networkx"
+version = "3.6.1"
+description = "Python package for creating and manipulating graphs and networks"
+optional = false
+python-versions = "!=3.14.1,>=3.11"
+groups = ["main"]
+markers = "python_version < \"3.14\""
+files = [
+ {file = "networkx-3.6.1-py3-none-any.whl", hash = "sha256:d47fbf302e7d9cbbb9e2555a0d267983d2aa476bac30e90dfbe5669bd57f3762"},
+ {file = "networkx-3.6.1.tar.gz", hash = "sha256:26b7c357accc0c8cde558ad486283728b65b6a95d85ee1cd66bafab4c8168509"},
+]
+
+[package.extras]
+benchmarking = ["asv", "virtualenv"]
+default = ["matplotlib (>=3.8)", "numpy (>=1.25)", "pandas (>=2.0)", "scipy (>=1.11.2)"]
+developer = ["mypy (>=1.15)", "pre-commit (>=4.1)"]
+doc = ["intersphinx-registry", "myst-nb (>=1.1)", "numpydoc (>=1.8.0)", "pillow (>=10)", "pydata-sphinx-theme (>=0.16)", "sphinx (>=8.0)", "sphinx-gallery (>=0.18)", "texext (>=0.6.7)"]
+example = ["cairocffi (>=1.7)", "contextily (>=1.6)", "igraph (>=0.11)", "iplotx (>=0.9.0)", "momepy (>=0.7.2)", "osmnx (>=2.0.0)", "scikit-learn (>=1.5)", "seaborn (>=0.13)"]
+extra = ["lxml (>=4.6)", "pydot (>=3.0.1)", "pygraphviz (>=1.14)", "sympy (>=1.10)"]
+release = ["build (>=0.10)", "changelist (==0.5)", "twine (>=4.0)", "wheel (>=0.40)"]
+test = ["pytest (>=7.2)", "pytest-cov (>=4.0)", "pytest-xdist (>=3.0)"]
+test-extras = ["pytest-mpl", "pytest-randomly"]
+
+[[package]]
+name = "notebook"
+version = "7.5.1"
+description = "Jupyter Notebook - A web-based notebook environment for interactive computing"
+optional = false
+python-versions = ">=3.9"
+groups = ["main"]
+files = [
+ {file = "notebook-7.5.1-py3-none-any.whl", hash = "sha256:f4e2451c19910c33b88709b84537e11f6368c1cdff1aa0c43db701aea535dd44"},
+ {file = "notebook-7.5.1.tar.gz", hash = "sha256:b2fb4cef4d47d08c33aecce1c6c6e84be05436fbd791f88fce8df9fbca088b75"},
+]
+
+[package.dependencies]
+jupyter-server = ">=2.4.0,<3"
+jupyterlab = ">=4.5.1,<4.6"
+jupyterlab-server = ">=2.28.0,<3"
+notebook-shim = ">=0.2,<0.3"
+tornado = ">=6.2.0"
+
+[package.extras]
+dev = ["hatch", "pre-commit"]
+docs = ["myst-parser", "nbsphinx", "pydata-sphinx-theme", "sphinx (>=1.3.6)", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"]
+test = ["importlib-resources (>=5.0) ; python_version < \"3.10\"", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.28.0,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"]
+
+[[package]]
+name = "notebook-shim"
+version = "0.2.4"
+description = "A shim layer for notebook traits and config"
+optional = false
+python-versions = ">=3.7"
+groups = ["main"]
+files = [
+ {file = "notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef"},
+ {file = "notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb"},
+]
+
+[package.dependencies]
+jupyter-server = ">=1.8,<3"
+
+[package.extras]
+test = ["pytest", "pytest-console-scripts", "pytest-jupyter", "pytest-tornasync"]
+
+[[package]]
+name = "numpy"
+version = "2.4.1"
+description = "Fundamental package for array computing in Python"
+optional = false
+python-versions = ">=3.11"
+groups = ["main"]
+files = [
+ {file = "numpy-2.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0cce2a669e3c8ba02ee563c7835f92c153cf02edff1ae05e1823f1dde21b16a5"},
+ {file = "numpy-2.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:899d2c18024984814ac7e83f8f49d8e8180e2fbe1b2e252f2e7f1d06bea92425"},
+ {file = "numpy-2.4.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:09aa8a87e45b55a1c2c205d42e2808849ece5c484b2aab11fecabec3841cafba"},
+ {file = "numpy-2.4.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:edee228f76ee2dab4579fad6f51f6a305de09d444280109e0f75df247ff21501"},
+ {file = "numpy-2.4.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a92f227dbcdc9e4c3e193add1a189a9909947d4f8504c576f4a732fd0b54240a"},
+ {file = "numpy-2.4.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:538bf4ec353709c765ff75ae616c34d3c3dca1a68312727e8f2676ea644f8509"},
+ {file = "numpy-2.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ac08c63cb7779b85e9d5318e6c3518b424bc1f364ac4cb2c6136f12e5ff2dccc"},
+ {file = "numpy-2.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4f9c360ecef085e5841c539a9a12b883dff005fbd7ce46722f5e9cef52634d82"},
+ {file = "numpy-2.4.1-cp311-cp311-win32.whl", hash = "sha256:0f118ce6b972080ba0758c6087c3617b5ba243d806268623dc34216d69099ba0"},
+ {file = "numpy-2.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:18e14c4d09d55eef39a6ab5b08406e84bc6869c1e34eef45564804f90b7e0574"},
+ {file = "numpy-2.4.1-cp311-cp311-win_arm64.whl", hash = "sha256:6461de5113088b399d655d45c3897fa188766415d0f568f175ab071c8873bd73"},
+ {file = "numpy-2.4.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d3703409aac693fa82c0aee023a1ae06a6e9d065dba10f5e8e80f642f1e9d0a2"},
+ {file = "numpy-2.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7211b95ca365519d3596a1d8688a95874cc94219d417504d9ecb2df99fa7bfa8"},
+ {file = "numpy-2.4.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:5adf01965456a664fc727ed69cc71848f28d063217c63e1a0e200a118d5eec9a"},
+ {file = "numpy-2.4.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:26f0bcd9c79a00e339565b303badc74d3ea2bd6d52191eeca5f95936cad107d0"},
+ {file = "numpy-2.4.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0093e85df2960d7e4049664b26afc58b03236e967fb942354deef3208857a04c"},
+ {file = "numpy-2.4.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7ad270f438cbdd402c364980317fb6b117d9ec5e226fff5b4148dd9aa9fc6e02"},
+ {file = "numpy-2.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:297c72b1b98100c2e8f873d5d35fb551fce7040ade83d67dd51d38c8d42a2162"},
+ {file = "numpy-2.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:cf6470d91d34bf669f61d515499859fa7a4c2f7c36434afb70e82df7217933f9"},
+ {file = "numpy-2.4.1-cp312-cp312-win32.whl", hash = "sha256:b6bcf39112e956594b3331316d90c90c90fb961e39696bda97b89462f5f3943f"},
+ {file = "numpy-2.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:e1a27bb1b2dee45a2a53f5ca6ff2d1a7f135287883a1689e930d44d1ff296c87"},
+ {file = "numpy-2.4.1-cp312-cp312-win_arm64.whl", hash = "sha256:0e6e8f9d9ecf95399982019c01223dc130542960a12edfa8edd1122dfa66a8a8"},
+ {file = "numpy-2.4.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d797454e37570cfd61143b73b8debd623c3c0952959adb817dd310a483d58a1b"},
+ {file = "numpy-2.4.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82c55962006156aeef1629b953fd359064aa47e4d82cfc8e67f0918f7da3344f"},
+ {file = "numpy-2.4.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:71abbea030f2cfc3092a0ff9f8c8fdefdc5e0bf7d9d9c99663538bb0ecdac0b9"},
+ {file = "numpy-2.4.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:5b55aa56165b17aaf15520beb9cbd33c9039810e0d9643dd4379e44294c7303e"},
+ {file = "numpy-2.4.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c0faba4a331195bfa96f93dd9dfaa10b2c7aa8cda3a02b7fd635e588fe821bf5"},
+ {file = "numpy-2.4.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d3e3087f53e2b4428766b54932644d148613c5a595150533ae7f00dab2f319a8"},
+ {file = "numpy-2.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:49e792ec351315e16da54b543db06ca8a86985ab682602d90c60ef4ff4db2a9c"},
+ {file = "numpy-2.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:79e9e06c4c2379db47f3f6fc7a8652e7498251789bf8ff5bd43bf478ef314ca2"},
+ {file = "numpy-2.4.1-cp313-cp313-win32.whl", hash = "sha256:3d1a100e48cb266090a031397863ff8a30050ceefd798f686ff92c67a486753d"},
+ {file = "numpy-2.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:92a0e65272fd60bfa0d9278e0484c2f52fe03b97aedc02b357f33fe752c52ffb"},
+ {file = "numpy-2.4.1-cp313-cp313-win_arm64.whl", hash = "sha256:20d4649c773f66cc2fc36f663e091f57c3b7655f936a4c681b4250855d1da8f5"},
+ {file = "numpy-2.4.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f93bc6892fe7b0663e5ffa83b61aab510aacffd58c16e012bb9352d489d90cb7"},
+ {file = "numpy-2.4.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:178de8f87948163d98a4c9ab5bee4ce6519ca918926ec8df195af582de28544d"},
+ {file = "numpy-2.4.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:98b35775e03ab7f868908b524fc0a84d38932d8daf7b7e1c3c3a1b6c7a2c9f15"},
+ {file = "numpy-2.4.1-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:941c2a93313d030f219f3a71fd3d91a728b82979a5e8034eb2e60d394a2b83f9"},
+ {file = "numpy-2.4.1-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:529050522e983e00a6c1c6b67411083630de8b57f65e853d7b03d9281b8694d2"},
+ {file = "numpy-2.4.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:2302dc0224c1cbc49bb94f7064f3f923a971bfae45c33870dcbff63a2a550505"},
+ {file = "numpy-2.4.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:9171a42fcad32dcf3fa86f0a4faa5e9f8facefdb276f54b8b390d90447cff4e2"},
+ {file = "numpy-2.4.1-cp313-cp313t-win32.whl", hash = "sha256:382ad67d99ef49024f11d1ce5dcb5ad8432446e4246a4b014418ba3a1175a1f4"},
+ {file = "numpy-2.4.1-cp313-cp313t-win_amd64.whl", hash = "sha256:62fea415f83ad8fdb6c20840578e5fbaf5ddd65e0ec6c3c47eda0f69da172510"},
+ {file = "numpy-2.4.1-cp313-cp313t-win_arm64.whl", hash = "sha256:a7870e8c5fc11aef57d6fea4b4085e537a3a60ad2cdd14322ed531fdca68d261"},
+ {file = "numpy-2.4.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:3869ea1ee1a1edc16c29bbe3a2f2a4e515cc3a44d43903ad41e0cacdbaf733dc"},
+ {file = "numpy-2.4.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:e867df947d427cdd7a60e3e271729090b0f0df80f5f10ab7dd436f40811699c3"},
+ {file = "numpy-2.4.1-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:e3bd2cb07841166420d2fa7146c96ce00cb3410664cbc1a6be028e456c4ee220"},
+ {file = "numpy-2.4.1-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:f0a90aba7d521e6954670550e561a4cb925713bd944445dbe9e729b71f6cabee"},
+ {file = "numpy-2.4.1-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5d558123217a83b2d1ba316b986e9248a1ed1971ad495963d555ccd75dcb1556"},
+ {file = "numpy-2.4.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2f44de05659b67d20499cbc96d49f2650769afcb398b79b324bb6e297bfe3844"},
+ {file = "numpy-2.4.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:69e7419c9012c4aaf695109564e3387f1259f001b4326dfa55907b098af082d3"},
+ {file = "numpy-2.4.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2ffd257026eb1b34352e749d7cc1678b5eeec3e329ad8c9965a797e08ccba205"},
+ {file = "numpy-2.4.1-cp314-cp314-win32.whl", hash = "sha256:727c6c3275ddefa0dc078524a85e064c057b4f4e71ca5ca29a19163c607be745"},
+ {file = "numpy-2.4.1-cp314-cp314-win_amd64.whl", hash = "sha256:7d5d7999df434a038d75a748275cd6c0094b0ecdb0837342b332a82defc4dc4d"},
+ {file = "numpy-2.4.1-cp314-cp314-win_arm64.whl", hash = "sha256:ce9ce141a505053b3c7bce3216071f3bf5c182b8b28930f14cd24d43932cd2df"},
+ {file = "numpy-2.4.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:4e53170557d37ae404bf8d542ca5b7c629d6efa1117dac6a83e394142ea0a43f"},
+ {file = "numpy-2.4.1-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:a73044b752f5d34d4232f25f18160a1cc418ea4507f5f11e299d8ac36875f8a0"},
+ {file = "numpy-2.4.1-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:fb1461c99de4d040666ca0444057b06541e5642f800b71c56e6ea92d6a853a0c"},
+ {file = "numpy-2.4.1-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:423797bdab2eeefbe608d7c1ec7b2b4fd3c58d51460f1ee26c7500a1d9c9ee93"},
+ {file = "numpy-2.4.1-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:52b5f61bdb323b566b528899cc7db2ba5d1015bda7ea811a8bcf3c89c331fa42"},
+ {file = "numpy-2.4.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:42d7dd5fa36d16d52a84f821eb96031836fd405ee6955dd732f2023724d0aa01"},
+ {file = "numpy-2.4.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:e7b6b5e28bbd47b7532698e5db2fe1db693d84b58c254e4389d99a27bb9b8f6b"},
+ {file = "numpy-2.4.1-cp314-cp314t-win32.whl", hash = "sha256:5de60946f14ebe15e713a6f22850c2372fa72f4ff9a432ab44aa90edcadaa65a"},
+ {file = "numpy-2.4.1-cp314-cp314t-win_amd64.whl", hash = "sha256:8f085da926c0d491ffff3096f91078cc97ea67e7e6b65e490bc8dcda65663be2"},
+ {file = "numpy-2.4.1-cp314-cp314t-win_arm64.whl", hash = "sha256:6436cffb4f2bf26c974344439439c95e152c9a527013f26b3577be6c2ca64295"},
+ {file = "numpy-2.4.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:8ad35f20be147a204e28b6a0575fbf3540c5e5f802634d4258d55b1ff5facce1"},
+ {file = "numpy-2.4.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:8097529164c0f3e32bb89412a0905d9100bf434d9692d9fc275e18dcf53c9344"},
+ {file = "numpy-2.4.1-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:ea66d2b41ca4a1630aae5507ee0a71647d3124d1741980138aa8f28f44dac36e"},
+ {file = "numpy-2.4.1-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:d3f8f0df9f4b8be57b3bf74a1d087fec68f927a2fab68231fdb442bf2c12e426"},
+ {file = "numpy-2.4.1-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2023ef86243690c2791fd6353e5b4848eedaa88ca8a2d129f462049f6d484696"},
+ {file = "numpy-2.4.1-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8361ea4220d763e54cff2fbe7d8c93526b744f7cd9ddab47afeff7e14e8503be"},
+ {file = "numpy-2.4.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:4f1b68ff47680c2925f8063402a693ede215f0257f02596b1318ecdfb1d79e33"},
+ {file = "numpy-2.4.1.tar.gz", hash = "sha256:a1ceafc5042451a858231588a104093474c6a5c57dcc724841f5c888d237d690"},
+]
+
+[[package]]
+name = "nvidia-cublas-cu12"
+version = "12.8.4.1"
+description = "CUBLAS native runtime libraries"
+optional = false
+python-versions = ">=3"
+groups = ["main"]
+markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""
+files = [
+ {file = "nvidia_cublas_cu12-12.8.4.1-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:b86f6dd8935884615a0683b663891d43781b819ac4f2ba2b0c9604676af346d0"},
+ {file = "nvidia_cublas_cu12-12.8.4.1-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:8ac4e771d5a348c551b2a426eda6193c19aa630236b418086020df5ba9667142"},
+ {file = "nvidia_cublas_cu12-12.8.4.1-py3-none-win_amd64.whl", hash = "sha256:47e9b82132fa8d2b4944e708049229601448aaad7e6f296f630f2d1a32de35af"},
+]
+
+[[package]]
+name = "nvidia-cuda-cupti-cu12"
+version = "12.8.90"
+description = "CUDA profiling tools runtime libs."
+optional = false
+python-versions = ">=3"
+groups = ["main"]
+markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""
+files = [
+ {file = "nvidia_cuda_cupti_cu12-12.8.90-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:4412396548808ddfed3f17a467b104ba7751e6b58678a4b840675c56d21cf7ed"},
+ {file = "nvidia_cuda_cupti_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ea0cb07ebda26bb9b29ba82cda34849e73c166c18162d3913575b0c9db9a6182"},
+ {file = "nvidia_cuda_cupti_cu12-12.8.90-py3-none-win_amd64.whl", hash = "sha256:bb479dcdf7e6d4f8b0b01b115260399bf34154a1a2e9fe11c85c517d87efd98e"},
+]
+
+[[package]]
+name = "nvidia-cuda-nvrtc-cu12"
+version = "12.8.93"
+description = "NVRTC native runtime libraries"
+optional = false
+python-versions = ">=3"
+groups = ["main"]
+markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""
+files = [
+ {file = "nvidia_cuda_nvrtc_cu12-12.8.93-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:a7756528852ef889772a84c6cd89d41dfa74667e24cca16bb31f8f061e3e9994"},
+ {file = "nvidia_cuda_nvrtc_cu12-12.8.93-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fc1fec1e1637854b4c0a65fb9a8346b51dd9ee69e61ebaccc82058441f15bce8"},
+ {file = "nvidia_cuda_nvrtc_cu12-12.8.93-py3-none-win_amd64.whl", hash = "sha256:7a4b6b2904850fe78e0bd179c4b655c404d4bb799ef03ddc60804247099ae909"},
+]
+
+[[package]]
+name = "nvidia-cuda-runtime-cu12"
+version = "12.8.90"
+description = "CUDA Runtime native Libraries"
+optional = false
+python-versions = ">=3"
+groups = ["main"]
+markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""
+files = [
+ {file = "nvidia_cuda_runtime_cu12-12.8.90-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:52bf7bbee900262ffefe5e9d5a2a69a30d97e2bc5bb6cc866688caa976966e3d"},
+ {file = "nvidia_cuda_runtime_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:adade8dcbd0edf427b7204d480d6066d33902cab2a4707dcfc48a2d0fd44ab90"},
+ {file = "nvidia_cuda_runtime_cu12-12.8.90-py3-none-win_amd64.whl", hash = "sha256:c0c6027f01505bfed6c3b21ec546f69c687689aad5f1a377554bc6ca4aa993a8"},
+]
+
+[[package]]
+name = "nvidia-cudnn-cu12"
+version = "9.10.2.21"
+description = "cuDNN runtime libraries"
+optional = false
+python-versions = ">=3"
+groups = ["main"]
+markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""
+files = [
+ {file = "nvidia_cudnn_cu12-9.10.2.21-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:c9132cc3f8958447b4910a1720036d9eff5928cc3179b0a51fb6d167c6cc87d8"},
+ {file = "nvidia_cudnn_cu12-9.10.2.21-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:949452be657fa16687d0930933f032835951ef0892b37d2d53824d1a84dc97a8"},
+ {file = "nvidia_cudnn_cu12-9.10.2.21-py3-none-win_amd64.whl", hash = "sha256:c6288de7d63e6cf62988f0923f96dc339cea362decb1bf5b3141883392a7d65e"},
+]
+
+[package.dependencies]
+nvidia-cublas-cu12 = "*"
+
+[[package]]
+name = "nvidia-cufft-cu12"
+version = "11.3.3.83"
+description = "CUFFT native runtime libraries"
+optional = false
+python-versions = ">=3"
+groups = ["main"]
+markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""
+files = [
+ {file = "nvidia_cufft_cu12-11.3.3.83-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:848ef7224d6305cdb2a4df928759dca7b1201874787083b6e7550dd6765ce69a"},
+ {file = "nvidia_cufft_cu12-11.3.3.83-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4d2dd21ec0b88cf61b62e6b43564355e5222e4a3fb394cac0db101f2dd0d4f74"},
+ {file = "nvidia_cufft_cu12-11.3.3.83-py3-none-win_amd64.whl", hash = "sha256:7a64a98ef2a7c47f905aaf8931b69a3a43f27c55530c698bb2ed7c75c0b42cb7"},
+]
+
+[package.dependencies]
+nvidia-nvjitlink-cu12 = "*"
+
+[[package]]
+name = "nvidia-cufile-cu12"
+version = "1.13.1.3"
+description = "cuFile GPUDirect libraries"
+optional = false
+python-versions = ">=3"
+groups = ["main"]
+markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""
+files = [
+ {file = "nvidia_cufile_cu12-1.13.1.3-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1d069003be650e131b21c932ec3d8969c1715379251f8d23a1860554b1cb24fc"},
+ {file = "nvidia_cufile_cu12-1.13.1.3-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:4beb6d4cce47c1a0f1013d72e02b0994730359e17801d395bdcbf20cfb3bb00a"},
+]
+
+[[package]]
+name = "nvidia-curand-cu12"
+version = "10.3.9.90"
+description = "CURAND native runtime libraries"
+optional = false
+python-versions = ">=3"
+groups = ["main"]
+markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""
+files = [
+ {file = "nvidia_curand_cu12-10.3.9.90-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:dfab99248034673b779bc6decafdc3404a8a6f502462201f2f31f11354204acd"},
+ {file = "nvidia_curand_cu12-10.3.9.90-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:b32331d4f4df5d6eefa0554c565b626c7216f87a06a4f56fab27c3b68a830ec9"},
+ {file = "nvidia_curand_cu12-10.3.9.90-py3-none-win_amd64.whl", hash = "sha256:f149a8ca457277da854f89cf282d6ef43176861926c7ac85b2a0fbd237c587ec"},
+]
+
+[[package]]
+name = "nvidia-cusolver-cu12"
+version = "11.7.3.90"
+description = "CUDA solver native runtime libraries"
+optional = false
+python-versions = ">=3"
+groups = ["main"]
+markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""
+files = [
+ {file = "nvidia_cusolver_cu12-11.7.3.90-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:db9ed69dbef9715071232caa9b69c52ac7de3a95773c2db65bdba85916e4e5c0"},
+ {file = "nvidia_cusolver_cu12-11.7.3.90-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:4376c11ad263152bd50ea295c05370360776f8c3427b30991df774f9fb26c450"},
+ {file = "nvidia_cusolver_cu12-11.7.3.90-py3-none-win_amd64.whl", hash = "sha256:4a550db115fcabc4d495eb7d39ac8b58d4ab5d8e63274d3754df1c0ad6a22d34"},
+]
+
+[package.dependencies]
+nvidia-cublas-cu12 = "*"
+nvidia-cusparse-cu12 = "*"
+nvidia-nvjitlink-cu12 = "*"
+
+[[package]]
+name = "nvidia-cusparse-cu12"
+version = "12.5.8.93"
+description = "CUSPARSE native runtime libraries"
+optional = false
+python-versions = ">=3"
+groups = ["main"]
+markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""
+files = [
+ {file = "nvidia_cusparse_cu12-12.5.8.93-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:9b6c161cb130be1a07a27ea6923df8141f3c295852f4b260c65f18f3e0a091dc"},
+ {file = "nvidia_cusparse_cu12-12.5.8.93-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1ec05d76bbbd8b61b06a80e1eaf8cf4959c3d4ce8e711b65ebd0443bb0ebb13b"},
+ {file = "nvidia_cusparse_cu12-12.5.8.93-py3-none-win_amd64.whl", hash = "sha256:9a33604331cb2cac199f2e7f5104dfbb8a5a898c367a53dfda9ff2acb6b6b4dd"},
+]
+
+[package.dependencies]
+nvidia-nvjitlink-cu12 = "*"
+
+[[package]]
+name = "nvidia-cusparselt-cu12"
+version = "0.7.1"
+description = "NVIDIA cuSPARSELt"
+optional = false
+python-versions = "*"
+groups = ["main"]
+markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""
+files = [
+ {file = "nvidia_cusparselt_cu12-0.7.1-py3-none-manylinux2014_aarch64.whl", hash = "sha256:8878dce784d0fac90131b6817b607e803c36e629ba34dc5b433471382196b6a5"},
+ {file = "nvidia_cusparselt_cu12-0.7.1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:f1bb701d6b930d5a7cea44c19ceb973311500847f81b634d802b7b539dc55623"},
+ {file = "nvidia_cusparselt_cu12-0.7.1-py3-none-win_amd64.whl", hash = "sha256:f67fbb5831940ec829c9117b7f33807db9f9678dc2a617fbe781cac17b4e1075"},
+]
+
+[[package]]
+name = "nvidia-nccl-cu12"
+version = "2.27.5"
+description = "NVIDIA Collective Communication Library (NCCL) Runtime"
+optional = false
+python-versions = ">=3"
+groups = ["main"]
+markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""
+files = [
+ {file = "nvidia_nccl_cu12-2.27.5-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:31432ad4d1fb1004eb0c56203dc9bc2178a1ba69d1d9e02d64a6938ab5e40e7a"},
+ {file = "nvidia_nccl_cu12-2.27.5-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ad730cf15cb5d25fe849c6e6ca9eb5b76db16a80f13f425ac68d8e2e55624457"},
+]
+
+[[package]]
+name = "nvidia-nvjitlink-cu12"
+version = "12.8.93"
+description = "Nvidia JIT LTO Library"
+optional = false
+python-versions = ">=3"
+groups = ["main"]
+markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""
+files = [
+ {file = "nvidia_nvjitlink_cu12-12.8.93-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:81ff63371a7ebd6e6451970684f916be2eab07321b73c9d244dc2b4da7f73b88"},
+ {file = "nvidia_nvjitlink_cu12-12.8.93-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:adccd7161ace7261e01bb91e44e88da350895c270d23f744f0820c818b7229e7"},
+ {file = "nvidia_nvjitlink_cu12-12.8.93-py3-none-win_amd64.whl", hash = "sha256:bd93fbeeee850917903583587f4fc3a4eafa022e34572251368238ab5e6bd67f"},
+]
+
+[[package]]
+name = "nvidia-nvshmem-cu12"
+version = "3.3.20"
+description = "NVSHMEM creates a global address space that provides efficient and scalable communication for NVIDIA GPU clusters."
+optional = false
+python-versions = ">=3"
+groups = ["main"]
+markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""
+files = [
+ {file = "nvidia_nvshmem_cu12-3.3.20-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0b0b960da3842212758e4fa4696b94f129090b30e5122fea3c5345916545cff0"},
+ {file = "nvidia_nvshmem_cu12-3.3.20-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d00f26d3f9b2e3c3065be895e3059d6479ea5c638a3f38c9fec49b1b9dd7c1e5"},
+]
+
+[[package]]
+name = "nvidia-nvtx-cu12"
+version = "12.8.90"
+description = "NVIDIA Tools Extension"
+optional = false
+python-versions = ">=3"
+groups = ["main"]
+markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""
+files = [
+ {file = "nvidia_nvtx_cu12-12.8.90-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d7ad891da111ebafbf7e015d34879f7112832fc239ff0d7d776b6cb685274615"},
+ {file = "nvidia_nvtx_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5b17e2001cc0d751a5bc2c6ec6d26ad95913324a4adb86788c944f8ce9ba441f"},
+ {file = "nvidia_nvtx_cu12-12.8.90-py3-none-win_amd64.whl", hash = "sha256:619c8304aedc69f02ea82dd244541a83c3d9d40993381b3b590f1adaed3db41e"},
+]
+
+[[package]]
+name = "overrides"
+version = "7.7.0"
+description = "A decorator to automatically detect mismatch when overriding a method."
+optional = false
+python-versions = ">=3.6"
+groups = ["main"]
+markers = "python_version == \"3.11\""
+files = [
+ {file = "overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49"},
+ {file = "overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a"},
+]
+
+[[package]]
+name = "packaging"
+version = "25.0"
+description = "Core utilities for Python packages"
+optional = false
+python-versions = ">=3.8"
+groups = ["main"]
+files = [
+ {file = "packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484"},
+ {file = "packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f"},
+]
+
+[[package]]
+name = "pandas"
+version = "2.3.3"
+description = "Powerful data structures for data analysis, time series, and statistics"
+optional = false
+python-versions = ">=3.9"
+groups = ["main"]
+files = [
+ {file = "pandas-2.3.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:376c6446ae31770764215a6c937f72d917f214b43560603cd60da6408f183b6c"},
+ {file = "pandas-2.3.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e19d192383eab2f4ceb30b412b22ea30690c9e618f78870357ae1d682912015a"},
+ {file = "pandas-2.3.3-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5caf26f64126b6c7aec964f74266f435afef1c1b13da3b0636c7518a1fa3e2b1"},
+ {file = "pandas-2.3.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dd7478f1463441ae4ca7308a70e90b33470fa593429f9d4c578dd00d1fa78838"},
+ {file = "pandas-2.3.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4793891684806ae50d1288c9bae9330293ab4e083ccd1c5e383c34549c6e4250"},
+ {file = "pandas-2.3.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:28083c648d9a99a5dd035ec125d42439c6c1c525098c58af0fc38dd1a7a1b3d4"},
+ {file = "pandas-2.3.3-cp310-cp310-win_amd64.whl", hash = "sha256:503cf027cf9940d2ceaa1a93cfb5f8c8c7e6e90720a2850378f0b3f3b1e06826"},
+ {file = "pandas-2.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:602b8615ebcc4a0c1751e71840428ddebeb142ec02c786e8ad6b1ce3c8dec523"},
+ {file = "pandas-2.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8fe25fc7b623b0ef6b5009149627e34d2a4657e880948ec3c840e9402e5c1b45"},
+ {file = "pandas-2.3.3-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b468d3dad6ff947df92dcb32ede5b7bd41a9b3cceef0a30ed925f6d01fb8fa66"},
+ {file = "pandas-2.3.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b98560e98cb334799c0b07ca7967ac361a47326e9b4e5a7dfb5ab2b1c9d35a1b"},
+ {file = "pandas-2.3.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1d37b5848ba49824e5c30bedb9c830ab9b7751fd049bc7914533e01c65f79791"},
+ {file = "pandas-2.3.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:db4301b2d1f926ae677a751eb2bd0e8c5f5319c9cb3f88b0becbbb0b07b34151"},
+ {file = "pandas-2.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:f086f6fe114e19d92014a1966f43a3e62285109afe874f067f5abbdcbb10e59c"},
+ {file = "pandas-2.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d21f6d74eb1725c2efaa71a2bfc661a0689579b58e9c0ca58a739ff0b002b53"},
+ {file = "pandas-2.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3fd2f887589c7aa868e02632612ba39acb0b8948faf5cc58f0850e165bd46f35"},
+ {file = "pandas-2.3.3-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ecaf1e12bdc03c86ad4a7ea848d66c685cb6851d807a26aa245ca3d2017a1908"},
+ {file = "pandas-2.3.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b3d11d2fda7eb164ef27ffc14b4fcab16a80e1ce67e9f57e19ec0afaf715ba89"},
+ {file = "pandas-2.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a68e15f780eddf2b07d242e17a04aa187a7ee12b40b930bfdd78070556550e98"},
+ {file = "pandas-2.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:371a4ab48e950033bcf52b6527eccb564f52dc826c02afd9a1bc0ab731bba084"},
+ {file = "pandas-2.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:a16dcec078a01eeef8ee61bf64074b4e524a2a3f4b3be9326420cabe59c4778b"},
+ {file = "pandas-2.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:56851a737e3470de7fa88e6131f41281ed440d29a9268dcbf0002da5ac366713"},
+ {file = "pandas-2.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bdcd9d1167f4885211e401b3036c0c8d9e274eee67ea8d0758a256d60704cfe8"},
+ {file = "pandas-2.3.3-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e32e7cc9af0f1cc15548288a51a3b681cc2a219faa838e995f7dc53dbab1062d"},
+ {file = "pandas-2.3.3-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:318d77e0e42a628c04dc56bcef4b40de67918f7041c2b061af1da41dcff670ac"},
+ {file = "pandas-2.3.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4e0a175408804d566144e170d0476b15d78458795bb18f1304fb94160cabf40c"},
+ {file = "pandas-2.3.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:93c2d9ab0fc11822b5eece72ec9587e172f63cff87c00b062f6e37448ced4493"},
+ {file = "pandas-2.3.3-cp313-cp313-win_amd64.whl", hash = "sha256:f8bfc0e12dc78f777f323f55c58649591b2cd0c43534e8355c51d3fede5f4dee"},
+ {file = "pandas-2.3.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:75ea25f9529fdec2d2e93a42c523962261e567d250b0013b16210e1d40d7c2e5"},
+ {file = "pandas-2.3.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:74ecdf1d301e812db96a465a525952f4dde225fdb6d8e5a521d47e1f42041e21"},
+ {file = "pandas-2.3.3-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6435cb949cb34ec11cc9860246ccb2fdc9ecd742c12d3304989017d53f039a78"},
+ {file = "pandas-2.3.3-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:900f47d8f20860de523a1ac881c4c36d65efcb2eb850e6948140fa781736e110"},
+ {file = "pandas-2.3.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a45c765238e2ed7d7c608fc5bc4a6f88b642f2f01e70c0c23d2224dd21829d86"},
+ {file = "pandas-2.3.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:c4fc4c21971a1a9f4bdb4c73978c7f7256caa3e62b323f70d6cb80db583350bc"},
+ {file = "pandas-2.3.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:ee15f284898e7b246df8087fc82b87b01686f98ee67d85a17b7ab44143a3a9a0"},
+ {file = "pandas-2.3.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1611aedd912e1ff81ff41c745822980c49ce4a7907537be8692c8dbc31924593"},
+ {file = "pandas-2.3.3-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6d2cefc361461662ac48810cb14365a365ce864afe85ef1f447ff5a1e99ea81c"},
+ {file = "pandas-2.3.3-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ee67acbbf05014ea6c763beb097e03cd629961c8a632075eeb34247120abcb4b"},
+ {file = "pandas-2.3.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c46467899aaa4da076d5abc11084634e2d197e9460643dd455ac3db5856b24d6"},
+ {file = "pandas-2.3.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:6253c72c6a1d990a410bc7de641d34053364ef8bcd3126f7e7450125887dffe3"},
+ {file = "pandas-2.3.3-cp314-cp314-win_amd64.whl", hash = "sha256:1b07204a219b3b7350abaae088f451860223a52cfb8a6c53358e7948735158e5"},
+ {file = "pandas-2.3.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:2462b1a365b6109d275250baaae7b760fd25c726aaca0054649286bcfbb3e8ec"},
+ {file = "pandas-2.3.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:0242fe9a49aa8b4d78a4fa03acb397a58833ef6199e9aa40a95f027bb3a1b6e7"},
+ {file = "pandas-2.3.3-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a21d830e78df0a515db2b3d2f5570610f5e6bd2e27749770e8bb7b524b89b450"},
+ {file = "pandas-2.3.3-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2e3ebdb170b5ef78f19bfb71b0dc5dc58775032361fa188e814959b74d726dd5"},
+ {file = "pandas-2.3.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:d051c0e065b94b7a3cea50eb1ec32e912cd96dba41647eb24104b6c6c14c5788"},
+ {file = "pandas-2.3.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:3869faf4bd07b3b66a9f462417d0ca3a9df29a9f6abd5d0d0dbab15dac7abe87"},
+ {file = "pandas-2.3.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c503ba5216814e295f40711470446bc3fd00f0faea8a086cbc688808e26f92a2"},
+ {file = "pandas-2.3.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a637c5cdfa04b6d6e2ecedcb81fc52ffb0fd78ce2ebccc9ea964df9f658de8c8"},
+ {file = "pandas-2.3.3-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:854d00d556406bffe66a4c0802f334c9ad5a96b4f1f868adf036a21b11ef13ff"},
+ {file = "pandas-2.3.3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bf1f8a81d04ca90e32a0aceb819d34dbd378a98bf923b6398b9a3ec0bf44de29"},
+ {file = "pandas-2.3.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:23ebd657a4d38268c7dfbdf089fbc31ea709d82e4923c5ffd4fbd5747133ce73"},
+ {file = "pandas-2.3.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5554c929ccc317d41a5e3d1234f3be588248e61f08a74dd17c9eabb535777dc9"},
+ {file = "pandas-2.3.3-cp39-cp39-win_amd64.whl", hash = "sha256:d3e28b3e83862ccf4d85ff19cf8c20b2ae7e503881711ff2d534dc8f761131aa"},
+ {file = "pandas-2.3.3.tar.gz", hash = "sha256:e05e1af93b977f7eafa636d043f9f94c7ee3ac81af99c13508215942e64c993b"},
+]
+
+[package.dependencies]
+numpy = [
+ {version = ">=1.23.2", markers = "python_version == \"3.11\""},
+ {version = ">=1.26.0", markers = "python_version >= \"3.12\""},
+]
+python-dateutil = ">=2.8.2"
+pytz = ">=2020.1"
+tzdata = ">=2022.7"
+
+[package.extras]
+all = ["PyQt5 (>=5.15.9)", "SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)", "beautifulsoup4 (>=4.11.2)", "bottleneck (>=1.3.6)", "dataframe-api-compat (>=0.1.7)", "fastparquet (>=2022.12.0)", "fsspec (>=2022.11.0)", "gcsfs (>=2022.11.0)", "html5lib (>=1.1)", "hypothesis (>=6.46.1)", "jinja2 (>=3.1.2)", "lxml (>=4.9.2)", "matplotlib (>=3.6.3)", "numba (>=0.56.4)", "numexpr (>=2.8.4)", "odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "pandas-gbq (>=0.19.0)", "psycopg2 (>=2.9.6)", "pyarrow (>=10.0.1)", "pymysql (>=1.0.2)", "pyreadstat (>=1.2.0)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "qtpy (>=2.3.0)", "s3fs (>=2022.11.0)", "scipy (>=1.10.0)", "tables (>=3.8.0)", "tabulate (>=0.9.0)", "xarray (>=2022.12.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)", "zstandard (>=0.19.0)"]
+aws = ["s3fs (>=2022.11.0)"]
+clipboard = ["PyQt5 (>=5.15.9)", "qtpy (>=2.3.0)"]
+compression = ["zstandard (>=0.19.0)"]
+computation = ["scipy (>=1.10.0)", "xarray (>=2022.12.0)"]
+consortium-standard = ["dataframe-api-compat (>=0.1.7)"]
+excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)"]
+feather = ["pyarrow (>=10.0.1)"]
+fss = ["fsspec (>=2022.11.0)"]
+gcp = ["gcsfs (>=2022.11.0)", "pandas-gbq (>=0.19.0)"]
+hdf5 = ["tables (>=3.8.0)"]
+html = ["beautifulsoup4 (>=4.11.2)", "html5lib (>=1.1)", "lxml (>=4.9.2)"]
+mysql = ["SQLAlchemy (>=2.0.0)", "pymysql (>=1.0.2)"]
+output-formatting = ["jinja2 (>=3.1.2)", "tabulate (>=0.9.0)"]
+parquet = ["pyarrow (>=10.0.1)"]
+performance = ["bottleneck (>=1.3.6)", "numba (>=0.56.4)", "numexpr (>=2.8.4)"]
+plot = ["matplotlib (>=3.6.3)"]
+postgresql = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "psycopg2 (>=2.9.6)"]
+pyarrow = ["pyarrow (>=10.0.1)"]
+spss = ["pyreadstat (>=1.2.0)"]
+sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)"]
+test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"]
+xml = ["lxml (>=4.9.2)"]
+
+[[package]]
+name = "pandocfilters"
+version = "1.5.1"
+description = "Utilities for writing pandoc filters in python"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+groups = ["main"]
+files = [
+ {file = "pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc"},
+ {file = "pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e"},
+]
+
+[[package]]
+name = "parso"
+version = "0.8.5"
+description = "A Python Parser"
+optional = false
+python-versions = ">=3.6"
+groups = ["main"]
+files = [
+ {file = "parso-0.8.5-py2.py3-none-any.whl", hash = "sha256:646204b5ee239c396d040b90f9e272e9a8017c630092bf59980beb62fd033887"},
+ {file = "parso-0.8.5.tar.gz", hash = "sha256:034d7354a9a018bdce352f48b2a8a450f05e9d6ee85db84764e9b6bd96dafe5a"},
+]
+
+[package.extras]
+qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"]
+testing = ["docopt", "pytest"]
+
+[[package]]
+name = "pexpect"
+version = "4.9.0"
+description = "Pexpect allows easy control of interactive console applications."
+optional = false
+python-versions = "*"
+groups = ["main"]
+markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\""
+files = [
+ {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"},
+ {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"},
+]
+
+[package.dependencies]
+ptyprocess = ">=0.5"
+
+[[package]]
+name = "pillow"
+version = "12.1.0"
+description = "Python Imaging Library (fork)"
+optional = false
+python-versions = ">=3.10"
+groups = ["main"]
+files = [
+ {file = "pillow-12.1.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:fb125d860738a09d363a88daa0f59c4533529a90e564785e20fe875b200b6dbd"},
+ {file = "pillow-12.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cad302dc10fac357d3467a74a9561c90609768a6f73a1923b0fd851b6486f8b0"},
+ {file = "pillow-12.1.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a40905599d8079e09f25027423aed94f2823adaf2868940de991e53a449e14a8"},
+ {file = "pillow-12.1.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:92a7fe4225365c5e3a8e598982269c6d6698d3e783b3b1ae979e7819f9cd55c1"},
+ {file = "pillow-12.1.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f10c98f49227ed8383d28174ee95155a675c4ed7f85e2e573b04414f7e371bda"},
+ {file = "pillow-12.1.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8637e29d13f478bc4f153d8daa9ffb16455f0a6cb287da1b432fdad2bfbd66c7"},
+ {file = "pillow-12.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:21e686a21078b0f9cb8c8a961d99e6a4ddb88e0fc5ea6e130172ddddc2e5221a"},
+ {file = "pillow-12.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:2415373395a831f53933c23ce051021e79c8cd7979822d8cc478547a3f4da8ef"},
+ {file = "pillow-12.1.0-cp310-cp310-win32.whl", hash = "sha256:e75d3dba8fc1ddfec0cd752108f93b83b4f8d6ab40e524a95d35f016b9683b09"},
+ {file = "pillow-12.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:64efdf00c09e31efd754448a383ea241f55a994fd079866b92d2bbff598aad91"},
+ {file = "pillow-12.1.0-cp310-cp310-win_arm64.whl", hash = "sha256:f188028b5af6b8fb2e9a76ac0f841a575bd1bd396e46ef0840d9b88a48fdbcea"},
+ {file = "pillow-12.1.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:a83e0850cb8f5ac975291ebfc4170ba481f41a28065277f7f735c202cd8e0af3"},
+ {file = "pillow-12.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b6e53e82ec2db0717eabb276aa56cf4e500c9a7cec2c2e189b55c24f65a3e8c0"},
+ {file = "pillow-12.1.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:40a8e3b9e8773876d6e30daed22f016509e3987bab61b3b7fe309d7019a87451"},
+ {file = "pillow-12.1.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:800429ac32c9b72909c671aaf17ecd13110f823ddb7db4dfef412a5587c2c24e"},
+ {file = "pillow-12.1.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0b022eaaf709541b391ee069f0022ee5b36c709df71986e3f7be312e46f42c84"},
+ {file = "pillow-12.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1f345e7bc9d7f368887c712aa5054558bad44d2a301ddf9248599f4161abc7c0"},
+ {file = "pillow-12.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d70347c8a5b7ccd803ec0c85c8709f036e6348f1e6a5bf048ecd9c64d3550b8b"},
+ {file = "pillow-12.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1fcc52d86ce7a34fd17cb04e87cfdb164648a3662a6f20565910a99653d66c18"},
+ {file = "pillow-12.1.0-cp311-cp311-win32.whl", hash = "sha256:3ffaa2f0659e2f740473bcf03c702c39a8d4b2b7ffc629052028764324842c64"},
+ {file = "pillow-12.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:806f3987ffe10e867bab0ddad45df1148a2b98221798457fa097ad85d6e8bc75"},
+ {file = "pillow-12.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:9f5fefaca968e700ad1a4a9de98bf0869a94e397fe3524c4c9450c1445252304"},
+ {file = "pillow-12.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a332ac4ccb84b6dde65dbace8431f3af08874bf9770719d32a635c4ef411b18b"},
+ {file = "pillow-12.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:907bfa8a9cb790748a9aa4513e37c88c59660da3bcfffbd24a7d9e6abf224551"},
+ {file = "pillow-12.1.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:efdc140e7b63b8f739d09a99033aa430accce485ff78e6d311973a67b6bf3208"},
+ {file = "pillow-12.1.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:bef9768cab184e7ae6e559c032e95ba8d07b3023c289f79a2bd36e8bf85605a5"},
+ {file = "pillow-12.1.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:742aea052cf5ab5034a53c3846165bc3ce88d7c38e954120db0ab867ca242661"},
+ {file = "pillow-12.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a6dfc2af5b082b635af6e08e0d1f9f1c4e04d17d4e2ca0ef96131e85eda6eb17"},
+ {file = "pillow-12.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:609e89d9f90b581c8d16358c9087df76024cf058fa693dd3e1e1620823f39670"},
+ {file = "pillow-12.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:43b4899cfd091a9693a1278c4982f3e50f7fb7cff5153b05174b4afc9593b616"},
+ {file = "pillow-12.1.0-cp312-cp312-win32.whl", hash = "sha256:aa0c9cc0b82b14766a99fbe6084409972266e82f459821cd26997a488a7261a7"},
+ {file = "pillow-12.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:d70534cea9e7966169ad29a903b99fc507e932069a881d0965a1a84bb57f6c6d"},
+ {file = "pillow-12.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:65b80c1ee7e14a87d6a068dd3b0aea268ffcabfe0498d38661b00c5b4b22e74c"},
+ {file = "pillow-12.1.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:7b5dd7cbae20285cdb597b10eb5a2c13aa9de6cde9bb64a3c1317427b1db1ae1"},
+ {file = "pillow-12.1.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:29a4cef9cb672363926f0470afc516dbf7305a14d8c54f7abbb5c199cd8f8179"},
+ {file = "pillow-12.1.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:681088909d7e8fa9e31b9799aaa59ba5234c58e5e4f1951b4c4d1082a2e980e0"},
+ {file = "pillow-12.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:983976c2ab753166dc66d36af6e8ec15bb511e4a25856e2227e5f7e00a160587"},
+ {file = "pillow-12.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:db44d5c160a90df2d24a24760bbd37607d53da0b34fb546c4c232af7192298ac"},
+ {file = "pillow-12.1.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:6b7a9d1db5dad90e2991645874f708e87d9a3c370c243c2d7684d28f7e133e6b"},
+ {file = "pillow-12.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6258f3260986990ba2fa8a874f8b6e808cf5abb51a94015ca3dc3c68aa4f30ea"},
+ {file = "pillow-12.1.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e115c15e3bc727b1ca3e641a909f77f8ca72a64fff150f666fcc85e57701c26c"},
+ {file = "pillow-12.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6741e6f3074a35e47c77b23a4e4f2d90db3ed905cb1c5e6e0d49bff2045632bc"},
+ {file = "pillow-12.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:935b9d1aed48fcfb3f838caac506f38e29621b44ccc4f8a64d575cb1b2a88644"},
+ {file = "pillow-12.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5fee4c04aad8932da9f8f710af2c1a15a83582cfb884152a9caa79d4efcdbf9c"},
+ {file = "pillow-12.1.0-cp313-cp313-win32.whl", hash = "sha256:a786bf667724d84aa29b5db1c61b7bfdde380202aaca12c3461afd6b71743171"},
+ {file = "pillow-12.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:461f9dfdafa394c59cd6d818bdfdbab4028b83b02caadaff0ffd433faf4c9a7a"},
+ {file = "pillow-12.1.0-cp313-cp313-win_arm64.whl", hash = "sha256:9212d6b86917a2300669511ed094a9406888362e085f2431a7da985a6b124f45"},
+ {file = "pillow-12.1.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:00162e9ca6d22b7c3ee8e61faa3c3253cd19b6a37f126cad04f2f88b306f557d"},
+ {file = "pillow-12.1.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:7d6daa89a00b58c37cb1747ec9fb7ac3bc5ffd5949f5888657dfddde6d1312e0"},
+ {file = "pillow-12.1.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e2479c7f02f9d505682dc47df8c0ea1fc5e264c4d1629a5d63fe3e2334b89554"},
+ {file = "pillow-12.1.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f188d580bd870cda1e15183790d1cc2fa78f666e76077d103edf048eed9c356e"},
+ {file = "pillow-12.1.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0fde7ec5538ab5095cc02df38ee99b0443ff0e1c847a045554cf5f9af1f4aa82"},
+ {file = "pillow-12.1.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0ed07dca4a8464bada6139ab38f5382f83e5f111698caf3191cb8dbf27d908b4"},
+ {file = "pillow-12.1.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:f45bd71d1fa5e5749587613037b172e0b3b23159d1c00ef2fc920da6f470e6f0"},
+ {file = "pillow-12.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:277518bf4fe74aa91489e1b20577473b19ee70fb97c374aa50830b279f25841b"},
+ {file = "pillow-12.1.0-cp313-cp313t-win32.whl", hash = "sha256:7315f9137087c4e0ee73a761b163fc9aa3b19f5f606a7fc08d83fd3e4379af65"},
+ {file = "pillow-12.1.0-cp313-cp313t-win_amd64.whl", hash = "sha256:0ddedfaa8b5f0b4ffbc2fa87b556dc59f6bb4ecb14a53b33f9189713ae8053c0"},
+ {file = "pillow-12.1.0-cp313-cp313t-win_arm64.whl", hash = "sha256:80941e6d573197a0c28f394753de529bb436b1ca990ed6e765cf42426abc39f8"},
+ {file = "pillow-12.1.0-cp314-cp314-ios_13_0_arm64_iphoneos.whl", hash = "sha256:5cb7bc1966d031aec37ddb9dcf15c2da5b2e9f7cc3ca7c54473a20a927e1eb91"},
+ {file = "pillow-12.1.0-cp314-cp314-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:97e9993d5ed946aba26baf9c1e8cf18adbab584b99f452ee72f7ee8acb882796"},
+ {file = "pillow-12.1.0-cp314-cp314-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:414b9a78e14ffeb98128863314e62c3f24b8a86081066625700b7985b3f529bd"},
+ {file = "pillow-12.1.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:e6bdb408f7c9dd2a5ff2b14a3b0bb6d4deb29fb9961e6eb3ae2031ae9a5cec13"},
+ {file = "pillow-12.1.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:3413c2ae377550f5487991d444428f1a8ae92784aac79caa8b1e3b89b175f77e"},
+ {file = "pillow-12.1.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e5dcbe95016e88437ecf33544ba5db21ef1b8dd6e1b434a2cb2a3d605299e643"},
+ {file = "pillow-12.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d0a7735df32ccbcc98b98a1ac785cc4b19b580be1bdf0aeb5c03223220ea09d5"},
+ {file = "pillow-12.1.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0c27407a2d1b96774cbc4a7594129cc027339fd800cd081e44497722ea1179de"},
+ {file = "pillow-12.1.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:15c794d74303828eaa957ff8070846d0efe8c630901a1c753fdc63850e19ecd9"},
+ {file = "pillow-12.1.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c990547452ee2800d8506c4150280757f88532f3de2a58e3022e9b179107862a"},
+ {file = "pillow-12.1.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:b63e13dd27da389ed9475b3d28510f0f954bca0041e8e551b2a4eb1eab56a39a"},
+ {file = "pillow-12.1.0-cp314-cp314-win32.whl", hash = "sha256:1a949604f73eb07a8adab38c4fe50791f9919344398bdc8ac6b307f755fc7030"},
+ {file = "pillow-12.1.0-cp314-cp314-win_amd64.whl", hash = "sha256:4f9f6a650743f0ddee5593ac9e954ba1bdbc5e150bc066586d4f26127853ab94"},
+ {file = "pillow-12.1.0-cp314-cp314-win_arm64.whl", hash = "sha256:808b99604f7873c800c4840f55ff389936ef1948e4e87645eaf3fccbc8477ac4"},
+ {file = "pillow-12.1.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:bc11908616c8a283cf7d664f77411a5ed2a02009b0097ff8abbba5e79128ccf2"},
+ {file = "pillow-12.1.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:896866d2d436563fa2a43a9d72f417874f16b5545955c54a64941e87c1376c61"},
+ {file = "pillow-12.1.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8e178e3e99d3c0ea8fc64b88447f7cac8ccf058af422a6cedc690d0eadd98c51"},
+ {file = "pillow-12.1.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:079af2fb0c599c2ec144ba2c02766d1b55498e373b3ac64687e43849fbbef5bc"},
+ {file = "pillow-12.1.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bdec5e43377761c5dbca620efb69a77f6855c5a379e32ac5b158f54c84212b14"},
+ {file = "pillow-12.1.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:565c986f4b45c020f5421a4cea13ef294dde9509a8577f29b2fc5edc7587fff8"},
+ {file = "pillow-12.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:43aca0a55ce1eefc0aefa6253661cb54571857b1a7b2964bd8a1e3ef4b729924"},
+ {file = "pillow-12.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:0deedf2ea233722476b3a81e8cdfbad786f7adbed5d848469fa59fe52396e4ef"},
+ {file = "pillow-12.1.0-cp314-cp314t-win32.whl", hash = "sha256:b17fbdbe01c196e7e159aacb889e091f28e61020a8abeac07b68079b6e626988"},
+ {file = "pillow-12.1.0-cp314-cp314t-win_amd64.whl", hash = "sha256:27b9baecb428899db6c0de572d6d305cfaf38ca1596b5c0542a5182e3e74e8c6"},
+ {file = "pillow-12.1.0-cp314-cp314t-win_arm64.whl", hash = "sha256:f61333d817698bdcdd0f9d7793e365ac3d2a21c1f1eb02b32ad6aefb8d8ea831"},
+ {file = "pillow-12.1.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:ca94b6aac0d7af2a10ba08c0f888b3d5114439b6b3ef39968378723622fed377"},
+ {file = "pillow-12.1.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:351889afef0f485b84078ea40fe33727a0492b9af3904661b0abbafee0355b72"},
+ {file = "pillow-12.1.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:bb0984b30e973f7e2884362b7d23d0a348c7143ee559f38ef3eaab640144204c"},
+ {file = "pillow-12.1.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:84cabc7095dd535ca934d57e9ce2a72ffd216e435a84acb06b2277b1de2689bd"},
+ {file = "pillow-12.1.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53d8b764726d3af1a138dd353116f774e3862ec7e3794e0c8781e30db0f35dfc"},
+ {file = "pillow-12.1.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5da841d81b1a05ef940a8567da92decaa15bc4d7dedb540a8c219ad83d91808a"},
+ {file = "pillow-12.1.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:75af0b4c229ac519b155028fa1be632d812a519abba9b46b20e50c6caa184f19"},
+ {file = "pillow-12.1.0.tar.gz", hash = "sha256:5c5ae0a06e9ea030ab786b0251b32c7e4ce10e58d983c0d5c56029455180b5b9"},
+]
+
+[package.extras]
+docs = ["furo", "olefile", "sphinx (>=8.2)", "sphinx-autobuild", "sphinx-copybutton", "sphinx-inline-tabs", "sphinxext-opengraph"]
+fpx = ["olefile"]
+mic = ["olefile"]
+test-arrow = ["arro3-compute", "arro3-core", "nanoarrow", "pyarrow"]
+tests = ["check-manifest", "coverage (>=7.4.2)", "defusedxml", "markdown2", "olefile", "packaging", "pyroma (>=5)", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "trove-classifiers (>=2024.10.12)"]
+xmp = ["defusedxml"]
+
+[[package]]
+name = "platformdirs"
+version = "4.5.1"
+description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`."
+optional = false
+python-versions = ">=3.10"
+groups = ["main"]
+files = [
+ {file = "platformdirs-4.5.1-py3-none-any.whl", hash = "sha256:d03afa3963c806a9bed9d5125c8f4cb2fdaf74a55ab60e5d59b3fde758104d31"},
+ {file = "platformdirs-4.5.1.tar.gz", hash = "sha256:61d5cdcc6065745cdd94f0f878977f8de9437be93de97c1c12f853c9c0cdcbda"},
+]
+
+[package.extras]
+docs = ["furo (>=2025.9.25)", "proselint (>=0.14)", "sphinx (>=8.2.3)", "sphinx-autodoc-typehints (>=3.2)"]
+test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.4.2)", "pytest-cov (>=7)", "pytest-mock (>=3.15.1)"]
+type = ["mypy (>=1.18.2)"]
+
+[[package]]
+name = "prometheus-client"
+version = "0.23.1"
+description = "Python client for the Prometheus monitoring system."
+optional = false
+python-versions = ">=3.9"
+groups = ["main"]
+files = [
+ {file = "prometheus_client-0.23.1-py3-none-any.whl", hash = "sha256:dd1913e6e76b59cfe44e7a4b83e01afc9873c1bdfd2ed8739f1e76aeca115f99"},
+ {file = "prometheus_client-0.23.1.tar.gz", hash = "sha256:6ae8f9081eaaaf153a2e959d2e6c4f4fb57b12ef76c8c7980202f1e57b48b2ce"},
+]
+
+[package.extras]
+twisted = ["twisted"]
+
+[[package]]
+name = "prompt-toolkit"
+version = "3.0.52"
+description = "Library for building powerful interactive command lines in Python"
+optional = false
+python-versions = ">=3.8"
+groups = ["main"]
+files = [
+ {file = "prompt_toolkit-3.0.52-py3-none-any.whl", hash = "sha256:9aac639a3bbd33284347de5ad8d68ecc044b91a762dc39b7c21095fcd6a19955"},
+ {file = "prompt_toolkit-3.0.52.tar.gz", hash = "sha256:28cde192929c8e7321de85de1ddbe736f1375148b02f2e17edd840042b1be855"},
+]
+
+[package.dependencies]
+wcwidth = "*"
+
+[[package]]
+name = "psutil"
+version = "7.2.1"
+description = "Cross-platform lib for process and system monitoring."
+optional = false
+python-versions = ">=3.6"
+groups = ["main"]
+files = [
+ {file = "psutil-7.2.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:ba9f33bb525b14c3ea563b2fd521a84d2fa214ec59e3e6a2858f78d0844dd60d"},
+ {file = "psutil-7.2.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:81442dac7abfc2f4f4385ea9e12ddf5a796721c0f6133260687fec5c3780fa49"},
+ {file = "psutil-7.2.1-cp313-cp313t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ea46c0d060491051d39f0d2cff4f98d5c72b288289f57a21556cc7d504db37fc"},
+ {file = "psutil-7.2.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:35630d5af80d5d0d49cfc4d64c1c13838baf6717a13effb35869a5919b854cdf"},
+ {file = "psutil-7.2.1-cp313-cp313t-win_amd64.whl", hash = "sha256:923f8653416604e356073e6e0bccbe7c09990acef442def2f5640dd0faa9689f"},
+ {file = "psutil-7.2.1-cp313-cp313t-win_arm64.whl", hash = "sha256:cfbe6b40ca48019a51827f20d830887b3107a74a79b01ceb8cc8de4ccb17b672"},
+ {file = "psutil-7.2.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:494c513ccc53225ae23eec7fe6e1482f1b8a44674241b54561f755a898650679"},
+ {file = "psutil-7.2.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:3fce5f92c22b00cdefd1645aa58ab4877a01679e901555067b1bd77039aa589f"},
+ {file = "psutil-7.2.1-cp314-cp314t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:93f3f7b0bb07711b49626e7940d6fe52aa9940ad86e8f7e74842e73189712129"},
+ {file = "psutil-7.2.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d34d2ca888208eea2b5c68186841336a7f5e0b990edec929be909353a202768a"},
+ {file = "psutil-7.2.1-cp314-cp314t-win_amd64.whl", hash = "sha256:2ceae842a78d1603753561132d5ad1b2f8a7979cb0c283f5b52fb4e6e14b1a79"},
+ {file = "psutil-7.2.1-cp314-cp314t-win_arm64.whl", hash = "sha256:08a2f175e48a898c8eb8eace45ce01777f4785bc744c90aa2cc7f2fa5462a266"},
+ {file = "psutil-7.2.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:b2e953fcfaedcfbc952b44744f22d16575d3aa78eb4f51ae74165b4e96e55f42"},
+ {file = "psutil-7.2.1-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:05cc68dbb8c174828624062e73078e7e35406f4ca2d0866c272c2410d8ef06d1"},
+ {file = "psutil-7.2.1-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5e38404ca2bb30ed7267a46c02f06ff842e92da3bb8c5bfdadbd35a5722314d8"},
+ {file = "psutil-7.2.1-cp36-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ab2b98c9fc19f13f59628d94df5cc4cc4844bc572467d113a8b517d634e362c6"},
+ {file = "psutil-7.2.1-cp36-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:f78baafb38436d5a128f837fab2d92c276dfb48af01a240b861ae02b2413ada8"},
+ {file = "psutil-7.2.1-cp36-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:99a4cd17a5fdd1f3d014396502daa70b5ec21bf4ffe38393e152f8e449757d67"},
+ {file = "psutil-7.2.1-cp37-abi3-win_amd64.whl", hash = "sha256:b1b0671619343aa71c20ff9767eced0483e4fc9e1f489d50923738caf6a03c17"},
+ {file = "psutil-7.2.1-cp37-abi3-win_arm64.whl", hash = "sha256:0d67c1822c355aa6f7314d92018fb4268a76668a536f133599b91edd48759442"},
+ {file = "psutil-7.2.1.tar.gz", hash = "sha256:f7583aec590485b43ca601dd9cea0dcd65bd7bb21d30ef4ddbf4ea6b5ed1bdd3"},
+]
+
+[package.extras]
+dev = ["abi3audit", "black", "check-manifest", "coverage", "packaging", "psleak", "pylint", "pyperf", "pypinfo", "pytest", "pytest-cov", "pytest-instafail", "pytest-xdist", "requests", "rstcheck", "ruff", "setuptools", "sphinx", "sphinx_rtd_theme", "toml-sort", "twine", "validate-pyproject[all]", "virtualenv", "vulture", "wheel"]
+test = ["psleak", "pytest", "pytest-instafail", "pytest-xdist", "setuptools"]
+
+[[package]]
+name = "ptyprocess"
+version = "0.7.0"
+description = "Run a subprocess in a pseudo terminal"
+optional = false
+python-versions = "*"
+groups = ["main"]
+markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\" or os_name != \"nt\""
+files = [
+ {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"},
+ {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"},
+]
+
+[[package]]
+name = "pure-eval"
+version = "0.2.3"
+description = "Safely evaluate AST nodes without side effects"
+optional = false
+python-versions = "*"
+groups = ["main"]
+files = [
+ {file = "pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0"},
+ {file = "pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42"},
+]
+
+[package.extras]
+tests = ["pytest"]
+
+[[package]]
+name = "pycparser"
+version = "2.23"
+description = "C parser in Python"
+optional = false
+python-versions = ">=3.8"
+groups = ["main"]
+markers = "implementation_name != \"PyPy\""
+files = [
+ {file = "pycparser-2.23-py3-none-any.whl", hash = "sha256:e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934"},
+ {file = "pycparser-2.23.tar.gz", hash = "sha256:78816d4f24add8f10a06d6f05b4d424ad9e96cfebf68a4ddc99c65c0720d00c2"},
+]
+
+[[package]]
+name = "pygments"
+version = "2.19.2"
+description = "Pygments is a syntax highlighting package written in Python."
+optional = false
+python-versions = ">=3.8"
+groups = ["main"]
+files = [
+ {file = "pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b"},
+ {file = "pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887"},
+]
+
+[package.extras]
+windows-terminal = ["colorama (>=0.4.6)"]
+
+[[package]]
+name = "pyparsing"
+version = "3.3.1"
+description = "pyparsing - Classes and methods to define and execute parsing grammars"
+optional = false
+python-versions = ">=3.9"
+groups = ["main"]
+files = [
+ {file = "pyparsing-3.3.1-py3-none-any.whl", hash = "sha256:023b5e7e5520ad96642e2c6db4cb683d3970bd640cdf7115049a6e9c3682df82"},
+ {file = "pyparsing-3.3.1.tar.gz", hash = "sha256:47fad0f17ac1e2cad3de3b458570fbc9b03560aa029ed5e16ee5554da9a2251c"},
+]
+
+[package.extras]
+diagrams = ["jinja2", "railroad-diagrams"]
+
+[[package]]
+name = "python-dateutil"
+version = "2.9.0.post0"
+description = "Extensions to the standard Python datetime module"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
+groups = ["main"]
+files = [
+ {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]
+six = ">=1.5"
+
+[[package]]
+name = "python-json-logger"
+version = "4.0.0"
+description = "JSON Log Formatter for the Python Logging Package"
+optional = false
+python-versions = ">=3.8"
+groups = ["main"]
+files = [
+ {file = "python_json_logger-4.0.0-py3-none-any.whl", hash = "sha256:af09c9daf6a813aa4cc7180395f50f2a9e5fa056034c9953aec92e381c5ba1e2"},
+ {file = "python_json_logger-4.0.0.tar.gz", hash = "sha256:f58e68eb46e1faed27e0f574a55a0455eecd7b8a5b88b85a784519ba3cff047f"},
+]
+
+[package.extras]
+dev = ["backports.zoneinfo ; python_version < \"3.9\"", "black", "build", "freezegun", "mdx_truly_sane_lists", "mike", "mkdocs", "mkdocs-awesome-pages-plugin", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-material (>=8.5)", "mkdocstrings[python]", "msgspec ; implementation_name != \"pypy\"", "mypy", "orjson ; implementation_name != \"pypy\"", "pylint", "pytest", "tzdata", "validate-pyproject[all]"]
+
+[[package]]
+name = "pytz"
+version = "2025.2"
+description = "World timezone definitions, modern and historical"
+optional = false
+python-versions = "*"
+groups = ["main"]
+files = [
+ {file = "pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00"},
+ {file = "pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3"},
+]
+
+[[package]]
+name = "pywinpty"
+version = "3.0.2"
+description = "Pseudo terminal support for Windows from Python."
+optional = false
+python-versions = ">=3.9"
+groups = ["main"]
+markers = "os_name == \"nt\""
+files = [
+ {file = "pywinpty-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:65db57fd3387d71e8372b6a54269cbcd0f6dfa6d4616a29e0af749ec19f5c558"},
+ {file = "pywinpty-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:327790d70e4c841ebd9d0f295a780177149aeb405bca44c7115a3de5c2054b23"},
+ {file = "pywinpty-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:99fdd9b455f0ad6419aba6731a7a0d2f88ced83c3c94a80ff9533d95fa8d8a9e"},
+ {file = "pywinpty-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:18f78b81e4cfee6aabe7ea8688441d30247b73e52cd9657138015c5f4ee13a51"},
+ {file = "pywinpty-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:663383ecfab7fc382cc97ea5c4f7f0bb32c2f889259855df6ea34e5df42d305b"},
+ {file = "pywinpty-3.0.2-cp314-cp314-win_amd64.whl", hash = "sha256:28297cecc37bee9f24d8889e47231972d6e9e84f7b668909de54f36ca785029a"},
+ {file = "pywinpty-3.0.2-cp314-cp314t-win_amd64.whl", hash = "sha256:34b55ae9a1b671fe3eae071d86618110538e8eaad18fcb1531c0830b91a82767"},
+ {file = "pywinpty-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:3962daf801bc38dd4de872108c424b5338c9a46c6efca5761854cd66370a9022"},
+ {file = "pywinpty-3.0.2.tar.gz", hash = "sha256:1505cc4cb248af42cb6285a65c9c2086ee9e7e574078ee60933d5d7fa86fb004"},
+]
+
+[[package]]
+name = "pyyaml"
+version = "6.0.3"
+description = "YAML parser and emitter for Python"
+optional = false
+python-versions = ">=3.8"
+groups = ["main"]
+files = [
+ {file = "PyYAML-6.0.3-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:c2514fceb77bc5e7a2f7adfaa1feb2fb311607c9cb518dbc378688ec73d8292f"},
+ {file = "PyYAML-6.0.3-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9c57bb8c96f6d1808c030b1687b9b5fb476abaa47f0db9c0101f5e9f394e97f4"},
+ {file = "PyYAML-6.0.3-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:efd7b85f94a6f21e4932043973a7ba2613b059c4a000551892ac9f1d11f5baf3"},
+ {file = "PyYAML-6.0.3-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:22ba7cfcad58ef3ecddc7ed1db3409af68d023b7f940da23c6c2a1890976eda6"},
+ {file = "PyYAML-6.0.3-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:6344df0d5755a2c9a276d4473ae6b90647e216ab4757f8426893b5dd2ac3f369"},
+ {file = "PyYAML-6.0.3-cp38-cp38-win32.whl", hash = "sha256:3ff07ec89bae51176c0549bc4c63aa6202991da2d9a6129d7aef7f1407d3f295"},
+ {file = "PyYAML-6.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:5cf4e27da7e3fbed4d6c3d8e797387aaad68102272f8f9752883bc32d61cb87b"},
+ {file = "pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b"},
+ {file = "pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956"},
+ {file = "pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8"},
+ {file = "pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198"},
+ {file = "pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b"},
+ {file = "pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0"},
+ {file = "pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69"},
+ {file = "pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e"},
+ {file = "pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c"},
+ {file = "pyyaml-6.0.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:44edc647873928551a01e7a563d7452ccdebee747728c1080d881d68af7b997e"},
+ {file = "pyyaml-6.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:652cb6edd41e718550aad172851962662ff2681490a8a711af6a4d288dd96824"},
+ {file = "pyyaml-6.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:10892704fc220243f5305762e276552a0395f7beb4dbf9b14ec8fd43b57f126c"},
+ {file = "pyyaml-6.0.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:850774a7879607d3a6f50d36d04f00ee69e7fc816450e5f7e58d7f17f1ae5c00"},
+ {file = "pyyaml-6.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b8bb0864c5a28024fac8a632c443c87c5aa6f215c0b126c449ae1a150412f31d"},
+ {file = "pyyaml-6.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1d37d57ad971609cf3c53ba6a7e365e40660e3be0e5175fa9f2365a379d6095a"},
+ {file = "pyyaml-6.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:37503bfbfc9d2c40b344d06b2199cf0e96e97957ab1c1b546fd4f87e53e5d3e4"},
+ {file = "pyyaml-6.0.3-cp311-cp311-win32.whl", hash = "sha256:8098f252adfa6c80ab48096053f512f2321f0b998f98150cea9bd23d83e1467b"},
+ {file = "pyyaml-6.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:9f3bfb4965eb874431221a3ff3fdcddc7e74e3b07799e0e84ca4a0f867d449bf"},
+ {file = "pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196"},
+ {file = "pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0"},
+ {file = "pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28"},
+ {file = "pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c"},
+ {file = "pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc"},
+ {file = "pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e"},
+ {file = "pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea"},
+ {file = "pyyaml-6.0.3-cp312-cp312-win32.whl", hash = "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5"},
+ {file = "pyyaml-6.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b"},
+ {file = "pyyaml-6.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd"},
+ {file = "pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8"},
+ {file = "pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1"},
+ {file = "pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c"},
+ {file = "pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5"},
+ {file = "pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6"},
+ {file = "pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6"},
+ {file = "pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be"},
+ {file = "pyyaml-6.0.3-cp313-cp313-win32.whl", hash = "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26"},
+ {file = "pyyaml-6.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c"},
+ {file = "pyyaml-6.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb"},
+ {file = "pyyaml-6.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac"},
+ {file = "pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310"},
+ {file = "pyyaml-6.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7"},
+ {file = "pyyaml-6.0.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788"},
+ {file = "pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5"},
+ {file = "pyyaml-6.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764"},
+ {file = "pyyaml-6.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35"},
+ {file = "pyyaml-6.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac"},
+ {file = "pyyaml-6.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3"},
+ {file = "pyyaml-6.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3"},
+ {file = "pyyaml-6.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba"},
+ {file = "pyyaml-6.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c"},
+ {file = "pyyaml-6.0.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702"},
+ {file = "pyyaml-6.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c"},
+ {file = "pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065"},
+ {file = "pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65"},
+ {file = "pyyaml-6.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9"},
+ {file = "pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b"},
+ {file = "pyyaml-6.0.3-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:b865addae83924361678b652338317d1bd7e79b1f4596f96b96c77a5a34b34da"},
+ {file = "pyyaml-6.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c3355370a2c156cffb25e876646f149d5d68f5e0a3ce86a5084dd0b64a994917"},
+ {file = "pyyaml-6.0.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3c5677e12444c15717b902a5798264fa7909e41153cdf9ef7ad571b704a63dd9"},
+ {file = "pyyaml-6.0.3-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5ed875a24292240029e4483f9d4a4b8a1ae08843b9c54f43fcc11e404532a8a5"},
+ {file = "pyyaml-6.0.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0150219816b6a1fa26fb4699fb7daa9caf09eb1999f3b70fb6e786805e80375a"},
+ {file = "pyyaml-6.0.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:fa160448684b4e94d80416c0fa4aac48967a969efe22931448d853ada8baf926"},
+ {file = "pyyaml-6.0.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:27c0abcb4a5dac13684a37f76e701e054692a9b2d3064b70f5e4eb54810553d7"},
+ {file = "pyyaml-6.0.3-cp39-cp39-win32.whl", hash = "sha256:1ebe39cb5fc479422b83de611d14e2c0d3bb2a18bbcb01f229ab3cfbd8fee7a0"},
+ {file = "pyyaml-6.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:2e71d11abed7344e42a8849600193d15b6def118602c4c176f748e4583246007"},
+ {file = "pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f"},
+]
+
+[[package]]
+name = "pyzmq"
+version = "27.1.0"
+description = "Python bindings for 0MQ"
+optional = false
+python-versions = ">=3.8"
+groups = ["main"]
+files = [
+ {file = "pyzmq-27.1.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:508e23ec9bc44c0005c4946ea013d9317ae00ac67778bd47519fdf5a0e930ff4"},
+ {file = "pyzmq-27.1.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:507b6f430bdcf0ee48c0d30e734ea89ce5567fd7b8a0f0044a369c176aa44556"},
+ {file = "pyzmq-27.1.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bf7b38f9fd7b81cb6d9391b2946382c8237fd814075c6aa9c3b746d53076023b"},
+ {file = "pyzmq-27.1.0-cp310-cp310-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:03ff0b279b40d687691a6217c12242ee71f0fba28bf8626ff50e3ef0f4410e1e"},
+ {file = "pyzmq-27.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:677e744fee605753eac48198b15a2124016c009a11056f93807000ab11ce6526"},
+ {file = "pyzmq-27.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:dd2fec2b13137416a1c5648b7009499bcc8fea78154cd888855fa32514f3dad1"},
+ {file = "pyzmq-27.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:08e90bb4b57603b84eab1d0ca05b3bbb10f60c1839dc471fc1c9e1507bef3386"},
+ {file = "pyzmq-27.1.0-cp310-cp310-win32.whl", hash = "sha256:a5b42d7a0658b515319148875fcb782bbf118dd41c671b62dae33666c2213bda"},
+ {file = "pyzmq-27.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:c0bb87227430ee3aefcc0ade2088100e528d5d3298a0a715a64f3d04c60ba02f"},
+ {file = "pyzmq-27.1.0-cp310-cp310-win_arm64.whl", hash = "sha256:9a916f76c2ab8d045b19f2286851a38e9ac94ea91faf65bd64735924522a8b32"},
+ {file = "pyzmq-27.1.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:226b091818d461a3bef763805e75685e478ac17e9008f49fce2d3e52b3d58b86"},
+ {file = "pyzmq-27.1.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:0790a0161c281ca9723f804871b4027f2e8b5a528d357c8952d08cd1a9c15581"},
+ {file = "pyzmq-27.1.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c895a6f35476b0c3a54e3eb6ccf41bf3018de937016e6e18748317f25d4e925f"},
+ {file = "pyzmq-27.1.0-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5bbf8d3630bf96550b3be8e1fc0fea5cbdc8d5466c1192887bd94869da17a63e"},
+ {file = "pyzmq-27.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:15c8bd0fe0dabf808e2d7a681398c4e5ded70a551ab47482067a572c054c8e2e"},
+ {file = "pyzmq-27.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:bafcb3dd171b4ae9f19ee6380dfc71ce0390fefaf26b504c0e5f628d7c8c54f2"},
+ {file = "pyzmq-27.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e829529fcaa09937189178115c49c504e69289abd39967cd8a4c215761373394"},
+ {file = "pyzmq-27.1.0-cp311-cp311-win32.whl", hash = "sha256:6df079c47d5902af6db298ec92151db82ecb557af663098b92f2508c398bb54f"},
+ {file = "pyzmq-27.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:190cbf120fbc0fc4957b56866830def56628934a9d112aec0e2507aa6a032b97"},
+ {file = "pyzmq-27.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:eca6b47df11a132d1745eb3b5b5e557a7dae2c303277aa0e69c6ba91b8736e07"},
+ {file = "pyzmq-27.1.0-cp312-abi3-macosx_10_15_universal2.whl", hash = "sha256:452631b640340c928fa343801b0d07eb0c3789a5ffa843f6e1a9cee0ba4eb4fc"},
+ {file = "pyzmq-27.1.0-cp312-abi3-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1c179799b118e554b66da67d88ed66cd37a169f1f23b5d9f0a231b4e8d44a113"},
+ {file = "pyzmq-27.1.0-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3837439b7f99e60312f0c926a6ad437b067356dc2bc2ec96eb395fd0fe804233"},
+ {file = "pyzmq-27.1.0-cp312-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:43ad9a73e3da1fab5b0e7e13402f0b2fb934ae1c876c51d0afff0e7c052eca31"},
+ {file = "pyzmq-27.1.0-cp312-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:0de3028d69d4cdc475bfe47a6128eb38d8bc0e8f4d69646adfbcd840facbac28"},
+ {file = "pyzmq-27.1.0-cp312-abi3-musllinux_1_2_i686.whl", hash = "sha256:cf44a7763aea9298c0aa7dbf859f87ed7012de8bda0f3977b6fb1d96745df856"},
+ {file = "pyzmq-27.1.0-cp312-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:f30f395a9e6fbca195400ce833c731e7b64c3919aa481af4d88c3759e0cb7496"},
+ {file = "pyzmq-27.1.0-cp312-abi3-win32.whl", hash = "sha256:250e5436a4ba13885494412b3da5d518cd0d3a278a1ae640e113c073a5f88edd"},
+ {file = "pyzmq-27.1.0-cp312-abi3-win_amd64.whl", hash = "sha256:9ce490cf1d2ca2ad84733aa1d69ce6855372cb5ce9223802450c9b2a7cba0ccf"},
+ {file = "pyzmq-27.1.0-cp312-abi3-win_arm64.whl", hash = "sha256:75a2f36223f0d535a0c919e23615fc85a1e23b71f40c7eb43d7b1dedb4d8f15f"},
+ {file = "pyzmq-27.1.0-cp313-cp313-android_24_arm64_v8a.whl", hash = "sha256:93ad4b0855a664229559e45c8d23797ceac03183c7b6f5b4428152a6b06684a5"},
+ {file = "pyzmq-27.1.0-cp313-cp313-android_24_x86_64.whl", hash = "sha256:fbb4f2400bfda24f12f009cba62ad5734148569ff4949b1b6ec3b519444342e6"},
+ {file = "pyzmq-27.1.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:e343d067f7b151cfe4eb3bb796a7752c9d369eed007b91231e817071d2c2fec7"},
+ {file = "pyzmq-27.1.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:08363b2011dec81c354d694bdecaef4770e0ae96b9afea70b3f47b973655cc05"},
+ {file = "pyzmq-27.1.0-cp313-cp313t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d54530c8c8b5b8ddb3318f481297441af102517602b569146185fa10b63f4fa9"},
+ {file = "pyzmq-27.1.0-cp313-cp313t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6f3afa12c392f0a44a2414056d730eebc33ec0926aae92b5ad5cf26ebb6cc128"},
+ {file = "pyzmq-27.1.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c65047adafe573ff023b3187bb93faa583151627bc9c51fc4fb2c561ed689d39"},
+ {file = "pyzmq-27.1.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:90e6e9441c946a8b0a667356f7078d96411391a3b8f80980315455574177ec97"},
+ {file = "pyzmq-27.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:add071b2d25f84e8189aaf0882d39a285b42fa3853016ebab234a5e78c7a43db"},
+ {file = "pyzmq-27.1.0-cp313-cp313t-win32.whl", hash = "sha256:7ccc0700cfdf7bd487bea8d850ec38f204478681ea02a582a8da8171b7f90a1c"},
+ {file = "pyzmq-27.1.0-cp313-cp313t-win_amd64.whl", hash = "sha256:8085a9fba668216b9b4323be338ee5437a235fe275b9d1610e422ccc279733e2"},
+ {file = "pyzmq-27.1.0-cp313-cp313t-win_arm64.whl", hash = "sha256:6bb54ca21bcfe361e445256c15eedf083f153811c37be87e0514934d6913061e"},
+ {file = "pyzmq-27.1.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:ce980af330231615756acd5154f29813d553ea555485ae712c491cd483df6b7a"},
+ {file = "pyzmq-27.1.0-cp314-cp314t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1779be8c549e54a1c38f805e56d2a2e5c009d26de10921d7d51cfd1c8d4632ea"},
+ {file = "pyzmq-27.1.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7200bb0f03345515df50d99d3db206a0a6bee1955fbb8c453c76f5bf0e08fb96"},
+ {file = "pyzmq-27.1.0-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:01c0e07d558b06a60773744ea6251f769cd79a41a97d11b8bf4ab8f034b0424d"},
+ {file = "pyzmq-27.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:80d834abee71f65253c91540445d37c4c561e293ba6e741b992f20a105d69146"},
+ {file = "pyzmq-27.1.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:544b4e3b7198dde4a62b8ff6685e9802a9a1ebf47e77478a5eb88eca2a82f2fd"},
+ {file = "pyzmq-27.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:cedc4c68178e59a4046f97eca31b148ddcf51e88677de1ef4e78cf06c5376c9a"},
+ {file = "pyzmq-27.1.0-cp314-cp314t-win32.whl", hash = "sha256:1f0b2a577fd770aa6f053211a55d1c47901f4d537389a034c690291485e5fe92"},
+ {file = "pyzmq-27.1.0-cp314-cp314t-win_amd64.whl", hash = "sha256:19c9468ae0437f8074af379e986c5d3d7d7bfe033506af442e8c879732bedbe0"},
+ {file = "pyzmq-27.1.0-cp314-cp314t-win_arm64.whl", hash = "sha256:dc5dbf68a7857b59473f7df42650c621d7e8923fb03fa74a526890f4d33cc4d7"},
+ {file = "pyzmq-27.1.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:18339186c0ed0ce5835f2656cdfb32203125917711af64da64dbaa3d949e5a1b"},
+ {file = "pyzmq-27.1.0-cp38-cp38-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:753d56fba8f70962cd8295fb3edb40b9b16deaa882dd2b5a3a2039f9ff7625aa"},
+ {file = "pyzmq-27.1.0-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b721c05d932e5ad9ff9344f708c96b9e1a485418c6618d765fca95d4daacfbef"},
+ {file = "pyzmq-27.1.0-cp38-cp38-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7be883ff3d722e6085ee3f4afc057a50f7f2e0c72d289fd54df5706b4e3d3a50"},
+ {file = "pyzmq-27.1.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:b2e592db3a93128daf567de9650a2f3859017b3f7a66bc4ed6e4779d6034976f"},
+ {file = "pyzmq-27.1.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:ad68808a61cbfbbae7ba26d6233f2a4aa3b221de379ce9ee468aa7a83b9c36b0"},
+ {file = "pyzmq-27.1.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:e2687c2d230e8d8584fbea433c24382edfeda0c60627aca3446aa5e58d5d1831"},
+ {file = "pyzmq-27.1.0-cp38-cp38-win32.whl", hash = "sha256:a1aa0ee920fb3825d6c825ae3f6c508403b905b698b6460408ebd5bb04bbb312"},
+ {file = "pyzmq-27.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:df7cd397ece96cf20a76fae705d40efbab217d217897a5053267cd88a700c266"},
+ {file = "pyzmq-27.1.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:96c71c32fff75957db6ae33cd961439f386505c6e6b377370af9b24a1ef9eafb"},
+ {file = "pyzmq-27.1.0-cp39-cp39-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:49d3980544447f6bd2968b6ac913ab963a49dcaa2d4a2990041f16057b04c429"},
+ {file = "pyzmq-27.1.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:849ca054d81aa1c175c49484afaaa5db0622092b5eccb2055f9f3bb8f703782d"},
+ {file = "pyzmq-27.1.0-cp39-cp39-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3970778e74cb7f85934d2b926b9900e92bfe597e62267d7499acc39c9c28e345"},
+ {file = "pyzmq-27.1.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:da96ecdcf7d3919c3be2de91a8c513c186f6762aa6cf7c01087ed74fad7f0968"},
+ {file = "pyzmq-27.1.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:9541c444cfe1b1c0156c5c86ece2bb926c7079a18e7b47b0b1b3b1b875e5d098"},
+ {file = "pyzmq-27.1.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e30a74a39b93e2e1591b58eb1acef4902be27c957a8720b0e368f579b82dc22f"},
+ {file = "pyzmq-27.1.0-cp39-cp39-win32.whl", hash = "sha256:b1267823d72d1e40701dcba7edc45fd17f71be1285557b7fe668887150a14b78"},
+ {file = "pyzmq-27.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:0c996ded912812a2fcd7ab6574f4ad3edc27cb6510349431e4930d4196ade7db"},
+ {file = "pyzmq-27.1.0-cp39-cp39-win_arm64.whl", hash = "sha256:346e9ba4198177a07e7706050f35d733e08c1c1f8ceacd5eb6389d653579ffbc"},
+ {file = "pyzmq-27.1.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:c17e03cbc9312bee223864f1a2b13a99522e0dc9f7c5df0177cd45210ac286e6"},
+ {file = "pyzmq-27.1.0-pp310-pypy310_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:f328d01128373cb6763823b2b4e7f73bdf767834268c565151eacb3b7a392f90"},
+ {file = "pyzmq-27.1.0-pp310-pypy310_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9c1790386614232e1b3a40a958454bdd42c6d1811837b15ddbb052a032a43f62"},
+ {file = "pyzmq-27.1.0-pp310-pypy310_pp73-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:448f9cb54eb0cee4732b46584f2710c8bc178b0e5371d9e4fc8125201e413a74"},
+ {file = "pyzmq-27.1.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:05b12f2d32112bf8c95ef2e74ec4f1d4beb01f8b5e703b38537f8849f92cb9ba"},
+ {file = "pyzmq-27.1.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:18770c8d3563715387139060d37859c02ce40718d1faf299abddcdcc6a649066"},
+ {file = "pyzmq-27.1.0-pp311-pypy311_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:ac25465d42f92e990f8d8b0546b01c391ad431c3bf447683fdc40565941d0604"},
+ {file = "pyzmq-27.1.0-pp311-pypy311_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53b40f8ae006f2734ee7608d59ed661419f087521edbfc2149c3932e9c14808c"},
+ {file = "pyzmq-27.1.0-pp311-pypy311_pp73-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f605d884e7c8be8fe1aa94e0a783bf3f591b84c24e4bc4f3e7564c82ac25e271"},
+ {file = "pyzmq-27.1.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:c9f7f6e13dff2e44a6afeaf2cf54cee5929ad64afaf4d40b50f93c58fc687355"},
+ {file = "pyzmq-27.1.0-pp38-pypy38_pp73-macosx_10_15_x86_64.whl", hash = "sha256:50081a4e98472ba9f5a02850014b4c9b629da6710f8f14f3b15897c666a28f1b"},
+ {file = "pyzmq-27.1.0-pp38-pypy38_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:510869f9df36ab97f89f4cff9d002a89ac554c7ac9cadd87d444aa4cf66abd27"},
+ {file = "pyzmq-27.1.0-pp38-pypy38_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1f8426a01b1c4098a750973c37131cf585f61c7911d735f729935a0c701b68d3"},
+ {file = "pyzmq-27.1.0-pp38-pypy38_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:726b6a502f2e34c6d2ada5e702929586d3ac948a4dbbb7fed9854ec8c0466027"},
+ {file = "pyzmq-27.1.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:bd67e7c8f4654bef471c0b1ca6614af0b5202a790723a58b79d9584dc8022a78"},
+ {file = "pyzmq-27.1.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:722ea791aa233ac0a819fc2c475e1292c76930b31f1d828cb61073e2fe5e208f"},
+ {file = "pyzmq-27.1.0-pp39-pypy39_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:01f9437501886d3a1dd4b02ef59fb8cc384fa718ce066d52f175ee49dd5b7ed8"},
+ {file = "pyzmq-27.1.0-pp39-pypy39_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4a19387a3dddcc762bfd2f570d14e2395b2c9701329b266f83dd87a2b3cbd381"},
+ {file = "pyzmq-27.1.0-pp39-pypy39_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4c618fbcd069e3a29dcd221739cacde52edcc681f041907867e0f5cc7e85f172"},
+ {file = "pyzmq-27.1.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:ff8d114d14ac671d88c89b9224c63d6c4e5a613fe8acd5594ce53d752a3aafe9"},
+ {file = "pyzmq-27.1.0.tar.gz", hash = "sha256:ac0765e3d44455adb6ddbf4417dcce460fc40a05978c08efdf2948072f6db540"},
+]
+
+[package.dependencies]
+cffi = {version = "*", markers = "implementation_name == \"pypy\""}
+
+[[package]]
+name = "referencing"
+version = "0.37.0"
+description = "JSON Referencing + Python"
+optional = false
+python-versions = ">=3.10"
+groups = ["main"]
+files = [
+ {file = "referencing-0.37.0-py3-none-any.whl", hash = "sha256:381329a9f99628c9069361716891d34ad94af76e461dcb0335825aecc7692231"},
+ {file = "referencing-0.37.0.tar.gz", hash = "sha256:44aefc3142c5b842538163acb373e24cce6632bd54bdb01b21ad5863489f50d8"},
+]
+
+[package.dependencies]
+attrs = ">=22.2.0"
+rpds-py = ">=0.7.0"
+typing-extensions = {version = ">=4.4.0", markers = "python_version < \"3.13\""}
+
+[[package]]
+name = "requests"
+version = "2.32.5"
+description = "Python HTTP for Humans."
+optional = false
+python-versions = ">=3.9"
+groups = ["main"]
+files = [
+ {file = "requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6"},
+ {file = "requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf"},
+]
+
+[package.dependencies]
+certifi = ">=2017.4.17"
+charset_normalizer = ">=2,<4"
+idna = ">=2.5,<4"
+urllib3 = ">=1.21.1,<3"
+
+[package.extras]
+socks = ["PySocks (>=1.5.6,!=1.5.7)"]
+use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
+
+[[package]]
+name = "rfc3339-validator"
+version = "0.1.4"
+description = "A pure python RFC3339 validator"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+groups = ["main"]
+files = [
+ {file = "rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa"},
+ {file = "rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b"},
+]
+
+[package.dependencies]
+six = "*"
+
+[[package]]
+name = "rfc3986-validator"
+version = "0.1.1"
+description = "Pure python rfc3986 validator"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+groups = ["main"]
+files = [
+ {file = "rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9"},
+ {file = "rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055"},
+]
+
+[[package]]
+name = "rfc3987-syntax"
+version = "1.1.0"
+description = "Helper functions to syntactically validate strings according to RFC 3987."
+optional = false
+python-versions = ">=3.9"
+groups = ["main"]
+files = [
+ {file = "rfc3987_syntax-1.1.0-py3-none-any.whl", hash = "sha256:6c3d97604e4c5ce9f714898e05401a0445a641cfa276432b0a648c80856f6a3f"},
+ {file = "rfc3987_syntax-1.1.0.tar.gz", hash = "sha256:717a62cbf33cffdd16dfa3a497d81ce48a660ea691b1ddd7be710c22f00b4a0d"},
+]
+
+[package.dependencies]
+lark = ">=1.2.2"
+
+[package.extras]
+testing = ["pytest (>=8.3.5)"]
+
+[[package]]
+name = "rpds-py"
+version = "0.30.0"
+description = "Python bindings to Rust's persistent data structures (rpds)"
+optional = false
+python-versions = ">=3.10"
+groups = ["main"]
+files = [
+ {file = "rpds_py-0.30.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:679ae98e00c0e8d68a7fda324e16b90fd5260945b45d3b824c892cec9eea3288"},
+ {file = "rpds_py-0.30.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4cc2206b76b4f576934f0ed374b10d7ca5f457858b157ca52064bdfc26b9fc00"},
+ {file = "rpds_py-0.30.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:389a2d49eded1896c3d48b0136ead37c48e221b391c052fba3f4055c367f60a6"},
+ {file = "rpds_py-0.30.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:32c8528634e1bf7121f3de08fa85b138f4e0dc47657866630611b03967f041d7"},
+ {file = "rpds_py-0.30.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f207f69853edd6f6700b86efb84999651baf3789e78a466431df1331608e5324"},
+ {file = "rpds_py-0.30.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:67b02ec25ba7a9e8fa74c63b6ca44cf5707f2fbfadae3ee8e7494297d56aa9df"},
+ {file = "rpds_py-0.30.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c0e95f6819a19965ff420f65578bacb0b00f251fefe2c8b23347c37174271f3"},
+ {file = "rpds_py-0.30.0-cp310-cp310-manylinux_2_31_riscv64.whl", hash = "sha256:a452763cc5198f2f98898eb98f7569649fe5da666c2dc6b5ddb10fde5a574221"},
+ {file = "rpds_py-0.30.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e0b65193a413ccc930671c55153a03ee57cecb49e6227204b04fae512eb657a7"},
+ {file = "rpds_py-0.30.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:858738e9c32147f78b3ac24dc0edb6610000e56dc0f700fd5f651d0a0f0eb9ff"},
+ {file = "rpds_py-0.30.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:da279aa314f00acbb803da1e76fa18666778e8a8f83484fba94526da5de2cba7"},
+ {file = "rpds_py-0.30.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7c64d38fb49b6cdeda16ab49e35fe0da2e1e9b34bc38bd78386530f218b37139"},
+ {file = "rpds_py-0.30.0-cp310-cp310-win32.whl", hash = "sha256:6de2a32a1665b93233cde140ff8b3467bdb9e2af2b91079f0333a0974d12d464"},
+ {file = "rpds_py-0.30.0-cp310-cp310-win_amd64.whl", hash = "sha256:1726859cd0de969f88dc8673bdd954185b9104e05806be64bcd87badbe313169"},
+ {file = "rpds_py-0.30.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:a2bffea6a4ca9f01b3f8e548302470306689684e61602aa3d141e34da06cf425"},
+ {file = "rpds_py-0.30.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dc4f992dfe1e2bc3ebc7444f6c7051b4bc13cd8e33e43511e8ffd13bf407010d"},
+ {file = "rpds_py-0.30.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:422c3cb9856d80b09d30d2eb255d0754b23e090034e1deb4083f8004bd0761e4"},
+ {file = "rpds_py-0.30.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:07ae8a593e1c3c6b82ca3292efbe73c30b61332fd612e05abee07c79359f292f"},
+ {file = "rpds_py-0.30.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:12f90dd7557b6bd57f40abe7747e81e0c0b119bef015ea7726e69fe550e394a4"},
+ {file = "rpds_py-0.30.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:99b47d6ad9a6da00bec6aabe5a6279ecd3c06a329d4aa4771034a21e335c3a97"},
+ {file = "rpds_py-0.30.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33f559f3104504506a44bb666b93a33f5d33133765b0c216a5bf2f1e1503af89"},
+ {file = "rpds_py-0.30.0-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:946fe926af6e44f3697abbc305ea168c2c31d3e3ef1058cf68f379bf0335a78d"},
+ {file = "rpds_py-0.30.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:495aeca4b93d465efde585977365187149e75383ad2684f81519f504f5c13038"},
+ {file = "rpds_py-0.30.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d9a0ca5da0386dee0655b4ccdf46119df60e0f10da268d04fe7cc87886872ba7"},
+ {file = "rpds_py-0.30.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8d6d1cc13664ec13c1b84241204ff3b12f9bb82464b8ad6e7a5d3486975c2eed"},
+ {file = "rpds_py-0.30.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3896fa1be39912cf0757753826bc8bdc8ca331a28a7c4ae46b7a21280b06bb85"},
+ {file = "rpds_py-0.30.0-cp311-cp311-win32.whl", hash = "sha256:55f66022632205940f1827effeff17c4fa7ae1953d2b74a8581baaefb7d16f8c"},
+ {file = "rpds_py-0.30.0-cp311-cp311-win_amd64.whl", hash = "sha256:a51033ff701fca756439d641c0ad09a41d9242fa69121c7d8769604a0a629825"},
+ {file = "rpds_py-0.30.0-cp311-cp311-win_arm64.whl", hash = "sha256:47b0ef6231c58f506ef0b74d44e330405caa8428e770fec25329ed2cb971a229"},
+ {file = "rpds_py-0.30.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a161f20d9a43006833cd7068375a94d035714d73a172b681d8881820600abfad"},
+ {file = "rpds_py-0.30.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6abc8880d9d036ecaafe709079969f56e876fcf107f7a8e9920ba6d5a3878d05"},
+ {file = "rpds_py-0.30.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca28829ae5f5d569bb62a79512c842a03a12576375d5ece7d2cadf8abe96ec28"},
+ {file = "rpds_py-0.30.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a1010ed9524c73b94d15919ca4d41d8780980e1765babf85f9a2f90d247153dd"},
+ {file = "rpds_py-0.30.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f8d1736cfb49381ba528cd5baa46f82fdc65c06e843dab24dd70b63d09121b3f"},
+ {file = "rpds_py-0.30.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d948b135c4693daff7bc2dcfc4ec57237a29bd37e60c2fabf5aff2bbacf3e2f1"},
+ {file = "rpds_py-0.30.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47f236970bccb2233267d89173d3ad2703cd36a0e2a6e92d0560d333871a3d23"},
+ {file = "rpds_py-0.30.0-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:2e6ecb5a5bcacf59c3f912155044479af1d0b6681280048b338b28e364aca1f6"},
+ {file = "rpds_py-0.30.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a8fa71a2e078c527c3e9dc9fc5a98c9db40bcc8a92b4e8858e36d329f8684b51"},
+ {file = "rpds_py-0.30.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:73c67f2db7bc334e518d097c6d1e6fed021bbc9b7d678d6cc433478365d1d5f5"},
+ {file = "rpds_py-0.30.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5ba103fb455be00f3b1c2076c9d4264bfcb037c976167a6047ed82f23153f02e"},
+ {file = "rpds_py-0.30.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7cee9c752c0364588353e627da8a7e808a66873672bcb5f52890c33fd965b394"},
+ {file = "rpds_py-0.30.0-cp312-cp312-win32.whl", hash = "sha256:1ab5b83dbcf55acc8b08fc62b796ef672c457b17dbd7820a11d6c52c06839bdf"},
+ {file = "rpds_py-0.30.0-cp312-cp312-win_amd64.whl", hash = "sha256:a090322ca841abd453d43456ac34db46e8b05fd9b3b4ac0c78bcde8b089f959b"},
+ {file = "rpds_py-0.30.0-cp312-cp312-win_arm64.whl", hash = "sha256:669b1805bd639dd2989b281be2cfd951c6121b65e729d9b843e9639ef1fd555e"},
+ {file = "rpds_py-0.30.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:f83424d738204d9770830d35290ff3273fbb02b41f919870479fab14b9d303b2"},
+ {file = "rpds_py-0.30.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e7536cd91353c5273434b4e003cbda89034d67e7710eab8761fd918ec6c69cf8"},
+ {file = "rpds_py-0.30.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2771c6c15973347f50fece41fc447c054b7ac2ae0502388ce3b6738cd366e3d4"},
+ {file = "rpds_py-0.30.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0a59119fc6e3f460315fe9d08149f8102aa322299deaa5cab5b40092345c2136"},
+ {file = "rpds_py-0.30.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:76fec018282b4ead0364022e3c54b60bf368b9d926877957a8624b58419169b7"},
+ {file = "rpds_py-0.30.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:692bef75a5525db97318e8cd061542b5a79812d711ea03dbc1f6f8dbb0c5f0d2"},
+ {file = "rpds_py-0.30.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9027da1ce107104c50c81383cae773ef5c24d296dd11c99e2629dbd7967a20c6"},
+ {file = "rpds_py-0.30.0-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:9cf69cdda1f5968a30a359aba2f7f9aa648a9ce4b580d6826437f2b291cfc86e"},
+ {file = "rpds_py-0.30.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a4796a717bf12b9da9d3ad002519a86063dcac8988b030e405704ef7d74d2d9d"},
+ {file = "rpds_py-0.30.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5d4c2aa7c50ad4728a094ebd5eb46c452e9cb7edbfdb18f9e1221f597a73e1e7"},
+ {file = "rpds_py-0.30.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ba81a9203d07805435eb06f536d95a266c21e5b2dfbf6517748ca40c98d19e31"},
+ {file = "rpds_py-0.30.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:945dccface01af02675628334f7cf49c2af4c1c904748efc5cf7bbdf0b579f95"},
+ {file = "rpds_py-0.30.0-cp313-cp313-win32.whl", hash = "sha256:b40fb160a2db369a194cb27943582b38f79fc4887291417685f3ad693c5a1d5d"},
+ {file = "rpds_py-0.30.0-cp313-cp313-win_amd64.whl", hash = "sha256:806f36b1b605e2d6a72716f321f20036b9489d29c51c91f4dd29a3e3afb73b15"},
+ {file = "rpds_py-0.30.0-cp313-cp313-win_arm64.whl", hash = "sha256:d96c2086587c7c30d44f31f42eae4eac89b60dabbac18c7669be3700f13c3ce1"},
+ {file = "rpds_py-0.30.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:eb0b93f2e5c2189ee831ee43f156ed34e2a89a78a66b98cadad955972548be5a"},
+ {file = "rpds_py-0.30.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:922e10f31f303c7c920da8981051ff6d8c1a56207dbdf330d9047f6d30b70e5e"},
+ {file = "rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cdc62c8286ba9bf7f47befdcea13ea0e26bf294bda99758fd90535cbaf408000"},
+ {file = "rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:47f9a91efc418b54fb8190a6b4aa7813a23fb79c51f4bb84e418f5476c38b8db"},
+ {file = "rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1f3587eb9b17f3789ad50824084fa6f81921bbf9a795826570bda82cb3ed91f2"},
+ {file = "rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:39c02563fc592411c2c61d26b6c5fe1e51eaa44a75aa2c8735ca88b0d9599daa"},
+ {file = "rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51a1234d8febafdfd33a42d97da7a43f5dcb120c1060e352a3fbc0c6d36e2083"},
+ {file = "rpds_py-0.30.0-cp313-cp313t-manylinux_2_31_riscv64.whl", hash = "sha256:eb2c4071ab598733724c08221091e8d80e89064cd472819285a9ab0f24bcedb9"},
+ {file = "rpds_py-0.30.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6bdfdb946967d816e6adf9a3d8201bfad269c67efe6cefd7093ef959683c8de0"},
+ {file = "rpds_py-0.30.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c77afbd5f5250bf27bf516c7c4a016813eb2d3e116139aed0096940c5982da94"},
+ {file = "rpds_py-0.30.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:61046904275472a76c8c90c9ccee9013d70a6d0f73eecefd38c1ae7c39045a08"},
+ {file = "rpds_py-0.30.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4c5f36a861bc4b7da6516dbdf302c55313afa09b81931e8280361a4f6c9a2d27"},
+ {file = "rpds_py-0.30.0-cp313-cp313t-win32.whl", hash = "sha256:3d4a69de7a3e50ffc214ae16d79d8fbb0922972da0356dcf4d0fdca2878559c6"},
+ {file = "rpds_py-0.30.0-cp313-cp313t-win_amd64.whl", hash = "sha256:f14fc5df50a716f7ece6a80b6c78bb35ea2ca47c499e422aa4463455dd96d56d"},
+ {file = "rpds_py-0.30.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:68f19c879420aa08f61203801423f6cd5ac5f0ac4ac82a2368a9fcd6a9a075e0"},
+ {file = "rpds_py-0.30.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ec7c4490c672c1a0389d319b3a9cfcd098dcdc4783991553c332a15acf7249be"},
+ {file = "rpds_py-0.30.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f251c812357a3fed308d684a5079ddfb9d933860fc6de89f2b7ab00da481e65f"},
+ {file = "rpds_py-0.30.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac98b175585ecf4c0348fd7b29c3864bda53b805c773cbf7bfdaffc8070c976f"},
+ {file = "rpds_py-0.30.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3e62880792319dbeb7eb866547f2e35973289e7d5696c6e295476448f5b63c87"},
+ {file = "rpds_py-0.30.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4e7fc54e0900ab35d041b0601431b0a0eb495f0851a0639b6ef90f7741b39a18"},
+ {file = "rpds_py-0.30.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47e77dc9822d3ad616c3d5759ea5631a75e5809d5a28707744ef79d7a1bcfcad"},
+ {file = "rpds_py-0.30.0-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:b4dc1a6ff022ff85ecafef7979a2c6eb423430e05f1165d6688234e62ba99a07"},
+ {file = "rpds_py-0.30.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4559c972db3a360808309e06a74628b95eaccbf961c335c8fe0d590cf587456f"},
+ {file = "rpds_py-0.30.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:0ed177ed9bded28f8deb6ab40c183cd1192aa0de40c12f38be4d59cd33cb5c65"},
+ {file = "rpds_py-0.30.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:ad1fa8db769b76ea911cb4e10f049d80bf518c104f15b3edb2371cc65375c46f"},
+ {file = "rpds_py-0.30.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:46e83c697b1f1c72b50e5ee5adb4353eef7406fb3f2043d64c33f20ad1c2fc53"},
+ {file = "rpds_py-0.30.0-cp314-cp314-win32.whl", hash = "sha256:ee454b2a007d57363c2dfd5b6ca4a5d7e2c518938f8ed3b706e37e5d470801ed"},
+ {file = "rpds_py-0.30.0-cp314-cp314-win_amd64.whl", hash = "sha256:95f0802447ac2d10bcc69f6dc28fe95fdf17940367b21d34e34c737870758950"},
+ {file = "rpds_py-0.30.0-cp314-cp314-win_arm64.whl", hash = "sha256:613aa4771c99f03346e54c3f038e4cc574ac09a3ddfb0e8878487335e96dead6"},
+ {file = "rpds_py-0.30.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:7e6ecfcb62edfd632e56983964e6884851786443739dbfe3582947e87274f7cb"},
+ {file = "rpds_py-0.30.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:a1d0bc22a7cdc173fedebb73ef81e07faef93692b8c1ad3733b67e31e1b6e1b8"},
+ {file = "rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d08f00679177226c4cb8c5265012eea897c8ca3b93f429e546600c971bcbae7"},
+ {file = "rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5965af57d5848192c13534f90f9dd16464f3c37aaf166cc1da1cae1fd5a34898"},
+ {file = "rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9a4e86e34e9ab6b667c27f3211ca48f73dba7cd3d90f8d5b11be56e5dbc3fb4e"},
+ {file = "rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e5d3e6b26f2c785d65cc25ef1e5267ccbe1b069c5c21b8cc724efee290554419"},
+ {file = "rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:626a7433c34566535b6e56a1b39a7b17ba961e97ce3b80ec62e6f1312c025551"},
+ {file = "rpds_py-0.30.0-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:acd7eb3f4471577b9b5a41baf02a978e8bdeb08b4b355273994f8b87032000a8"},
+ {file = "rpds_py-0.30.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fe5fa731a1fa8a0a56b0977413f8cacac1768dad38d16b3a296712709476fbd5"},
+ {file = "rpds_py-0.30.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:74a3243a411126362712ee1524dfc90c650a503502f135d54d1b352bd01f2404"},
+ {file = "rpds_py-0.30.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:3e8eeb0544f2eb0d2581774be4c3410356eba189529a6b3e36bbbf9696175856"},
+ {file = "rpds_py-0.30.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:dbd936cde57abfee19ab3213cf9c26be06d60750e60a8e4dd85d1ab12c8b1f40"},
+ {file = "rpds_py-0.30.0-cp314-cp314t-win32.whl", hash = "sha256:dc824125c72246d924f7f796b4f63c1e9dc810c7d9e2355864b3c3a73d59ade0"},
+ {file = "rpds_py-0.30.0-cp314-cp314t-win_amd64.whl", hash = "sha256:27f4b0e92de5bfbc6f86e43959e6edd1425c33b5e69aab0984a72047f2bcf1e3"},
+ {file = "rpds_py-0.30.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c2262bdba0ad4fc6fb5545660673925c2d2a5d9e2e0fb603aad545427be0fc58"},
+ {file = "rpds_py-0.30.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:ee6af14263f25eedc3bb918a3c04245106a42dfd4f5c2285ea6f997b1fc3f89a"},
+ {file = "rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3adbb8179ce342d235c31ab8ec511e66c73faa27a47e076ccc92421add53e2bb"},
+ {file = "rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:250fa00e9543ac9b97ac258bd37367ff5256666122c2d0f2bc97577c60a1818c"},
+ {file = "rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9854cf4f488b3d57b9aaeb105f06d78e5529d3145b1e4a41750167e8c213c6d3"},
+ {file = "rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:993914b8e560023bc0a8bf742c5f303551992dcb85e247b1e5c7f4a7d145bda5"},
+ {file = "rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58edca431fb9b29950807e301826586e5bbf24163677732429770a697ffe6738"},
+ {file = "rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_31_riscv64.whl", hash = "sha256:dea5b552272a944763b34394d04577cf0f9bd013207bc32323b5a89a53cf9c2f"},
+ {file = "rpds_py-0.30.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ba3af48635eb83d03f6c9735dfb21785303e73d22ad03d489e88adae6eab8877"},
+ {file = "rpds_py-0.30.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:dff13836529b921e22f15cb099751209a60009731a68519630a24d61f0b1b30a"},
+ {file = "rpds_py-0.30.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:1b151685b23929ab7beec71080a8889d4d6d9fa9a983d213f07121205d48e2c4"},
+ {file = "rpds_py-0.30.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:ac37f9f516c51e5753f27dfdef11a88330f04de2d564be3991384b2f3535d02e"},
+ {file = "rpds_py-0.30.0.tar.gz", hash = "sha256:dd8ff7cf90014af0c0f787eea34794ebf6415242ee1d6fa91eaba725cc441e84"},
+]
+
+[[package]]
+name = "scikit-learn"
+version = "1.8.0"
+description = "A set of python modules for machine learning and data mining"
+optional = false
+python-versions = ">=3.11"
+groups = ["main"]
+files = [
+ {file = "scikit_learn-1.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:146b4d36f800c013d267b29168813f7a03a43ecd2895d04861f1240b564421da"},
+ {file = "scikit_learn-1.8.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:f984ca4b14914e6b4094c5d52a32ea16b49832c03bd17a110f004db3c223e8e1"},
+ {file = "scikit_learn-1.8.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5e30adb87f0cc81c7690a84f7932dd66be5bac57cfe16b91cb9151683a4a2d3b"},
+ {file = "scikit_learn-1.8.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ada8121bcb4dac28d930febc791a69f7cb1673c8495e5eee274190b73a4559c1"},
+ {file = "scikit_learn-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:c57b1b610bd1f40ba43970e11ce62821c2e6569e4d74023db19c6b26f246cb3b"},
+ {file = "scikit_learn-1.8.0-cp311-cp311-win_arm64.whl", hash = "sha256:2838551e011a64e3053ad7618dda9310175f7515f1742fa2d756f7c874c05961"},
+ {file = "scikit_learn-1.8.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5fb63362b5a7ddab88e52b6dbb47dac3fd7dafeee740dc6c8d8a446ddedade8e"},
+ {file = "scikit_learn-1.8.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:5025ce924beccb28298246e589c691fe1b8c1c96507e6d27d12c5fadd85bfd76"},
+ {file = "scikit_learn-1.8.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4496bb2cf7a43ce1a2d7524a79e40bc5da45cf598dbf9545b7e8316ccba47bb4"},
+ {file = "scikit_learn-1.8.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a0bcfe4d0d14aec44921545fd2af2338c7471de9cb701f1da4c9d85906ab847a"},
+ {file = "scikit_learn-1.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:35c007dedb2ffe38fe3ee7d201ebac4a2deccd2408e8621d53067733e3c74809"},
+ {file = "scikit_learn-1.8.0-cp312-cp312-win_arm64.whl", hash = "sha256:8c497fff237d7b4e07e9ef1a640887fa4fb765647f86fbe00f969ff6280ce2bb"},
+ {file = "scikit_learn-1.8.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0d6ae97234d5d7079dc0040990a6f7aeb97cb7fa7e8945f1999a429b23569e0a"},
+ {file = "scikit_learn-1.8.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:edec98c5e7c128328124a029bceb09eda2d526997780fef8d65e9a69eead963e"},
+ {file = "scikit_learn-1.8.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:74b66d8689d52ed04c271e1329f0c61635bcaf5b926db9b12d58914cdc01fe57"},
+ {file = "scikit_learn-1.8.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8fdf95767f989b0cfedb85f7ed8ca215d4be728031f56ff5a519ee1e3276dc2e"},
+ {file = "scikit_learn-1.8.0-cp313-cp313-win_amd64.whl", hash = "sha256:2de443b9373b3b615aec1bb57f9baa6bb3a9bd093f1269ba95c17d870422b271"},
+ {file = "scikit_learn-1.8.0-cp313-cp313-win_arm64.whl", hash = "sha256:eddde82a035681427cbedded4e6eff5e57fa59216c2e3e90b10b19ab1d0a65c3"},
+ {file = "scikit_learn-1.8.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:7cc267b6108f0a1499a734167282c00c4ebf61328566b55ef262d48e9849c735"},
+ {file = "scikit_learn-1.8.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:fe1c011a640a9f0791146011dfd3c7d9669785f9fed2b2a5f9e207536cf5c2fd"},
+ {file = "scikit_learn-1.8.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:72358cce49465d140cc4e7792015bb1f0296a9742d5622c67e31399b75468b9e"},
+ {file = "scikit_learn-1.8.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:80832434a6cc114f5219211eec13dcbc16c2bac0e31ef64c6d346cde3cf054cb"},
+ {file = "scikit_learn-1.8.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ee787491dbfe082d9c3013f01f5991658b0f38aa8177e4cd4bf434c58f551702"},
+ {file = "scikit_learn-1.8.0-cp313-cp313t-win_arm64.whl", hash = "sha256:bf97c10a3f5a7543f9b88cbf488d33d175e9146115a451ae34568597ba33dcde"},
+ {file = "scikit_learn-1.8.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:c22a2da7a198c28dd1a6e1136f19c830beab7fdca5b3e5c8bba8394f8a5c45b3"},
+ {file = "scikit_learn-1.8.0-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:6b595b07a03069a2b1740dc08c2299993850ea81cce4fe19b2421e0c970de6b7"},
+ {file = "scikit_learn-1.8.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:29ffc74089f3d5e87dfca4c2c8450f88bdc61b0fc6ed5d267f3988f19a1309f6"},
+ {file = "scikit_learn-1.8.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fb65db5d7531bccf3a4f6bec3462223bea71384e2cda41da0f10b7c292b9e7c4"},
+ {file = "scikit_learn-1.8.0-cp314-cp314-win_amd64.whl", hash = "sha256:56079a99c20d230e873ea40753102102734c5953366972a71d5cb39a32bc40c6"},
+ {file = "scikit_learn-1.8.0-cp314-cp314-win_arm64.whl", hash = "sha256:3bad7565bc9cf37ce19a7c0d107742b320c1285df7aab1a6e2d28780df167242"},
+ {file = "scikit_learn-1.8.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:4511be56637e46c25721e83d1a9cea9614e7badc7040c4d573d75fbe257d6fd7"},
+ {file = "scikit_learn-1.8.0-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:a69525355a641bf8ef136a7fa447672fb54fe8d60cab5538d9eb7c6438543fb9"},
+ {file = "scikit_learn-1.8.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c2656924ec73e5939c76ac4c8b026fc203b83d8900362eb2599d8aee80e4880f"},
+ {file = "scikit_learn-1.8.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:15fc3b5d19cc2be65404786857f2e13c70c83dd4782676dd6814e3b89dc8f5b9"},
+ {file = "scikit_learn-1.8.0-cp314-cp314t-win_amd64.whl", hash = "sha256:00d6f1d66fbcf4eba6e356e1420d33cc06c70a45bb1363cd6f6a8e4ebbbdece2"},
+ {file = "scikit_learn-1.8.0-cp314-cp314t-win_arm64.whl", hash = "sha256:f28dd15c6bb0b66ba09728cf09fd8736c304be29409bd8445a080c1280619e8c"},
+ {file = "scikit_learn-1.8.0.tar.gz", hash = "sha256:9bccbb3b40e3de10351f8f5068e105d0f4083b1a65fa07b6634fbc401a6287fd"},
+]
+
+[package.dependencies]
+joblib = ">=1.3.0"
+numpy = ">=1.24.1"
+scipy = ">=1.10.0"
+threadpoolctl = ">=3.2.0"
+
+[package.extras]
+benchmark = ["matplotlib (>=3.6.1)", "memory_profiler (>=0.57.0)", "pandas (>=1.5.0)"]
+build = ["cython (>=3.1.2)", "meson-python (>=0.17.1)", "numpy (>=1.24.1)", "scipy (>=1.10.0)"]
+docs = ["Pillow (>=10.1.0)", "matplotlib (>=3.6.1)", "memory_profiler (>=0.57.0)", "numpydoc (>=1.2.0)", "pandas (>=1.5.0)", "plotly (>=5.18.0)", "polars (>=0.20.30)", "pooch (>=1.8.0)", "pydata-sphinx-theme (>=0.15.3)", "scikit-image (>=0.22.0)", "seaborn (>=0.13.0)", "sphinx (>=7.3.7)", "sphinx-copybutton (>=0.5.2)", "sphinx-design (>=0.6.0)", "sphinx-gallery (>=0.17.1)", "sphinx-prompt (>=1.4.0)", "sphinx-remove-toctrees (>=1.0.0.post1)", "sphinxcontrib-sass (>=0.3.4)", "sphinxext-opengraph (>=0.9.1)", "towncrier (>=24.8.0)"]
+examples = ["matplotlib (>=3.6.1)", "pandas (>=1.5.0)", "plotly (>=5.18.0)", "pooch (>=1.8.0)", "scikit-image (>=0.22.0)", "seaborn (>=0.13.0)"]
+install = ["joblib (>=1.3.0)", "numpy (>=1.24.1)", "scipy (>=1.10.0)", "threadpoolctl (>=3.2.0)"]
+maintenance = ["conda-lock (==3.0.1)"]
+tests = ["matplotlib (>=3.6.1)", "mypy (>=1.15)", "numpydoc (>=1.2.0)", "pandas (>=1.5.0)", "polars (>=0.20.30)", "pooch (>=1.8.0)", "pyamg (>=5.0.0)", "pyarrow (>=12.0.0)", "pytest (>=7.1.2)", "pytest-cov (>=2.9.0)", "ruff (>=0.11.7)"]
+
+[[package]]
+name = "scipy"
+version = "1.17.0"
+description = "Fundamental algorithms for scientific computing in Python"
+optional = false
+python-versions = ">=3.11"
+groups = ["main"]
+files = [
+ {file = "scipy-1.17.0-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:2abd71643797bd8a106dff97894ff7869eeeb0af0f7a5ce02e4227c6a2e9d6fd"},
+ {file = "scipy-1.17.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:ef28d815f4d2686503e5f4f00edc387ae58dfd7a2f42e348bb53359538f01558"},
+ {file = "scipy-1.17.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:272a9f16d6bb4667e8b50d25d71eddcc2158a214df1b566319298de0939d2ab7"},
+ {file = "scipy-1.17.0-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:7204fddcbec2fe6598f1c5fdf027e9f259106d05202a959a9f1aecf036adc9f6"},
+ {file = "scipy-1.17.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fc02c37a5639ee67d8fb646ffded6d793c06c5622d36b35cfa8fe5ececb8f042"},
+ {file = "scipy-1.17.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dac97a27520d66c12a34fd90a4fe65f43766c18c0d6e1c0a80f114d2260080e4"},
+ {file = "scipy-1.17.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ebb7446a39b3ae0fe8f416a9a3fdc6fba3f11c634f680f16a239c5187bc487c0"},
+ {file = "scipy-1.17.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:474da16199f6af66601a01546144922ce402cb17362e07d82f5a6cf8f963e449"},
+ {file = "scipy-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:255c0da161bd7b32a6c898e7891509e8a9289f0b1c6c7d96142ee0d2b114c2ea"},
+ {file = "scipy-1.17.0-cp311-cp311-win_arm64.whl", hash = "sha256:85b0ac3ad17fa3be50abd7e69d583d98792d7edc08367e01445a1e2076005379"},
+ {file = "scipy-1.17.0-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:0d5018a57c24cb1dd828bcf51d7b10e65986d549f52ef5adb6b4d1ded3e32a57"},
+ {file = "scipy-1.17.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:88c22af9e5d5a4f9e027e26772cc7b5922fab8bcc839edb3ae33de404feebd9e"},
+ {file = "scipy-1.17.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:f3cd947f20fe17013d401b64e857c6b2da83cae567adbb75b9dcba865abc66d8"},
+ {file = "scipy-1.17.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:e8c0b331c2c1f531eb51f1b4fc9ba709521a712cce58f1aa627bc007421a5306"},
+ {file = "scipy-1.17.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5194c445d0a1c7a6c1a4a4681b6b7c71baad98ff66d96b949097e7513c9d6742"},
+ {file = "scipy-1.17.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9eeb9b5f5997f75507814ed9d298ab23f62cf79f5a3ef90031b1ee2506abdb5b"},
+ {file = "scipy-1.17.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:40052543f7bbe921df4408f46003d6f01c6af109b9e2c8a66dd1cf6cf57f7d5d"},
+ {file = "scipy-1.17.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0cf46c8013fec9d3694dc572f0b54100c28405d55d3e2cb15e2895b25057996e"},
+ {file = "scipy-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:0937a0b0d8d593a198cededd4c439a0ea216a3f36653901ea1f3e4be949056f8"},
+ {file = "scipy-1.17.0-cp312-cp312-win_arm64.whl", hash = "sha256:f603d8a5518c7426414d1d8f82e253e454471de682ce5e39c29adb0df1efb86b"},
+ {file = "scipy-1.17.0-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:65ec32f3d32dfc48c72df4291345dae4f048749bc8d5203ee0a3f347f96c5ce6"},
+ {file = "scipy-1.17.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:1f9586a58039d7229ce77b52f8472c972448cded5736eaf102d5658bbac4c269"},
+ {file = "scipy-1.17.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:9fad7d3578c877d606b1150135c2639e9de9cecd3705caa37b66862977cc3e72"},
+ {file = "scipy-1.17.0-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:423ca1f6584fc03936972b5f7c06961670dbba9f234e71676a7c7ccf938a0d61"},
+ {file = "scipy-1.17.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fe508b5690e9eaaa9467fc047f833af58f1152ae51a0d0aed67aa5801f4dd7d6"},
+ {file = "scipy-1.17.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6680f2dfd4f6182e7d6db161344537da644d1cf85cf293f015c60a17ecf08752"},
+ {file = "scipy-1.17.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:eec3842ec9ac9de5917899b277428886042a93db0b227ebbe3a333b64ec7643d"},
+ {file = "scipy-1.17.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d7425fcafbc09a03731e1bc05581f5fad988e48c6a861f441b7ab729a49a55ea"},
+ {file = "scipy-1.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:87b411e42b425b84777718cc41516b8a7e0795abfa8e8e1d573bf0ef014f0812"},
+ {file = "scipy-1.17.0-cp313-cp313-win_arm64.whl", hash = "sha256:357ca001c6e37601066092e7c89cca2f1ce74e2a520ca78d063a6d2201101df2"},
+ {file = "scipy-1.17.0-cp313-cp313t-macosx_10_14_x86_64.whl", hash = "sha256:ec0827aa4d36cb79ff1b81de898e948a51ac0b9b1c43e4a372c0508c38c0f9a3"},
+ {file = "scipy-1.17.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:819fc26862b4b3c73a60d486dbb919202f3d6d98c87cf20c223511429f2d1a97"},
+ {file = "scipy-1.17.0-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:363ad4ae2853d88ebcde3ae6ec46ccca903ea9835ee8ba543f12f575e7b07e4e"},
+ {file = "scipy-1.17.0-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:979c3a0ff8e5ba254d45d59ebd38cde48fce4f10b5125c680c7a4bfe177aab07"},
+ {file = "scipy-1.17.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:130d12926ae34399d157de777472bf82e9061c60cc081372b3118edacafe1d00"},
+ {file = "scipy-1.17.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6e886000eb4919eae3a44f035e63f0fd8b651234117e8f6f29bad1cd26e7bc45"},
+ {file = "scipy-1.17.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:13c4096ac6bc31d706018f06a49abe0485f96499deb82066b94d19b02f664209"},
+ {file = "scipy-1.17.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:cacbaddd91fcffde703934897c5cd2c7cb0371fac195d383f4e1f1c5d3f3bd04"},
+ {file = "scipy-1.17.0-cp313-cp313t-win_amd64.whl", hash = "sha256:edce1a1cf66298cccdc48a1bdf8fb10a3bf58e8b58d6c3883dd1530e103f87c0"},
+ {file = "scipy-1.17.0-cp313-cp313t-win_arm64.whl", hash = "sha256:30509da9dbec1c2ed8f168b8d8aa853bc6723fede1dbc23c7d43a56f5ab72a67"},
+ {file = "scipy-1.17.0-cp314-cp314-macosx_10_14_x86_64.whl", hash = "sha256:c17514d11b78be8f7e6331b983a65a7f5ca1fd037b95e27b280921fe5606286a"},
+ {file = "scipy-1.17.0-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:4e00562e519c09da34c31685f6acc3aa384d4d50604db0f245c14e1b4488bfa2"},
+ {file = "scipy-1.17.0-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:f7df7941d71314e60a481e02d5ebcb3f0185b8d799c70d03d8258f6c80f3d467"},
+ {file = "scipy-1.17.0-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:aabf057c632798832f071a8dde013c2e26284043934f53b00489f1773b33527e"},
+ {file = "scipy-1.17.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a38c3337e00be6fd8a95b4ed66b5d988bac4ec888fd922c2ea9fe5fb1603dd67"},
+ {file = "scipy-1.17.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00fb5f8ec8398ad90215008d8b6009c9db9fa924fd4c7d6be307c6f945f9cd73"},
+ {file = "scipy-1.17.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:f2a4942b0f5f7c23c7cd641a0ca1955e2ae83dedcff537e3a0259096635e186b"},
+ {file = "scipy-1.17.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:dbf133ced83889583156566d2bdf7a07ff89228fe0c0cb727f777de92092ec6b"},
+ {file = "scipy-1.17.0-cp314-cp314-win_amd64.whl", hash = "sha256:3625c631a7acd7cfd929e4e31d2582cf00f42fcf06011f59281271746d77e061"},
+ {file = "scipy-1.17.0-cp314-cp314-win_arm64.whl", hash = "sha256:9244608d27eafe02b20558523ba57f15c689357c85bdcfe920b1828750aa26eb"},
+ {file = "scipy-1.17.0-cp314-cp314t-macosx_10_14_x86_64.whl", hash = "sha256:2b531f57e09c946f56ad0b4a3b2abee778789097871fc541e267d2eca081cff1"},
+ {file = "scipy-1.17.0-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:13e861634a2c480bd237deb69333ac79ea1941b94568d4b0efa5db5e263d4fd1"},
+ {file = "scipy-1.17.0-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:eb2651271135154aa24f6481cbae5cc8af1f0dd46e6533fb7b56aa9727b6a232"},
+ {file = "scipy-1.17.0-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:c5e8647f60679790c2f5c76be17e2e9247dc6b98ad0d3b065861e082c56e078d"},
+ {file = "scipy-1.17.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5fb10d17e649e1446410895639f3385fd2bf4c3c7dfc9bea937bddcbc3d7b9ba"},
+ {file = "scipy-1.17.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8547e7c57f932e7354a2319fab613981cde910631979f74c9b542bb167a8b9db"},
+ {file = "scipy-1.17.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:33af70d040e8af9d5e7a38b5ed3b772adddd281e3062ff23fec49e49681c38cf"},
+ {file = "scipy-1.17.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:f9eb55bb97d00f8b7ab95cb64f873eb0bf54d9446264d9f3609130381233483f"},
+ {file = "scipy-1.17.0-cp314-cp314t-win_amd64.whl", hash = "sha256:1ff269abf702f6c7e67a4b7aad981d42871a11b9dd83c58d2d2ea624efbd1088"},
+ {file = "scipy-1.17.0-cp314-cp314t-win_arm64.whl", hash = "sha256:031121914e295d9791319a1875444d55079885bbae5bdc9c5e0f2ee5f09d34ff"},
+ {file = "scipy-1.17.0.tar.gz", hash = "sha256:2591060c8e648d8b96439e111ac41fd8342fdeff1876be2e19dea3fe8930454e"},
+]
+
+[package.dependencies]
+numpy = ">=1.26.4,<2.7"
+
+[package.extras]
+dev = ["click (<8.3.0)", "cython-lint (>=0.12.2)", "mypy (==1.10.0)", "pycodestyle", "ruff (>=0.12.0)", "spin", "types-psutil", "typing_extensions"]
+doc = ["intersphinx_registry", "jupyterlite-pyodide-kernel", "jupyterlite-sphinx (>=0.19.1)", "jupytext", "linkify-it-py", "matplotlib (>=3.5)", "myst-nb (>=1.2.0)", "numpydoc", "pooch", "pydata-sphinx-theme (>=0.15.2)", "sphinx (>=5.0.0,<8.2.0)", "sphinx-copybutton", "sphinx-design (>=0.4.0)", "tabulate"]
+test = ["Cython", "array-api-strict (>=2.3.1)", "asv", "gmpy2", "hypothesis (>=6.30)", "meson", "mpmath", "ninja ; sys_platform != \"emscripten\"", "pooch", "pytest (>=8.0.0)", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"]
+
+[[package]]
+name = "send2trash"
+version = "2.0.0"
+description = "Send file to trash natively under Mac OS X, Windows and Linux"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,!=3.7.*"
+groups = ["main"]
+files = [
+ {file = "send2trash-2.0.0-py3-none-any.whl", hash = "sha256:e70d5ce41dbb890882cc78bc25d137478330b39a391e756fadf82e34da4d85b8"},
+ {file = "send2trash-2.0.0.tar.gz", hash = "sha256:1761421da3f9930bfe51ed7c45343948573383ad4c27e3acebc91be324e7770d"},
+]
+
+[package.extras]
+nativelib = ["pyobjc-framework-Cocoa ; sys_platform == \"darwin\"", "pywin32 ; sys_platform == \"win32\""]
+objc = ["pyobjc-framework-Cocoa ; sys_platform == \"darwin\""]
+win32 = ["pywin32 ; sys_platform == \"win32\""]
+
+[[package]]
+name = "setuptools"
+version = "80.9.0"
+description = "Easily download, build, install, upgrade, and uninstall Python packages"
+optional = false
+python-versions = ">=3.9"
+groups = ["main"]
+files = [
+ {file = "setuptools-80.9.0-py3-none-any.whl", hash = "sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922"},
+ {file = "setuptools-80.9.0.tar.gz", hash = "sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c"},
+]
+
+[package.extras]
+check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\"", "ruff (>=0.8.0) ; sys_platform != \"cygwin\""]
+core = ["importlib_metadata (>=6) ; python_version < \"3.10\"", "jaraco.functools (>=4)", "jaraco.text (>=3.7)", "more_itertools", "more_itertools (>=8.8)", "packaging (>=24.2)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1) ; python_version < \"3.11\"", "wheel (>=0.43.0)"]
+cover = ["pytest-cov"]
+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)"]
+enabler = ["pytest-enabler (>=2.2)"]
+test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21) ; python_version >= \"3.9\" and sys_platform != \"cygwin\"", "jaraco.envs (>=2.2)", "jaraco.path (>=3.7.2)", "jaraco.test (>=5.5)", "packaging (>=24.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf ; sys_platform != \"cygwin\"", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"]
+type = ["importlib_metadata (>=7.0.2) ; python_version < \"3.10\"", "jaraco.develop (>=7.21) ; sys_platform != \"cygwin\"", "mypy (==1.14.*)", "pytest-mypy"]
+
+[[package]]
+name = "six"
+version = "1.17.0"
+description = "Python 2 and 3 compatibility utilities"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
+groups = ["main"]
+files = [
+ {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"},
+ {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"},
+]
+
+[[package]]
+name = "soupsieve"
+version = "2.8.1"
+description = "A modern CSS selector implementation for Beautiful Soup."
+optional = false
+python-versions = ">=3.9"
+groups = ["main"]
+files = [
+ {file = "soupsieve-2.8.1-py3-none-any.whl", hash = "sha256:a11fe2a6f3d76ab3cf2de04eb339c1be5b506a8a47f2ceb6d139803177f85434"},
+ {file = "soupsieve-2.8.1.tar.gz", hash = "sha256:4cf733bc50fa805f5df4b8ef4740fc0e0fa6218cf3006269afd3f9d6d80fd350"},
+]
+
+[[package]]
+name = "stack-data"
+version = "0.6.3"
+description = "Extract data from python stack frames and tracebacks for informative displays"
+optional = false
+python-versions = "*"
+groups = ["main"]
+files = [
+ {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"},
+ {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"},
+]
+
+[package.dependencies]
+asttokens = ">=2.1.0"
+executing = ">=1.2.0"
+pure-eval = "*"
+
+[package.extras]
+tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"]
+
+[[package]]
+name = "sympy"
+version = "1.14.0"
+description = "Computer algebra system (CAS) in Python"
+optional = false
+python-versions = ">=3.9"
+groups = ["main"]
+files = [
+ {file = "sympy-1.14.0-py3-none-any.whl", hash = "sha256:e091cc3e99d2141a0ba2847328f5479b05d94a6635cb96148ccb3f34671bd8f5"},
+ {file = "sympy-1.14.0.tar.gz", hash = "sha256:d3d3fe8df1e5a0b42f0e7bdf50541697dbe7d23746e894990c030e2b05e72517"},
+]
+
+[package.dependencies]
+mpmath = ">=1.1.0,<1.4"
+
+[package.extras]
+dev = ["hypothesis (>=6.70.0)", "pytest (>=7.1.0)"]
+
+[[package]]
+name = "termcolor"
+version = "3.3.0"
+description = "ANSI color formatting for output in terminal"
+optional = false
+python-versions = ">=3.10"
+groups = ["main"]
+files = [
+ {file = "termcolor-3.3.0-py3-none-any.whl", hash = "sha256:cf642efadaf0a8ebbbf4bc7a31cec2f9b5f21a9f726f4ccbb08192c9c26f43a5"},
+ {file = "termcolor-3.3.0.tar.gz", hash = "sha256:348871ca648ec6a9a983a13ab626c0acce02f515b9e1983332b17af7979521c5"},
+]
+
+[package.extras]
+tests = ["pytest", "pytest-cov"]
+
+[[package]]
+name = "terminado"
+version = "0.18.1"
+description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library."
+optional = false
+python-versions = ">=3.8"
+groups = ["main"]
+files = [
+ {file = "terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0"},
+ {file = "terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e"},
+]
+
+[package.dependencies]
+ptyprocess = {version = "*", markers = "os_name != \"nt\""}
+pywinpty = {version = ">=1.1.0", markers = "os_name == \"nt\""}
+tornado = ">=6.1.0"
+
+[package.extras]
+docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"]
+test = ["pre-commit", "pytest (>=7.0)", "pytest-timeout"]
+typing = ["mypy (>=1.6,<2.0)", "traitlets (>=5.11.1)"]
+
+[[package]]
+name = "threadpoolctl"
+version = "3.6.0"
+description = "threadpoolctl"
+optional = false
+python-versions = ">=3.9"
+groups = ["main"]
+files = [
+ {file = "threadpoolctl-3.6.0-py3-none-any.whl", hash = "sha256:43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb"},
+ {file = "threadpoolctl-3.6.0.tar.gz", hash = "sha256:8ab8b4aa3491d812b623328249fab5302a68d2d71745c8a4c719a2fcaba9f44e"},
+]
+
+[[package]]
+name = "tinycss2"
+version = "1.4.0"
+description = "A tiny CSS parser"
+optional = false
+python-versions = ">=3.8"
+groups = ["main"]
+files = [
+ {file = "tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289"},
+ {file = "tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7"},
+]
+
+[package.dependencies]
+webencodings = ">=0.4"
+
+[package.extras]
+doc = ["sphinx", "sphinx_rtd_theme"]
+test = ["pytest", "ruff"]
+
+[[package]]
+name = "torch"
+version = "2.9.1"
+description = "Tensors and Dynamic neural networks in Python with strong GPU acceleration"
+optional = false
+python-versions = ">=3.10"
+groups = ["main"]
+files = [
+ {file = "torch-2.9.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:1cc208435f6c379f9b8fdfd5ceb5be1e3b72a6bdf1cb46c0d2812aa73472db9e"},
+ {file = "torch-2.9.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:9fd35c68b3679378c11f5eb73220fdcb4e6f4592295277fbb657d31fd053237c"},
+ {file = "torch-2.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:2af70e3be4a13becba4655d6cc07dcfec7ae844db6ac38d6c1dafeb245d17d65"},
+ {file = "torch-2.9.1-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:a83b0e84cc375e3318a808d032510dde99d696a85fe9473fc8575612b63ae951"},
+ {file = "torch-2.9.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:62b3fd888277946918cba4478cf849303da5359f0fb4e3bfb86b0533ba2eaf8d"},
+ {file = "torch-2.9.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d033ff0ac3f5400df862a51bdde9bad83561f3739ea0046e68f5401ebfa67c1b"},
+ {file = "torch-2.9.1-cp311-cp311-win_amd64.whl", hash = "sha256:0d06b30a9207b7c3516a9e0102114024755a07045f0c1d2f2a56b1819ac06bcb"},
+ {file = "torch-2.9.1-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:52347912d868653e1528b47cafaf79b285b98be3f4f35d5955389b1b95224475"},
+ {file = "torch-2.9.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:da5f6f4d7f4940a173e5572791af238cb0b9e21b1aab592bd8b26da4c99f1cd6"},
+ {file = "torch-2.9.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:27331cd902fb4322252657f3902adf1c4f6acad9dcad81d8df3ae14c7c4f07c4"},
+ {file = "torch-2.9.1-cp312-cp312-win_amd64.whl", hash = "sha256:81a285002d7b8cfd3fdf1b98aa8df138d41f1a8334fd9ea37511517cedf43083"},
+ {file = "torch-2.9.1-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:c0d25d1d8e531b8343bea0ed811d5d528958f1dcbd37e7245bc686273177ad7e"},
+ {file = "torch-2.9.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:c29455d2b910b98738131990394da3e50eea8291dfeb4b12de71ecf1fdeb21cb"},
+ {file = "torch-2.9.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:524de44cd13931208ba2c4bde9ec7741fd4ae6bfd06409a604fc32f6520c2bc9"},
+ {file = "torch-2.9.1-cp313-cp313-win_amd64.whl", hash = "sha256:545844cc16b3f91e08ce3b40e9c2d77012dd33a48d505aed34b7740ed627a1b2"},
+ {file = "torch-2.9.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5be4bf7496f1e3ffb1dd44b672adb1ac3f081f204c5ca81eba6442f5f634df8e"},
+ {file = "torch-2.9.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:30a3e170a84894f3652434b56d59a64a2c11366b0ed5776fab33c2439396bf9a"},
+ {file = "torch-2.9.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:8301a7b431e51764629208d0edaa4f9e4c33e6df0f2f90b90e261d623df6a4e2"},
+ {file = "torch-2.9.1-cp313-cp313t-win_amd64.whl", hash = "sha256:2e1c42c0ae92bf803a4b2409fdfed85e30f9027a66887f5e7dcdbc014c7531db"},
+ {file = "torch-2.9.1-cp313-none-macosx_11_0_arm64.whl", hash = "sha256:2c14b3da5df416cf9cb5efab83aa3056f5b8cd8620b8fde81b4987ecab730587"},
+ {file = "torch-2.9.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1edee27a7c9897f4e0b7c14cfc2f3008c571921134522d5b9b5ec4ebbc69041a"},
+ {file = "torch-2.9.1-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:19d144d6b3e29921f1fc70503e9f2fc572cde6a5115c0c0de2f7ca8b1483e8b6"},
+ {file = "torch-2.9.1-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:c432d04376f6d9767a9852ea0def7b47a7bbc8e7af3b16ac9cf9ce02b12851c9"},
+ {file = "torch-2.9.1-cp314-cp314-win_amd64.whl", hash = "sha256:d187566a2cdc726fc80138c3cdb260970fab1c27e99f85452721f7759bbd554d"},
+ {file = "torch-2.9.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:cb10896a1f7fedaddbccc2017ce6ca9ecaaf990f0973bdfcf405439750118d2c"},
+ {file = "torch-2.9.1-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:0a2bd769944991c74acf0c4ef23603b9c777fdf7637f115605a4b2d8023110c7"},
+ {file = "torch-2.9.1-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:07c8a9660bc9414c39cac530ac83b1fb1b679d7155824144a40a54f4a47bfa73"},
+ {file = "torch-2.9.1-cp314-cp314t-win_amd64.whl", hash = "sha256:c88d3299ddeb2b35dcc31753305612db485ab6f1823e37fb29451c8b2732b87e"},
+]
+
+[package.dependencies]
+filelock = "*"
+fsspec = ">=0.8.5"
+jinja2 = "*"
+networkx = ">=2.5.1"
+nvidia-cublas-cu12 = {version = "12.8.4.1", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-cuda-cupti-cu12 = {version = "12.8.90", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-cuda-nvrtc-cu12 = {version = "12.8.93", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-cuda-runtime-cu12 = {version = "12.8.90", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-cudnn-cu12 = {version = "9.10.2.21", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-cufft-cu12 = {version = "11.3.3.83", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-cufile-cu12 = {version = "1.13.1.3", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-curand-cu12 = {version = "10.3.9.90", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-cusolver-cu12 = {version = "11.7.3.90", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-cusparse-cu12 = {version = "12.5.8.93", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-cusparselt-cu12 = {version = "0.7.1", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-nccl-cu12 = {version = "2.27.5", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-nvjitlink-cu12 = {version = "12.8.93", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-nvshmem-cu12 = {version = "3.3.20", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-nvtx-cu12 = {version = "12.8.90", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+setuptools = {version = "*", markers = "python_version >= \"3.12\""}
+sympy = ">=1.13.3"
+triton = {version = "3.5.1", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+typing-extensions = ">=4.10.0"
+
+[package.extras]
+opt-einsum = ["opt-einsum (>=3.3)"]
+optree = ["optree (>=0.13.0)"]
+pyyaml = ["pyyaml"]
+
+[[package]]
+name = "torchaudio"
+version = "2.9.1"
+description = "An audio package for PyTorch"
+optional = false
+python-versions = "*"
+groups = ["main"]
+files = [
+ {file = "torchaudio-2.9.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd13541197e035338bd43225b2067532056486d357c661e12d49ace4fc37f8bb"},
+ {file = "torchaudio-2.9.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:31ec46b718b7caa0182221bfb42e2ad223947b752a996dcdc0388c34a678c966"},
+ {file = "torchaudio-2.9.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:ee11695b367f64638b4a0340cc9abb9be2173c6537bfe4ab286c6fbff68a1444"},
+ {file = "torchaudio-2.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:acffac66d0908baa4ef16ce5ce6d2a7bc10c2534fce719b146744f306ba08c4a"},
+ {file = "torchaudio-2.9.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6e3f5943135701168d30196e2befd46290180cdbb9ee508b167730d51f43208f"},
+ {file = "torchaudio-2.9.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:d192cf3b1b677f6666dad60caf0ce7bab66965751570c694645dd905a6c61724"},
+ {file = "torchaudio-2.9.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:8327e21f51dced2b6de3ac6a63f04bae9be9bc213e151f85c76164568c7ebc3d"},
+ {file = "torchaudio-2.9.1-cp311-cp311-win_amd64.whl", hash = "sha256:b41339a71b186bad238d94cfb68d4c202db0033088a7b824ce5484674bf67057"},
+ {file = "torchaudio-2.9.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7581ef170794c599aed55918e00d0acd9e5c9a0f19400c9a9a840955180365c5"},
+ {file = "torchaudio-2.9.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:742f9d24db5f1f46d8c7e29c599fe55b866d92c4a8181fcb95eab12da225ceb0"},
+ {file = "torchaudio-2.9.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:4533fdafba73d7bcfcb5f1225b2cc8974a290ed0fe54c44638d6f440e91b8999"},
+ {file = "torchaudio-2.9.1-cp312-cp312-win_amd64.whl", hash = "sha256:923dccc67be4a6cbb45c3dcc2d69ee182bda75b09b69bc88cd3bcdfc739883a2"},
+ {file = "torchaudio-2.9.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:bb69557484c92513a980027ec4cb314b0f43cf4442bbfd97440e66528dbad22d"},
+ {file = "torchaudio-2.9.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:ba2799ceec5e4373a0aa26df30d608f1eaaefd8ac4a7ae0c3446f63106f5b5a5"},
+ {file = "torchaudio-2.9.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:bc3c8e9a240bfad8bc61f769324a4f3ce5d60eec161369d457c595c35dbb10c7"},
+ {file = "torchaudio-2.9.1-cp313-cp313-win_amd64.whl", hash = "sha256:13ee96ea9bbbc85e198cb671273af06f010e6981d7b912d001eef6bc74e23f4f"},
+ {file = "torchaudio-2.9.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:9290f6a6409deb1f9113d5aef97ec646eeee6410b6bcc57ab8b57066b54da7c1"},
+ {file = "torchaudio-2.9.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:eeae7ca60b64c4bfb78fbd104a089d072b151423d5d2f90da1da00787f03b800"},
+ {file = "torchaudio-2.9.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:5f445e896215e6f7bba497dc68aab1e6cb077ae0ab3a90095067f16df6a9bb98"},
+ {file = "torchaudio-2.9.1-cp313-cp313t-win_amd64.whl", hash = "sha256:c558ba70d548f7491245ed7a35310f6310d83fc7591f073ab5fed9fd38cef987"},
+ {file = "torchaudio-2.9.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:69a582650279ee16ff9087f99b4234fe5d766e1bf7f0be352db5f46991854c1e"},
+ {file = "torchaudio-2.9.1-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:9c0d004f784c49078017f8217fdc901df0eb9724e50fb269b3a6c99b1d4eae75"},
+ {file = "torchaudio-2.9.1-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:d2743b28ff5538d5fdf2ff6657d392852ccdfe640ede46f566b2907ca32d8dca"},
+ {file = "torchaudio-2.9.1-cp314-cp314-win_amd64.whl", hash = "sha256:234c7a9d4d0a6ed735cd37965baa9a89ca36bdbebece8a6a5ff7727acbb43026"},
+ {file = "torchaudio-2.9.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:e13cb38971ac259fc4e102282a3e48f6df5f0ab00eb785ca5155e3392d1e86f1"},
+ {file = "torchaudio-2.9.1-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:35c96ed1011b50eaf17948da173b09450cdc5bb7f908687571adb4a4c072c05e"},
+ {file = "torchaudio-2.9.1-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:c220c4acf9914cce2dc81c3624d7c84008ef436dc31bcbb89e8f4416d3615a34"},
+ {file = "torchaudio-2.9.1-cp314-cp314t-win_amd64.whl", hash = "sha256:cfd12934c7b54b41d4c79dfd26fbfe88fafa9cc5cc77c074e953bb7018d9322c"},
+]
+
+[package.dependencies]
+torch = "2.9.1"
+
+[[package]]
+name = "torchvision"
+version = "0.24.1"
+description = "image and video datasets and models for torch deep learning"
+optional = false
+python-versions = ">=3.10"
+groups = ["main"]
+files = [
+ {file = "torchvision-0.24.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ded5e625788572e4e1c4d155d1bbc48805c113794100d70e19c76e39e4d53465"},
+ {file = "torchvision-0.24.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:54ed17c3d30e718e08d8da3fd5b30ea44b0311317e55647cb97077a29ecbc25b"},
+ {file = "torchvision-0.24.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:f476da4e085b7307aaab6f540219617d46d5926aeda24be33e1359771c83778f"},
+ {file = "torchvision-0.24.1-cp310-cp310-win_amd64.whl", hash = "sha256:fbdbdae5e540b868a681240b7dbd6473986c862445ee8a138680a6a97d6c34ff"},
+ {file = "torchvision-0.24.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:056c525dc875f18fe8e9c27079ada166a7b2755cea5a2199b0bc7f1f8364e600"},
+ {file = "torchvision-0.24.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:1e39619de698e2821d71976c92c8a9e50cdfd1e993507dfb340f2688bfdd8283"},
+ {file = "torchvision-0.24.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a0f106663e60332aa4fcb1ca2159ef8c3f2ed266b0e6df88de261048a840e0df"},
+ {file = "torchvision-0.24.1-cp311-cp311-win_amd64.whl", hash = "sha256:a9308cdd37d8a42e14a3e7fd9d271830c7fecb150dd929b642f3c1460514599a"},
+ {file = "torchvision-0.24.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e48bf6a8ec95872eb45763f06499f87bd2fb246b9b96cb00aae260fda2f96193"},
+ {file = "torchvision-0.24.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:7fb7590c737ebe3e1c077ad60c0e5e2e56bb26e7bccc3b9d04dbfc34fd09f050"},
+ {file = "torchvision-0.24.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:66a98471fc18cad9064123106d810a75f57f0838eee20edc56233fd8484b0cc7"},
+ {file = "torchvision-0.24.1-cp312-cp312-win_amd64.whl", hash = "sha256:4aa6cb806eb8541e92c9b313e96192c6b826e9eb0042720e2fa250d021079952"},
+ {file = "torchvision-0.24.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:8a6696db7fb71eadb2c6a48602106e136c785642e598eb1533e0b27744f2cce6"},
+ {file = "torchvision-0.24.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:db2125c46f9cb25dc740be831ce3ce99303cfe60439249a41b04fd9f373be671"},
+ {file = "torchvision-0.24.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:f035f0cacd1f44a8ff6cb7ca3627d84c54d685055961d73a1a9fb9827a5414c8"},
+ {file = "torchvision-0.24.1-cp313-cp313-win_amd64.whl", hash = "sha256:16274823b93048e0a29d83415166a2e9e0bf4e1b432668357b657612a4802864"},
+ {file = "torchvision-0.24.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e3f96208b4bef54cd60e415545f5200346a65024e04f29a26cd0006dbf9e8e66"},
+ {file = "torchvision-0.24.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:f231f6a4f2aa6522713326d0d2563538fa72d613741ae364f9913027fa52ea35"},
+ {file = "torchvision-0.24.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:1540a9e7f8cf55fe17554482f5a125a7e426347b71de07327d5de6bfd8d17caa"},
+ {file = "torchvision-0.24.1-cp313-cp313t-win_amd64.whl", hash = "sha256:d83e16d70ea85d2f196d678bfb702c36be7a655b003abed84e465988b6128938"},
+ {file = "torchvision-0.24.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:cccf4b4fec7fdfcd3431b9ea75d1588c0a8596d0333245dafebee0462abe3388"},
+ {file = "torchvision-0.24.1-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:1b495edd3a8f9911292424117544f0b4ab780452e998649425d1f4b2bed6695f"},
+ {file = "torchvision-0.24.1-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:ab211e1807dc3e53acf8f6638df9a7444c80c0ad050466e8d652b3e83776987b"},
+ {file = "torchvision-0.24.1-cp314-cp314-win_amd64.whl", hash = "sha256:18f9cb60e64b37b551cd605a3d62c15730c086362b40682d23e24b616a697d41"},
+ {file = "torchvision-0.24.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:ec9d7379c519428395e4ffda4dbb99ec56be64b0a75b95989e00f9ec7ae0b2d7"},
+ {file = "torchvision-0.24.1-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:af9201184c2712d808bd4eb656899011afdfce1e83721c7cb08000034df353fe"},
+ {file = "torchvision-0.24.1-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:9ef95d819fd6df81bc7cc97b8f21a15d2c0d3ac5dbfaab5cbc2d2ce57114b19e"},
+ {file = "torchvision-0.24.1-cp314-cp314t-win_amd64.whl", hash = "sha256:480b271d6edff83ac2e8d69bbb4cf2073f93366516a50d48f140ccfceedb002e"},
+]
+
+[package.dependencies]
+numpy = "*"
+pillow = ">=5.3.0,<8.3.dev0 || >=8.4.dev0"
+torch = "2.9.1"
+
+[package.extras]
+gdown = ["gdown (>=4.7.3)"]
+scipy = ["scipy"]
+
+[[package]]
+name = "tornado"
+version = "6.5.4"
+description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed."
+optional = false
+python-versions = ">=3.9"
+groups = ["main"]
+files = [
+ {file = "tornado-6.5.4-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d6241c1a16b1c9e4cc28148b1cda97dd1c6cb4fb7068ac1bedc610768dff0ba9"},
+ {file = "tornado-6.5.4-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:2d50f63dda1d2cac3ae1fa23d254e16b5e38153758470e9956cbc3d813d40843"},
+ {file = "tornado-6.5.4-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1cf66105dc6acb5af613c054955b8137e34a03698aa53272dbda4afe252be17"},
+ {file = "tornado-6.5.4-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50ff0a58b0dc97939d29da29cd624da010e7f804746621c78d14b80238669335"},
+ {file = "tornado-6.5.4-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5fb5e04efa54cf0baabdd10061eb4148e0be137166146fff835745f59ab9f7f"},
+ {file = "tornado-6.5.4-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9c86b1643b33a4cd415f8d0fe53045f913bf07b4a3ef646b735a6a86047dda84"},
+ {file = "tornado-6.5.4-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:6eb82872335a53dd063a4f10917b3efd28270b56a33db69009606a0312660a6f"},
+ {file = "tornado-6.5.4-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:6076d5dda368c9328ff41ab5d9dd3608e695e8225d1cd0fd1e006f05da3635a8"},
+ {file = "tornado-6.5.4-cp39-abi3-win32.whl", hash = "sha256:1768110f2411d5cd281bac0a090f707223ce77fd110424361092859e089b38d1"},
+ {file = "tornado-6.5.4-cp39-abi3-win_amd64.whl", hash = "sha256:fa07d31e0cd85c60713f2b995da613588aa03e1303d75705dca6af8babc18ddc"},
+ {file = "tornado-6.5.4-cp39-abi3-win_arm64.whl", hash = "sha256:053e6e16701eb6cbe641f308f4c1a9541f91b6261991160391bfc342e8a551a1"},
+ {file = "tornado-6.5.4.tar.gz", hash = "sha256:a22fa9047405d03260b483980635f0b041989d8bcc9a313f8fe18b411d84b1d7"},
+]
+
+[[package]]
+name = "tqdm"
+version = "4.67.1"
+description = "Fast, Extensible Progress Meter"
+optional = false
+python-versions = ">=3.7"
+groups = ["main"]
+files = [
+ {file = "tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2"},
+ {file = "tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2"},
+]
+
+[package.dependencies]
+colorama = {version = "*", markers = "platform_system == \"Windows\""}
+
+[package.extras]
+dev = ["nbval", "pytest (>=6)", "pytest-asyncio (>=0.24)", "pytest-cov", "pytest-timeout"]
+discord = ["requests"]
+notebook = ["ipywidgets (>=6)"]
+slack = ["slack-sdk"]
+telegram = ["requests"]
+
+[[package]]
+name = "traitlets"
+version = "5.14.3"
+description = "Traitlets Python configuration system"
+optional = false
+python-versions = ">=3.8"
+groups = ["main"]
+files = [
+ {file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f"},
+ {file = "traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7"},
+]
+
+[package.extras]
+docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"]
+test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<8.2)", "pytest-mock", "pytest-mypy-testing"]
+
+[[package]]
+name = "triton"
+version = "3.5.1"
+description = "A language and compiler for custom Deep Learning operations"
+optional = false
+python-versions = "<3.15,>=3.10"
+groups = ["main"]
+markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""
+files = [
+ {file = "triton-3.5.1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f63e34dcb32d7bd3a1d0195f60f30d2aee8b08a69a0424189b71017e23dfc3d2"},
+ {file = "triton-3.5.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5fc53d849f879911ea13f4a877243afc513187bc7ee92d1f2c0f1ba3169e3c94"},
+ {file = "triton-3.5.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:da47169e30a779bade679ce78df4810fca6d78a955843d2ddb11f226adc517dc"},
+ {file = "triton-3.5.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:61413522a48add32302353fdbaaf92daaaab06f6b5e3229940d21b5207f47579"},
+ {file = "triton-3.5.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:275a045b6ed670dd1bd005c3e6c2d61846c74c66f4512d6f33cc027b11de8fd4"},
+ {file = "triton-3.5.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d2c6b915a03888ab931a9fd3e55ba36785e1fe70cbea0b40c6ef93b20fc85232"},
+ {file = "triton-3.5.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:56765ffe12c554cd560698398b8a268db1f616c120007bfd8829d27139abd24a"},
+ {file = "triton-3.5.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f3f4346b6ebbd4fad18773f5ba839114f4826037c9f2f34e0148894cd5dd3dba"},
+ {file = "triton-3.5.1-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:02c770856f5e407d24d28ddc66e33cf026e6f4d360dcb8b2fabe6ea1fc758621"},
+ {file = "triton-3.5.1-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0b4d2c70127fca6a23e247f9348b8adde979d2e7a20391bfbabaac6aebc7e6a8"},
+ {file = "triton-3.5.1-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f617aa7925f9ea9968ec2e1adaf93e87864ff51549c8f04ce658f29bbdb71e2d"},
+ {file = "triton-3.5.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d0637b1efb1db599a8e9dc960d53ab6e4637db7d4ab6630a0974705d77b14b60"},
+ {file = "triton-3.5.1-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8932391d7f93698dfe5bc9bead77c47a24f97329e9f20c10786bb230a9083f56"},
+ {file = "triton-3.5.1-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bac7f7d959ad0f48c0e97d6643a1cc0fd5786fe61cb1f83b537c6b2d54776478"},
+]
+
+[package.extras]
+build = ["cmake (>=3.20,<4.0)", "lit"]
+tests = ["autopep8", "isort", "llnl-hatchet", "numpy", "pytest", "pytest-forked", "pytest-xdist", "scipy (>=1.7.1)"]
+tutorials = ["matplotlib", "pandas", "tabulate"]
+
+[[package]]
+name = "typing-extensions"
+version = "4.15.0"
+description = "Backported and Experimental Type Hints for Python 3.9+"
+optional = false
+python-versions = ">=3.9"
+groups = ["main"]
+files = [
+ {file = "typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548"},
+ {file = "typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466"},
+]
+
+[[package]]
+name = "tzdata"
+version = "2025.3"
+description = "Provider of IANA time zone data"
+optional = false
+python-versions = ">=2"
+groups = ["main"]
+files = [
+ {file = "tzdata-2025.3-py2.py3-none-any.whl", hash = "sha256:06a47e5700f3081aab02b2e513160914ff0694bce9947d6b76ebd6bf57cfc5d1"},
+ {file = "tzdata-2025.3.tar.gz", hash = "sha256:de39c2ca5dc7b0344f2eba86f49d614019d29f060fc4ebc8a417896a620b56a7"},
+]
+
+[[package]]
+name = "uri-template"
+version = "1.3.0"
+description = "RFC 6570 URI Template Processor"
+optional = false
+python-versions = ">=3.7"
+groups = ["main"]
+files = [
+ {file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"},
+ {file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363"},
+]
+
+[package.extras]
+dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake8-commas", "flake8-comprehensions", "flake8-continuation", "flake8-datetimez", "flake8-docstrings", "flake8-import-order", "flake8-literal", "flake8-modern-annotations", "flake8-noqa", "flake8-pyproject", "flake8-requirements", "flake8-typechecking-import", "flake8-use-fstring", "mypy", "pep8-naming", "types-PyYAML"]
+
+[[package]]
+name = "urllib3"
+version = "2.6.3"
+description = "HTTP library with thread-safe connection pooling, file post, and more."
+optional = false
+python-versions = ">=3.9"
+groups = ["main"]
+files = [
+ {file = "urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4"},
+ {file = "urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed"},
+]
+
+[package.extras]
+brotli = ["brotli (>=1.2.0) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=1.2.0.0) ; platform_python_implementation != \"CPython\""]
+h2 = ["h2 (>=4,<5)"]
+socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"]
+zstd = ["backports-zstd (>=1.0.0) ; python_version < \"3.14\""]
+
+[[package]]
+name = "wcwidth"
+version = "0.2.14"
+description = "Measures the displayed width of unicode strings in a terminal"
+optional = false
+python-versions = ">=3.6"
+groups = ["main"]
+files = [
+ {file = "wcwidth-0.2.14-py2.py3-none-any.whl", hash = "sha256:a7bb560c8aee30f9957e5f9895805edd20602f2d7f720186dfd906e82b4982e1"},
+ {file = "wcwidth-0.2.14.tar.gz", hash = "sha256:4d478375d31bc5395a3c55c40ccdf3354688364cd61c4f6adacaa9215d0b3605"},
+]
+
+[[package]]
+name = "webcolors"
+version = "25.10.0"
+description = "A library for working with the color formats defined by HTML and CSS."
+optional = false
+python-versions = ">=3.10"
+groups = ["main"]
+files = [
+ {file = "webcolors-25.10.0-py3-none-any.whl", hash = "sha256:032c727334856fc0b968f63daa252a1ac93d33db2f5267756623c210e57a4f1d"},
+ {file = "webcolors-25.10.0.tar.gz", hash = "sha256:62abae86504f66d0f6364c2a8520de4a0c47b80c03fc3a5f1815fedbef7c19bf"},
+]
+
+[[package]]
+name = "webencodings"
+version = "0.5.1"
+description = "Character encoding aliases for legacy web content"
+optional = false
+python-versions = "*"
+groups = ["main"]
+files = [
+ {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"},
+ {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"},
+]
+
+[[package]]
+name = "websocket-client"
+version = "1.9.0"
+description = "WebSocket client for Python with low level API options"
+optional = false
+python-versions = ">=3.9"
+groups = ["main"]
+files = [
+ {file = "websocket_client-1.9.0-py3-none-any.whl", hash = "sha256:af248a825037ef591efbf6ed20cc5faa03d3b47b9e5a2230a529eeee1c1fc3ef"},
+ {file = "websocket_client-1.9.0.tar.gz", hash = "sha256:9e813624b6eb619999a97dc7958469217c3176312b3a16a4bd1bc7e08a46ec98"},
+]
+
+[package.extras]
+docs = ["Sphinx (>=6.0)", "myst-parser (>=2.0.0)", "sphinx_rtd_theme (>=1.1.0)"]
+optional = ["python-socks", "wsaccel"]
+test = ["pytest", "websockets"]
+
+[[package]]
+name = "widgetsnbextension"
+version = "4.0.15"
+description = "Jupyter interactive widgets for Jupyter Notebook"
+optional = false
+python-versions = ">=3.7"
+groups = ["main"]
+files = [
+ {file = "widgetsnbextension-4.0.15-py3-none-any.whl", hash = "sha256:8156704e4346a571d9ce73b84bee86a29906c9abfd7223b7228a28899ccf3366"},
+ {file = "widgetsnbextension-4.0.15.tar.gz", hash = "sha256:de8610639996f1567952d763a5a41af8af37f2575a41f9852a38f947eb82a3b9"},
+]
+
+[metadata]
+lock-version = "2.1"
+python-versions = ">=3.11,<3.15"
+content-hash = "0a4fddedd0b3be5c2d4f1e67e73a778af08fa42296ca140b2779b7641fcedf8c"
diff --git a/pyproject.toml b/pyproject.toml
new file mode 100644
index 0000000..8da5014
--- /dev/null
+++ b/pyproject.toml
@@ -0,0 +1,28 @@
+[project]
+name = "thesis"
+version = "0.0.1"
+description = "Моя диссертационная работа"
+authors = [
+ {name = "Zin"}
+]
+readme = "README.md"
+requires-python = ">=3.11,<3.15"
+dependencies = [
+ "torch (==2.9.1)",
+ "torchvision (==0.24.1)",
+ "matplotlib (>=3.10.8,<4.0.0)",
+ "jupyterlab (>=4.5.1,<5.0.0)",
+ "ipykernel (>=7.1.0,<8.0.0)",
+ "torchaudio (>=2.9.1,<3.0.0)",
+ "numpy (>=2.4.1,<3.0.0)",
+ "pandas (>=2.3.3,<3.0.0)",
+ "scikit-learn (>=1.8.0,<2.0.0)",
+ "tqdm (>=4.67.1,<5.0.0)",
+ "jupyter (>=1.1.1,<2.0.0)",
+ "findingemo-light (>=1.0.0,<2.0.0)"
+]
+
+
+[build-system]
+requires = ["poetry-core>=2.0.0,<3.0.0"]
+build-backend = "poetry.core.masonry.api"
diff --git a/pyvenv.cfg b/pyvenv.cfg
new file mode 100644
index 0000000..759c99c
--- /dev/null
+++ b/pyvenv.cfg
@@ -0,0 +1,8 @@
+home = /usr/bin
+implementation = CPython
+version_info = 3.12.3.final.0
+virtualenv = 20.31.2
+include-system-site-packages = false
+base-prefix = /usr
+base-exec-prefix = /usr
+base-executable = /usr/bin/python3.12
diff --git a/share/applications/jupyterlab.desktop b/share/applications/jupyterlab.desktop
new file mode 100644
index 0000000..93fe940
--- /dev/null
+++ b/share/applications/jupyterlab.desktop
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Name=JupyterLab
+Comment=Run JupyterLab
+Exec=jupyter-lab %f
+Terminal=true
+Type=Application
+Icon=jupyterlab
+StartupNotify=true
+MimeType=application/x-ipynb+json;
+Categories=Development;Education;
+Keywords=python;
diff --git a/share/icons/hicolor/scalable/apps/jupyterlab.svg b/share/icons/hicolor/scalable/apps/jupyterlab.svg
new file mode 100644
index 0000000..3e25e74
--- /dev/null
+++ b/share/icons/hicolor/scalable/apps/jupyterlab.svg
@@ -0,0 +1,164 @@
+
+
diff --git a/share/jupyter/kernels/python3/kernel.json b/share/jupyter/kernels/python3/kernel.json
new file mode 100644
index 0000000..cca38a4
--- /dev/null
+++ b/share/jupyter/kernels/python3/kernel.json
@@ -0,0 +1,14 @@
+{
+ "argv": [
+ "python",
+ "-m",
+ "ipykernel_launcher",
+ "-f",
+ "{connection_file}"
+ ],
+ "display_name": "Python 3 (ipykernel)",
+ "language": "python",
+ "metadata": {
+ "debugger": true
+ }
+}
\ No newline at end of file
diff --git a/share/jupyter/kernels/python3/logo-32x32.png b/share/jupyter/kernels/python3/logo-32x32.png
new file mode 100644
index 0000000..be81330
Binary files /dev/null and b/share/jupyter/kernels/python3/logo-32x32.png differ
diff --git a/share/jupyter/kernels/python3/logo-64x64.png b/share/jupyter/kernels/python3/logo-64x64.png
new file mode 100644
index 0000000..eebbff6
Binary files /dev/null and b/share/jupyter/kernels/python3/logo-64x64.png differ
diff --git a/share/jupyter/kernels/python3/logo-svg.svg b/share/jupyter/kernels/python3/logo-svg.svg
new file mode 100644
index 0000000..467b07b
--- /dev/null
+++ b/share/jupyter/kernels/python3/logo-svg.svg
@@ -0,0 +1,265 @@
+
+
+
+
diff --git a/share/jupyter/lab/schemas/@jupyterlab/application-extension/commands.json b/share/jupyter/lab/schemas/@jupyterlab/application-extension/commands.json
new file mode 100644
index 0000000..2375d6d
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/application-extension/commands.json
@@ -0,0 +1,376 @@
+{
+ "title": "Application Commands",
+ "description": "Application commands settings.",
+ "jupyter.lab.shortcuts": [
+ {
+ "command": "application:activate-next-tab",
+ "keys": ["Ctrl Shift ]"],
+ "selector": "body"
+ },
+ {
+ "command": "application:activate-previous-tab",
+ "keys": ["Ctrl Shift ["],
+ "selector": "body"
+ },
+ {
+ "command": "application:activate-next-tab-bar",
+ "keys": ["Ctrl Shift ."],
+ "selector": "body"
+ },
+ {
+ "command": "application:activate-previous-tab-bar",
+ "keys": ["Ctrl Shift ,"],
+ "selector": "body"
+ },
+ {
+ "command": "application:close",
+ "keys": ["Alt W"],
+ "selector": ".jp-Activity"
+ },
+ {
+ "command": "application:toggle-mode",
+ "keys": ["Accel Shift D"],
+ "selector": "body"
+ },
+ {
+ "command": "application:toggle-left-area",
+ "keys": ["Accel B"],
+ "selector": "body"
+ },
+ {
+ "command": "application:toggle-right-area",
+ "keys": ["Accel J"],
+ "selector": "body"
+ },
+ {
+ "command": "application:toggle-presentation-mode",
+ "keys": [""],
+ "selector": "body"
+ },
+ {
+ "command": "application:toggle-fullscreen-mode",
+ "keys": ["F11"],
+ "selector": "body"
+ },
+ {
+ "command": "application:toggle-sidebar-widget",
+ "keys": ["Alt 1"],
+ "macKeys": [""],
+ "selector": "body",
+ "args": {
+ "side": "left",
+ "index": 0
+ }
+ },
+ {
+ "command": "application:toggle-sidebar-widget",
+ "keys": ["Alt 2"],
+ "macKeys": [""],
+ "selector": "body",
+ "args": {
+ "side": "left",
+ "index": 1
+ }
+ },
+ {
+ "command": "application:toggle-sidebar-widget",
+ "keys": ["Alt 3"],
+ "macKeys": [""],
+ "selector": "body",
+ "args": {
+ "side": "left",
+ "index": 2
+ }
+ },
+ {
+ "command": "application:toggle-sidebar-widget",
+ "keys": ["Alt 4"],
+ "macKeys": [""],
+ "selector": "body",
+ "args": {
+ "side": "left",
+ "index": 3
+ }
+ },
+ {
+ "command": "application:toggle-sidebar-widget",
+ "keys": ["Alt 5"],
+ "macKeys": [""],
+ "selector": "body",
+ "args": {
+ "side": "left",
+ "index": 4
+ }
+ },
+ {
+ "command": "application:toggle-sidebar-widget",
+ "keys": ["Alt 6"],
+ "macKeys": [""],
+ "selector": "body",
+ "args": {
+ "side": "left",
+ "index": 5
+ }
+ },
+ {
+ "command": "application:toggle-sidebar-widget",
+ "keys": ["Alt 7"],
+ "macKeys": [""],
+ "selector": "body",
+ "args": {
+ "side": "left",
+ "index": 6
+ }
+ },
+ {
+ "command": "application:toggle-sidebar-widget",
+ "keys": ["Alt 8"],
+ "macKeys": [""],
+ "selector": "body",
+ "args": {
+ "side": "left",
+ "index": 7
+ }
+ },
+ {
+ "command": "application:toggle-sidebar-widget",
+ "keys": ["Alt 9"],
+ "macKeys": [""],
+ "selector": "body",
+ "args": {
+ "side": "left",
+ "index": 8
+ }
+ },
+ {
+ "command": "application:toggle-sidebar-widget",
+ "keys": ["Alt 0"],
+ "macKeys": [""],
+ "selector": "body",
+ "args": {
+ "side": "left",
+ "index": 9
+ }
+ },
+ {
+ "command": "application:toggle-sidebar-widget",
+ "keys": ["Alt Shift 1"],
+ "macKeys": [""],
+ "selector": "body",
+ "args": {
+ "side": "right",
+ "index": 0
+ }
+ },
+ {
+ "command": "application:toggle-sidebar-widget",
+ "keys": ["Alt Shift 2"],
+ "macKeys": [""],
+ "selector": "body",
+ "args": {
+ "side": "right",
+ "index": 1
+ }
+ },
+ {
+ "command": "application:toggle-sidebar-widget",
+ "keys": ["Alt Shift 3"],
+ "macKeys": [""],
+ "selector": "body",
+ "args": {
+ "side": "right",
+ "index": 2
+ }
+ },
+ {
+ "command": "application:toggle-sidebar-widget",
+ "keys": ["Alt Shift 4"],
+ "macKeys": [""],
+ "selector": "body",
+ "args": {
+ "side": "right",
+ "index": 3
+ }
+ },
+ {
+ "command": "application:toggle-sidebar-widget",
+ "keys": ["Alt Shift 5"],
+ "macKeys": [""],
+ "selector": "body",
+ "args": {
+ "side": "right",
+ "index": 4
+ }
+ },
+ {
+ "command": "application:toggle-sidebar-widget",
+ "keys": ["Alt Shift 6"],
+ "macKeys": [""],
+ "selector": "body",
+ "args": {
+ "side": "right",
+ "index": 5
+ }
+ },
+ {
+ "command": "application:toggle-sidebar-widget",
+ "keys": ["Alt Shift 7"],
+ "macKeys": [""],
+ "selector": "body",
+ "args": {
+ "side": "right",
+ "index": 6
+ }
+ },
+ {
+ "command": "application:toggle-sidebar-widget",
+ "keys": ["Alt Shift 8"],
+ "macKeys": [""],
+ "selector": "body",
+ "args": {
+ "side": "right",
+ "index": 7
+ }
+ },
+ {
+ "command": "application:toggle-sidebar-widget",
+ "keys": ["Alt Shift 9"],
+ "macKeys": [""],
+ "selector": "body",
+ "args": {
+ "side": "right",
+ "index": 8
+ }
+ },
+ {
+ "command": "application:toggle-sidebar-widget",
+ "keys": ["Alt Shift 0"],
+ "macKeys": [""],
+ "selector": "body",
+ "args": {
+ "side": "right",
+ "index": 9
+ }
+ }
+ ],
+ "jupyter.lab.menus": {
+ "main": [
+ {
+ "id": "jp-mainmenu-file",
+ "items": [
+ {
+ "type": "separator",
+ "rank": 3
+ },
+ {
+ "command": "application:close",
+ "rank": 3
+ },
+ {
+ "command": "application:close-all",
+ "rank": 3.2
+ }
+ ]
+ },
+ {
+ "id": "jp-mainmenu-view",
+ "items": [
+ {
+ "type": "submenu",
+ "rank": 1,
+ "submenu": {
+ "id": "jp-mainmenu-view-appearance",
+ "label": "Appearance",
+ "items": [
+ {
+ "command": "application:toggle-mode",
+ "rank": 0
+ },
+ {
+ "command": "application:toggle-presentation-mode",
+ "rank": 0
+ },
+ {
+ "command": "application:toggle-fullscreen-mode",
+ "rank": 0
+ },
+ {
+ "type": "separator",
+ "rank": 10
+ },
+ {
+ "command": "application:toggle-left-area",
+ "rank": 11
+ },
+ {
+ "command": "application:toggle-side-tabbar",
+ "rank": 12,
+ "args": {
+ "side": "left"
+ }
+ },
+ {
+ "command": "application:toggle-right-area",
+ "rank": 13
+ },
+ {
+ "command": "application:toggle-side-tabbar",
+ "rank": 14,
+ "args": {
+ "side": "right"
+ }
+ },
+ {
+ "command": "application:toggle-header",
+ "rank": 15
+ },
+ {
+ "type": "separator",
+ "rank": 50
+ },
+ {
+ "command": "application:reset-layout",
+ "rank": 51
+ }
+ ]
+ }
+ },
+ {
+ "type": "separator",
+ "rank": 1
+ }
+ ]
+ }
+ ],
+ "context": [
+ {
+ "command": "application:close",
+ "selector": "#jp-main-dock-panel .lm-DockPanel-tabBar .lm-TabBar-tab",
+ "rank": 4
+ },
+ {
+ "command": "application:close-other-tabs",
+ "selector": "#jp-main-dock-panel .lm-DockPanel-tabBar .lm-TabBar-tab",
+ "rank": 4
+ },
+ {
+ "command": "application:close-all",
+ "selector": "#jp-main-dock-panel .lm-DockPanel-tabBar .lm-TabBar-tab",
+ "rank": 4
+ },
+ {
+ "command": "application:close-right-tabs",
+ "selector": "#jp-main-dock-panel .lm-DockPanel-tabBar .lm-TabBar-tab",
+ "rank": 5
+ },
+ {
+ "command": "__internal:context-menu-info",
+ "selector": "body",
+ "rank": 9007199254740991
+ }
+ ]
+ },
+ "properties": {},
+ "additionalProperties": false,
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/application-extension/context-menu.json b/share/jupyter/lab/schemas/@jupyterlab/application-extension/context-menu.json
new file mode 100644
index 0000000..9e5dc0e
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/application-extension/context-menu.json
@@ -0,0 +1,120 @@
+{
+ "title": "Application Context Menu",
+ "description": "JupyterLab context menu settings.",
+ "jupyter.lab.setting-icon-label": "Application Context Menu",
+ "jupyter.lab.shortcuts": [],
+ "jupyter.lab.transform": true,
+ "properties": {
+ "contextMenu": {
+ "title": "The application context menu.",
+ "description": "Note: To disable a context menu item,\ncopy it to User Preferences and add the\n\"disabled\" key. The following example will disable Download item on files:\n{\n \"contextMenu\": [\n {\n \"command\": \"filebrowser:download\",\n \"selector\": \".jp-DirListing-item[data-isdir=\\\"false\\\"]\",\n \"disabled\": true\n }\n ]\n}\n\nContext menu description:",
+ "items": {
+ "allOf": [
+ { "$ref": "#/definitions/menuItem" },
+ {
+ "properties": {
+ "selector": {
+ "description": "The CSS selector for the context menu item.",
+ "type": "string"
+ }
+ }
+ }
+ ]
+ },
+ "type": "array",
+ "default": []
+ },
+ "disabled": {
+ "description": "Whether the application context (right-click) menu is disabled",
+ "type": "boolean",
+ "default": false
+ }
+ },
+ "additionalProperties": false,
+ "definitions": {
+ "menu": {
+ "properties": {
+ "disabled": {
+ "description": "Whether the menu is disabled or not",
+ "type": "boolean",
+ "default": false
+ },
+ "icon": {
+ "description": "Menu icon id",
+ "type": "string"
+ },
+ "id": {
+ "description": "Menu unique id",
+ "type": "string",
+ "pattern": "[a-z][a-z0-9\\-_]+"
+ },
+ "items": {
+ "description": "Menu items",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/menuItem"
+ }
+ },
+ "label": {
+ "description": "Menu label",
+ "type": "string"
+ },
+ "mnemonic": {
+ "description": "Mnemonic index for the label",
+ "type": "number",
+ "minimum": -1,
+ "default": -1
+ },
+ "rank": {
+ "description": "Menu rank",
+ "type": "number",
+ "minimum": 0
+ }
+ },
+ "required": ["id"],
+ "additionalProperties": false,
+ "type": "object"
+ },
+ "menuItem": {
+ "properties": {
+ "args": {
+ "description": "Command arguments",
+ "type": "object"
+ },
+ "command": {
+ "description": "Command id",
+ "type": "string"
+ },
+ "disabled": {
+ "description": "Whether the item is disabled or not",
+ "type": "boolean",
+ "default": false
+ },
+ "type": {
+ "description": "Item type",
+ "type": "string",
+ "enum": ["command", "submenu", "separator"],
+ "default": "command"
+ },
+ "rank": {
+ "description": "Item rank",
+ "type": "number",
+ "minimum": 0
+ },
+ "submenu": {
+ "description": "Submenu definition",
+ "oneOf": [
+ {
+ "$ref": "#/definitions/menu"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/application-extension/package.json.orig b/share/jupyter/lab/schemas/@jupyterlab/application-extension/package.json.orig
new file mode 100644
index 0000000..fefe2e2
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/application-extension/package.json.orig
@@ -0,0 +1,68 @@
+{
+ "name": "@jupyterlab/application-extension",
+ "version": "4.5.1",
+ "description": "JupyterLab - Application Extension",
+ "homepage": "https://github.com/jupyterlab/jupyterlab",
+ "bugs": {
+ "url": "https://github.com/jupyterlab/jupyterlab/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jupyterlab/jupyterlab.git"
+ },
+ "license": "BSD-3-Clause",
+ "author": "Project Jupyter",
+ "sideEffects": [
+ "style/**/*.css",
+ "style/index.js"
+ ],
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts",
+ "style": "style/index.css",
+ "directories": {
+ "lib": "lib/"
+ },
+ "files": [
+ "lib/*.d.ts",
+ "lib/*.js.map",
+ "lib/*.js",
+ "schema/*.json",
+ "style/**/*.css",
+ "style/index.js",
+ "src/**/*.{ts,tsx}"
+ ],
+ "scripts": {
+ "build": "tsc -b",
+ "clean": "rimraf lib && rimraf tsconfig.tsbuildinfo",
+ "watch": "tsc -b --watch"
+ },
+ "dependencies": {
+ "@jupyterlab/application": "^4.5.1",
+ "@jupyterlab/apputils": "^4.6.1",
+ "@jupyterlab/coreutils": "^6.5.1",
+ "@jupyterlab/property-inspector": "^4.5.1",
+ "@jupyterlab/settingregistry": "^4.5.1",
+ "@jupyterlab/statedb": "^4.5.1",
+ "@jupyterlab/statusbar": "^4.5.1",
+ "@jupyterlab/translation": "^4.5.1",
+ "@jupyterlab/ui-components": "^4.5.1",
+ "@lumino/algorithm": "^2.0.4",
+ "@lumino/commands": "^2.3.3",
+ "@lumino/coreutils": "^2.2.2",
+ "@lumino/disposable": "^2.1.5",
+ "@lumino/widgets": "^2.7.2",
+ "react": "^18.2.0"
+ },
+ "devDependencies": {
+ "rimraf": "~5.0.5",
+ "typescript": "~5.5.4"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "jupyterlab": {
+ "extension": true,
+ "schemaDir": "schema"
+ },
+ "styleModule": "style/index.js"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/application-extension/property-inspector.json b/share/jupyter/lab/schemas/@jupyterlab/application-extension/property-inspector.json
new file mode 100644
index 0000000..cb1367a
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/application-extension/property-inspector.json
@@ -0,0 +1,27 @@
+{
+ "title": "Property Inspector",
+ "description": "Property Inspector Settings.",
+ "jupyter.lab.menus": {
+ "main": [
+ {
+ "id": "jp-mainmenu-view",
+ "items": [
+ {
+ "command": "property-inspector:show-panel",
+ "rank": 2
+ }
+ ]
+ }
+ ]
+ },
+ "jupyter.lab.shortcuts": [
+ {
+ "command": "property-inspector:show-panel",
+ "keys": ["Accel Shift U"],
+ "selector": "body"
+ }
+ ],
+ "properties": {},
+ "additionalProperties": false,
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/application-extension/shell.json b/share/jupyter/lab/schemas/@jupyterlab/application-extension/shell.json
new file mode 100644
index 0000000..0bab5cb
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/application-extension/shell.json
@@ -0,0 +1,96 @@
+{
+ "$schema": "http://json-schema.org/draft-07/schema",
+ "title": "JupyterLab Shell",
+ "description": "JupyterLab Shell layout settings.",
+ "jupyter.lab.menus": {
+ "context": [
+ {
+ "command": "sidebar:switch",
+ "selector": ".jp-SideBar .lm-TabBar-tab",
+ "rank": 500
+ }
+ ]
+ },
+ "properties": {
+ "hiddenMode": {
+ "type": "string",
+ "title": "Hidden mode of main panel widgets",
+ "description": "The method for hiding widgets in the main dock panel. Using `scale` will increase performance on Firefox but don't use it with Chrome, Chromium or Edge. Similar performance gains are seen with `contentVisibility` which is only available in Chromium-based browsers.",
+ "enum": ["display", "scale", "contentVisibility"],
+ "default": "display"
+ },
+ "startMode": {
+ "enum": ["", "single", "multiple"],
+ "title": "Start mode: ``, `single` or `multiple`",
+ "description": "The mode under which JupyterLab should start. If empty, the mode will be imposed by the URL",
+ "default": ""
+ },
+ "layout": {
+ "type": "object",
+ "title": "Customize shell widget positioning",
+ "description": "Overrides default widget position in the application layout\ne.g. to position terminals in the right sidebar in multiple documents mode and in the down are in single document mode, {\n \"single\": { \"Terminal\": { \"area\": \"down\" } },\n \"multiple\": { \"Terminal\": { \"area\": \"right\" } }\n}.",
+ "properties": {
+ "single": {
+ "$ref": "#/definitions/layout",
+ "default": {
+ "Linked Console": { "area": "down" },
+ "Inspector": { "area": "down" },
+ "Cloned Output": { "area": "down" }
+ }
+ },
+ "multiple": { "$ref": "#/definitions/layout", "default": {} }
+ },
+ "default": {
+ "single": {
+ "Linked Console": { "area": "down" },
+ "Inspector": { "area": "down" },
+ "Cloned Output": { "area": "down" }
+ },
+ "multiple": {}
+ },
+ "additionalProperties": false
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "definitions": {
+ "layout": {
+ "type": "object",
+ "properties": {
+ "[\\w-]+": {
+ "type": "object",
+ "properties": {
+ "area": {
+ "enum": ["main", "left", "right", "down"]
+ },
+ "options": {
+ "$ref": "#/definitions/options"
+ }
+ },
+ "additionalProperties": false
+ }
+ }
+ },
+ "options": {
+ "type": "object",
+ "properties": {
+ "mode": {
+ "type": "string",
+ "enum": [
+ "split-top",
+ "split-left",
+ "split-right",
+ "split-bottom",
+ "tab-before",
+ "tab-after"
+ ]
+ },
+ "rank": { "type": "number", "minimum": 0 },
+ "ref": {
+ "type": "string",
+ "minLength": 1
+ }
+ }
+ }
+ }
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/application-extension/top-bar.json b/share/jupyter/lab/schemas/@jupyterlab/application-extension/top-bar.json
new file mode 100644
index 0000000..036ca9d
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/application-extension/top-bar.json
@@ -0,0 +1,80 @@
+{
+ "title": "Top Bar",
+ "description": "Top Bar settings.",
+ "jupyter.lab.toolbars": {
+ "TopBar": [
+ {
+ "name": "spacer",
+ "type": "spacer",
+ "rank": 50
+ }
+ ]
+ },
+ "jupyter.lab.transform": true,
+ "properties": {
+ "toolbar": {
+ "title": "Top bar items",
+ "description": "Note: To disable a item,\ncopy it to User Preferences and add the\n\"disabled\" key. The following example will disable the user menu:\n{\n \"toolbar\": [\n {\n \"name\": \"user-menu\",\n \"disabled\": true\n }\n ]\n}\n\nTop bar description:",
+ "items": {
+ "$ref": "#/definitions/toolbarItem"
+ },
+ "type": "array",
+ "default": []
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "definitions": {
+ "toolbarItem": {
+ "properties": {
+ "name": {
+ "title": "Unique name",
+ "type": "string"
+ },
+ "args": {
+ "title": "Command arguments",
+ "type": "object"
+ },
+ "command": {
+ "title": "Command id",
+ "type": "string",
+ "default": ""
+ },
+ "disabled": {
+ "title": "Whether the item is ignored or not",
+ "type": "boolean",
+ "default": false
+ },
+ "icon": {
+ "title": "Item icon id",
+ "description": "If defined, it will override the command icon",
+ "type": "string"
+ },
+ "label": {
+ "title": "Item label",
+ "description": "If defined, it will override the command label",
+ "type": "string"
+ },
+ "caption": {
+ "title": "Item caption",
+ "description": "If defined, it will override the command caption",
+ "type": "string"
+ },
+ "type": {
+ "title": "Item type",
+ "type": "string",
+ "enum": ["command", "spacer"]
+ },
+ "rank": {
+ "title": "Item rank",
+ "type": "number",
+ "minimum": 0,
+ "default": 50
+ }
+ },
+ "required": ["name"],
+ "additionalProperties": false,
+ "type": "object"
+ }
+ }
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/apputils-extension/kernels-settings.json b/share/jupyter/lab/schemas/@jupyterlab/apputils-extension/kernels-settings.json
new file mode 100644
index 0000000..3e26fe4
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/apputils-extension/kernels-settings.json
@@ -0,0 +1,27 @@
+{
+ "title": "Kernels",
+ "description": "Kernels and kernel sessions settings",
+ "jupyter.lab.setting-icon": "ui-components:kernel",
+ "jupyter.lab.setting-icon-label": "Kernel",
+ "additionalProperties": false,
+ "properties": {
+ "showStatusBarItem": {
+ "type": "boolean",
+ "title": "Show the status bar item",
+ "description": "Whether to show the running kernels item in the status bar",
+ "default": true
+ },
+ "commsOverSubshells": {
+ "type": "string",
+ "title": "Kernel Comms over subshells",
+ "description": "Whether comm messages should be sent to kernel subshells, if the kernel supports it.",
+ "default": "perCommTarget",
+ "oneOf": [
+ { "const": "disabled", "title": "Disabled" },
+ { "const": "perComm", "title": "One subshell per comm" },
+ { "const": "perCommTarget", "title": "One subshell per comm-target" }
+ ]
+ }
+ },
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/apputils-extension/notification.json b/share/jupyter/lab/schemas/@jupyterlab/apputils-extension/notification.json
new file mode 100644
index 0000000..ecb8f9c
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/apputils-extension/notification.json
@@ -0,0 +1,53 @@
+{
+ "title": "Notifications",
+ "description": "Notifications settings.",
+ "jupyter.lab.setting-icon": "ui-components:bell",
+ "jupyter.lab.menus": {
+ "main": [
+ {
+ "id": "jp-mainmenu-view",
+ "items": [
+ {
+ "type": "separator",
+ "rank": 9.9
+ },
+ {
+ "command": "apputils:display-notifications",
+ "rank": 9.92
+ },
+ {
+ "type": "separator",
+ "rank": 9.99
+ }
+ ]
+ }
+ ]
+ },
+ "additionalProperties": false,
+ "properties": {
+ "checkForUpdates": {
+ "title": "Check for JupyterLab updates",
+ "description": "Whether to check for newer versions of JupyterLab or not. It requires `fetchNews` to be set to Always (`true`) to be active. If `true`, it will make a request to a website.",
+ "type": "boolean",
+ "default": true
+ },
+ "doNotDisturbMode": {
+ "title": "Silence all notifications",
+ "description": "If `true`, no toast notifications will be automatically displayed.",
+ "type": "boolean",
+ "default": false
+ },
+ "fetchNews": {
+ "title": "Fetch official Jupyter news",
+ "description": "Whether to fetch news from the Jupyter news feed. If Always (`true`), it will make a request to a website.",
+ "type": "string",
+ "oneOf": [
+ { "const": "true", "title": "Always" },
+ { "const": "false", "title": "Never" },
+ { "const": "none", "title": "Ask (None)" }
+ ],
+ "default": "none"
+ }
+ },
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/apputils-extension/package.json.orig b/share/jupyter/lab/schemas/@jupyterlab/apputils-extension/package.json.orig
new file mode 100644
index 0000000..4a355d4
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/apputils-extension/package.json.orig
@@ -0,0 +1,76 @@
+{
+ "name": "@jupyterlab/apputils-extension",
+ "version": "4.5.1",
+ "description": "JupyterLab - Application Utilities Extension",
+ "homepage": "https://github.com/jupyterlab/jupyterlab",
+ "bugs": {
+ "url": "https://github.com/jupyterlab/jupyterlab/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jupyterlab/jupyterlab.git"
+ },
+ "license": "BSD-3-Clause",
+ "author": "Project Jupyter",
+ "sideEffects": [
+ "style/**/*"
+ ],
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts",
+ "style": "style/index.css",
+ "directories": {
+ "lib": "lib/"
+ },
+ "files": [
+ "lib/*.d.ts",
+ "lib/*.js.map",
+ "lib/*.js",
+ "style/*.css",
+ "style/images/*.svg",
+ "schema/*.json",
+ "style/index.js",
+ "src/**/*.{ts,tsx}"
+ ],
+ "scripts": {
+ "build": "tsc -b",
+ "clean": "rimraf lib && rimraf tsconfig.tsbuildinfo",
+ "watch": "tsc -b --watch"
+ },
+ "dependencies": {
+ "@jupyterlab/application": "^4.5.1",
+ "@jupyterlab/apputils": "^4.6.1",
+ "@jupyterlab/coreutils": "^6.5.1",
+ "@jupyterlab/docregistry": "^4.5.1",
+ "@jupyterlab/mainmenu": "^4.5.1",
+ "@jupyterlab/rendermime-interfaces": "^3.13.1",
+ "@jupyterlab/services": "^7.5.1",
+ "@jupyterlab/settingregistry": "^4.5.1",
+ "@jupyterlab/statedb": "^4.5.1",
+ "@jupyterlab/statusbar": "^4.5.1",
+ "@jupyterlab/translation": "^4.5.1",
+ "@jupyterlab/ui-components": "^4.5.1",
+ "@jupyterlab/workspaces": "^4.5.1",
+ "@lumino/algorithm": "^2.0.4",
+ "@lumino/commands": "^2.3.3",
+ "@lumino/coreutils": "^2.2.2",
+ "@lumino/disposable": "^2.1.5",
+ "@lumino/domutils": "^2.0.4",
+ "@lumino/polling": "^2.1.5",
+ "@lumino/widgets": "^2.7.2",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0",
+ "react-toastify": "^9.0.8"
+ },
+ "devDependencies": {
+ "rimraf": "~5.0.5",
+ "typescript": "~5.5.4"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "jupyterlab": {
+ "extension": true,
+ "schemaDir": "schema"
+ },
+ "styleModule": "style/index.js"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/apputils-extension/palette.json b/share/jupyter/lab/schemas/@jupyterlab/apputils-extension/palette.json
new file mode 100644
index 0000000..17c341e
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/apputils-extension/palette.json
@@ -0,0 +1,40 @@
+{
+ "title": "Command Palette",
+ "description": "Command palette settings.",
+ "jupyter.lab.setting-icon": "ui-components:palette",
+ "jupyter.lab.setting-icon-label": "Command Palette",
+ "jupyter.lab.menus": {
+ "main": [
+ {
+ "id": "jp-mainmenu-view",
+ "items": [
+ {
+ "command": "apputils:activate-command-palette",
+ "rank": 0
+ },
+ {
+ "type": "separator",
+ "rank": 0
+ }
+ ]
+ }
+ ]
+ },
+ "jupyter.lab.shortcuts": [
+ {
+ "command": "apputils:activate-command-palette",
+ "keys": ["Accel Shift C"],
+ "selector": "body"
+ }
+ ],
+ "properties": {
+ "modal": {
+ "title": "Modal Command Palette",
+ "description": "Whether the command palette should be modal or in the left panel.",
+ "type": "boolean",
+ "default": true
+ }
+ },
+ "type": "object",
+ "additionalProperties": false
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/apputils-extension/print.json b/share/jupyter/lab/schemas/@jupyterlab/apputils-extension/print.json
new file mode 100644
index 0000000..7490b45
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/apputils-extension/print.json
@@ -0,0 +1,31 @@
+{
+ "title": "Print",
+ "description": "Print settings.",
+ "jupyter.lab.menus": {
+ "main": [
+ {
+ "id": "jp-mainmenu-file",
+ "items": [
+ {
+ "type": "separator",
+ "rank": 98
+ },
+ {
+ "command": "apputils:print",
+ "rank": 98
+ }
+ ]
+ }
+ ]
+ },
+ "jupyter.lab.shortcuts": [
+ {
+ "command": "apputils:print",
+ "keys": ["Accel P"],
+ "selector": "body"
+ }
+ ],
+ "additionalProperties": false,
+ "properties": {},
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/apputils-extension/sanitizer.json b/share/jupyter/lab/schemas/@jupyterlab/apputils-extension/sanitizer.json
new file mode 100644
index 0000000..dbcc5d8
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/apputils-extension/sanitizer.json
@@ -0,0 +1,31 @@
+{
+ "title": "HTML Sanitizer",
+ "description": "HTML Sanitizer settings.",
+ "jupyter.lab.setting-icon": "ui-components:html5",
+ "additionalProperties": false,
+ "properties": {
+ "allowedSchemes": {
+ "title": "Allowed URL Scheme",
+ "description": "Scheme allowed by the HTML sanitizer.",
+ "type": "array",
+ "uniqueItems": true,
+ "items": {
+ "type": "string"
+ },
+ "default": ["http", "https", "ftp", "mailto", "tel"]
+ },
+ "autolink": {
+ "type": "boolean",
+ "title": "Autolink URL replacement",
+ "description": "Whether to replace URLs with links or not.",
+ "default": true
+ },
+ "allowNamedProperties": {
+ "type": "boolean",
+ "title": "Allow named properties",
+ "description": "Whether to allow untrusted elements to include `name` and `id` attributes. These attributes are stripped by default to prevent DOM clobbering attacks.",
+ "default": false
+ }
+ },
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/apputils-extension/sessionDialogs.json b/share/jupyter/lab/schemas/@jupyterlab/apputils-extension/sessionDialogs.json
new file mode 100644
index 0000000..061bbd7
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/apputils-extension/sessionDialogs.json
@@ -0,0 +1,14 @@
+{
+ "title": "Kernel dialogs",
+ "description": "Kernel dialogs settings.",
+ "additionalProperties": false,
+ "properties": {
+ "skipKernelRestartDialog": {
+ "title": "Skip kernel restart Dialog",
+ "description": "Whether the kernel restart confirmation dialog is skipped when restarting the kernel.",
+ "type": "boolean",
+ "default": false
+ }
+ },
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/apputils-extension/themes.json b/share/jupyter/lab/schemas/@jupyterlab/apputils-extension/themes.json
new file mode 100644
index 0000000..4582572
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/apputils-extension/themes.json
@@ -0,0 +1,155 @@
+{
+ "title": "Theme",
+ "jupyter.lab.setting-icon-label": "Theme Manager",
+ "jupyter.lab.menus": {
+ "main": [
+ {
+ "id": "jp-mainmenu-settings",
+ "items": [
+ {
+ "type": "submenu",
+ "submenu": {
+ "id": "jp-mainmenu-settings-apputilstheme",
+ "label": "Theme",
+ "items": [
+ { "type": "separator" },
+ {
+ "command": "apputils:adaptive-theme"
+ },
+ { "type": "separator" },
+ {
+ "command": "apputils:theme-scrollbars"
+ },
+ { "type": "separator" },
+ {
+ "command": "apputils:incr-font-size",
+ "args": {
+ "key": "code-font-size"
+ }
+ },
+ {
+ "command": "apputils:decr-font-size",
+ "args": {
+ "key": "code-font-size"
+ }
+ },
+ { "type": "separator" },
+ {
+ "command": "apputils:incr-font-size",
+ "args": {
+ "key": "content-font-size1"
+ }
+ },
+ {
+ "command": "apputils:decr-font-size",
+ "args": {
+ "key": "content-font-size1"
+ }
+ },
+ { "type": "separator" },
+ {
+ "command": "apputils:incr-font-size",
+ "args": {
+ "key": "ui-font-size1"
+ }
+ },
+ {
+ "command": "apputils:decr-font-size",
+ "args": {
+ "key": "ui-font-size1"
+ }
+ }
+ ]
+ },
+ "rank": 0
+ }
+ ]
+ }
+ ]
+ },
+ "description": "Theme manager settings.",
+ "type": "object",
+ "additionalProperties": false,
+ "definitions": {
+ "cssOverrides": {
+ "type": "object",
+ "additionalProperties": false,
+ "description": "The description field of each item is the CSS property that will be used to validate an override's value",
+ "properties": {
+ "code-font-family": {
+ "type": ["string", "null"],
+ "description": "font-family"
+ },
+ "code-font-size": {
+ "type": ["string", "null"],
+ "description": "font-size"
+ },
+
+ "content-font-family": {
+ "type": ["string", "null"],
+ "description": "font-family"
+ },
+ "content-font-size1": {
+ "type": ["string", "null"],
+ "description": "font-size"
+ },
+
+ "ui-font-family": {
+ "type": ["string", "null"],
+ "description": "font-family"
+ },
+ "ui-font-size1": {
+ "type": ["string", "null"],
+ "description": "font-size"
+ }
+ }
+ }
+ },
+ "properties": {
+ "theme": {
+ "type": "string",
+ "title": "Selected Theme",
+ "description": "Application-level visual styling theme. Ignored when Adaptive Theme is enabled.",
+ "default": "JupyterLab Light"
+ },
+ "adaptive-theme": {
+ "type": "boolean",
+ "title": "Adaptive Theme",
+ "description": "Synchronize visual styling theme with system settings",
+ "default": false
+ },
+ "preferred-light-theme": {
+ "type": "string",
+ "title": "Preferred Light Theme",
+ "description": "Application-level light visual styling theme. Ignored when Adaptive Theme is disabled.",
+ "default": "JupyterLab Light"
+ },
+ "preferred-dark-theme": {
+ "type": "string",
+ "title": "Preferred Dark Theme",
+ "description": "Application-level dark visual styling theme. Ignored when Adaptive Theme is disabled.",
+ "default": "JupyterLab Dark"
+ },
+ "theme-scrollbars": {
+ "type": "boolean",
+ "title": "Scrollbar Theming",
+ "description": "Enable/disable styling of the application scrollbars",
+ "default": false
+ },
+ "overrides": {
+ "title": "Theme CSS Overrides",
+ "description": "Override theme CSS variables by setting key-value pairs here",
+ "$ref": "#/definitions/cssOverrides",
+ "default": {
+ "code-font-family": null,
+ "code-font-size": null,
+
+ "content-font-family": null,
+ "content-font-size1": null,
+
+ "ui-font-family": null,
+ "ui-font-size1": null
+ }
+ }
+ }
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/apputils-extension/utilityCommands.json b/share/jupyter/lab/schemas/@jupyterlab/apputils-extension/utilityCommands.json
new file mode 100644
index 0000000..b6ce4f5
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/apputils-extension/utilityCommands.json
@@ -0,0 +1,35 @@
+{
+ "title": "Shortcuts Help",
+ "description": "Shortcut help settings.",
+ "jupyter.lab.menus": {
+ "main": [
+ {
+ "id": "jp-mainmenu-help",
+ "items": [
+ {
+ "type": "separator",
+ "rank": 0.1
+ },
+ {
+ "command": "apputils:display-shortcuts",
+ "rank": 0.1
+ },
+ {
+ "type": "separator",
+ "rank": 0.1
+ }
+ ]
+ }
+ ]
+ },
+ "jupyter.lab.shortcuts": [
+ {
+ "command": "apputils:display-shortcuts",
+ "keys": ["Accel Shift H"],
+ "selector": "body"
+ }
+ ],
+ "properties": {},
+ "type": "object",
+ "additionalProperties": false
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/cell-toolbar-extension/package.json.orig b/share/jupyter/lab/schemas/@jupyterlab/cell-toolbar-extension/package.json.orig
new file mode 100644
index 0000000..291594a
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/cell-toolbar-extension/package.json.orig
@@ -0,0 +1,55 @@
+{
+ "name": "@jupyterlab/cell-toolbar-extension",
+ "version": "4.5.1",
+ "description": "Extension for cell toolbar adapted from jlab-enhanced-cell-toolbar",
+ "homepage": "https://github.com/jupyterlab/jupyterlab",
+ "bugs": {
+ "url": "https://github.com/jupyterlab/jupyterlab/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jupyterlab/jupyterlab.git"
+ },
+ "license": "BSD-3-Clause",
+ "author": "Project Jupyter",
+ "sideEffects": [
+ "style/**/*"
+ ],
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts",
+ "style": "style/index.css",
+ "directories": {
+ "lib": "lib/"
+ },
+ "files": [
+ "lib/**/*.{d.ts,eot,gif,html,jpg,js,js.map,json,png,svg,woff2,ttf}",
+ "schema/*.json",
+ "style/**/*.{css,eot,gif,html,jpg,json,png,svg,woff2,ttf}",
+ "style/index.js",
+ "src/**/*.{ts,tsx}"
+ ],
+ "scripts": {
+ "build": "tsc -b",
+ "clean": "rimraf lib && rimraf tsconfig.tsbuildinfo",
+ "watch": "tsc -b --watch"
+ },
+ "dependencies": {
+ "@jupyterlab/application": "^4.5.1",
+ "@jupyterlab/apputils": "^4.6.1",
+ "@jupyterlab/cell-toolbar": "^4.5.1",
+ "@jupyterlab/settingregistry": "^4.5.1",
+ "@jupyterlab/translation": "^4.5.1"
+ },
+ "devDependencies": {
+ "rimraf": "~5.0.5",
+ "typescript": "~5.5.4"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "jupyterlab": {
+ "extension": true,
+ "schemaDir": "schema"
+ },
+ "styleModule": "style/index.js"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/cell-toolbar-extension/plugin.json b/share/jupyter/lab/schemas/@jupyterlab/cell-toolbar-extension/plugin.json
new file mode 100644
index 0000000..b3b7b4f
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/cell-toolbar-extension/plugin.json
@@ -0,0 +1,101 @@
+{
+ "$schema": "http://json-schema.org/draft-07/schema",
+ "title": "Cell Toolbar",
+ "description": "Cell Toolbar Settings.",
+ "jupyter.lab.toolbars": {
+ "Cell": [
+ {
+ "name": "duplicate-cell",
+ "command": "notebook:duplicate-below"
+ },
+ { "name": "move-cell-up", "command": "notebook:move-cell-up" },
+ { "name": "move-cell-down", "command": "notebook:move-cell-down" },
+ {
+ "name": "insert-cell-above",
+ "command": "notebook:insert-cell-above"
+ },
+ {
+ "name": "insert-cell-below",
+ "command": "notebook:insert-cell-below"
+ },
+ {
+ "command": "notebook:delete-cell",
+ "icon": "ui-components:delete",
+ "name": "delete-cell"
+ }
+ ]
+ },
+ "jupyter.lab.transform": true,
+ "properties": {
+ "showToolbar": {
+ "title": "Show cell toolbar",
+ "description": "Show a toolbar inside the active cell, if there is enough room for one",
+ "type": "boolean",
+ "default": true
+ },
+ "toolbar": {
+ "title": "List of toolbar items",
+ "description": "An item is defined by a 'name', a 'command' name, and an 'icon' name",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/toolbarItem"
+ },
+ "default": []
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "definitions": {
+ "toolbarItem": {
+ "properties": {
+ "name": {
+ "title": "Unique name",
+ "type": "string"
+ },
+ "args": {
+ "title": "Command arguments",
+ "type": "object"
+ },
+ "command": {
+ "title": "Command id",
+ "type": "string",
+ "default": ""
+ },
+ "disabled": {
+ "title": "Whether the item is ignored or not",
+ "type": "boolean",
+ "default": false
+ },
+ "icon": {
+ "title": "Item icon id",
+ "description": "If defined, it will override the command icon",
+ "type": "string"
+ },
+ "label": {
+ "title": "Item label",
+ "description": "If defined, it will override the command label",
+ "type": "string"
+ },
+ "caption": {
+ "title": "Item caption",
+ "description": "If defined, it will override the command caption",
+ "type": "string"
+ },
+ "type": {
+ "title": "Item type",
+ "type": "string",
+ "enum": ["command", "spacer"]
+ },
+ "rank": {
+ "title": "Item rank",
+ "type": "number",
+ "minimum": 0,
+ "default": 50
+ }
+ },
+ "required": ["name"],
+ "additionalProperties": false,
+ "type": "object"
+ }
+ }
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/celltags-extension/package.json.orig b/share/jupyter/lab/schemas/@jupyterlab/celltags-extension/package.json.orig
new file mode 100644
index 0000000..ec5dde2
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/celltags-extension/package.json.orig
@@ -0,0 +1,63 @@
+{
+ "name": "@jupyterlab/celltags-extension",
+ "version": "4.5.1",
+ "description": "An extension for manipulating tags in cell metadata",
+ "keywords": [
+ "jupyter",
+ "jupyterlab",
+ "jupyterlab-extension"
+ ],
+ "homepage": "https://github.com/jupyterlab/jupyterlab",
+ "bugs": {
+ "url": "https://github.com/jupyterlab/jupyterlab/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jupyterlab/jupyterlab.git"
+ },
+ "license": "BSD-3-Clause",
+ "author": "Project Jupyter",
+ "sideEffects": [
+ "style/*.css",
+ "style/index.js"
+ ],
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts",
+ "style": "style/index.css",
+ "directories": {
+ "lib": "lib/"
+ },
+ "files": [
+ "lib/*.{d.ts,js,js.map}",
+ "style/*.css",
+ "style/index.js",
+ "src/**/*.{ts,tsx}",
+ "schema/*.json"
+ ],
+ "scripts": {
+ "build": "tsc",
+ "clean": "rimraf lib && rimraf tsconfig.tsbuildinfo",
+ "watch": "tsc -b --watch"
+ },
+ "dependencies": {
+ "@jupyterlab/application": "^4.5.1",
+ "@jupyterlab/notebook": "^4.5.1",
+ "@jupyterlab/translation": "^4.5.1",
+ "@jupyterlab/ui-components": "^4.5.1",
+ "@lumino/algorithm": "^2.0.4",
+ "@rjsf/utils": "^5.13.4",
+ "react": "^18.2.0"
+ },
+ "devDependencies": {
+ "rimraf": "~5.0.5",
+ "typescript": "~5.5.4"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "jupyterlab": {
+ "extension": true,
+ "schemaDir": "schema"
+ },
+ "styleModule": "style/index.js"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/celltags-extension/plugin.json b/share/jupyter/lab/schemas/@jupyterlab/celltags-extension/plugin.json
new file mode 100644
index 0000000..09acd9c
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/celltags-extension/plugin.json
@@ -0,0 +1,33 @@
+{
+ "type": "object",
+ "title": "Common tools",
+ "description": "Setting for the common tools",
+ "jupyter.lab.metadataforms": [
+ {
+ "id": "commonToolsSection",
+ "label": "Common tools",
+ "metadataSchema": {
+ "type": "object",
+ "properties": {
+ "/tags": {
+ "title": "Cell tag",
+ "type": "array",
+ "default": [],
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "uiSchema": {
+ "ui:order": ["_CELL-TOOL", "/tags", "*"]
+ },
+ "metadataOptions": {
+ "/tags": {
+ "customRenderer": "@jupyterlab/celltags-extension:plugin.renderer"
+ }
+ }
+ }
+ ],
+ "additionalProperties": false
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/codemirror-extension/package.json.orig b/share/jupyter/lab/schemas/@jupyterlab/codemirror-extension/package.json.orig
new file mode 100644
index 0000000..34b091a
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/codemirror-extension/package.json.orig
@@ -0,0 +1,75 @@
+{
+ "name": "@jupyterlab/codemirror-extension",
+ "version": "4.5.1",
+ "description": "JupyterLab - CodeMirror Provider Extension",
+ "homepage": "https://github.com/jupyterlab/jupyterlab",
+ "bugs": {
+ "url": "https://github.com/jupyterlab/jupyterlab/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jupyterlab/jupyterlab.git"
+ },
+ "license": "BSD-3-Clause",
+ "author": "Project Jupyter",
+ "sideEffects": [
+ "style/**/*.css",
+ "style/index.js"
+ ],
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts",
+ "style": "style/index.css",
+ "directories": {
+ "lib": "lib/"
+ },
+ "files": [
+ "lib/*.d.ts",
+ "lib/*.js.map",
+ "lib/*.js",
+ "schema/*.json",
+ "style/**/*.css",
+ "style/index.js",
+ "src/**/*.{ts,tsx}"
+ ],
+ "scripts": {
+ "build": "tsc -b",
+ "clean": "rimraf lib && rimraf tsconfig.tsbuildinfo",
+ "watch": "tsc -b --watch"
+ },
+ "dependencies": {
+ "@codemirror/commands": "^6.8.1",
+ "@codemirror/lang-markdown": "^6.3.2",
+ "@codemirror/language": "^6.11.0",
+ "@codemirror/legacy-modes": "^6.5.1",
+ "@codemirror/search": "^6.5.10",
+ "@codemirror/view": "^6.38.1",
+ "@jupyter/ydoc": "^3.1.0",
+ "@jupyterlab/application": "^4.5.1",
+ "@jupyterlab/apputils": "^4.6.1",
+ "@jupyterlab/codeeditor": "^4.5.1",
+ "@jupyterlab/codemirror": "^4.5.1",
+ "@jupyterlab/notebook": "^4.5.1",
+ "@jupyterlab/settingregistry": "^4.5.1",
+ "@jupyterlab/statusbar": "^4.5.1",
+ "@jupyterlab/translation": "^4.5.1",
+ "@jupyterlab/ui-components": "^4.5.1",
+ "@lumino/coreutils": "^2.2.2",
+ "@lumino/widgets": "^2.7.2",
+ "@rjsf/utils": "^5.13.4",
+ "@rjsf/validator-ajv8": "^5.13.4",
+ "react": "^18.2.0"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.26",
+ "rimraf": "~5.0.5",
+ "typescript": "~5.5.4"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "jupyterlab": {
+ "extension": true,
+ "schemaDir": "schema"
+ },
+ "styleModule": "style/index.js"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/codemirror-extension/plugin.json b/share/jupyter/lab/schemas/@jupyterlab/codemirror-extension/plugin.json
new file mode 100644
index 0000000..ed8ded2
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/codemirror-extension/plugin.json
@@ -0,0 +1,85 @@
+{
+ "jupyter.lab.setting-icon": "ui-components:text-editor",
+ "jupyter.lab.setting-icon-label": "CodeMirror",
+ "jupyter.lab.shortcuts": [
+ {
+ "command": "codemirror:delete-line",
+ "keys": ["Accel D"],
+ "selector": ".cm-content"
+ },
+ {
+ "command": "codemirror:delete-line",
+ "keys": ["Accel Shift K"],
+ "selector": ".cm-content"
+ },
+ {
+ "command": "codemirror:toggle-block-comment",
+ "keys": ["Alt A"],
+ "selector": ".cm-content"
+ },
+ {
+ "command": "codemirror:toggle-comment",
+ "keys": ["Accel /"],
+ "selector": ".cm-content"
+ },
+ {
+ "command": "codemirror:select-next-occurrence",
+ "keys": ["Accel Shift D"],
+ "selector": ".cm-content"
+ }
+ ],
+ "jupyter.lab.menus": {
+ "main": [
+ {
+ "id": "jp-mainmenu-view",
+ "items": [
+ {
+ "type": "submenu",
+ "rank": 10,
+ "submenu": {
+ "id": "jp-mainmenu-codefold",
+ "label": "Code Folding",
+ "items": [
+ {
+ "command": "codemirror:fold-current",
+ "rank": 1
+ },
+ {
+ "command": "codemirror:unfold-current",
+ "rank": 2
+ },
+ {
+ "command": "codemirror:fold-subregions",
+ "rank": 3
+ },
+ {
+ "command": "codemirror:unfold-subregions",
+ "rank": 4
+ },
+ {
+ "command": "codemirror:fold-all",
+ "rank": 5
+ },
+ {
+ "command": "codemirror:unfold-all",
+ "rank": 6
+ }
+ ]
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "title": "CodeMirror",
+ "description": "Text editor settings for all CodeMirror editors.",
+ "properties": {
+ "defaultConfig": {
+ "default": {},
+ "title": "Default editor configuration",
+ "description": "Base configuration used by all CodeMirror editors.",
+ "type": "object"
+ }
+ },
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/completer-extension/inline-completer.json b/share/jupyter/lab/schemas/@jupyterlab/completer-extension/inline-completer.json
new file mode 100644
index 0000000..9fc42d3
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/completer-extension/inline-completer.json
@@ -0,0 +1,106 @@
+{
+ "title": "Inline Completer",
+ "description": "Inline completer settings.",
+ "jupyter.lab.setting-icon": "completer:inline",
+ "jupyter.lab.setting-icon-label": "Inline Completer",
+ "jupyter.lab.transform": true,
+ "jupyter.lab.shortcuts": [
+ {
+ "command": "inline-completer:next",
+ "keys": ["Alt ]"],
+ "selector": ".jp-mod-completer-enabled",
+ "preventDefault": false
+ },
+ {
+ "command": "inline-completer:previous",
+ "keys": ["Alt ["],
+ "selector": ".jp-mod-completer-enabled",
+ "preventDefault": false
+ },
+ {
+ "command": "inline-completer:accept",
+ "keys": ["Tab"],
+ "selector": ".jp-mod-inline-completer-active"
+ },
+ {
+ "command": "inline-completer:accept",
+ "keys": ["Alt End"],
+ "selector": ".jp-mod-inline-completer-active"
+ },
+ {
+ "command": "inline-completer:invoke",
+ "keys": ["Alt \\"],
+ "selector": ".jp-mod-completer-enabled",
+ "preventDefault": false
+ }
+ ],
+ "properties": {
+ "providers": {
+ "title": "Inline completion providers",
+ "type": "object",
+ "default": {}
+ },
+ "showWidget": {
+ "title": "Show widget",
+ "description": "When to show the inline completer widget.",
+ "type": "string",
+ "oneOf": [
+ { "const": "always", "title": "Always" },
+ { "const": "onHover", "title": "On hover" },
+ { "const": "never", "title": "Never" }
+ ],
+ "default": "onHover"
+ },
+ "showShortcuts": {
+ "title": "Show shortcuts in the widget",
+ "description": "Whether to show shortcuts in the inline completer widget.",
+ "type": "boolean",
+ "default": true
+ },
+ "suppressIfTabCompleterActive": {
+ "title": "Suppress when the tab completer is active",
+ "description": "Whether to suppress the inline completer when the tab completer suggestions are shown.",
+ "type": "boolean",
+ "default": true
+ },
+ "streamingAnimation": {
+ "title": "Streaming animation",
+ "description": "Transition effect used when streaming tokens from model.",
+ "type": "string",
+ "oneOf": [
+ { "const": "none", "title": "None" },
+ { "const": "uncover", "title": "Uncover" }
+ ],
+ "default": "uncover"
+ },
+ "minLines": {
+ "title": "Reserve lines for inline completion",
+ "description": "Number of lines to reserve for the ghost text with inline completion suggestion.",
+ "type": "number",
+ "default": 0,
+ "minimum": 0
+ },
+ "maxLines": {
+ "title": "Limit inline completion lines",
+ "description": "Number of lines of inline completion to show before collapsing. Setting zero disables the limit.",
+ "type": "number",
+ "default": 0,
+ "minimum": 0
+ },
+ "reserveSpaceForLongest": {
+ "title": "Reserve space for the longest candidate",
+ "description": "When multiple completions are returned, reserve blank space for up to as many lines as in the longest completion candidate to avoid resizing editor when cycling between the suggestions.",
+ "type": "boolean",
+ "default": false
+ },
+ "editorResizeDelay": {
+ "title": "Editor resize delay",
+ "description": "When an inline completion gets cancelled the editor may change its size rapidly. When typing in the editor, the completions may get dismissed frequently causing a noticeable jitter of the editor height. Adding a delay prevents the jitter on typing. The value should be in milliseconds.",
+ "type": "number",
+ "default": 1000,
+ "minimum": 0
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/completer-extension/manager.json b/share/jupyter/lab/schemas/@jupyterlab/completer-extension/manager.json
new file mode 100644
index 0000000..c23e30f
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/completer-extension/manager.json
@@ -0,0 +1,50 @@
+{
+ "title": "Code Completion",
+ "description": "Code Completion settings.",
+ "jupyter.lab.setting-icon": "completer:widget",
+ "jupyter.lab.setting-icon-label": "Code Completer",
+ "jupyter.lab.transform": true,
+ "properties": {
+ "availableProviders": {
+ "title": "Completion providers rank setting.",
+ "description": "Providers with higher rank will be shown before the ones with lower rank, providers with negative rank are disabled.",
+ "type": "object",
+ "patternProperties": {
+ "^.*$": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "default": {
+ "CompletionProvider:context": 500,
+ "CompletionProvider:kernel": 550
+ }
+ },
+ "providerTimeout": {
+ "title": "Default timeout for a provider.",
+ "description": "If a provider can not return the response for a completer request before timeout, the result of this provider will be ignored. Value is in millisecond",
+ "type": "number",
+ "default": 1000
+ },
+ "showDocumentationPanel": {
+ "title": "Show the documentation panel.",
+ "description": "Documentation panel setting.",
+ "type": "boolean",
+ "default": false
+ },
+ "autoCompletion": {
+ "title": "Enable autocompletion.",
+ "description": "Autocompletion setting.",
+ "type": "boolean",
+ "default": false
+ },
+ "suppressIfInlineCompleterActive": {
+ "title": "Suppress when the inline completer is active",
+ "description": "Whether to suppress the tab completer when inline completions are presented.",
+ "type": "boolean",
+ "default": true
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/completer-extension/package.json.orig b/share/jupyter/lab/schemas/@jupyterlab/completer-extension/package.json.orig
new file mode 100644
index 0000000..f67ba4b
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/completer-extension/package.json.orig
@@ -0,0 +1,63 @@
+{
+ "name": "@jupyterlab/completer-extension",
+ "version": "4.5.1",
+ "description": "JupyterLab - Completer Extension",
+ "homepage": "https://github.com/jupyterlab/jupyterlab",
+ "bugs": {
+ "url": "https://github.com/jupyterlab/jupyterlab/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jupyterlab/jupyterlab.git"
+ },
+ "license": "BSD-3-Clause",
+ "author": "Project Jupyter",
+ "sideEffects": [
+ "style/**/*.css",
+ "style/index.js"
+ ],
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts",
+ "style": "style/index.css",
+ "directories": {
+ "lib": "lib/"
+ },
+ "files": [
+ "lib/*.d.ts",
+ "lib/*.js.map",
+ "lib/*.js",
+ "schema/*.json",
+ "style/**/*.css",
+ "style/index.js",
+ "src/**/*.{ts,tsx}"
+ ],
+ "scripts": {
+ "build": "tsc -b",
+ "clean": "rimraf lib && rimraf tsconfig.tsbuildinfo",
+ "watch": "tsc -b --watch"
+ },
+ "dependencies": {
+ "@jupyterlab/application": "^4.5.1",
+ "@jupyterlab/codeeditor": "^4.5.1",
+ "@jupyterlab/completer": "^4.5.1",
+ "@jupyterlab/settingregistry": "^4.5.1",
+ "@jupyterlab/translation": "^4.5.1",
+ "@jupyterlab/ui-components": "^4.5.1",
+ "@lumino/commands": "^2.3.3",
+ "@lumino/coreutils": "^2.2.2",
+ "@rjsf/utils": "^5.13.4",
+ "react": "^18.2.0"
+ },
+ "devDependencies": {
+ "rimraf": "~5.0.5",
+ "typescript": "~5.5.4"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "jupyterlab": {
+ "extension": true,
+ "schemaDir": "schema"
+ },
+ "styleModule": "style/index.js"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/console-extension/completer.json b/share/jupyter/lab/schemas/@jupyterlab/console-extension/completer.json
new file mode 100644
index 0000000..7a4dcd9
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/console-extension/completer.json
@@ -0,0 +1,14 @@
+{
+ "title": "Console Completer",
+ "description": "Console completer settings.",
+ "jupyter.lab.shortcuts": [
+ {
+ "command": "completer:invoke-console",
+ "keys": ["Tab"],
+ "selector": ".jp-CodeConsole-promptCell .jp-mod-completer-enabled:not(.jp-mod-at-line-beginning)"
+ }
+ ],
+ "properties": {},
+ "additionalProperties": false,
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/console-extension/foreign.json b/share/jupyter/lab/schemas/@jupyterlab/console-extension/foreign.json
new file mode 100644
index 0000000..6357e08
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/console-extension/foreign.json
@@ -0,0 +1,16 @@
+{
+ "title": "Code Console Foreign plugin",
+ "description": "Code Console Foreign plugin settings.",
+ "jupyter.lab.menus": {
+ "context": [
+ {
+ "command": "console:toggle-show-all-kernel-activity",
+ "selector": ".jp-CodeConsole",
+ "rank": 20
+ }
+ ]
+ },
+ "properties": {},
+ "additionalProperties": false,
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/console-extension/package.json.orig b/share/jupyter/lab/schemas/@jupyterlab/console-extension/package.json.orig
new file mode 100644
index 0000000..a5cd85f
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/console-extension/package.json.orig
@@ -0,0 +1,70 @@
+{
+ "name": "@jupyterlab/console-extension",
+ "version": "4.5.1",
+ "description": "JupyterLab - Code Console Extension",
+ "homepage": "https://github.com/jupyterlab/jupyterlab",
+ "bugs": {
+ "url": "https://github.com/jupyterlab/jupyterlab/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jupyterlab/jupyterlab.git"
+ },
+ "license": "BSD-3-Clause",
+ "author": "Project Jupyter",
+ "sideEffects": [
+ "style/**/*.css",
+ "style/index.js"
+ ],
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts",
+ "style": "style/index.css",
+ "directories": {
+ "lib": "lib/"
+ },
+ "files": [
+ "lib/*.d.ts",
+ "lib/*.js.map",
+ "lib/*.js",
+ "schema/*.json",
+ "style/**/*.css",
+ "style/index.js",
+ "src/**/*.{ts,tsx}"
+ ],
+ "scripts": {
+ "build": "tsc -b",
+ "clean": "rimraf lib && rimraf tsconfig.tsbuildinfo",
+ "watch": "tsc -b --watch"
+ },
+ "dependencies": {
+ "@jupyterlab/application": "^4.5.1",
+ "@jupyterlab/apputils": "^4.6.1",
+ "@jupyterlab/codeeditor": "^4.5.1",
+ "@jupyterlab/completer": "^4.5.1",
+ "@jupyterlab/console": "^4.5.1",
+ "@jupyterlab/filebrowser": "^4.5.1",
+ "@jupyterlab/launcher": "^4.5.1",
+ "@jupyterlab/mainmenu": "^4.5.1",
+ "@jupyterlab/rendermime": "^4.5.1",
+ "@jupyterlab/settingregistry": "^4.5.1",
+ "@jupyterlab/translation": "^4.5.1",
+ "@jupyterlab/ui-components": "^4.5.1",
+ "@lumino/algorithm": "^2.0.4",
+ "@lumino/coreutils": "^2.2.2",
+ "@lumino/disposable": "^2.1.5",
+ "@lumino/properties": "^2.0.4",
+ "@lumino/widgets": "^2.7.2"
+ },
+ "devDependencies": {
+ "rimraf": "~5.0.5",
+ "typescript": "~5.5.4"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "jupyterlab": {
+ "extension": true,
+ "schemaDir": "schema"
+ },
+ "styleModule": "style/index.js"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/console-extension/tracker.json b/share/jupyter/lab/schemas/@jupyterlab/console-extension/tracker.json
new file mode 100644
index 0000000..c4cfdf6
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/console-extension/tracker.json
@@ -0,0 +1,246 @@
+{
+ "title": "Code Console",
+ "description": "Code Console settings.",
+ "jupyter.lab.setting-icon": "ui-components:console",
+ "jupyter.lab.setting-icon-label": "Code Console Settings",
+ "jupyter.lab.menus": {
+ "main": [
+ {
+ "id": "jp-mainmenu-file",
+ "items": [
+ {
+ "type": "submenu",
+ "submenu": {
+ "id": "jp-mainmenu-file-new",
+ "items": [
+ {
+ "command": "console:create",
+ "rank": 1
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "id": "jp-mainmenu-settings",
+ "items": [
+ {
+ "type": "separator",
+ "rank": 9
+ },
+ {
+ "type": "submenu",
+ "submenu": {
+ "id": "jp-mainmenu-settings-consoleexecute",
+ "label": "Console Run Keystroke",
+ "items": [
+ {
+ "command": "console:interaction-mode",
+ "args": {
+ "interactionMode": "terminal"
+ }
+ },
+ {
+ "command": "console:interaction-mode",
+ "args": {
+ "interactionMode": "notebook"
+ }
+ }
+ ]
+ },
+ "rank": 9
+ },
+ {
+ "type": "separator",
+ "rank": 9
+ }
+ ]
+ }
+ ],
+ "context": [
+ {
+ "command": "console:undo",
+ "selector": ".jp-CodeConsole-promptCell",
+ "rank": 1
+ },
+ {
+ "command": "console:redo",
+ "selector": ".jp-CodeConsole-promptCell",
+ "rank": 2
+ },
+ {
+ "command": "console:clear",
+ "selector": ".jp-CodeConsole-content",
+ "rank": 10
+ },
+ {
+ "command": "console:restart-kernel",
+ "selector": ".jp-CodeConsole",
+ "rank": 30
+ }
+ ]
+ },
+ "jupyter.lab.shortcuts": [
+ {
+ "command": "console:run-forced",
+ "keys": ["Shift Enter"],
+ "selector": ".jp-CodeConsole[data-jp-interaction-mode='notebook'] .jp-CodeConsole-promptCell"
+ },
+ {
+ "command": "console:linebreak",
+ "keys": ["Accel Enter"],
+ "selector": ".jp-CodeConsole[data-jp-interaction-mode='terminal'] .jp-CodeConsole-promptCell"
+ },
+ {
+ "command": "console:run-forced",
+ "keys": ["Shift Enter"],
+ "selector": ".jp-CodeConsole[data-jp-interaction-mode='terminal'] .jp-CodeConsole-promptCell"
+ },
+ {
+ "command": "console:run-unforced",
+ "keys": ["Enter"],
+ "selector": ".jp-CodeConsole[data-jp-interaction-mode='terminal'] .jp-CodeConsole-promptCell"
+ }
+ ],
+ "jupyter.lab.toolbars": {
+ "ConsolePanel": [
+ {
+ "name": "run",
+ "command": "console:run-forced",
+ "rank": 0
+ },
+ { "name": "restart", "command": "console:restart-kernel", "rank": 10 },
+ { "name": "clear", "command": "console:clear", "rank": 20 },
+ { "name": "spacer", "type": "spacer", "rank": 100 },
+ { "name": "kernelName", "rank": 1000 },
+ { "name": "kernelStatus", "rank": 1010 },
+ { "name": "promptPosition", "rank": 1020 }
+ ]
+ },
+ "jupyter.lab.transform": true,
+ "properties": {
+ "clearCellsOnExecute": {
+ "title": "Clear Cells on Execute",
+ "description": "Whether to clear the console when code is executed.",
+ "type": "boolean",
+ "default": false
+ },
+ "clearCodeContentOnExecute": {
+ "title": "Clear Code Content on Execute",
+ "description": "Whether to clear the code content of the console when code is executed.",
+ "type": "boolean",
+ "default": true
+ },
+ "hideCodeInput": {
+ "title": "Hide Code Input",
+ "description": "Whether to hide the code input after a cell is executed.",
+ "type": "boolean",
+ "default": false
+ },
+ "interactionMode": {
+ "title": "Interaction mode",
+ "description": "Whether the console interaction mimics the notebook\nor terminal keyboard shortcuts.",
+ "type": "string",
+ "enum": ["notebook", "terminal"],
+ "default": "notebook"
+ },
+ "showAllKernelActivity": {
+ "title": "Show All Kernel Activity",
+ "description": "Whether the console defaults to showing all\nkernel activity or just kernel activity originating from itself.",
+ "type": "boolean",
+ "default": false
+ },
+ "promptCellConfig": {
+ "title": "Prompt Cell Configuration",
+ "description": "The configuration for all prompt cells; it will override the CodeMirror default configuration.",
+ "type": "object",
+ "default": {
+ "codeFolding": false,
+ "lineNumbers": false
+ }
+ },
+ "promptCellPosition": {
+ "title": "Prompt Cell Position",
+ "description": "Where to place the prompt cell of the console.",
+ "type": "string",
+ "oneOf": [
+ { "const": "bottom", "title": "Bottom" },
+ { "const": "top", "title": "Top" },
+ { "const": "left", "title": "Left" },
+ { "const": "right", "title": "Right" }
+ ],
+ "default": "bottom"
+ },
+ "showBanner": {
+ "title": "Show Banner",
+ "description": "Whether to show the kernel banner.",
+ "type": "boolean",
+ "default": true
+ },
+ "toolbar": {
+ "title": "Console panel toolbar items",
+ "description": "Note: To disable a toolbar item,\ncopy it to User Preferences and add the\n\"disabled\" key. The following example will disable the Interrupt button item:\n{\n \"toolbar\": [\n {\n \"name\": \"interrupt\",\n \"disabled\": true\n }\n ]\n}\n\nToolbar description:",
+ "items": {
+ "$ref": "#/definitions/toolbarItem"
+ },
+ "type": "array",
+ "default": []
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "definitions": {
+ "toolbarItem": {
+ "properties": {
+ "name": {
+ "title": "Unique name",
+ "type": "string"
+ },
+ "args": {
+ "title": "Command arguments",
+ "type": "object"
+ },
+ "command": {
+ "title": "Command id",
+ "type": "string",
+ "default": ""
+ },
+ "disabled": {
+ "title": "Whether the item is ignored or not",
+ "type": "boolean",
+ "default": false
+ },
+ "icon": {
+ "title": "Item icon id",
+ "description": "If defined, it will override the command icon",
+ "type": "string"
+ },
+ "label": {
+ "title": "Item label",
+ "description": "If defined, it will override the command label",
+ "type": "string"
+ },
+ "caption": {
+ "title": "Item caption",
+ "description": "If defined, it will override the command caption",
+ "type": "string"
+ },
+ "type": {
+ "title": "Item type",
+ "type": "string",
+ "enum": ["command", "spacer"]
+ },
+ "rank": {
+ "title": "Item rank",
+ "type": "number",
+ "minimum": 0,
+ "default": 50
+ }
+ },
+ "required": ["name"],
+ "additionalProperties": false,
+ "type": "object"
+ }
+ }
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/csvviewer-extension/csv.json b/share/jupyter/lab/schemas/@jupyterlab/csvviewer-extension/csv.json
new file mode 100644
index 0000000..a6e32f0
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/csvviewer-extension/csv.json
@@ -0,0 +1,76 @@
+{
+ "title": "CSV Viewer",
+ "description": "CSV Viewer settings.",
+ "jupyter.lab.setting-icon": "ui-components:spreadsheet",
+ "jupyter.lab.setting-icon-label": "CSV Viewer",
+ "jupyter.lab.toolbars": {
+ "CSVTable": [{ "name": "delimiter", "rank": 10 }]
+ },
+ "jupyter.lab.transform": true,
+ "properties": {
+ "toolbar": {
+ "title": "CSV viewer toolbar items",
+ "description": "Note: To disable a toolbar item,\ncopy it to User Preferences and add the\n\"disabled\" key. The following example will disable the delimiter selector item:\n{\n \"toolbar\": [\n {\n \"name\": \"delimiter\",\n \"disabled\": true\n }\n ]\n}\n\nToolbar description:",
+ "items": {
+ "$ref": "#/definitions/toolbarItem"
+ },
+ "type": "array",
+ "default": []
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "definitions": {
+ "toolbarItem": {
+ "properties": {
+ "name": {
+ "title": "Unique name",
+ "type": "string"
+ },
+ "args": {
+ "title": "Command arguments",
+ "type": "object"
+ },
+ "command": {
+ "title": "Command id",
+ "type": "string",
+ "default": ""
+ },
+ "disabled": {
+ "title": "Whether the item is ignored or not",
+ "type": "boolean",
+ "default": false
+ },
+ "icon": {
+ "title": "Item icon id",
+ "description": "If defined, it will override the command icon",
+ "type": "string"
+ },
+ "label": {
+ "title": "Item label",
+ "description": "If defined, it will override the command label",
+ "type": "string"
+ },
+ "caption": {
+ "title": "Item caption",
+ "description": "If defined, it will override the command caption",
+ "type": "string"
+ },
+ "type": {
+ "title": "Item type",
+ "type": "string",
+ "enum": ["command", "spacer"]
+ },
+ "rank": {
+ "title": "Item rank",
+ "type": "number",
+ "minimum": 0,
+ "default": 50
+ }
+ },
+ "required": ["name"],
+ "additionalProperties": false,
+ "type": "object"
+ }
+ }
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/csvviewer-extension/package.json.orig b/share/jupyter/lab/schemas/@jupyterlab/csvviewer-extension/package.json.orig
new file mode 100644
index 0000000..52814b5
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/csvviewer-extension/package.json.orig
@@ -0,0 +1,64 @@
+{
+ "name": "@jupyterlab/csvviewer-extension",
+ "version": "4.5.1",
+ "description": "JupyterLab - CSV Widget Extension",
+ "homepage": "https://github.com/jupyterlab/jupyterlab",
+ "bugs": {
+ "url": "https://github.com/jupyterlab/jupyterlab/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jupyterlab/jupyterlab.git"
+ },
+ "license": "BSD-3-Clause",
+ "author": "Project Jupyter",
+ "sideEffects": [
+ "style/**/*.css",
+ "style/index.js"
+ ],
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts",
+ "style": "style/index.css",
+ "directories": {
+ "lib": "lib/"
+ },
+ "files": [
+ "lib/*.d.ts",
+ "lib/*.js.map",
+ "lib/*.js",
+ "schema/*.json",
+ "style/**/*.css",
+ "style/index.js",
+ "src/**/*.{ts,tsx}"
+ ],
+ "scripts": {
+ "build": "tsc -b",
+ "clean": "rimraf lib && rimraf tsconfig.tsbuildinfo",
+ "watch": "tsc -b --watch"
+ },
+ "dependencies": {
+ "@jupyterlab/application": "^4.5.1",
+ "@jupyterlab/apputils": "^4.6.1",
+ "@jupyterlab/csvviewer": "^4.5.1",
+ "@jupyterlab/docregistry": "^4.5.1",
+ "@jupyterlab/documentsearch": "^4.5.1",
+ "@jupyterlab/mainmenu": "^4.5.1",
+ "@jupyterlab/observables": "^5.5.1",
+ "@jupyterlab/settingregistry": "^4.5.1",
+ "@jupyterlab/translation": "^4.5.1",
+ "@lumino/datagrid": "^2.5.3",
+ "@lumino/widgets": "^2.7.2"
+ },
+ "devDependencies": {
+ "rimraf": "~5.0.5",
+ "typescript": "~5.5.4"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "jupyterlab": {
+ "extension": true,
+ "schemaDir": "schema"
+ },
+ "styleModule": "style/index.js"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/csvviewer-extension/tsv.json b/share/jupyter/lab/schemas/@jupyterlab/csvviewer-extension/tsv.json
new file mode 100644
index 0000000..0df9260
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/csvviewer-extension/tsv.json
@@ -0,0 +1,76 @@
+{
+ "title": "TSV Viewer",
+ "description": "TSV Viewer settings.",
+ "jupyter.lab.setting-icon": "ui-components:spreadsheet",
+ "jupyter.lab.setting-icon-label": "TSV Viewer",
+ "jupyter.lab.toolbars": {
+ "TSVTable": [{ "name": "delimiter", "rank": 10 }]
+ },
+ "jupyter.lab.transform": true,
+ "properties": {
+ "toolbar": {
+ "title": "TSV viewer toolbar items",
+ "description": "Note: To disable a toolbar item,\ncopy it to User Preferences and add the\n\"disabled\" key. The following example will disable the delimiter selector item:\n{\n \"toolbar\": [\n {\n \"name\": \"delimiter\",\n \"disabled\": true\n }\n ]\n}\n\nToolbar description:",
+ "items": {
+ "$ref": "#/definitions/toolbarItem"
+ },
+ "type": "array",
+ "default": []
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "definitions": {
+ "toolbarItem": {
+ "properties": {
+ "name": {
+ "title": "Unique name",
+ "type": "string"
+ },
+ "args": {
+ "title": "Command arguments",
+ "type": "object"
+ },
+ "command": {
+ "title": "Command id",
+ "type": "string",
+ "default": ""
+ },
+ "disabled": {
+ "title": "Whether the item is ignored or not",
+ "type": "boolean",
+ "default": false
+ },
+ "icon": {
+ "title": "Item icon id",
+ "description": "If defined, it will override the command icon",
+ "type": "string"
+ },
+ "label": {
+ "title": "Item label",
+ "description": "If defined, it will override the command label",
+ "type": "string"
+ },
+ "caption": {
+ "title": "Item caption",
+ "description": "If defined, it will override the command caption",
+ "type": "string"
+ },
+ "type": {
+ "title": "Item type",
+ "type": "string",
+ "enum": ["command", "spacer"]
+ },
+ "rank": {
+ "title": "Item rank",
+ "type": "number",
+ "minimum": 0,
+ "default": 50
+ }
+ },
+ "required": ["name"],
+ "additionalProperties": false,
+ "type": "object"
+ }
+ }
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/debugger-extension/main.json b/share/jupyter/lab/schemas/@jupyterlab/debugger-extension/main.json
new file mode 100644
index 0000000..2152b71
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/debugger-extension/main.json
@@ -0,0 +1,133 @@
+{
+ "title": "Debugger",
+ "description": "Debugger settings",
+ "jupyter.lab.setting-icon": "ui-components:bug",
+ "jupyter.lab.setting-icon-label": "Debugger",
+ "jupyter.lab.menus": {
+ "main": [
+ {
+ "id": "jp-mainmenu-kernel",
+ "items": [
+ { "type": "separator", "rank": 1.2 },
+ { "command": "debugger:restart-debug", "rank": 1.2 }
+ ]
+ },
+ {
+ "id": "jp-mainmenu-view",
+ "items": [
+ {
+ "command": "debugger:show-panel",
+ "rank": 5
+ }
+ ]
+ }
+ ],
+ "context": [
+ {
+ "command": "debugger:inspect-variable",
+ "selector": ".jp-DebuggerVariables-body .jp-DebuggerVariables-grid"
+ },
+ {
+ "command": "debugger:render-mime-variable",
+ "selector": ".jp-DebuggerVariables-body"
+ },
+ {
+ "command": "debugger:copy-to-clipboard",
+ "selector": ".jp-DebuggerVariables-body"
+ },
+ {
+ "command": "debugger:copy-to-globals",
+ "selector": ".jp-DebuggerVariables-body.jp-debuggerVariables-local"
+ }
+ ]
+ },
+ "jupyter.lab.shortcuts": [
+ {
+ "command": "debugger:show-panel",
+ "keys": ["Accel Shift E"],
+ "selector": "body"
+ },
+ {
+ "command": "debugger:continue",
+ "keys": ["F9"],
+ "selector": "body"
+ },
+ {
+ "command": "debugger:terminate",
+ "keys": ["Shift F9"],
+ "selector": "[data-jp-debugger-stopped-threads='true']"
+ },
+ {
+ "command": "debugger:next",
+ "keys": ["F10"],
+ "selector": "[data-jp-debugger-stopped-threads='true']"
+ },
+ {
+ "command": "debugger:stepIn",
+ "keys": ["F11"],
+ "selector": "[data-jp-debugger-stopped-threads='true']"
+ },
+ {
+ "command": "debugger:stepOut",
+ "keys": ["Shift F11"],
+ "selector": "[data-jp-debugger-stopped-threads='true']"
+ }
+ ],
+ "definitions": {
+ "variableFilters": {
+ "properties": {
+ "xpython": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "properties": {
+ "variableFilters": {
+ "title": "Variable filter",
+ "description": "Variables to filter out in the tree and table viewers",
+ "$ref": "#/definitions/variableFilters",
+ "default": {
+ "xpython": [
+ "debugpy",
+ "display",
+ "get_ipython",
+ "ptvsd",
+ "_xpython_get_connection_filename",
+ "_xpython_launch",
+ "_pydev_stop_at_break",
+ "__annotations__",
+ "__builtins__",
+ "__doc__",
+ "__loader__",
+ "__name__",
+ "__package__",
+ "__spec__"
+ ]
+ }
+ },
+ "defaultKernelSourcesFilter": {
+ "title": "Default kernel sources regexp filter",
+ "description": "A regular expression filter to apply by default when showing the kernel sources",
+ "type": "string",
+ "default": ""
+ },
+ "autoCollapseDebuggerSidebar": {
+ "title": "Auto Collapse Debugger Sidebar",
+ "description": "Collapse the debugger sidebar when disabling the debugger on a document.",
+ "type": "boolean",
+ "default": false
+ },
+ "showPausedOverlay": {
+ "title": "Show Paused Overlay",
+ "description": "Show an overlay on the editor or notebook when execution is paused in the debugger.",
+ "type": "boolean",
+ "default": true
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/debugger-extension/package.json.orig b/share/jupyter/lab/schemas/@jupyterlab/debugger-extension/package.json.orig
new file mode 100644
index 0000000..9b0c577
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/debugger-extension/package.json.orig
@@ -0,0 +1,79 @@
+{
+ "name": "@jupyterlab/debugger-extension",
+ "version": "4.5.1",
+ "description": "JupyterLab - Debugger Extension",
+ "keywords": [
+ "jupyter",
+ "jupyterlab",
+ "jupyterlab-extension"
+ ],
+ "homepage": "https://github.com/jupyterlab/jupyterlab",
+ "bugs": {
+ "url": "https://github.com/jupyterlab/jupyterlab/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jupyterlab/jupyterlab.git"
+ },
+ "license": "BSD-3-Clause",
+ "author": "Project Jupyter",
+ "sideEffects": [
+ "style/**/*.css",
+ "style/index.js"
+ ],
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts",
+ "style": "style/index.css",
+ "directories": {
+ "lib": "lib/"
+ },
+ "files": [
+ "lib/**/*.d.ts",
+ "lib/**/*.js.map",
+ "lib/**/*.js",
+ "schema/*.json",
+ "style/**/*.css",
+ "style/**/*.svg",
+ "style/index.js",
+ "src/**/*.{ts,tsx}"
+ ],
+ "scripts": {
+ "build": "tsc -b",
+ "clean": "rimraf lib && rimraf tsconfig.tsbuildinfo && rimraf tsconfig.test.tsbuildinfo && rimraf tests/build",
+ "watch": "tsc -b --watch"
+ },
+ "dependencies": {
+ "@jupyterlab/application": "^4.5.1",
+ "@jupyterlab/apputils": "^4.6.1",
+ "@jupyterlab/cells": "^4.5.1",
+ "@jupyterlab/codeeditor": "^4.5.1",
+ "@jupyterlab/completer": "^4.5.1",
+ "@jupyterlab/console": "^4.5.1",
+ "@jupyterlab/coreutils": "^6.5.1",
+ "@jupyterlab/debugger": "^4.5.1",
+ "@jupyterlab/docregistry": "^4.5.1",
+ "@jupyterlab/fileeditor": "^4.5.1",
+ "@jupyterlab/nbformat": "^4.5.1",
+ "@jupyterlab/notebook": "^4.5.1",
+ "@jupyterlab/rendermime": "^4.5.1",
+ "@jupyterlab/services": "^7.5.1",
+ "@jupyterlab/settingregistry": "^4.5.1",
+ "@jupyterlab/translation": "^4.5.1",
+ "@lumino/commands": "^2.3.3"
+ },
+ "devDependencies": {
+ "@jupyterlab/testing": "^4.5.1",
+ "@types/jest": "^29.2.0",
+ "@types/react-dom": "^18.0.9",
+ "rimraf": "~5.0.5",
+ "typescript": "~5.5.4"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "jupyterlab": {
+ "extension": true,
+ "schemaDir": "schema"
+ },
+ "styleModule": "style/index.js"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/docmanager-extension/download.json b/share/jupyter/lab/schemas/@jupyterlab/docmanager-extension/download.json
new file mode 100644
index 0000000..8218638
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/docmanager-extension/download.json
@@ -0,0 +1,21 @@
+{
+ "title": "Document Manager Download",
+ "description": "Document Manager Download settings.",
+ "jupyter.lab.menus": {
+ "main": [
+ {
+ "id": "jp-mainmenu-file",
+ "items": [
+ { "type": "separator", "rank": 6 },
+ {
+ "command": "docmanager:download",
+ "rank": 6
+ },
+ { "type": "separator", "rank": 6 }
+ ]
+ }
+ ]
+ },
+ "additionalProperties": false,
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/docmanager-extension/package.json.orig b/share/jupyter/lab/schemas/@jupyterlab/docmanager-extension/package.json.orig
new file mode 100644
index 0000000..d4d7153
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/docmanager-extension/package.json.orig
@@ -0,0 +1,72 @@
+{
+ "name": "@jupyterlab/docmanager-extension",
+ "version": "4.5.1",
+ "description": "JupyterLab - Document Manager Extension",
+ "homepage": "https://github.com/jupyterlab/jupyterlab",
+ "bugs": {
+ "url": "https://github.com/jupyterlab/jupyterlab/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jupyterlab/jupyterlab.git"
+ },
+ "license": "BSD-3-Clause",
+ "author": "Project Jupyter",
+ "sideEffects": [
+ "style/**/*.css",
+ "style/index.js"
+ ],
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts",
+ "style": "style/index.css",
+ "directories": {
+ "lib": "lib/"
+ },
+ "files": [
+ "lib/*.d.ts",
+ "lib/*.js.map",
+ "lib/*.js",
+ "schema/*.json",
+ "style/**/*.css",
+ "style/index.js",
+ "src/**/*.{ts,tsx}"
+ ],
+ "scripts": {
+ "build": "tsc -b",
+ "clean": "rimraf lib && rimraf tsconfig.tsbuildinfo",
+ "watch": "tsc -b --watch"
+ },
+ "dependencies": {
+ "@jupyterlab/application": "^4.5.1",
+ "@jupyterlab/apputils": "^4.6.1",
+ "@jupyterlab/coreutils": "^6.5.1",
+ "@jupyterlab/docmanager": "^4.5.1",
+ "@jupyterlab/docregistry": "^4.5.1",
+ "@jupyterlab/rendermime": "^4.5.1",
+ "@jupyterlab/services": "^7.5.1",
+ "@jupyterlab/settingregistry": "^4.5.1",
+ "@jupyterlab/statedb": "^4.5.1",
+ "@jupyterlab/statusbar": "^4.5.1",
+ "@jupyterlab/translation": "^4.5.1",
+ "@jupyterlab/ui-components": "^4.5.1",
+ "@lumino/algorithm": "^2.0.4",
+ "@lumino/commands": "^2.3.3",
+ "@lumino/coreutils": "^2.2.2",
+ "@lumino/disposable": "^2.1.5",
+ "@lumino/signaling": "^2.1.5",
+ "@lumino/widgets": "^2.7.2",
+ "react": "^18.2.0"
+ },
+ "devDependencies": {
+ "rimraf": "~5.0.5",
+ "typescript": "~5.5.4"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "jupyterlab": {
+ "extension": true,
+ "schemaDir": "schema"
+ },
+ "styleModule": "style/index.js"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/docmanager-extension/plugin.json b/share/jupyter/lab/schemas/@jupyterlab/docmanager-extension/plugin.json
new file mode 100644
index 0000000..aa4146f
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/docmanager-extension/plugin.json
@@ -0,0 +1,163 @@
+{
+ "title": "Document Manager",
+ "description": "Document Manager settings.",
+ "jupyter.lab.setting-icon": "ui-components:file",
+ "jupyter.lab.setting-icon-label": "Document Manager",
+ "jupyter.lab.transform": true,
+ "jupyter.lab.menus": {
+ "main": [
+ {
+ "id": "jp-mainmenu-file",
+ "items": [
+ {
+ "command": "docmanager:clone",
+ "rank": 2
+ },
+ {
+ "type": "separator",
+ "rank": 4
+ },
+ {
+ "command": "docmanager:save",
+ "rank": 4
+ },
+ {
+ "command": "docmanager:save-as",
+ "rank": 4
+ },
+ {
+ "command": "docmanager:save-all",
+ "rank": 4
+ },
+ {
+ "type": "separator",
+ "rank": 5
+ },
+ {
+ "command": "docmanager:reload",
+ "rank": 5
+ },
+ {
+ "command": "docmanager:restore-checkpoint",
+ "rank": 5
+ },
+ {
+ "command": "docmanager:rename",
+ "rank": 5
+ },
+ {
+ "command": "docmanager:duplicate",
+ "rank": 5
+ }
+ ]
+ },
+ {
+ "id": "jp-mainmenu-settings",
+ "items": [
+ {
+ "type": "separator",
+ "rank": 4
+ },
+ {
+ "command": "docmanager:toggle-autosave",
+ "rank": 4
+ },
+ {
+ "type": "separator",
+ "rank": 4
+ }
+ ]
+ }
+ ],
+ "context": [
+ {
+ "command": "docmanager:rename",
+ "selector": "[data-type=\"document-title\"]",
+ "rank": 20
+ },
+ {
+ "command": "docmanager:duplicate",
+ "selector": "[data-type=\"document-title\"]",
+ "rank": 21
+ },
+ {
+ "command": "docmanager:delete",
+ "selector": "[data-type=\"document-title\"]",
+ "rank": 22
+ },
+ {
+ "command": "docmanager:clone",
+ "selector": "[data-type=\"document-title\"]",
+ "rank": 23
+ },
+ {
+ "command": "docmanager:show-in-file-browser",
+ "selector": "[data-type=\"document-title\"]",
+ "rank": 24
+ }
+ ]
+ },
+ "jupyter.lab.shortcuts": [
+ {
+ "command": "docmanager:save",
+ "keys": ["Accel S"],
+ "selector": "body"
+ },
+ {
+ "command": "docmanager:save-as",
+ "keys": ["Accel Shift S"],
+ "selector": "body"
+ }
+ ],
+ "properties": {
+ "autosave": {
+ "type": "boolean",
+ "title": "Autosave Documents",
+ "description": "Whether to autosave documents",
+ "default": true
+ },
+ "autosaveInterval": {
+ "type": "number",
+ "title": "Autosave Interval",
+ "description": "Length of save interval in seconds",
+ "default": 120
+ },
+ "confirmClosingDocument": {
+ "type": "boolean",
+ "title": "Ask for confirmation to close a document",
+ "description": "Whether to ask for confirmation to close a document or not.",
+ "default": false
+ },
+ "lastModifiedCheckMargin": {
+ "type": "number",
+ "title": "Margin for last modified timestamp check",
+ "description": "Max acceptable difference, in milliseconds, between last modified timestamps on disk and client",
+ "default": 500
+ },
+ "defaultViewers": {
+ "type": "object",
+ "title": "Default Viewers",
+ "default": {},
+ "description": "Overrides for the default viewers for file types",
+ "properties": {},
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "renameUntitledFileOnSave": {
+ "type": "boolean",
+ "title": "Rename Untitled File On First Save",
+ "description": "Whether to prompt to rename untitled file on first manual save.",
+ "default": true
+ },
+ "maxNumberRecents": {
+ "type": "number",
+ "title": "Recent Items Number",
+ "description": "Number of recently opened/closed files and directories to remember.",
+ "default": 10,
+ "minimum": 0
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/documentsearch-extension/package.json.orig b/share/jupyter/lab/schemas/@jupyterlab/documentsearch-extension/package.json.orig
new file mode 100644
index 0000000..eafb64c
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/documentsearch-extension/package.json.orig
@@ -0,0 +1,57 @@
+{
+ "name": "@jupyterlab/documentsearch-extension",
+ "version": "4.5.1",
+ "description": "JupyterLab - Document Search Extension",
+ "homepage": "https://github.com/jupyterlab/jupyterlab",
+ "bugs": {
+ "url": "https://github.com/jupyterlab/jupyterlab/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jupyterlab/jupyterlab.git"
+ },
+ "license": "BSD-3-Clause",
+ "author": "Project Jupyter",
+ "sideEffects": [
+ "style/**/*"
+ ],
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts",
+ "style": "style/index.css",
+ "directories": {
+ "lib": "lib/"
+ },
+ "files": [
+ "lib/**/*.{d.ts,eot,gif,html,jpg,js,js.map,json,png,svg,woff2,ttf}",
+ "schema/*.json",
+ "style/**/*.{css,eot,gif,html,jpg,json,png,svg,woff2,ttf}",
+ "style/index.js",
+ "src/**/*.{ts,tsx}"
+ ],
+ "scripts": {
+ "build": "tsc -b",
+ "clean": "rimraf lib && rimraf tsconfig.tsbuildinfo",
+ "watch": "tsc -w --listEmittedFiles"
+ },
+ "dependencies": {
+ "@jupyterlab/application": "^4.5.1",
+ "@jupyterlab/apputils": "^4.6.1",
+ "@jupyterlab/documentsearch": "^4.5.1",
+ "@jupyterlab/settingregistry": "^4.5.1",
+ "@jupyterlab/translation": "^4.5.1",
+ "@lumino/commands": "^2.3.3",
+ "@lumino/widgets": "^2.7.2"
+ },
+ "devDependencies": {
+ "rimraf": "~5.0.5",
+ "typescript": "~5.5.4"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "jupyterlab": {
+ "extension": true,
+ "schemaDir": "schema"
+ },
+ "styleModule": "style/index.js"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/documentsearch-extension/plugin.json b/share/jupyter/lab/schemas/@jupyterlab/documentsearch-extension/plugin.json
new file mode 100644
index 0000000..349e720
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/documentsearch-extension/plugin.json
@@ -0,0 +1,80 @@
+{
+ "title": "Document Search",
+ "description": "Document search plugin.",
+ "jupyter.lab.setting-icon": "ui-components:search",
+ "jupyter.lab.setting-icon-label": "Document Search",
+ "jupyter.lab.menus": {
+ "main": [
+ {
+ "id": "jp-mainmenu-edit",
+ "items": [
+ {
+ "type": "separator",
+ "rank": 10
+ },
+ {
+ "command": "documentsearch:start",
+ "rank": 10
+ },
+ {
+ "command": "documentsearch:highlightNext",
+ "rank": 10
+ },
+ {
+ "command": "documentsearch:highlightPrevious",
+ "rank": 10
+ },
+ {
+ "type": "separator",
+ "rank": 10
+ }
+ ]
+ }
+ ]
+ },
+ "jupyter.lab.shortcuts": [
+ {
+ "command": "documentsearch:start",
+ "keys": ["Accel F"],
+ "selector": ".jp-mod-searchable"
+ },
+ {
+ "command": "documentsearch:highlightNext",
+ "keys": ["Accel G"],
+ "selector": ".jp-mod-searchable"
+ },
+ {
+ "command": "documentsearch:highlightPrevious",
+ "keys": ["Accel Shift G"],
+ "selector": ".jp-mod-searchable"
+ },
+ {
+ "command": "documentsearch:toggleSearchInSelection",
+ "keys": ["Alt L"],
+ "selector": ".jp-mod-search-active"
+ },
+ {
+ "command": "documentsearch:end",
+ "keys": ["Escape"],
+ "selector": ".jp-mod-search-active"
+ }
+ ],
+ "properties": {
+ "searchDebounceTime": {
+ "title": "Search debounce time (ms)",
+ "description": "The debounce time in milliseconds applied to the search input field. The already opened input files will not be updated if you change that value",
+ "type": "number",
+ "default": 500,
+ "minimum": 0
+ },
+ "autoSearchInSelection": {
+ "title": "Search in selection automatically",
+ "description": "When starting search, the 'search in selection' mode will be enabled if `any` text/cell is selected, or when `multiple` lines or cells are selected, or `never`.",
+ "type": "string",
+ "enum": ["never", "multiple-selected", "any-selected"],
+ "default": "never"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/extensionmanager-extension/package.json.orig b/share/jupyter/lab/schemas/@jupyterlab/extensionmanager-extension/package.json.orig
new file mode 100644
index 0000000..e952b9b
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/extensionmanager-extension/package.json.orig
@@ -0,0 +1,60 @@
+{
+ "name": "@jupyterlab/extensionmanager-extension",
+ "version": "4.5.1",
+ "description": "JupyterLab - Extension Manager Extension",
+ "homepage": "https://github.com/jupyterlab/jupyterlab",
+ "bugs": {
+ "url": "https://github.com/jupyterlab/jupyterlab/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jupyterlab/jupyterlab.git"
+ },
+ "license": "BSD-3-Clause",
+ "author": "Project Jupyter",
+ "sideEffects": [
+ "style/*.css",
+ "style/index.js"
+ ],
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts",
+ "style": "style/index.css",
+ "directories": {
+ "lib": "lib/"
+ },
+ "files": [
+ "lib/*.d.ts",
+ "lib/*.js.map",
+ "lib/*.js",
+ "schema/*.json",
+ "listing/*.json",
+ "style/*.css",
+ "style/index.js",
+ "src/**/*.{ts,tsx}"
+ ],
+ "scripts": {
+ "build": "tsc -b",
+ "clean": "rimraf lib && rimraf tsconfig.tsbuildinfo",
+ "watch": "tsc -b --watch"
+ },
+ "dependencies": {
+ "@jupyterlab/application": "^4.5.1",
+ "@jupyterlab/apputils": "^4.6.1",
+ "@jupyterlab/extensionmanager": "^4.5.1",
+ "@jupyterlab/settingregistry": "^4.5.1",
+ "@jupyterlab/translation": "^4.5.1",
+ "@jupyterlab/ui-components": "^4.5.1"
+ },
+ "devDependencies": {
+ "rimraf": "~5.0.5",
+ "typescript": "~5.5.4"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "jupyterlab": {
+ "extension": true,
+ "schemaDir": "schema"
+ },
+ "styleModule": "style/index.js"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/extensionmanager-extension/plugin.json b/share/jupyter/lab/schemas/@jupyterlab/extensionmanager-extension/plugin.json
new file mode 100644
index 0000000..670b9af
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/extensionmanager-extension/plugin.json
@@ -0,0 +1,59 @@
+{
+ "title": "Extension Manager",
+ "description": "Extension manager settings.",
+ "jupyter.lab.setting-icon": "ui-components:extension",
+ "jupyter.lab.setting-icon-label": "Extension Manager",
+ "jupyter.lab.menus": {
+ "main": [
+ {
+ "id": "jp-mainmenu-view",
+ "items": [
+ {
+ "command": "extensionmanager:show-panel",
+ "rank": 9
+ }
+ ]
+ },
+ {
+ "id": "jp-mainmenu-settings",
+ "items": [
+ {
+ "type": "separator",
+ "rank": 100
+ },
+ {
+ "command": "extensionmanager:toggle",
+ "rank": 100
+ },
+ {
+ "type": "separator",
+ "rank": 100
+ }
+ ]
+ }
+ ]
+ },
+ "jupyter.lab.shortcuts": [
+ {
+ "command": "extensionmanager:show-panel",
+ "keys": ["Accel Shift X"],
+ "selector": "body"
+ }
+ ],
+ "properties": {
+ "enabled": {
+ "title": "Enabled Status",
+ "description": "Enables extension manager.\nWARNING: installing untrusted extensions may be unsafe.",
+ "default": true,
+ "type": "boolean"
+ },
+ "disclaimed": {
+ "title": "Disclaimed Status",
+ "description": "Whether the user agrees the access to external web services and understands extensions may introduce security risks or contain malicious code that runs on his machine.",
+ "default": false,
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/filebrowser-extension/browser.json b/share/jupyter/lab/schemas/@jupyterlab/filebrowser-extension/browser.json
new file mode 100644
index 0000000..0f8fb19
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/filebrowser-extension/browser.json
@@ -0,0 +1,297 @@
+{
+ "jupyter.lab.setting-icon": "ui-components:folder",
+ "jupyter.lab.setting-icon-label": "File Browser",
+ "jupyter.lab.menus": {
+ "main": [
+ {
+ "id": "jp-mainmenu-file",
+ "items": [
+ {
+ "type": "separator",
+ "rank": 1
+ },
+ {
+ "command": "filebrowser:open-path",
+ "rank": 1
+ },
+ {
+ "command": "filebrowser:open-url",
+ "rank": 1
+ }
+ ]
+ },
+ {
+ "id": "jp-mainmenu-view",
+ "items": [
+ {
+ "command": "filebrowser:toggle-hidden-files",
+ "rank": 9.95
+ }
+ ]
+ }
+ ],
+ "context": [
+ {
+ "type": "separator",
+ "selector": ".jp-DirListing-content",
+ "rank": 0
+ },
+ {
+ "command": "filebrowser:open",
+ "selector": ".jp-DirListing-item[data-isdir]",
+ "rank": 1
+ },
+ {
+ "type": "separator",
+ "selector": ".jp-DirListing-item[data-isdir]",
+ "rank": 4
+ },
+ {
+ "command": "filebrowser:rename",
+ "selector": ".jp-DirListing-item[data-isdir]",
+ "rank": 5
+ },
+ {
+ "command": "filebrowser:delete",
+ "selector": ".jp-DirListing-item[data-isdir]",
+ "rank": 6
+ },
+ {
+ "command": "filebrowser:cut",
+ "selector": ".jp-DirListing-item[data-isdir]",
+ "rank": 7
+ },
+ {
+ "command": "filebrowser:copy",
+ "selector": ".jp-DirListing-item[data-isdir]",
+ "rank": 8
+ },
+ {
+ "command": "filebrowser:paste",
+ "selector": ".jp-DirListing-content",
+ "rank": 8.5
+ },
+ {
+ "command": "filebrowser:duplicate",
+ "selector": ".jp-DirListing-item[data-isdir=\"false\"]",
+ "rank": 9
+ },
+ {
+ "type": "separator",
+ "selector": ".jp-DirListing-item[data-isdir]",
+ "rank": 10
+ },
+ {
+ "command": "filebrowser:shutdown",
+ "selector": ".jp-DirListing-item[data-isdir=\"false\"].jp-mod-running",
+ "rank": 11
+ },
+ {
+ "type": "separator",
+ "selector": ".jp-DirListing-item[data-isdir]",
+ "rank": 12
+ },
+ {
+ "command": "filebrowser:copy-path",
+ "selector": ".jp-DirListing-item[data-isdir]",
+ "rank": 14
+ },
+ {
+ "command": "filebrowser:toggle-last-modified",
+ "selector": ".jp-DirListing-header",
+ "rank": 14
+ },
+ {
+ "command": "filebrowser:toggle-file-size",
+ "selector": ".jp-DirListing-header",
+ "rank": 15
+ },
+ {
+ "command": "filebrowser:toggle-file-checkboxes",
+ "selector": ".jp-DirListing-header",
+ "rank": 16
+ },
+ {
+ "command": "filebrowser:toggle-sort-notebooks-first",
+ "selector": ".jp-DirListing-header",
+ "rank": 17
+ },
+ {
+ "command": "filebrowser:share-main",
+ "selector": ".jp-DirListing-item[data-isdir]",
+ "rank": 17
+ },
+ {
+ "type": "separator",
+ "selector": ".jp-DirListing-item[data-isdir]",
+ "rank": 50
+ },
+ {
+ "command": "filebrowser:create-new-file",
+ "selector": ".jp-DirListing-content",
+ "rank": 51
+ },
+ {
+ "command": "filebrowser:create-new-directory",
+ "selector": ".jp-DirListing-content",
+ "rank": 55
+ }
+ ]
+ },
+ "title": "File Browser",
+ "description": "File Browser settings.",
+ "jupyter.lab.shortcuts": [
+ {
+ "command": "filebrowser:go-up",
+ "keys": ["Backspace"],
+ "selector": ".jp-DirListing:focus"
+ },
+ {
+ "command": "filebrowser:go-up",
+ "keys": ["Backspace"],
+ "selector": ".jp-DirListing-content .jp-DirListing-itemText"
+ },
+ {
+ "command": "filebrowser:delete",
+ "keys": ["Delete"],
+ "selector": ".jp-DirListing-content .jp-DirListing-itemText"
+ },
+ {
+ "command": "filebrowser:cut",
+ "keys": ["Accel X"],
+ "selector": ".jp-DirListing-content .jp-DirListing-itemText"
+ },
+ {
+ "command": "filebrowser:copy",
+ "keys": ["Accel C"],
+ "selector": ".jp-DirListing-content .jp-DirListing-itemText"
+ },
+ {
+ "command": "filebrowser:paste",
+ "keys": ["Accel V"],
+ "selector": ".jp-DirListing-content .jp-DirListing-itemText"
+ },
+ {
+ "command": "filebrowser:rename",
+ "keys": ["F2"],
+ "selector": ".jp-DirListing-content .jp-DirListing-itemText"
+ },
+ {
+ "command": "filebrowser:duplicate",
+ "keys": ["Accel D"],
+ "selector": ".jp-DirListing-content .jp-DirListing-itemText"
+ },
+ {
+ "command": "filebrowser:select-all",
+ "keys": ["Accel A"],
+ "selector": ".jp-DirListing-content .jp-DirListing-itemText"
+ }
+ ],
+ "properties": {
+ "navigateToCurrentDirectory": {
+ "type": "boolean",
+ "title": "Navigate to current folder",
+ "description": "Whether to automatically navigate to a document's current folder",
+ "default": false
+ },
+ "useFuzzyFilter": {
+ "type": "boolean",
+ "title": "Filter on file name with a fuzzy search",
+ "description": "Whether to apply fuzzy algorithm while filtering on file names",
+ "default": true
+ },
+ "filterDirectories": {
+ "type": "boolean",
+ "title": "Filter folders",
+ "description": "Whether to apply the search on folders",
+ "default": true
+ },
+ "showLastModifiedColumn": {
+ "type": "boolean",
+ "title": "Show last modified column",
+ "description": "Whether to show the last modified column",
+ "default": true
+ },
+ "showFileSizeColumn": {
+ "type": "boolean",
+ "title": "Show file size column",
+ "description": "Whether to show the file size column",
+ "default": false
+ },
+ "showHiddenFiles": {
+ "type": "boolean",
+ "title": "Show hidden files",
+ "description": "Whether to show hidden files. The server parameter `ContentsManager.allow_hidden` must be set to `True` to display hidden files.",
+ "default": false
+ },
+ "showFileCheckboxes": {
+ "type": "boolean",
+ "title": "Use checkboxes to select items",
+ "description": "Whether to show checkboxes next to files and folders",
+ "default": false
+ },
+ "showFullPath": {
+ "type": "boolean",
+ "title": "Show full path in browser bread crumbs",
+ "description": "Whether to show full path in browser bread crumbs",
+ "default": false
+ },
+ "sortNotebooksFirst": {
+ "type": "boolean",
+ "title": "When sorting by name, group notebooks before other files",
+ "description": "Whether to group the notebooks away from files",
+ "default": false
+ },
+ "singleClickNavigation": {
+ "type": "boolean",
+ "title": "Navigate files and directories with single click",
+ "description": "Whether to allow single click selection on file browser items",
+ "default": false
+ },
+ "autoOpenUploads": {
+ "type": "boolean",
+ "title": "Auto-open uploads",
+ "description": "Automatically open uploaded notebooks and supported files",
+ "default": true
+ },
+ "maxAutoOpenSizeMB": {
+ "type": "number",
+ "title": "Max auto-open size",
+ "description": "Maximum file size (MB) to auto-open files on upload",
+ "default": 50
+ },
+ "allowFileUploads": {
+ "type": "boolean",
+ "title": "Allow file uploads",
+ "description": "Whether to allow uploading files",
+ "default": true
+ },
+ "breadcrumbs": {
+ "title": "Breadcrumbs",
+ "description": "Settings related to breadcrumbs display and behavior.",
+ "type": "object",
+ "default": {
+ "minimumLeftItems": 0,
+ "minimumRightItems": 2
+ },
+ "properties": {
+ "minimumLeftItems": {
+ "type": "number",
+ "title": "Minimum breadcrumbs left items",
+ "description": "Minimum number of directory items to display on the left side of the breadcrumbs ellipsis",
+ "default": 0,
+ "minimum": 0
+ },
+ "minimumRightItems": {
+ "type": "number",
+ "title": "Minimum breadcrumbs right items",
+ "description": "Minimum number of directory items to display on the right side of the breadcrumbs ellipsis",
+ "default": 2,
+ "minimum": 0
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/filebrowser-extension/download.json b/share/jupyter/lab/schemas/@jupyterlab/filebrowser-extension/download.json
new file mode 100644
index 0000000..804fbf2
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/filebrowser-extension/download.json
@@ -0,0 +1,21 @@
+{
+ "title": "File Browser Download",
+ "description": "File Browser Download settings.",
+ "jupyter.lab.menus": {
+ "context": [
+ {
+ "command": "filebrowser:download",
+ "selector": ".jp-DirListing-item[data-isdir=\"false\"]",
+ "rank": 9
+ },
+ {
+ "command": "filebrowser:copy-download-link",
+ "selector": ".jp-DirListing-item[data-isdir=\"false\"]",
+ "rank": 13
+ }
+ ]
+ },
+ "properties": {},
+ "additionalProperties": false,
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/filebrowser-extension/open-browser-tab.json b/share/jupyter/lab/schemas/@jupyterlab/filebrowser-extension/open-browser-tab.json
new file mode 100644
index 0000000..bc03429
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/filebrowser-extension/open-browser-tab.json
@@ -0,0 +1,16 @@
+{
+ "title": "File Browser Open Browser Tab",
+ "description": "File Browser Open Browser Tab settings.",
+ "jupyter.lab.menus": {
+ "context": [
+ {
+ "command": "filebrowser:open-browser-tab",
+ "selector": ".jp-DirListing-item[data-isdir=\"false\"]",
+ "rank": 1.6
+ }
+ ]
+ },
+ "properties": {},
+ "additionalProperties": false,
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/filebrowser-extension/open-with.json b/share/jupyter/lab/schemas/@jupyterlab/filebrowser-extension/open-with.json
new file mode 100644
index 0000000..8038dd4
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/filebrowser-extension/open-with.json
@@ -0,0 +1,21 @@
+{
+ "title": "File Browser Open With",
+ "description": "File Browser Open With settings.",
+ "jupyter.lab.menus": {
+ "context": [
+ {
+ "type": "submenu",
+ "selector": ".jp-DirListing-item[data-isdir=\"false\"]",
+ "rank": 1.3,
+ "submenu": {
+ "id": "jp-contextmenu-open-with",
+ "label": "Open With",
+ "items": []
+ }
+ }
+ ]
+ },
+ "properties": {},
+ "additionalProperties": false,
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/filebrowser-extension/package.json.orig b/share/jupyter/lab/schemas/@jupyterlab/filebrowser-extension/package.json.orig
new file mode 100644
index 0000000..d0615db
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/filebrowser-extension/package.json.orig
@@ -0,0 +1,69 @@
+{
+ "name": "@jupyterlab/filebrowser-extension",
+ "version": "4.5.1",
+ "description": "JupyterLab - Filebrowser Widget Extension",
+ "homepage": "https://github.com/jupyterlab/jupyterlab",
+ "bugs": {
+ "url": "https://github.com/jupyterlab/jupyterlab/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jupyterlab/jupyterlab.git"
+ },
+ "license": "BSD-3-Clause",
+ "author": "Project Jupyter",
+ "sideEffects": [
+ "style/**/*.css",
+ "style/index.js"
+ ],
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts",
+ "style": "style/index.css",
+ "directories": {
+ "lib": "lib/"
+ },
+ "files": [
+ "lib/*.d.ts",
+ "lib/*.js.map",
+ "lib/*.js",
+ "schema/*.json",
+ "style/**/*.css",
+ "style/index.js",
+ "src/**/*.{ts,tsx}"
+ ],
+ "scripts": {
+ "build": "tsc -b",
+ "clean": "rimraf lib && rimraf tsconfig.tsbuildinfo",
+ "watch": "tsc -b --watch"
+ },
+ "dependencies": {
+ "@jupyterlab/application": "^4.5.1",
+ "@jupyterlab/apputils": "^4.6.1",
+ "@jupyterlab/coreutils": "^6.5.1",
+ "@jupyterlab/docmanager": "^4.5.1",
+ "@jupyterlab/docregistry": "^4.5.1",
+ "@jupyterlab/filebrowser": "^4.5.1",
+ "@jupyterlab/services": "^7.5.1",
+ "@jupyterlab/settingregistry": "^4.5.1",
+ "@jupyterlab/statedb": "^4.5.1",
+ "@jupyterlab/statusbar": "^4.5.1",
+ "@jupyterlab/translation": "^4.5.1",
+ "@jupyterlab/ui-components": "^4.5.1",
+ "@lumino/algorithm": "^2.0.4",
+ "@lumino/commands": "^2.3.3",
+ "@lumino/disposable": "^2.1.5",
+ "@lumino/widgets": "^2.7.2"
+ },
+ "devDependencies": {
+ "rimraf": "~5.0.5",
+ "typescript": "~5.5.4"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "jupyterlab": {
+ "extension": true,
+ "schemaDir": "schema"
+ },
+ "styleModule": "style/index.js"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/filebrowser-extension/widget.json b/share/jupyter/lab/schemas/@jupyterlab/filebrowser-extension/widget.json
new file mode 100644
index 0000000..101c96a
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/filebrowser-extension/widget.json
@@ -0,0 +1,124 @@
+{
+ "title": "File Browser Widget",
+ "description": "File Browser widget settings.",
+ "jupyter.lab.toolbars": {
+ "FileBrowser": [
+ {
+ "name": "new-directory",
+ "command": "filebrowser:create-new-directory",
+ "rank": 10
+ },
+ { "name": "uploader", "rank": 20 },
+ { "name": "refresh", "command": "filebrowser:refresh", "rank": 30 },
+ {
+ "name": "toggle-file-filter",
+ "command": "filebrowser:toggle-file-filter",
+ "rank": 40
+ }
+ ]
+ },
+ "jupyter.lab.menus": {
+ "main": [
+ {
+ "id": "jp-mainmenu-view",
+ "items": [
+ {
+ "command": "filebrowser:toggle-main",
+ "rank": 1
+ }
+ ]
+ },
+ {
+ "id": "jp-mainmenu-settings",
+ "items": [
+ {
+ "type": "separator",
+ "rank": 5
+ },
+ {
+ "command": "filebrowser:toggle-navigate-to-current-directory",
+ "rank": 5
+ },
+ {
+ "type": "separator",
+ "rank": 5
+ }
+ ]
+ }
+ ]
+ },
+ "jupyter.lab.shortcuts": [
+ {
+ "command": "filebrowser:toggle-main",
+ "keys": ["Accel Shift F"],
+ "selector": "body"
+ }
+ ],
+ "jupyter.lab.transform": true,
+ "properties": {
+ "toolbar": {
+ "title": "File browser toolbar items",
+ "description": "Note: To disable a toolbar item,\ncopy it to User Preferences and add the\n\"disabled\" key. The following example will disable the uploader button:\n{\n \"toolbar\": [\n {\n \"name\": \"uploader\",\n \"disabled\": true\n }\n ]\n}\n\nToolbar description:",
+ "items": {
+ "$ref": "#/definitions/toolbarItem"
+ },
+ "type": "array",
+ "default": []
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "definitions": {
+ "toolbarItem": {
+ "properties": {
+ "name": {
+ "title": "Unique name",
+ "type": "string"
+ },
+ "args": {
+ "title": "Command arguments",
+ "type": "object"
+ },
+ "command": {
+ "title": "Command id",
+ "type": "string",
+ "default": ""
+ },
+ "disabled": {
+ "title": "Whether the item is ignored or not",
+ "type": "boolean",
+ "default": false
+ },
+ "icon": {
+ "title": "Item icon id",
+ "description": "If defined, it will override the command icon",
+ "type": "string"
+ },
+ "label": {
+ "title": "Item label",
+ "description": "If defined, it will override the command label",
+ "type": "string"
+ },
+ "caption": {
+ "title": "Item caption",
+ "description": "If defined, it will override the command caption",
+ "type": "string"
+ },
+ "type": {
+ "title": "Item type",
+ "type": "string",
+ "enum": ["command", "spacer"]
+ },
+ "rank": {
+ "title": "Item rank",
+ "type": "number",
+ "minimum": 0,
+ "default": 50
+ }
+ },
+ "required": ["name"],
+ "additionalProperties": false,
+ "type": "object"
+ }
+ }
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/fileeditor-extension/completer.json b/share/jupyter/lab/schemas/@jupyterlab/fileeditor-extension/completer.json
new file mode 100644
index 0000000..80c4f21
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/fileeditor-extension/completer.json
@@ -0,0 +1,14 @@
+{
+ "title": "File Editor Completer",
+ "description": "File editor completer settings.",
+ "jupyter.lab.shortcuts": [
+ {
+ "command": "completer:invoke-file",
+ "keys": ["Tab"],
+ "selector": ".jp-FileEditor .jp-mod-completer-enabled:not(.jp-mod-at-line-beginning)"
+ }
+ ],
+ "properties": {},
+ "additionalProperties": false,
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/fileeditor-extension/package.json.orig b/share/jupyter/lab/schemas/@jupyterlab/fileeditor-extension/package.json.orig
new file mode 100644
index 0000000..179fd14
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/fileeditor-extension/package.json.orig
@@ -0,0 +1,83 @@
+{
+ "name": "@jupyterlab/fileeditor-extension",
+ "version": "4.5.1",
+ "description": "JupyterLab - Editor Widget Extension",
+ "homepage": "https://github.com/jupyterlab/jupyterlab",
+ "bugs": {
+ "url": "https://github.com/jupyterlab/jupyterlab/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jupyterlab/jupyterlab.git"
+ },
+ "license": "BSD-3-Clause",
+ "author": "Project Jupyter",
+ "sideEffects": [
+ "style/**/*.css",
+ "style/index.js"
+ ],
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts",
+ "style": "style/index.css",
+ "directories": {
+ "lib": "lib/"
+ },
+ "files": [
+ "lib/*.d.ts",
+ "lib/*.js.map",
+ "lib/*.js",
+ "schema/*.json",
+ "style/**/*.css",
+ "style/index.js",
+ "src/**/*.{ts,tsx}"
+ ],
+ "scripts": {
+ "build": "tsc -b",
+ "clean": "rimraf lib && rimraf tsconfig.tsbuildinfo",
+ "watch": "tsc -b --watch"
+ },
+ "dependencies": {
+ "@codemirror/commands": "^6.8.1",
+ "@codemirror/search": "^6.5.10",
+ "@jupyterlab/application": "^4.5.1",
+ "@jupyterlab/apputils": "^4.6.1",
+ "@jupyterlab/codeeditor": "^4.5.1",
+ "@jupyterlab/codemirror": "^4.5.1",
+ "@jupyterlab/completer": "^4.5.1",
+ "@jupyterlab/console": "^4.5.1",
+ "@jupyterlab/coreutils": "^6.5.1",
+ "@jupyterlab/docregistry": "^4.5.1",
+ "@jupyterlab/documentsearch": "^4.5.1",
+ "@jupyterlab/filebrowser": "^4.5.1",
+ "@jupyterlab/fileeditor": "^4.5.1",
+ "@jupyterlab/launcher": "^4.5.1",
+ "@jupyterlab/lsp": "^4.5.1",
+ "@jupyterlab/mainmenu": "^4.5.1",
+ "@jupyterlab/observables": "^5.5.1",
+ "@jupyterlab/rendermime": "^4.5.1",
+ "@jupyterlab/rendermime-interfaces": "^3.13.1",
+ "@jupyterlab/services": "^7.5.1",
+ "@jupyterlab/settingregistry": "^4.5.1",
+ "@jupyterlab/statusbar": "^4.5.1",
+ "@jupyterlab/toc": "^6.5.1",
+ "@jupyterlab/translation": "^4.5.1",
+ "@jupyterlab/ui-components": "^4.5.1",
+ "@lumino/algorithm": "^2.0.4",
+ "@lumino/commands": "^2.3.3",
+ "@lumino/coreutils": "^2.2.2",
+ "@lumino/disposable": "^2.1.5",
+ "@lumino/widgets": "^2.7.2"
+ },
+ "devDependencies": {
+ "rimraf": "~5.0.5",
+ "typescript": "~5.5.4"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "jupyterlab": {
+ "extension": true,
+ "schemaDir": "schema"
+ },
+ "styleModule": "style/index.js"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/fileeditor-extension/plugin.json b/share/jupyter/lab/schemas/@jupyterlab/fileeditor-extension/plugin.json
new file mode 100644
index 0000000..4ad2168
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/fileeditor-extension/plugin.json
@@ -0,0 +1,257 @@
+{
+ "title": "Text Editor",
+ "description": "Text editor settings.",
+ "jupyter.lab.setting-icon": "ui-components:text-editor",
+ "jupyter.lab.setting-icon-label": "Editor",
+ "jupyter.lab.menus": {
+ "main": [
+ {
+ "id": "jp-mainmenu-file",
+ "items": [
+ {
+ "type": "submenu",
+ "submenu": {
+ "id": "jp-mainmenu-file-new",
+ "items": [
+ {
+ "command": "fileeditor:create-new",
+ "rank": 30
+ },
+ {
+ "command": "fileeditor:create-new-markdown-file",
+ "rank": 30
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "id": "jp-mainmenu-view",
+ "items": [
+ {
+ "type": "separator",
+ "rank": 40
+ },
+ {
+ "type": "submenu",
+ "submenu": {
+ "id": "jp-mainmenu-view-codemirror-language",
+ "label": "Text Editor Syntax Highlighting"
+ },
+ "rank": 40
+ },
+ {
+ "type": "separator",
+ "rank": 40
+ }
+ ]
+ },
+ {
+ "id": "jp-mainmenu-settings",
+ "items": [
+ {
+ "type": "separator",
+ "rank": 30
+ },
+ {
+ "type": "submenu",
+ "submenu": {
+ "id": "jp-mainmenu-settings-fileeditorindent",
+ "label": "Text Editor Indentation",
+ "items": [
+ {
+ "command": "fileeditor:change-tabs"
+ },
+ {
+ "command": "fileeditor:change-tabs",
+ "args": {
+ "size": "1"
+ }
+ },
+ {
+ "command": "fileeditor:change-tabs",
+ "args": {
+ "size": "2"
+ }
+ },
+ {
+ "command": "fileeditor:change-tabs",
+ "args": {
+ "size": "4"
+ }
+ },
+ {
+ "command": "fileeditor:change-tabs",
+ "args": {
+ "size": "8"
+ }
+ }
+ ]
+ },
+ "rank": 30
+ },
+ {
+ "command": "fileeditor:toggle-autoclosing-brackets-universal",
+ "rank": 30
+ },
+ {
+ "command": "fileeditor:change-font-size",
+ "rank": 30,
+ "args": {
+ "delta": 1,
+ "isMenu": true
+ }
+ },
+ {
+ "command": "fileeditor:change-font-size",
+ "rank": 30,
+ "args": {
+ "delta": -1,
+ "isMenu": true
+ }
+ },
+ {
+ "type": "submenu",
+ "submenu": {
+ "id": "jp-mainmenu-settings-codemirror-theme",
+ "label": "Text Editor Theme",
+ "items": []
+ },
+ "rank": 31
+ },
+ {
+ "type": "separator",
+ "rank": 39
+ }
+ ]
+ }
+ ],
+ "context": [
+ {
+ "command": "fileeditor:undo",
+ "selector": ".jp-FileEditor",
+ "rank": 1
+ },
+ {
+ "command": "fileeditor:redo",
+ "selector": ".jp-FileEditor",
+ "rank": 2
+ },
+ {
+ "command": "fileeditor:cut",
+ "selector": ".jp-FileEditor",
+ "rank": 3
+ },
+ {
+ "command": "fileeditor:copy",
+ "selector": ".jp-FileEditor",
+ "rank": 4
+ },
+ {
+ "command": "fileeditor:paste",
+ "selector": ".jp-FileEditor",
+ "rank": 5
+ },
+ {
+ "command": "fileeditor:select-all",
+ "selector": ".jp-FileEditor",
+ "rank": 6
+ },
+ {
+ "command": "fileeditor:create-console",
+ "selector": ".jp-FileEditor",
+ "rank": 10
+ },
+ {
+ "command": "fileeditor:markdown-preview",
+ "selector": ".jp-FileEditor",
+ "rank": 11
+ }
+ ]
+ },
+ "jupyter.lab.toolbars": {
+ "Editor": []
+ },
+ "jupyter.lab.transform": true,
+ "properties": {
+ "editorConfig": {
+ "title": "Editor Configuration",
+ "description": "The configuration for all text editors; it will override the CodeMirror default configuration.\nIf `fontFamily`, `fontSize` or `lineHeight` are `null`,\nvalues from current theme are used.",
+ "type": "object",
+ "default": {
+ "lineNumbers": true
+ }
+ },
+ "scrollPastEnd": {
+ "title": "Scroll behavior",
+ "description": "Whether to scroll past the end of text document.",
+ "type": "boolean",
+ "default": true
+ },
+ "toolbar": {
+ "title": "Text editor toolbar items",
+ "description": "Note: To disable a toolbar item,\ncopy it to User Preferences and add the\n\"disabled\" key. Toolbar description:",
+ "items": {
+ "$ref": "#/definitions/toolbarItem"
+ },
+ "type": "array",
+ "default": []
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "definitions": {
+ "toolbarItem": {
+ "properties": {
+ "name": {
+ "title": "Unique name",
+ "type": "string"
+ },
+ "args": {
+ "title": "Command arguments",
+ "type": "object"
+ },
+ "command": {
+ "title": "Command id",
+ "type": "string",
+ "default": ""
+ },
+ "disabled": {
+ "title": "Whether the item is ignored or not",
+ "type": "boolean",
+ "default": false
+ },
+ "icon": {
+ "title": "Item icon id",
+ "description": "If defined, it will override the command icon",
+ "type": "string"
+ },
+ "label": {
+ "title": "Item label",
+ "description": "If defined, it will override the command label",
+ "type": "string"
+ },
+ "caption": {
+ "title": "Item caption",
+ "description": "If defined, it will override the command caption",
+ "type": "string"
+ },
+ "type": {
+ "title": "Item type",
+ "type": "string",
+ "enum": ["command", "spacer"]
+ },
+ "rank": {
+ "title": "Item rank",
+ "type": "number",
+ "minimum": 0,
+ "default": 50
+ }
+ },
+ "required": ["name"],
+ "additionalProperties": false,
+ "type": "object"
+ }
+ }
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/help-extension/about.json b/share/jupyter/lab/schemas/@jupyterlab/help-extension/about.json
new file mode 100644
index 0000000..a7bd397
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/help-extension/about.json
@@ -0,0 +1,24 @@
+{
+ "jupyter.lab.menus": {
+ "main": [
+ {
+ "id": "jp-mainmenu-help",
+ "items": [
+ {
+ "command": "help:about",
+ "rank": 0
+ },
+ {
+ "type": "separator",
+ "rank": 0
+ }
+ ]
+ }
+ ]
+ },
+ "title": "Help",
+ "description": "Help settings.",
+ "properties": {},
+ "additionalProperties": false,
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/help-extension/jupyter-forum.json b/share/jupyter/lab/schemas/@jupyterlab/help-extension/jupyter-forum.json
new file mode 100644
index 0000000..69a44d1
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/help-extension/jupyter-forum.json
@@ -0,0 +1,26 @@
+{
+ "jupyter.lab.menus": {
+ "main": [
+ {
+ "id": "jp-mainmenu-help",
+ "items": [
+ {
+ "type": "separator",
+ "rank": 2
+ },
+ {
+ "command": "help:jupyter-forum",
+ "rank": 2
+ },
+ {
+ "type": "separator",
+ "rank": 2
+ }
+ ]
+ }
+ ]
+ },
+ "properties": {},
+ "additionalProperties": false,
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/help-extension/launch-classic.json b/share/jupyter/lab/schemas/@jupyterlab/help-extension/launch-classic.json
new file mode 100644
index 0000000..5765281
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/help-extension/launch-classic.json
@@ -0,0 +1,22 @@
+{
+ "jupyter.lab.menus": {
+ "main": [
+ {
+ "id": "jp-mainmenu-help",
+ "items": [
+ {
+ "type": "separator",
+ "rank": 1
+ },
+ {
+ "type": "separator",
+ "rank": 1
+ }
+ ]
+ }
+ ]
+ },
+ "properties": {},
+ "additionalProperties": false,
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/help-extension/package.json.orig b/share/jupyter/lab/schemas/@jupyterlab/help-extension/package.json.orig
new file mode 100644
index 0000000..8ba8cbb
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/help-extension/package.json.orig
@@ -0,0 +1,62 @@
+{
+ "name": "@jupyterlab/help-extension",
+ "version": "4.5.1",
+ "description": "JupyterLab - Help Extension",
+ "homepage": "https://github.com/jupyterlab/jupyterlab",
+ "bugs": {
+ "url": "https://github.com/jupyterlab/jupyterlab/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jupyterlab/jupyterlab.git"
+ },
+ "license": "BSD-3-Clause",
+ "author": "Project Jupyter",
+ "sideEffects": [
+ "style/*.css",
+ "style/index.js"
+ ],
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts",
+ "style": "style/index.css",
+ "directories": {
+ "lib": "lib/"
+ },
+ "files": [
+ "lib/*.d.ts",
+ "lib/*.js.map",
+ "lib/*.js",
+ "schema/*.json",
+ "style/*.css",
+ "style/index.js",
+ "src/**/*.{ts,tsx}"
+ ],
+ "scripts": {
+ "build": "tsc -b",
+ "clean": "rimraf lib && rimraf tsconfig.tsbuildinfo",
+ "watch": "tsc -b --watch"
+ },
+ "dependencies": {
+ "@jupyterlab/application": "^4.5.1",
+ "@jupyterlab/apputils": "^4.6.1",
+ "@jupyterlab/coreutils": "^6.5.1",
+ "@jupyterlab/mainmenu": "^4.5.1",
+ "@jupyterlab/services": "^7.5.1",
+ "@jupyterlab/translation": "^4.5.1",
+ "@jupyterlab/ui-components": "^4.5.1",
+ "@lumino/widgets": "^2.7.2",
+ "react": "^18.2.0"
+ },
+ "devDependencies": {
+ "rimraf": "~5.0.5",
+ "typescript": "~5.5.4"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "jupyterlab": {
+ "extension": true,
+ "schemaDir": "schema"
+ },
+ "styleModule": "style/index.js"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/htmlviewer-extension/package.json.orig b/share/jupyter/lab/schemas/@jupyterlab/htmlviewer-extension/package.json.orig
new file mode 100644
index 0000000..139ed35
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/htmlviewer-extension/package.json.orig
@@ -0,0 +1,59 @@
+{
+ "name": "@jupyterlab/htmlviewer-extension",
+ "version": "4.5.1",
+ "description": "JupyterLab extension to render HTML files",
+ "keywords": [
+ "jupyter",
+ "jupyterlab"
+ ],
+ "homepage": "https://github.com/jupyterlab/jupyterlab",
+ "bugs": {
+ "url": "https://github.com/jupyterlab/jupyterlab"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jupyterlab/jupyterlab.git"
+ },
+ "license": "BSD-3-Clause",
+ "author": "Project Jupyter Contributors",
+ "sideEffects": [
+ "style/**/*"
+ ],
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts",
+ "style": "style/index.css",
+ "files": [
+ "lib/**/*.{d.ts,eot,gif,html,jpg,js,js.map,json,png,svg,woff2,ttf}",
+ "schema/*.json",
+ "style/**/*.{css,eot,gif,html,jpg,json,png,svg,woff2,ttf}",
+ "style/index.js",
+ "src/**/*.{ts,tsx}"
+ ],
+ "scripts": {
+ "build": "tsc -b",
+ "clean": "rimraf lib && rimraf tsconfig.tsbuildinfo",
+ "watch": "tsc -w"
+ },
+ "dependencies": {
+ "@jupyterlab/application": "^4.5.1",
+ "@jupyterlab/apputils": "^4.6.1",
+ "@jupyterlab/docregistry": "^4.5.1",
+ "@jupyterlab/htmlviewer": "^4.5.1",
+ "@jupyterlab/observables": "^5.5.1",
+ "@jupyterlab/settingregistry": "^4.5.1",
+ "@jupyterlab/translation": "^4.5.1",
+ "@jupyterlab/ui-components": "^4.5.1"
+ },
+ "devDependencies": {
+ "rimraf": "~5.0.5",
+ "typescript": "~5.5.4"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "jupyterlab": {
+ "extension": true,
+ "schemaDir": "schema"
+ },
+ "styleModule": "style/index.js"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/htmlviewer-extension/plugin.json b/share/jupyter/lab/schemas/@jupyterlab/htmlviewer-extension/plugin.json
new file mode 100644
index 0000000..da61797
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/htmlviewer-extension/plugin.json
@@ -0,0 +1,85 @@
+{
+ "title": "HTML Viewer",
+ "description": "HTML Viewer settings.",
+ "jupyter.lab.setting-icon": "ui-components:html5",
+ "jupyter.lab.setting-icon-label": "HTML Viewer",
+ "jupyter.lab.toolbars": {
+ "HTML Viewer": [
+ { "name": "refresh", "rank": 10 },
+ { "name": "trust", "rank": 20 }
+ ]
+ },
+ "jupyter.lab.transform": true,
+ "properties": {
+ "toolbar": {
+ "title": "HTML viewer toolbar items",
+ "description": "Note: To disable a toolbar item,\ncopy it to User Preferences and add the\n\"disabled\" key. The following example will disable the refresh item:\n{\n \"toolbar\": [\n {\n \"name\": \"refresh\",\n \"disabled\": true\n }\n ]\n}\n\nToolbar description:",
+ "items": {
+ "$ref": "#/definitions/toolbarItem"
+ },
+ "type": "array",
+ "default": []
+ },
+ "trustByDefault": {
+ "type": "boolean",
+ "title": "Trust HTML by default",
+ "description": "Whether to trust HTML files upon opening",
+ "default": false
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "definitions": {
+ "toolbarItem": {
+ "properties": {
+ "name": {
+ "title": "Unique name",
+ "type": "string"
+ },
+ "args": {
+ "title": "Command arguments",
+ "type": "object"
+ },
+ "command": {
+ "title": "Command id",
+ "type": "string",
+ "default": ""
+ },
+ "disabled": {
+ "title": "Whether the item is ignored or not",
+ "type": "boolean",
+ "default": false
+ },
+ "icon": {
+ "title": "Item icon id",
+ "description": "If defined, it will override the command icon",
+ "type": "string"
+ },
+ "label": {
+ "title": "Item label",
+ "description": "If defined, it will override the command label",
+ "type": "string"
+ },
+ "caption": {
+ "title": "Item caption",
+ "description": "If defined, it will override the command caption",
+ "type": "string"
+ },
+ "type": {
+ "title": "Item type",
+ "type": "string",
+ "enum": ["command", "spacer"]
+ },
+ "rank": {
+ "title": "Item rank",
+ "type": "number",
+ "minimum": 0,
+ "default": 50
+ }
+ },
+ "required": ["name"],
+ "additionalProperties": false,
+ "type": "object"
+ }
+ }
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/hub-extension/menu.json b/share/jupyter/lab/schemas/@jupyterlab/hub-extension/menu.json
new file mode 100644
index 0000000..4e4620e
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/hub-extension/menu.json
@@ -0,0 +1,32 @@
+{
+ "jupyter.lab.menus": {
+ "main": [
+ {
+ "id": "jp-mainmenu-file",
+ "items": [
+ {
+ "type": "separator",
+ "rank": 100
+ },
+ {
+ "command": "hub:control-panel",
+ "rank": 100
+ },
+ {
+ "command": "hub:logout",
+ "rank": 100
+ },
+ {
+ "type": "separator",
+ "rank": 100
+ }
+ ]
+ }
+ ]
+ },
+ "title": "JupyterHub",
+ "description": "JupyterHub settings.",
+ "properties": {},
+ "additionalProperties": false,
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/hub-extension/package.json.orig b/share/jupyter/lab/schemas/@jupyterlab/hub-extension/package.json.orig
new file mode 100644
index 0000000..f9a25eb
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/hub-extension/package.json.orig
@@ -0,0 +1,62 @@
+{
+ "name": "@jupyterlab/hub-extension",
+ "version": "4.5.1",
+ "description": "JupyterLab integration for JupyterHub",
+ "homepage": "https://github.com/jupyterlab/jupyterlab",
+ "bugs": {
+ "url": "https://github.com/jupyterlab/jupyterlab/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jupyterlab/jupyterlab.git"
+ },
+ "license": "BSD-3-Clause",
+ "author": "Project Jupyter",
+ "sideEffects": [
+ "style/**/*"
+ ],
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts",
+ "style": "style/index.css",
+ "directories": {
+ "lib": "lib/"
+ },
+ "files": [
+ "lib/**/*.{d.ts,eot,gif,html,jpg,js,js.map,json,png,svg,woff2,ttf}",
+ "schema/*.json",
+ "style/**/*.{css,eot,gif,html,jpg,json,png,svg,woff2,ttf}",
+ "style/index.js",
+ "src/**/*.{ts,tsx}"
+ ],
+ "scripts": {
+ "build": "tsc",
+ "build:test": "tsc --build tsconfig.test.json",
+ "clean": "rimraf lib && rimraf tsconfig.tsbuildinfo",
+ "test": "jest",
+ "test:cov": "jest --collect-coverage",
+ "test:debug": "node --inspect-brk ../../node_modules/.bin/jest --runInBand",
+ "test:debug:watch": "node --inspect-brk ../../node_modules/.bin/jest --runInBand --watch",
+ "watch": "tsc -w --listEmittedFiles"
+ },
+ "dependencies": {
+ "@jupyterlab/application": "^4.5.1",
+ "@jupyterlab/apputils": "^4.6.1",
+ "@jupyterlab/coreutils": "^6.5.1",
+ "@jupyterlab/services": "^7.5.1",
+ "@jupyterlab/translation": "^4.5.1"
+ },
+ "devDependencies": {
+ "@types/jest": "^29.2.0",
+ "jest": "^29.2.0",
+ "rimraf": "~5.0.5",
+ "typescript": "~5.5.4"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "jupyterlab": {
+ "extension": true,
+ "schemaDir": "schema"
+ },
+ "styleModule": "style/index.js"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/imageviewer-extension/package.json.orig b/share/jupyter/lab/schemas/@jupyterlab/imageviewer-extension/package.json.orig
new file mode 100644
index 0000000..2cb4aad
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/imageviewer-extension/package.json.orig
@@ -0,0 +1,58 @@
+{
+ "name": "@jupyterlab/imageviewer-extension",
+ "version": "4.5.1",
+ "description": "JupyterLab - Image Widget Extension",
+ "homepage": "https://github.com/jupyterlab/jupyterlab",
+ "bugs": {
+ "url": "https://github.com/jupyterlab/jupyterlab/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jupyterlab/jupyterlab.git"
+ },
+ "license": "BSD-3-Clause",
+ "author": "Project Jupyter",
+ "sideEffects": [
+ "style/**/*.css",
+ "style/index.js"
+ ],
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts",
+ "style": "style/index.css",
+ "directories": {
+ "lib": "lib/"
+ },
+ "files": [
+ "lib/*.d.ts",
+ "lib/*.js.map",
+ "lib/*.js",
+ "schema/*.json",
+ "style/**/*.css",
+ "style/index.js",
+ "src/**/*.{ts,tsx}"
+ ],
+ "scripts": {
+ "build": "tsc -b",
+ "clean": "rimraf lib && rimraf tsconfig.tsbuildinfo",
+ "watch": "tsc -b --watch"
+ },
+ "dependencies": {
+ "@jupyterlab/application": "^4.5.1",
+ "@jupyterlab/apputils": "^4.6.1",
+ "@jupyterlab/docregistry": "^4.5.1",
+ "@jupyterlab/imageviewer": "^4.5.1",
+ "@jupyterlab/translation": "^4.5.1"
+ },
+ "devDependencies": {
+ "rimraf": "~5.0.5",
+ "typescript": "~5.5.4"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "jupyterlab": {
+ "extension": true,
+ "schemaDir": "schema"
+ },
+ "styleModule": "style/index.js"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/imageviewer-extension/plugin.json b/share/jupyter/lab/schemas/@jupyterlab/imageviewer-extension/plugin.json
new file mode 100644
index 0000000..bb4da91
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/imageviewer-extension/plugin.json
@@ -0,0 +1,49 @@
+{
+ "title": "Image Viewer",
+ "description": "Image viewer settings.",
+ "jupyter.lab.shortcuts": [
+ {
+ "command": "imageviewer:flip-horizontal",
+ "keys": ["H"],
+ "selector": ".jp-ImageViewer"
+ },
+ {
+ "command": "imageviewer:flip-vertical",
+ "keys": ["V"],
+ "selector": ".jp-ImageViewer"
+ },
+ {
+ "command": "imageviewer:invert-colors",
+ "keys": ["I"],
+ "selector": ".jp-ImageViewer"
+ },
+ {
+ "command": "imageviewer:reset-image",
+ "keys": ["0"],
+ "selector": ".jp-ImageViewer"
+ },
+ {
+ "command": "imageviewer:rotate-clockwise",
+ "keys": ["]"],
+ "selector": ".jp-ImageViewer"
+ },
+ {
+ "command": "imageviewer:rotate-counterclockwise",
+ "keys": ["["],
+ "selector": ".jp-ImageViewer"
+ },
+ {
+ "command": "imageviewer:zoom-in",
+ "keys": ["="],
+ "selector": ".jp-ImageViewer"
+ },
+ {
+ "command": "imageviewer:zoom-out",
+ "keys": ["-"],
+ "selector": ".jp-ImageViewer"
+ }
+ ],
+ "properties": {},
+ "additionalProperties": false,
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/inspector-extension/consoles.json b/share/jupyter/lab/schemas/@jupyterlab/inspector-extension/consoles.json
new file mode 100644
index 0000000..006fbd5
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/inspector-extension/consoles.json
@@ -0,0 +1,16 @@
+{
+ "title": "Inspector Notebook",
+ "description": "Inspector Notebook settings.",
+ "jupyter.lab.menus": {
+ "context": [
+ {
+ "command": "inspector:open",
+ "selector": ".jp-CodeConsole-promptCell",
+ "rank": 5
+ }
+ ]
+ },
+ "properties": {},
+ "additionalProperties": false,
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/inspector-extension/inspector.json b/share/jupyter/lab/schemas/@jupyterlab/inspector-extension/inspector.json
new file mode 100644
index 0000000..f79a60d
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/inspector-extension/inspector.json
@@ -0,0 +1,40 @@
+{
+ "title": "Inspector",
+ "description": "Inspector settings.",
+ "jupyter.lab.menus": {
+ "main": [
+ {
+ "id": "jp-mainmenu-help",
+ "items": [
+ {
+ "type": "separator",
+ "rank": 0.1
+ },
+ {
+ "command": "inspector:open",
+ "rank": 0.1
+ },
+ {
+ "type": "separator",
+ "rank": 0.1
+ }
+ ]
+ }
+ ]
+ },
+ "jupyter.lab.shortcuts": [
+ {
+ "command": "inspector:open",
+ "keys": ["Accel I"],
+ "selector": "body"
+ },
+ {
+ "command": "inspector:close",
+ "keys": ["Accel I"],
+ "selector": "body[data-jp-inspector='open']"
+ }
+ ],
+ "properties": {},
+ "additionalProperties": false,
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/inspector-extension/notebooks.json b/share/jupyter/lab/schemas/@jupyterlab/inspector-extension/notebooks.json
new file mode 100644
index 0000000..75b3747
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/inspector-extension/notebooks.json
@@ -0,0 +1,16 @@
+{
+ "title": "Inspector Notebook",
+ "description": "Inspector Notebook settings.",
+ "jupyter.lab.menus": {
+ "context": [
+ {
+ "command": "inspector:open",
+ "selector": ".jp-Notebook",
+ "rank": 50
+ }
+ ]
+ },
+ "properties": {},
+ "additionalProperties": false,
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/inspector-extension/package.json.orig b/share/jupyter/lab/schemas/@jupyterlab/inspector-extension/package.json.orig
new file mode 100644
index 0000000..6903c16
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/inspector-extension/package.json.orig
@@ -0,0 +1,62 @@
+{
+ "name": "@jupyterlab/inspector-extension",
+ "version": "4.5.1",
+ "description": "JupyterLab - Code Inspector Extension",
+ "homepage": "https://github.com/jupyterlab/jupyterlab",
+ "bugs": {
+ "url": "https://github.com/jupyterlab/jupyterlab/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jupyterlab/jupyterlab.git"
+ },
+ "license": "BSD-3-Clause",
+ "author": "Project Jupyter",
+ "sideEffects": [
+ "style/**/*.css",
+ "style/index.js"
+ ],
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts",
+ "style": "style/index.css",
+ "directories": {
+ "lib": "lib/"
+ },
+ "files": [
+ "lib/*.d.ts",
+ "lib/*.js.map",
+ "lib/*.js",
+ "schema/*.json",
+ "style/**/*.css",
+ "style/index.js",
+ "src/**/*.{ts,tsx}"
+ ],
+ "scripts": {
+ "build": "tsc -b",
+ "clean": "rimraf lib && rimraf tsconfig.tsbuildinfo",
+ "watch": "tsc -b --watch"
+ },
+ "dependencies": {
+ "@jupyterlab/application": "^4.5.1",
+ "@jupyterlab/apputils": "^4.6.1",
+ "@jupyterlab/console": "^4.5.1",
+ "@jupyterlab/inspector": "^4.5.1",
+ "@jupyterlab/launcher": "^4.5.1",
+ "@jupyterlab/notebook": "^4.5.1",
+ "@jupyterlab/translation": "^4.5.1",
+ "@jupyterlab/ui-components": "^4.5.1",
+ "@lumino/widgets": "^2.7.2"
+ },
+ "devDependencies": {
+ "rimraf": "~5.0.5",
+ "typescript": "~5.5.4"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "jupyterlab": {
+ "extension": true,
+ "schemaDir": "schema"
+ },
+ "styleModule": "style/index.js"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/launcher-extension/package.json.orig b/share/jupyter/lab/schemas/@jupyterlab/launcher-extension/package.json.orig
new file mode 100644
index 0000000..a11c30b
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/launcher-extension/package.json.orig
@@ -0,0 +1,62 @@
+{
+ "name": "@jupyterlab/launcher-extension",
+ "version": "4.5.1",
+ "description": "JupyterLab - Launcher Page Extension",
+ "homepage": "https://github.com/jupyterlab/jupyterlab",
+ "bugs": {
+ "url": "https://github.com/jupyterlab/jupyterlab/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jupyterlab/jupyterlab.git"
+ },
+ "license": "BSD-3-Clause",
+ "author": "Project Jupyter",
+ "sideEffects": [
+ "style/*.css",
+ "style/index.js"
+ ],
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts",
+ "style": "style/index.css",
+ "directories": {
+ "lib": "lib/"
+ },
+ "files": [
+ "lib/*.d.ts",
+ "lib/*.js.map",
+ "lib/*.js",
+ "schema/*.json",
+ "style/*.css",
+ "style/index.js",
+ "src/**/*.{ts,tsx}"
+ ],
+ "scripts": {
+ "build": "tsc -b",
+ "clean": "rimraf lib && rimraf tsconfig.tsbuildinfo",
+ "watch": "tsc -b --watch"
+ },
+ "dependencies": {
+ "@jupyterlab/application": "^4.5.1",
+ "@jupyterlab/apputils": "^4.6.1",
+ "@jupyterlab/filebrowser": "^4.5.1",
+ "@jupyterlab/launcher": "^4.5.1",
+ "@jupyterlab/translation": "^4.5.1",
+ "@jupyterlab/ui-components": "^4.5.1",
+ "@lumino/algorithm": "^2.0.4",
+ "@lumino/coreutils": "^2.2.2",
+ "@lumino/widgets": "^2.7.2"
+ },
+ "devDependencies": {
+ "rimraf": "~5.0.5",
+ "typescript": "~5.5.4"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "jupyterlab": {
+ "extension": true,
+ "schemaDir": "schema"
+ },
+ "styleModule": "style/index.js"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/launcher-extension/plugin.json b/share/jupyter/lab/schemas/@jupyterlab/launcher-extension/plugin.json
new file mode 100644
index 0000000..748cdb3
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/launcher-extension/plugin.json
@@ -0,0 +1,36 @@
+{
+ "title": "Launcher",
+ "description": "Launcher settings.",
+ "jupyter.lab.menus": {
+ "main": [
+ {
+ "id": "jp-mainmenu-file",
+ "items": [
+ {
+ "command": "launcher:create",
+ "rank": 0.99
+ }
+ ]
+ }
+ ]
+ },
+ "jupyter.lab.shortcuts": [
+ {
+ "command": "launcher:create",
+ "keys": ["Accel Shift L"],
+ "selector": "body"
+ }
+ ],
+ "jupyter.lab.toolbars": {
+ "FileBrowser": [
+ {
+ "name": "new-launcher",
+ "command": "launcher:create",
+ "rank": 1
+ }
+ ]
+ },
+ "properties": {},
+ "additionalProperties": false,
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/logconsole-extension/package.json.orig b/share/jupyter/lab/schemas/@jupyterlab/logconsole-extension/package.json.orig
new file mode 100644
index 0000000..c240272
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/logconsole-extension/package.json.orig
@@ -0,0 +1,64 @@
+{
+ "name": "@jupyterlab/logconsole-extension",
+ "version": "4.5.1",
+ "description": "JupyterLab - Log Console Extension",
+ "homepage": "https://github.com/jupyterlab/jupyterlab",
+ "bugs": {
+ "url": "https://github.com/jupyterlab/jupyterlab/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jupyterlab/jupyterlab.git"
+ },
+ "license": "BSD-3-Clause",
+ "author": "Project Jupyter",
+ "sideEffects": [
+ "style/**/*"
+ ],
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts",
+ "style": "style/index.css",
+ "directories": {
+ "lib": "lib/"
+ },
+ "files": [
+ "lib/**/*.{d.ts,eot,gif,html,jpg,js,js.map,json,png,svg,woff2,ttf}",
+ "style/**/*.{css,eot,gif,html,jpg,json,png,svg,woff2,ttf}",
+ "schema/*.json",
+ "style/index.js",
+ "src/**/*.{ts,tsx}"
+ ],
+ "scripts": {
+ "build": "tsc -b",
+ "clean": "rimraf lib && rimraf tsconfig.tsbuildinfo",
+ "watch": "tsc -w --listEmittedFiles"
+ },
+ "dependencies": {
+ "@jupyterlab/application": "^4.5.1",
+ "@jupyterlab/apputils": "^4.6.1",
+ "@jupyterlab/coreutils": "^6.5.1",
+ "@jupyterlab/docregistry": "^4.5.1",
+ "@jupyterlab/logconsole": "^4.5.1",
+ "@jupyterlab/rendermime": "^4.5.1",
+ "@jupyterlab/settingregistry": "^4.5.1",
+ "@jupyterlab/statusbar": "^4.5.1",
+ "@jupyterlab/translation": "^4.5.1",
+ "@jupyterlab/ui-components": "^4.5.1",
+ "@lumino/coreutils": "^2.2.2",
+ "@lumino/signaling": "^2.1.5",
+ "@lumino/widgets": "^2.7.2",
+ "react": "^18.2.0"
+ },
+ "devDependencies": {
+ "rimraf": "~5.0.5",
+ "typescript": "~5.5.4"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "jupyterlab": {
+ "extension": true,
+ "schemaDir": "schema"
+ },
+ "styleModule": "style/index.js"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/logconsole-extension/plugin.json b/share/jupyter/lab/schemas/@jupyterlab/logconsole-extension/plugin.json
new file mode 100644
index 0000000..9504d50
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/logconsole-extension/plugin.json
@@ -0,0 +1,133 @@
+{
+ "jupyter.lab.setting-icon": "ui-components:list",
+ "jupyter.lab.setting-icon-label": "Log Console",
+ "jupyter.lab.menus": {
+ "main": [
+ {
+ "id": "jp-mainmenu-view",
+ "items": [
+ {
+ "type": "separator",
+ "rank": 9.9
+ },
+ {
+ "command": "logconsole:open",
+ "rank": 9.95
+ },
+ {
+ "type": "separator",
+ "rank": 9.99
+ }
+ ]
+ }
+ ],
+ "context": [
+ { "command": "logconsole:open", "selector": ".jp-Notebook", "rank": 60 }
+ ]
+ },
+ "title": "Log Console",
+ "description": "Log Console settings.",
+ "jupyter.lab.toolbars": {
+ "LogConsole": [
+ {
+ "name": "add-checkpoint",
+ "command": "logconsole:add-checkpoint",
+ "rank": 10
+ },
+ { "name": "clear", "command": "logconsole:clear", "rank": 20 },
+ { "name": "set-level", "command": "logconsole:set-level", "rank": 30 }
+ ]
+ },
+ "jupyter.lab.transform": true,
+ "properties": {
+ "maxLogEntries": {
+ "type": "number",
+ "title": "Log entry count limit",
+ "description": "Maximum number of log entries to store in memory",
+ "default": 1000
+ },
+ "flash": {
+ "type": "boolean",
+ "title": "Status Bar Item flash",
+ "description": "Whether to flash on new log message or not",
+ "default": true
+ },
+ "defaultLogLevel": {
+ "type": "string",
+ "title": "Default Log Level",
+ "description": "Default log level for loggers",
+ "oneOf": [
+ { "const": "critical", "title": "Critical" },
+ { "const": "error", "title": "Error" },
+ { "const": "warning", "title": "Warning" },
+ { "const": "info", "title": "Info" },
+ { "const": "debug", "title": "Debug" }
+ ],
+ "default": "warning"
+ },
+ "toolbar": {
+ "title": "Log console toolbar items",
+ "description": "Note: To disable a toolbar item,\ncopy it to User Preferences and add the\n\"disabled\" key. The following example will disable the clear button:\n{\n \"toolbar\": [\n {\n \"name\": \"clear\",\n \"disabled\": true\n }\n ]\n}\n\nToolbar description:",
+ "items": {
+ "$ref": "#/definitions/toolbarItem"
+ },
+ "type": "array",
+ "default": []
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "definitions": {
+ "toolbarItem": {
+ "properties": {
+ "name": {
+ "title": "Unique name",
+ "type": "string"
+ },
+ "args": {
+ "title": "Command arguments",
+ "type": "object"
+ },
+ "command": {
+ "title": "Command id",
+ "type": "string",
+ "default": ""
+ },
+ "disabled": {
+ "title": "Whether the item is ignored or not",
+ "type": "boolean",
+ "default": false
+ },
+ "icon": {
+ "title": "Item icon id",
+ "description": "If defined, it will override the command icon",
+ "type": "string"
+ },
+ "label": {
+ "title": "Item label",
+ "description": "If defined, it will override the command label",
+ "type": "string"
+ },
+ "caption": {
+ "title": "Item caption",
+ "description": "If defined, it will override the command caption",
+ "type": "string"
+ },
+ "type": {
+ "title": "Item type",
+ "type": "string",
+ "enum": ["command", "spacer"]
+ },
+ "rank": {
+ "title": "Item rank",
+ "type": "number",
+ "minimum": 0,
+ "default": 50
+ }
+ },
+ "required": ["name"],
+ "additionalProperties": false,
+ "type": "object"
+ }
+ }
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/lsp-extension/package.json.orig b/share/jupyter/lab/schemas/@jupyterlab/lsp-extension/package.json.orig
new file mode 100644
index 0000000..331def5
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/lsp-extension/package.json.orig
@@ -0,0 +1,64 @@
+{
+ "name": "@jupyterlab/lsp-extension",
+ "version": "4.5.1",
+ "description": "",
+ "homepage": "https://github.com/jupyterlab/jupyterlab",
+ "bugs": {
+ "url": "https://github.com/jupyterlab/jupyterlab/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jupyterlab/jupyterlab.git"
+ },
+ "license": "BSD-3-Clause",
+ "author": "Project Jupyter",
+ "sideEffects": [
+ "style/*.css",
+ "style/index.js"
+ ],
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts",
+ "style": "style/index.css",
+ "directories": {
+ "lib": "lib/"
+ },
+ "files": [
+ "lib/**/*.{d.ts,eot,gif,html,jpg,js,js.map,json,png,svg,woff2,ttf}",
+ "schema/*.json",
+ "style/**/*.{css,eot,gif,html,jpg,json,png,svg,woff2,ttf}",
+ "style/index.js",
+ "src/**/*.{ts,tsx}"
+ ],
+ "scripts": {
+ "build": "tsc -b",
+ "build:all": "npm run build",
+ "clean": "rimraf lib && rimraf tsconfig.tsbuildinfo",
+ "watch": "tsc -b --watch"
+ },
+ "dependencies": {
+ "@jupyterlab/application": "^4.5.1",
+ "@jupyterlab/apputils": "^4.6.1",
+ "@jupyterlab/lsp": "^4.5.1",
+ "@jupyterlab/running": "^4.5.1",
+ "@jupyterlab/settingregistry": "^4.5.1",
+ "@jupyterlab/translation": "^4.5.1",
+ "@jupyterlab/ui-components": "^4.5.1",
+ "@lumino/coreutils": "^2.2.2",
+ "@lumino/polling": "^2.1.5",
+ "@lumino/signaling": "^2.1.5",
+ "@rjsf/utils": "^5.13.4",
+ "react": "^18.2.0"
+ },
+ "devDependencies": {
+ "rimraf": "~5.0.5",
+ "typescript": "~5.5.4"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "jupyterlab": {
+ "extension": true,
+ "schemaDir": "schema"
+ },
+ "styleModule": "style/index.js"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/lsp-extension/plugin.json b/share/jupyter/lab/schemas/@jupyterlab/lsp-extension/plugin.json
new file mode 100644
index 0000000..b6c2282
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/lsp-extension/plugin.json
@@ -0,0 +1,69 @@
+{
+ "jupyter.lab.setting-icon": "ui-components:code-check",
+ "jupyter.lab.setting-icon-label": "Language integration",
+ "jupyter.lab.transform": true,
+ "title": "Language Servers (Experimental)",
+ "description": "Language Server Protocol settings.",
+ "type": "object",
+ "definitions": {
+ "languageServer": {
+ "type": "object",
+ "default": {
+ "configuration": {},
+ "rank": 50
+ },
+ "properties": {
+ "configuration": {
+ "title": "Language Server Configurations",
+ "description": "Configuration to be sent to language server over LSP when initialized: see the specific language server's documentation for more",
+ "type": "object",
+ "default": {},
+ "patternProperties": {
+ ".*": {
+ "type": ["number", "string", "boolean", "object", "array"]
+ }
+ },
+ "additionalProperties": true
+ },
+ "rank": {
+ "title": "Rank of the server",
+ "description": "When multiple servers match specific document/language, the server with the highest rank will be used",
+ "type": "number",
+ "default": 50,
+ "minimum": 1
+ }
+ }
+ }
+ },
+ "properties": {
+ "activate": {
+ "title": "Activate",
+ "description": "Enable or disable the language server services.",
+ "enum": ["off", "on"],
+ "default": "off"
+ },
+ "languageServers": {
+ "title": "Language Server",
+ "description": "Language-server specific configuration, keyed by implementation",
+ "type": "object",
+ "default": {},
+ "patternProperties": {
+ ".*": {
+ "$ref": "#/definitions/languageServer"
+ }
+ }
+ },
+ "setTrace": {
+ "title": "Ask servers to send trace notifications",
+ "enum": ["off", "messages", "verbose"],
+ "default": "off",
+ "description": "Whether to ask server to send logs with execution trace (for debugging). Accepted values are: \"off\", \"messages\", \"verbose\". Servers are allowed to ignore this request."
+ },
+ "logAllCommunication": {
+ "title": "Log communication",
+ "type": "boolean",
+ "default": false,
+ "description": "Enable or disable the logging feature of the language servers."
+ }
+ }
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/mainmenu-extension/package.json.orig b/share/jupyter/lab/schemas/@jupyterlab/mainmenu-extension/package.json.orig
new file mode 100644
index 0000000..e85228d
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/mainmenu-extension/package.json.orig
@@ -0,0 +1,68 @@
+{
+ "name": "@jupyterlab/mainmenu-extension",
+ "version": "4.5.1",
+ "description": "JupyterLab - Main Menu Extension",
+ "homepage": "https://github.com/jupyterlab/jupyterlab",
+ "bugs": {
+ "url": "https://github.com/jupyterlab/jupyterlab/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jupyterlab/jupyterlab.git"
+ },
+ "license": "BSD-3-Clause",
+ "author": "Project Jupyter",
+ "sideEffects": [
+ "style/**/*.css",
+ "style/index.js"
+ ],
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts",
+ "style": "style/index.css",
+ "directories": {
+ "lib": "lib/"
+ },
+ "files": [
+ "lib/*.d.ts",
+ "lib/*.js.map",
+ "lib/*.js",
+ "schema/*.json",
+ "style/**/*.css",
+ "style/index.js",
+ "src/**/*.{ts,tsx}"
+ ],
+ "scripts": {
+ "build": "tsc -b",
+ "clean": "rimraf lib && rimraf tsconfig.tsbuildinfo",
+ "watch": "tsc -b --watch"
+ },
+ "dependencies": {
+ "@jupyterlab/application": "^4.5.1",
+ "@jupyterlab/apputils": "^4.6.1",
+ "@jupyterlab/coreutils": "^6.5.1",
+ "@jupyterlab/docmanager": "^4.5.1",
+ "@jupyterlab/filebrowser": "^4.5.1",
+ "@jupyterlab/mainmenu": "^4.5.1",
+ "@jupyterlab/services": "^7.5.1",
+ "@jupyterlab/settingregistry": "^4.5.1",
+ "@jupyterlab/translation": "^4.5.1",
+ "@jupyterlab/ui-components": "^4.5.1",
+ "@lumino/algorithm": "^2.0.4",
+ "@lumino/coreutils": "^2.2.2",
+ "@lumino/disposable": "^2.1.5",
+ "@lumino/messaging": "^2.0.4",
+ "@lumino/widgets": "^2.7.2"
+ },
+ "devDependencies": {
+ "rimraf": "~5.0.5",
+ "typescript": "~5.5.4"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "jupyterlab": {
+ "extension": true,
+ "schemaDir": "schema"
+ },
+ "styleModule": "style/index.js"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/mainmenu-extension/plugin.json b/share/jupyter/lab/schemas/@jupyterlab/mainmenu-extension/plugin.json
new file mode 100644
index 0000000..efebf49
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/mainmenu-extension/plugin.json
@@ -0,0 +1,439 @@
+{
+ "title": "Main Menu",
+ "description": "Main JupyterLab menu settings.",
+ "jupyter.lab.menus": {
+ "main": [
+ {
+ "id": "jp-mainmenu-file",
+ "label": "File",
+ "items": [
+ {
+ "type": "submenu",
+ "submenu": {
+ "id": "jp-mainmenu-file-new",
+ "label": "New",
+ "items": []
+ },
+ "rank": 0
+ },
+ {
+ "type": "separator",
+ "rank": 2
+ },
+ {
+ "command": "filemenu:create-console",
+ "rank": 2.1
+ },
+ {
+ "command": "filemenu:close-and-cleanup",
+ "rank": 3.1
+ },
+ {
+ "type": "separator",
+ "rank": 99
+ },
+ {
+ "command": "filemenu:logout",
+ "rank": 99
+ },
+ {
+ "command": "filemenu:shutdown",
+ "rank": 99
+ }
+ ],
+ "rank": 1
+ },
+ {
+ "id": "jp-mainmenu-edit",
+ "label": "Edit",
+ "items": [
+ {
+ "command": "editmenu:undo",
+ "rank": 0
+ },
+ {
+ "command": "editmenu:redo",
+ "rank": 0
+ },
+ {
+ "type": "separator",
+ "rank": 10
+ },
+ {
+ "command": "editmenu:clear-current",
+ "rank": 10
+ },
+ {
+ "command": "editmenu:clear-all",
+ "rank": 10
+ },
+ {
+ "type": "separator",
+ "rank": 200
+ },
+ {
+ "command": "editmenu:go-to-line",
+ "rank": 200
+ }
+ ],
+ "rank": 2
+ },
+ {
+ "id": "jp-mainmenu-view",
+ "label": "View",
+ "items": [
+ {
+ "type": "submenu",
+ "rank": 1,
+ "submenu": {
+ "id": "jp-mainmenu-view-appearance",
+ "label": "Appearance",
+ "items": [
+ {
+ "command": "viewmenu:show-minimap",
+ "rank": 50
+ },
+ {
+ "type": "separator",
+ "rank": 50
+ }
+ ]
+ }
+ },
+ {
+ "type": "separator",
+ "rank": 10
+ },
+ {
+ "command": "viewmenu:line-numbering",
+ "rank": 10
+ },
+ {
+ "command": "viewmenu:match-brackets",
+ "rank": 10
+ },
+ {
+ "command": "viewmenu:word-wrap",
+ "rank": 10
+ }
+ ],
+ "rank": 3
+ },
+ {
+ "id": "jp-mainmenu-run",
+ "label": "Run",
+ "items": [
+ {
+ "command": "runmenu:run",
+ "rank": 0
+ },
+ {
+ "type": "separator"
+ },
+ {
+ "command": "runmenu:run-all",
+ "rank": 999
+ },
+ {
+ "command": "runmenu:restart-and-run-all",
+ "rank": 999
+ }
+ ],
+ "rank": 4
+ },
+ {
+ "id": "jp-mainmenu-kernel",
+ "label": "Kernel",
+ "items": [
+ {
+ "command": "kernelmenu:interrupt",
+ "rank": 0
+ },
+ {
+ "type": "separator",
+ "rank": 1
+ },
+ {
+ "command": "kernelmenu:restart",
+ "rank": 1
+ },
+ {
+ "command": "kernelmenu:restart-and-clear",
+ "rank": 1
+ },
+ {
+ "command": "runmenu:restart-and-run-all",
+ "rank": 1.1
+ },
+ {
+ "type": "separator",
+ "rank": 1.5
+ },
+ {
+ "command": "kernelmenu:reconnect-to-kernel",
+ "rank": 1.5
+ },
+ {
+ "type": "separator",
+ "rank": 2
+ },
+ {
+ "command": "kernelmenu:shutdown",
+ "rank": 2
+ },
+ {
+ "command": "kernelmenu:shutdownAll",
+ "rank": 2
+ },
+ {
+ "type": "separator",
+ "rank": 3
+ },
+ {
+ "command": "kernelmenu:change",
+ "rank": 3
+ }
+ ],
+ "rank": 5
+ },
+ {
+ "id": "jp-mainmenu-tabs",
+ "label": "Tabs",
+ "items": [
+ {
+ "command": "application:activate-next-tab",
+ "rank": 0
+ },
+ {
+ "command": "application:activate-previous-tab",
+ "rank": 0
+ },
+ {
+ "command": "application:activate-next-tab-bar",
+ "rank": 0
+ },
+ {
+ "command": "application:activate-previous-tab-bar",
+ "rank": 0
+ },
+ {
+ "command": "tabsmenu:activate-previously-used-tab",
+ "rank": 0
+ }
+ ],
+ "rank": 500
+ },
+ {
+ "id": "jp-mainmenu-settings",
+ "label": "Settings",
+ "items": [
+ {
+ "command": "settingeditor:open",
+ "rank": 1000
+ }
+ ],
+ "rank": 999
+ },
+ {
+ "id": "jp-mainmenu-help",
+ "label": "Help",
+ "items": [],
+ "rank": 1000
+ }
+ ],
+ "context": [
+ {
+ "command": "filemenu:create-console",
+ "selector": "[data-type=\"document-title\"].jp-mod-current",
+ "rank": 10
+ },
+ {
+ "command": "recentmenu:reopen-last",
+ "selector": "#jp-main-dock-panel .lm-DockPanel-tabBar .lm-TabBar-tab",
+ "rank": 6
+ }
+ ]
+ },
+ "jupyter.lab.shortcuts": [
+ {
+ "command": "editmenu:clear-all",
+ "keys": [""],
+ "selector": "[data-jp-undoer]"
+ },
+ {
+ "command": "editmenu:clear-current",
+ "keys": [""],
+ "selector": "[data-jp-undoer]"
+ },
+ {
+ "command": "editmenu:find",
+ "keys": [""],
+ "selector": "[data-jp-undoer]"
+ },
+ {
+ "command": "editmenu:find-and-replace",
+ "keys": [""],
+ "selector": "[data-jp-undoer]"
+ },
+ {
+ "command": "editmenu:redo",
+ "keys": ["Accel Shift Z"],
+ "selector": "[data-jp-undoer]"
+ },
+ {
+ "command": "editmenu:undo",
+ "keys": ["Accel Z"],
+ "selector": "[data-jp-undoer]"
+ },
+ {
+ "command": "filemenu:close-and-cleanup",
+ "keys": ["Ctrl Shift Q"],
+ "selector": ".jp-Activity"
+ },
+ {
+ "command": "kernelmenu:interrupt",
+ "keys": ["I", "I"],
+ "selector": "[data-jp-kernel-user]:not(.jp-mod-readWrite) :focus:not(:read-write)"
+ },
+ {
+ "command": "kernelmenu:restart",
+ "keys": ["0", "0"],
+ "selector": "[data-jp-kernel-user]:not(.jp-mod-readWrite) :focus:not(:read-write)"
+ },
+ {
+ "command": "kernelmenu:restart-and-clear",
+ "keys": [""],
+ "selector": "[data-jp-kernel-user]:not(.jp-mod-readWrite) :focus:not(:read-write)"
+ },
+ {
+ "command": "kernelmenu:shutdown",
+ "keys": [""],
+ "selector": "[data-jp-kernel-user]:not(.jp-mod-readWrite) :focus:not(:read-write)"
+ },
+ {
+ "command": "runmenu:restart-and-run-all",
+ "keys": [""],
+ "selector": "[data-jp-code-runner]"
+ },
+ {
+ "command": "runmenu:run",
+ "keys": ["Shift Enter"],
+ "selector": "[data-jp-code-runner]"
+ },
+ {
+ "command": "runmenu:run-all",
+ "keys": [""],
+ "selector": "[data-jp-code-runner]"
+ },
+ {
+ "command": "tabsmenu:activate-previously-used-tab",
+ "keys": ["Accel Shift '"],
+ "selector": "body"
+ },
+ {
+ "command": "recentmenu:reopen-last",
+ "keys": ["Accel Shift T"],
+ "selector": "body"
+ }
+ ],
+ "jupyter.lab.transform": true,
+ "properties": {
+ "menus": {
+ "title": "The application menu description.",
+ "description": "Note: To disable a menu or a menu item,\ncopy it to User Preferences and add the\n\"disabled\" key. The following example will disable\nthe \"Tabs\" menu and \"Restart Kernel and Run up to Selected Cell\"\nitem:\n{\n \"menus\": [\n {\n \"id\": \"jp-mainmenu-tabs\",\n \"disabled\": true\n },\n {\n \"id\": \"jp-mainmenu-kernel\",\n \"items\": [\n {\n \"command\": \"notebook:restart-and-run-to-selected\",\n \"disabled\": true\n }\n ]\n }\n ]\n}\n\nMenu description:",
+ "items": {
+ "$ref": "#/definitions/menu"
+ },
+ "type": "array",
+ "default": []
+ }
+ },
+ "additionalProperties": false,
+ "definitions": {
+ "menu": {
+ "properties": {
+ "disabled": {
+ "description": "Whether the menu is disabled or not",
+ "type": "boolean",
+ "default": false
+ },
+ "icon": {
+ "description": "Menu icon id",
+ "type": "string"
+ },
+ "id": {
+ "description": "Menu unique id",
+ "type": "string",
+ "pattern": "[a-z][a-z0-9\\-_]+"
+ },
+ "items": {
+ "description": "Menu items",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/menuItem"
+ }
+ },
+ "label": {
+ "description": "Menu label",
+ "type": "string"
+ },
+ "mnemonic": {
+ "description": "Mnemonic index for the label",
+ "type": "number",
+ "minimum": -1,
+ "default": -1
+ },
+ "rank": {
+ "description": "Menu rank",
+ "type": "number",
+ "minimum": 0
+ }
+ },
+ "required": ["id"],
+ "additionalProperties": false,
+ "type": "object"
+ },
+ "menuItem": {
+ "properties": {
+ "args": {
+ "description": "Command arguments",
+ "type": "object"
+ },
+ "command": {
+ "description": "Command id",
+ "type": "string"
+ },
+ "disabled": {
+ "description": "Whether the item is disabled or not",
+ "type": "boolean",
+ "default": false
+ },
+ "type": {
+ "description": "Item type",
+ "type": "string",
+ "enum": ["command", "submenu", "separator"],
+ "default": "command"
+ },
+ "rank": {
+ "description": "Item rank",
+ "type": "number",
+ "minimum": 0
+ },
+ "submenu": {
+ "description": "Submenu definition",
+ "oneOf": [
+ {
+ "$ref": "#/definitions/menu"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/markdownviewer-extension/package.json.orig b/share/jupyter/lab/schemas/@jupyterlab/markdownviewer-extension/package.json.orig
new file mode 100644
index 0000000..a94494b
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/markdownviewer-extension/package.json.orig
@@ -0,0 +1,61 @@
+{
+ "name": "@jupyterlab/markdownviewer-extension",
+ "version": "4.5.1",
+ "description": "JupyterLab - Markdown Renderer Extension",
+ "homepage": "https://github.com/jupyterlab/jupyterlab",
+ "bugs": {
+ "url": "https://github.com/jupyterlab/jupyterlab/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jupyterlab/jupyterlab.git"
+ },
+ "license": "BSD-3-Clause",
+ "author": "Project Jupyter",
+ "sideEffects": [
+ "style/**/*.css",
+ "style/index.js"
+ ],
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts",
+ "style": "style/index.css",
+ "directories": {
+ "lib": "lib/"
+ },
+ "files": [
+ "lib/*.d.ts",
+ "lib/*.js.map",
+ "lib/*.js",
+ "schema/*.json",
+ "style/**/*.css",
+ "style/index.js",
+ "src/**/*.{ts,tsx}"
+ ],
+ "scripts": {
+ "build": "tsc -b",
+ "clean": "rimraf lib && rimraf tsconfig.tsbuildinfo",
+ "watch": "tsc -b --watch"
+ },
+ "dependencies": {
+ "@jupyterlab/application": "^4.5.1",
+ "@jupyterlab/apputils": "^4.6.1",
+ "@jupyterlab/coreutils": "^6.5.1",
+ "@jupyterlab/markdownviewer": "^4.5.1",
+ "@jupyterlab/rendermime": "^4.5.1",
+ "@jupyterlab/settingregistry": "^4.5.1",
+ "@jupyterlab/toc": "^6.5.1",
+ "@jupyterlab/translation": "^4.5.1"
+ },
+ "devDependencies": {
+ "rimraf": "~5.0.5",
+ "typescript": "~5.5.4"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "jupyterlab": {
+ "extension": true,
+ "schemaDir": "schema"
+ },
+ "styleModule": "style/index.js"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/markdownviewer-extension/plugin.json b/share/jupyter/lab/schemas/@jupyterlab/markdownviewer-extension/plugin.json
new file mode 100644
index 0000000..2239d73
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/markdownviewer-extension/plugin.json
@@ -0,0 +1,76 @@
+{
+ "jupyter.lab.setting-icon": "ui-components:markdown",
+ "jupyter.lab.setting-icon-label": "Markdown Viewer",
+ "title": "Markdown Viewer",
+ "description": "Markdown viewer settings.",
+ "jupyter.lab.menus": {
+ "context": [
+ {
+ "command": "markdownviewer:edit",
+ "selector": ".jp-RenderedMarkdown"
+ }
+ ]
+ },
+ "definitions": {
+ "fontFamily": {
+ "type": ["string", "null"]
+ },
+ "fontSize": {
+ "type": ["integer", "null"],
+ "minimum": 1,
+ "maximum": 100
+ },
+ "lineHeight": {
+ "type": ["number", "null"]
+ },
+ "lineWidth": {
+ "type": ["number", "null"]
+ },
+ "hideFrontMatter": {
+ "type": "boolean"
+ },
+ "renderTimeout": {
+ "type": "number"
+ }
+ },
+ "properties": {
+ "fontFamily": {
+ "title": "Font Family",
+ "description": "The font family used to render markdown.\nIf `null`, value from current theme is used.",
+ "$ref": "#/definitions/fontFamily",
+ "default": null
+ },
+ "fontSize": {
+ "title": "Font Size",
+ "description": "The size in pixel of the font used to render markdown.\nIf `null`, value from current theme is used.",
+ "$ref": "#/definitions/fontSize",
+ "default": null
+ },
+ "lineHeight": {
+ "title": "Line Height",
+ "description": "The line height used to render markdown.\nIf `null`, value from current theme is used.",
+ "$ref": "#/definitions/lineHeight",
+ "default": null
+ },
+ "lineWidth": {
+ "title": "Line Width",
+ "description": "The text line width expressed in CSS ch units.\nIf `null`, lines fit the viewport width.",
+ "$ref": "#/definitions/lineWidth",
+ "default": null
+ },
+ "hideFrontMatter": {
+ "title": "Hide Front Matter",
+ "description": "Whether to hide YAML front matter.\nThe YAML front matter must be placed at the top of the document,\nstarted by a line of three dashes (---) and ended by a line of\nthree dashes (---) or three points (...).",
+ "$ref": "#/definitions/hideFrontMatter",
+ "default": true
+ },
+ "renderTimeout": {
+ "title": "Render Timeout",
+ "description": "The render timeout in milliseconds.",
+ "$ref": "#/definitions/renderTimeout",
+ "default": 1000
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/mathjax-extension/package.json.orig b/share/jupyter/lab/schemas/@jupyterlab/mathjax-extension/package.json.orig
new file mode 100644
index 0000000..c9468fd
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/mathjax-extension/package.json.orig
@@ -0,0 +1,72 @@
+{
+ "name": "@jupyterlab/mathjax-extension",
+ "version": "4.5.1",
+ "description": "A JupyterLab extension providing MathJax Typesetting",
+ "keywords": [
+ "jupyter",
+ "jupyterlab",
+ "mathjax"
+ ],
+ "homepage": "https://github.com/jupyterlab/jupyterlab",
+ "bugs": {
+ "url": "https://github.com/jupyterlab/jupyterlab/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jupyterlab/jupyterlab.git"
+ },
+ "license": "BSD-3-Clause",
+ "author": {
+ "name": "Project Jupyter",
+ "email": "jupyter@googlegroups.com"
+ },
+ "sideEffects": [
+ "style/**/*"
+ ],
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts",
+ "style": "style/index.css",
+ "directories": {
+ "lib": "lib/"
+ },
+ "files": [
+ "lib/**/*.{d.ts,eot,gif,html,jpg,js,js.map,json,png,svg,woff2,ttf}",
+ "style/**/*.{css,eot,gif,html,jpg,json,png,svg,woff2,ttf}",
+ "schema/*.json",
+ "style/index.js",
+ "src/**/*.{ts,tsx}"
+ ],
+ "scripts": {
+ "build": "tsc -b",
+ "build:test": "tsc --build tsconfig.test.json",
+ "clean": "rimraf lib && rimraf tsconfig.tsbuildinfo",
+ "eslint": "eslint . --ext .ts,.tsx --fix",
+ "test": "jest",
+ "test:cov": "jest --collect-coverage",
+ "test:debug": "node --inspect-brk ../../node_modules/.bin/jest --runInBand",
+ "test:debug:watch": "node --inspect-brk ../../node_modules/.bin/jest --runInBand --watch",
+ "watch": "tsc -b --watch"
+ },
+ "dependencies": {
+ "@jupyterlab/application": "^4.5.1",
+ "@jupyterlab/rendermime": "^4.5.1",
+ "@jupyterlab/translation": "^4.5.1",
+ "@lumino/coreutils": "^2.2.2",
+ "mathjax-full": "^3.2.2"
+ },
+ "devDependencies": {
+ "@jupyterlab/testing": "^4.5.1",
+ "@types/jest": "^29.2.0",
+ "jest": "^29.2.0",
+ "rimraf": "~5.0.5",
+ "typescript": "~5.5.4"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "jupyterlab": {
+ "extension": true,
+ "schemaDir": "schema"
+ },
+ "styleModule": "style/index.js"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/mathjax-extension/plugin.json b/share/jupyter/lab/schemas/@jupyterlab/mathjax-extension/plugin.json
new file mode 100644
index 0000000..e3218a1
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/mathjax-extension/plugin.json
@@ -0,0 +1,38 @@
+{
+ "title": "MathJax Plugin",
+ "description": "MathJax math renderer for JupyterLab",
+ "jupyter.lab.menus": {
+ "context": [
+ {
+ "type": "separator",
+ "selector": ".MathJax",
+ "rank": 12
+ },
+ {
+ "command": "mathjax:clipboard",
+ "selector": ".MathJax",
+ "rank": 13
+ },
+ {
+ "command": "mathjax:scale",
+ "selector": ".MathJax",
+ "rank": 13
+ },
+ {
+ "command": "mathjax:scale",
+ "selector": ".MathJax",
+ "rank": 13,
+ "args": {
+ "scale": 1.5
+ }
+ },
+ {
+ "type": "separator",
+ "selector": ".MathJax",
+ "rank": 13
+ }
+ ]
+ },
+ "additionalProperties": false,
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/metadataform-extension/metadataforms.json b/share/jupyter/lab/schemas/@jupyterlab/metadataform-extension/metadataforms.json
new file mode 100644
index 0000000..f4b12b1
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/metadataform-extension/metadataforms.json
@@ -0,0 +1,100 @@
+{
+ "type": "object",
+ "title": "Metadata Form",
+ "description": "Settings of the metadata form extension.",
+ "jupyter.lab.metadataforms": [],
+ "jupyter.lab.transform": true,
+ "additionalProperties": false,
+ "properties": {
+ "metadataforms": {
+ "items": {
+ "$ref": "#/definitions/metadataForm"
+ },
+ "type": "array",
+ "default": []
+ }
+ },
+ "definitions": {
+ "metadataForm": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The section ID"
+ },
+ "metadataSchema": {
+ "type": "object",
+ "items": {
+ "$ref": "#/definitions/metadataSchema"
+ }
+ },
+ "uiSchema": {
+ "type": "object"
+ },
+ "metadataOptions": {
+ "type": "object",
+ "items": {
+ "$ref": "#/definitions/metadataOptions"
+ }
+ },
+ "label": {
+ "type": "string",
+ "description": "The section label"
+ },
+ "rank": {
+ "type": "integer",
+ "description": "The rank of the section in the right panel"
+ },
+ "showModified": {
+ "type": "boolean",
+ "description": "Whether to show that values have been modified from defaults"
+ }
+ },
+ "required": ["id", "metadataSchema"]
+ },
+ "metadataSchema": {
+ "properties": {
+ "properties": {
+ "type": "object",
+ "description": "The property set up by extension",
+ "properties": {
+ "title": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "type": "object",
+ "required": ["properties"]
+ },
+ "metadataOptions": {
+ "properties": {
+ "customRenderer": {
+ "type": "string"
+ },
+ "metadataLevel": {
+ "type": "string",
+ "enum": ["cell", "notebook"],
+ "default": "cell"
+ },
+ "cellTypes": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "enum": ["code", "markdown", "raw"]
+ }
+ },
+ "writeDefault": {
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ }
+ }
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/metadataform-extension/package.json.orig b/share/jupyter/lab/schemas/@jupyterlab/metadataform-extension/package.json.orig
new file mode 100644
index 0000000..7cf91fe
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/metadataform-extension/package.json.orig
@@ -0,0 +1,62 @@
+{
+ "name": "@jupyterlab/metadataform-extension",
+ "version": "4.5.1",
+ "description": "A helper to build form for metadata",
+ "keywords": [
+ "jupyter",
+ "jupyterlab",
+ "jupyterlab-extension"
+ ],
+ "homepage": "https://github.com/jupyterlab/jupyterlab",
+ "bugs": {
+ "url": "https://github.com/jupyterlab/jupyterlab/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jupyterlab/jupyterlab.git"
+ },
+ "license": "BSD-3-Clause",
+ "author": "Project Jupyter",
+ "sideEffects": [
+ "style/**/*"
+ ],
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts",
+ "style": "style/index.css",
+ "directories": {
+ "lib": "lib/"
+ },
+ "files": [
+ "lib/**/*.{d.ts,eot,gif,html,jpg,js,js.map,json,png,svg,woff2,ttf}",
+ "schema/*.json",
+ "style/**/*.{css,eot,gif,html,jpg,json,png,svg,woff2,ttf}",
+ "style/index.js",
+ "src/**/*.{ts,tsx}"
+ ],
+ "scripts": {
+ "build": "tsc",
+ "clean": "rimraf lib && rimraf tsconfig.tsbuildinfo",
+ "watch": "tsc -w --listEmittedFiles"
+ },
+ "dependencies": {
+ "@jupyterlab/application": "^4.5.1",
+ "@jupyterlab/metadataform": "^4.5.1",
+ "@jupyterlab/notebook": "^4.5.1",
+ "@jupyterlab/settingregistry": "^4.5.1",
+ "@jupyterlab/translation": "^4.5.1",
+ "@jupyterlab/ui-components": "^4.5.1",
+ "@lumino/coreutils": "^2.2.2"
+ },
+ "devDependencies": {
+ "rimraf": "~5.0.5",
+ "typescript": "~5.5.4"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "jupyterlab": {
+ "extension": true,
+ "schemaDir": "schema"
+ },
+ "styleModule": "style/index.js"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/notebook-extension/completer.json b/share/jupyter/lab/schemas/@jupyterlab/notebook-extension/completer.json
new file mode 100644
index 0000000..7baf430
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/notebook-extension/completer.json
@@ -0,0 +1,14 @@
+{
+ "title": "Notebook Completer",
+ "description": "Notebook completer settings.",
+ "jupyter.lab.shortcuts": [
+ {
+ "command": "completer:invoke-notebook",
+ "keys": ["Tab"],
+ "selector": ".jp-Notebook.jp-mod-editMode .jp-mod-completer-enabled:not(.jp-mod-at-line-beginning)"
+ }
+ ],
+ "properties": {},
+ "additionalProperties": false,
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/notebook-extension/export.json b/share/jupyter/lab/schemas/@jupyterlab/notebook-extension/export.json
new file mode 100644
index 0000000..d0f3517
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/notebook-extension/export.json
@@ -0,0 +1,32 @@
+{
+ "jupyter.lab.menus": {
+ "main": [
+ {
+ "id": "jp-mainmenu-file",
+ "items": [
+ {
+ "type": "separator",
+ "rank": 10
+ },
+ {
+ "type": "submenu",
+ "rank": 10,
+ "submenu": {
+ "id": "jp-mainmenu-file-notebookexport",
+ "label": "Save and Export Notebook As"
+ }
+ },
+ {
+ "type": "separator",
+ "rank": 10
+ }
+ ]
+ }
+ ]
+ },
+ "title": "Notebook Export",
+ "description": "Notebook Export settings.",
+ "properties": {},
+ "additionalProperties": false,
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/notebook-extension/package.json.orig b/share/jupyter/lab/schemas/@jupyterlab/notebook-extension/package.json.orig
new file mode 100644
index 0000000..fb23dbc
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/notebook-extension/package.json.orig
@@ -0,0 +1,92 @@
+{
+ "name": "@jupyterlab/notebook-extension",
+ "version": "4.5.1",
+ "description": "JupyterLab - Notebook Extension",
+ "homepage": "https://github.com/jupyterlab/jupyterlab",
+ "bugs": {
+ "url": "https://github.com/jupyterlab/jupyterlab/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jupyterlab/jupyterlab.git"
+ },
+ "license": "BSD-3-Clause",
+ "author": "Project Jupyter",
+ "sideEffects": [
+ "style/**/*"
+ ],
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts",
+ "style": "style/index.css",
+ "directories": {
+ "lib": "lib/"
+ },
+ "files": [
+ "lib/**/*.d.ts",
+ "lib/**/*.js.map",
+ "lib/**/*.js",
+ "schema/*.json",
+ "style/*.css",
+ "style/index.js",
+ "src/**/*.{ts,tsx}"
+ ],
+ "scripts": {
+ "build": "tsc -b",
+ "clean": "rimraf lib && rimraf tsconfig.tsbuildinfo",
+ "watch": "tsc -b --watch"
+ },
+ "dependencies": {
+ "@jupyter/ydoc": "^3.1.0",
+ "@jupyterlab/application": "^4.5.1",
+ "@jupyterlab/apputils": "^4.6.1",
+ "@jupyterlab/cell-toolbar": "^4.5.1",
+ "@jupyterlab/cells": "^4.5.1",
+ "@jupyterlab/codeeditor": "^4.5.1",
+ "@jupyterlab/codemirror": "^4.5.1",
+ "@jupyterlab/completer": "^4.5.1",
+ "@jupyterlab/coreutils": "^6.5.1",
+ "@jupyterlab/docmanager": "^4.5.1",
+ "@jupyterlab/docmanager-extension": "^4.5.1",
+ "@jupyterlab/docregistry": "^4.5.1",
+ "@jupyterlab/documentsearch": "^4.5.1",
+ "@jupyterlab/filebrowser": "^4.5.1",
+ "@jupyterlab/launcher": "^4.5.1",
+ "@jupyterlab/logconsole": "^4.5.1",
+ "@jupyterlab/lsp": "^4.5.1",
+ "@jupyterlab/mainmenu": "^4.5.1",
+ "@jupyterlab/metadataform": "^4.5.1",
+ "@jupyterlab/nbformat": "^4.5.1",
+ "@jupyterlab/notebook": "^4.5.1",
+ "@jupyterlab/observables": "^5.5.1",
+ "@jupyterlab/property-inspector": "^4.5.1",
+ "@jupyterlab/rendermime": "^4.5.1",
+ "@jupyterlab/services": "^7.5.1",
+ "@jupyterlab/settingregistry": "^4.5.1",
+ "@jupyterlab/statedb": "^4.5.1",
+ "@jupyterlab/statusbar": "^4.5.1",
+ "@jupyterlab/toc": "^6.5.1",
+ "@jupyterlab/translation": "^4.5.1",
+ "@jupyterlab/ui-components": "^4.5.1",
+ "@lumino/algorithm": "^2.0.4",
+ "@lumino/commands": "^2.3.3",
+ "@lumino/coreutils": "^2.2.2",
+ "@lumino/disposable": "^2.1.5",
+ "@lumino/messaging": "^2.0.4",
+ "@lumino/polling": "^2.1.5",
+ "@lumino/widgets": "^2.7.2",
+ "@rjsf/utils": "^5.13.4",
+ "react": "^18.2.0"
+ },
+ "devDependencies": {
+ "rimraf": "~5.0.5",
+ "typescript": "~5.5.4"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "jupyterlab": {
+ "extension": true,
+ "schemaDir": "schema"
+ },
+ "styleModule": "style/index.js"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/notebook-extension/panel.json b/share/jupyter/lab/schemas/@jupyterlab/notebook-extension/panel.json
new file mode 100644
index 0000000..88c5800
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/notebook-extension/panel.json
@@ -0,0 +1,105 @@
+{
+ "title": "Notebook Panel",
+ "description": "Notebook Panel settings.",
+ "jupyter.lab.toolbars": {
+ "Notebook": [
+ { "name": "save", "rank": 10 },
+ {
+ "name": "insert",
+ "command": "notebook:insert-cell-below",
+ "icon": "ui-components:add",
+ "rank": 20
+ },
+ { "name": "cut", "command": "notebook:cut-cell", "rank": 21 },
+ { "name": "copy", "command": "notebook:copy-cell", "rank": 22 },
+ { "name": "paste", "command": "notebook:paste-cell-below", "rank": 23 },
+ {
+ "name": "run",
+ "command": "notebook:run-cell-and-select-next",
+ "rank": 30
+ },
+ {
+ "name": "interrupt",
+ "command": "notebook:interrupt-kernel",
+ "rank": 31
+ },
+ { "name": "restart", "command": "notebook:restart-kernel", "rank": 32 },
+ {
+ "name": "restart-and-run",
+ "command": "notebook:restart-run-all",
+ "rank": 33
+ },
+ { "name": "cellType", "rank": 40 },
+ { "name": "spacer", "type": "spacer", "rank": 100 },
+ { "name": "kernelName", "rank": 1000 },
+ { "name": "executionProgress", "rank": 1002 }
+ ]
+ },
+ "jupyter.lab.transform": true,
+ "properties": {
+ "toolbar": {
+ "title": "Notebook panel toolbar items",
+ "description": "Note: To disable a toolbar item,\ncopy it to User Preferences and add the\n\"disabled\" key. The following example will disable the Interrupt button item:\n{\n \"toolbar\": [\n {\n \"name\": \"interrupt\",\n \"disabled\": true\n }\n ]\n}\n\nToolbar description:",
+ "items": {
+ "$ref": "#/definitions/toolbarItem"
+ },
+ "type": "array",
+ "default": []
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "definitions": {
+ "toolbarItem": {
+ "properties": {
+ "name": {
+ "title": "Unique name",
+ "type": "string"
+ },
+ "args": {
+ "title": "Command arguments",
+ "type": "object"
+ },
+ "command": {
+ "title": "Command id",
+ "type": "string",
+ "default": ""
+ },
+ "disabled": {
+ "title": "Whether the item is ignored or not",
+ "type": "boolean",
+ "default": false
+ },
+ "icon": {
+ "title": "Item icon id",
+ "description": "If defined, it will override the command icon",
+ "type": "string"
+ },
+ "label": {
+ "title": "Item label",
+ "description": "If defined, it will override the command label",
+ "type": "string"
+ },
+ "caption": {
+ "title": "Item caption",
+ "description": "If defined, it will override the command caption",
+ "type": "string"
+ },
+ "type": {
+ "title": "Item type",
+ "type": "string",
+ "enum": ["command", "spacer"]
+ },
+ "rank": {
+ "title": "Item rank",
+ "type": "number",
+ "minimum": 0,
+ "default": 50
+ }
+ },
+ "required": ["name"],
+ "additionalProperties": false,
+ "type": "object"
+ }
+ }
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/notebook-extension/tools.json b/share/jupyter/lab/schemas/@jupyterlab/notebook-extension/tools.json
new file mode 100644
index 0000000..1b35ff6
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/notebook-extension/tools.json
@@ -0,0 +1,143 @@
+{
+ "type": "object",
+ "title": "Common tools",
+ "description": "Setting for the common tools",
+ "jupyter.lab.metadataforms": [
+ {
+ "id": "commonToolsSection",
+ "label": "Common Tools",
+ "metadataSchema": {
+ "type": "object",
+ "properties": {
+ "_CELL-TOOL": {
+ "title": "Cell tool",
+ "type": "null"
+ },
+ "/editable": {
+ "title": "Editable",
+ "type": "boolean",
+ "default": true,
+ "oneOf": [
+ {
+ "const": true,
+ "title": "Editable"
+ },
+ {
+ "const": false,
+ "title": "Read-Only"
+ }
+ ]
+ },
+ "/slideshow/slide_type": {
+ "title": "Slide Type",
+ "type": "string",
+ "default": "",
+ "oneOf": [
+ {
+ "const": "",
+ "title": "-"
+ },
+ {
+ "const": "slide",
+ "title": "Slide"
+ },
+ {
+ "const": "subslide",
+ "title": "Sub-Slide"
+ },
+ {
+ "const": "fragment",
+ "title": "Fragment"
+ },
+ {
+ "const": "skip",
+ "title": "Skip"
+ },
+ {
+ "const": "notes",
+ "title": "Notes"
+ }
+ ]
+ },
+ "/raw_mimetype": {
+ "title": "Raw NBConvert Format",
+ "type": "string",
+ "default": "",
+ "oneOf": [
+ {
+ "const": "",
+ "title": "-"
+ },
+ {
+ "const": "pdf",
+ "title": "PDF"
+ },
+ {
+ "const": "slides",
+ "title": "Slides"
+ },
+ {
+ "const": "script",
+ "title": "Script"
+ },
+ {
+ "const": "notebook",
+ "title": "Notebook"
+ },
+ {
+ "const": "custom",
+ "title": "Custom"
+ }
+ ]
+ },
+ "/toc/base_numbering": {
+ "title": "Table of content - Base number",
+ "type": "integer"
+ }
+ }
+ },
+ "uiSchema": {
+ "/editable": {
+ "ui:widget": "select"
+ }
+ },
+ "metadataOptions": {
+ "_CELL-TOOL": {
+ "customRenderer": "@jupyterlab/notebook-extension:active-cell-tool.renderer"
+ },
+ "/raw_mimetype": {
+ "cellTypes": ["raw"]
+ },
+ "/toc/base_numbering": {
+ "metadataLevel": "notebook"
+ }
+ }
+ },
+ {
+ "id": "advancedToolsSection",
+ "label": "Advanced Tools",
+ "metadataSchema": {
+ "type": "object",
+ "properties": {
+ "_CELL-METADATA": {
+ "title": "Cell metadata",
+ "type": "null"
+ },
+ "_NOTEBOOK-METADATA": {
+ "title": "Notebook metadata",
+ "type": "null"
+ }
+ }
+ },
+ "metadataOptions": {
+ "_CELL-METADATA": {
+ "customRenderer": "@jupyterlab/notebook-extension:metadata-editor.cell-metadata"
+ },
+ "_NOTEBOOK-METADATA": {
+ "customRenderer": "@jupyterlab/notebook-extension:metadata-editor.notebook-metadata"
+ }
+ }
+ }
+ ],
+ "additionalProperties": false
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/notebook-extension/tracker.json b/share/jupyter/lab/schemas/@jupyterlab/notebook-extension/tracker.json
new file mode 100644
index 0000000..6ffbbc5
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/notebook-extension/tracker.json
@@ -0,0 +1,867 @@
+{
+ "jupyter.lab.setting-icon": "ui-components:notebook",
+ "jupyter.lab.setting-icon-label": "Notebook",
+ "jupyter.lab.menus": {
+ "main": [
+ {
+ "id": "jp-mainmenu-file",
+ "items": [
+ {
+ "type": "submenu",
+ "submenu": {
+ "id": "jp-mainmenu-file-new",
+ "items": [
+ {
+ "command": "notebook:create-new",
+ "rank": 10
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "id": "jp-mainmenu-edit",
+ "items": [
+ {
+ "type": "separator",
+ "rank": 4
+ },
+ {
+ "command": "notebook:undo-cell-action",
+ "rank": 4
+ },
+ {
+ "command": "notebook:redo-cell-action",
+ "rank": 4
+ },
+ {
+ "type": "separator",
+ "rank": 5
+ },
+ {
+ "command": "notebook:cut-cell",
+ "rank": 5
+ },
+ {
+ "command": "notebook:copy-cell",
+ "rank": 5
+ },
+ {
+ "command": "notebook:paste-cell-below",
+ "rank": 5
+ },
+ {
+ "command": "notebook:paste-cell-above",
+ "rank": 5
+ },
+ {
+ "command": "notebook:paste-and-replace-cell",
+ "rank": 5
+ },
+ {
+ "type": "separator",
+ "rank": 6
+ },
+ {
+ "command": "notebook:delete-cell",
+ "rank": 6
+ },
+ {
+ "type": "separator",
+ "rank": 7
+ },
+ {
+ "command": "notebook:select-all",
+ "rank": 7
+ },
+ {
+ "command": "notebook:deselect-all",
+ "rank": 7
+ },
+ {
+ "type": "separator",
+ "rank": 8
+ },
+ {
+ "command": "notebook:move-cell-up",
+ "rank": 8
+ },
+ {
+ "command": "notebook:move-cell-down",
+ "rank": 8
+ },
+ {
+ "type": "separator",
+ "rank": 9
+ },
+ {
+ "command": "notebook:split-cell-at-cursor",
+ "rank": 9
+ },
+ {
+ "command": "notebook:merge-cells",
+ "rank": 9
+ },
+ {
+ "command": "notebook:merge-cell-above",
+ "rank": 9
+ },
+ {
+ "command": "notebook:merge-cell-below",
+ "rank": 9
+ },
+ {
+ "type": "separator",
+ "rank": 9
+ }
+ ]
+ },
+ {
+ "id": "jp-mainmenu-view",
+ "items": [
+ {
+ "type": "separator",
+ "rank": 10
+ },
+ {
+ "command": "notebook:hide-cell-code",
+ "rank": 10
+ },
+ {
+ "command": "notebook:hide-cell-outputs",
+ "rank": 10
+ },
+ {
+ "command": "notebook:hide-all-cell-code",
+ "rank": 10
+ },
+ {
+ "command": "notebook:hide-all-cell-outputs",
+ "rank": 10
+ },
+ {
+ "type": "separator",
+ "rank": 10
+ },
+ {
+ "command": "notebook:show-cell-code",
+ "rank": 11
+ },
+ {
+ "command": "notebook:show-cell-outputs",
+ "rank": 11
+ },
+ {
+ "command": "notebook:show-all-cell-code",
+ "rank": 11
+ },
+ {
+ "command": "notebook:show-all-cell-outputs",
+ "rank": 11
+ },
+ {
+ "type": "separator",
+ "rank": 11
+ },
+ {
+ "command": "notebook:toggle-render-side-by-side-current",
+ "rank": 12
+ },
+ {
+ "type": "separator",
+ "rank": 12
+ }
+ ]
+ },
+ {
+ "id": "jp-mainmenu-run",
+ "items": [
+ {
+ "type": "separator",
+ "rank": 10
+ },
+ {
+ "command": "notebook:run-cell-and-insert-below",
+ "rank": 10
+ },
+ {
+ "command": "notebook:run-cell",
+ "rank": 10
+ },
+ {
+ "command": "notebook:run-in-console",
+ "rank": 10
+ },
+ {
+ "type": "separator",
+ "rank": 11
+ },
+ {
+ "command": "notebook:run-all-above",
+ "rank": 11
+ },
+ {
+ "command": "notebook:run-all-below",
+ "rank": 11
+ },
+ {
+ "type": "separator",
+ "rank": 12
+ },
+ {
+ "command": "notebook:render-all-markdown",
+ "rank": 12
+ },
+ {
+ "type": "separator",
+ "rank": 12
+ }
+ ]
+ },
+ {
+ "id": "jp-mainmenu-kernel",
+ "items": [
+ {
+ "command": "notebook:restart-and-run-to-selected",
+ "rank": 1
+ }
+ ]
+ }
+ ],
+ "context": [
+ {
+ "type": "separator",
+ "selector": ".jp-Notebook .jp-Cell",
+ "rank": 0
+ },
+ {
+ "command": "notebook:cut-cell",
+ "selector": ".jp-Notebook .jp-Cell",
+ "rank": 1
+ },
+ {
+ "command": "notebook:copy-cell",
+ "selector": ".jp-Notebook .jp-Cell",
+ "rank": 2
+ },
+ {
+ "command": "notebook:paste-cell-below",
+ "selector": ".jp-Notebook .jp-Cell",
+ "rank": 3
+ },
+ {
+ "type": "separator",
+ "selector": ".jp-Notebook .jp-Cell",
+ "rank": 4
+ },
+ {
+ "command": "notebook:delete-cell",
+ "selector": ".jp-Notebook .jp-Cell",
+ "rank": 5
+ },
+ {
+ "type": "separator",
+ "selector": ".jp-Notebook .jp-Cell",
+ "rank": 6
+ },
+ {
+ "command": "notebook:split-cell-at-cursor",
+ "selector": ".jp-Notebook .jp-Cell",
+ "rank": 7
+ },
+ {
+ "command": "notebook:merge-cells",
+ "selector": ".jp-Notebook .jp-Cell",
+ "rank": 8
+ },
+ {
+ "command": "notebook:merge-cell-above",
+ "selector": ".jp-Notebook .jp-Cell",
+ "rank": 8
+ },
+ {
+ "command": "notebook:merge-cell-below",
+ "selector": ".jp-Notebook .jp-Cell",
+ "rank": 8
+ },
+ {
+ "type": "separator",
+ "selector": ".jp-Notebook .jp-Cell",
+ "rank": 9
+ },
+ {
+ "command": "notebook:create-output-view",
+ "selector": ".jp-Notebook .jp-CodeCell",
+ "rank": 10
+ },
+ {
+ "type": "separator",
+ "selector": ".jp-Notebook .jp-CodeCell",
+ "rank": 11
+ },
+ {
+ "command": "notebook:clear-cell-output",
+ "selector": ".jp-Notebook .jp-CodeCell",
+ "rank": 12
+ },
+ {
+ "command": "notebook:clear-all-cell-outputs",
+ "selector": ".jp-Notebook",
+ "rank": 13
+ },
+ {
+ "type": "separator",
+ "selector": ".jp-Notebook",
+ "rank": 20
+ },
+ {
+ "command": "notebook:enable-output-scrolling",
+ "selector": ".jp-Notebook",
+ "rank": 21
+ },
+ {
+ "command": "notebook:disable-output-scrolling",
+ "selector": ".jp-Notebook",
+ "rank": 22
+ },
+ {
+ "type": "separator",
+ "selector": ".jp-Notebook",
+ "rank": 30
+ },
+ {
+ "command": "notebook:undo-cell-action",
+ "selector": ".jp-Notebook",
+ "rank": 31
+ },
+ {
+ "command": "notebook:redo-cell-action",
+ "selector": ".jp-Notebook",
+ "rank": 32
+ },
+ {
+ "command": "notebook:restart-kernel",
+ "selector": ".jp-Notebook",
+ "rank": 33
+ },
+ {
+ "type": "separator",
+ "selector": ".jp-Notebook",
+ "rank": 40
+ },
+ {
+ "command": "notebook:create-console",
+ "selector": ".jp-Notebook",
+ "rank": 41
+ },
+ {
+ "command": "notebook:create-subshell-console",
+ "selector": ".jp-Notebook",
+ "rank": 42
+ },
+ {
+ "command": "notebook:create-new",
+ "selector": ".jp-DirListing-content",
+ "rank": 52,
+ "args": {
+ "isContextMenu": true
+ }
+ }
+ ]
+ },
+ "jupyter.lab.shortcuts": [
+ {
+ "command": "notebook:change-cell-to-code",
+ "keys": ["Y"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "notebook:change-cell-to-heading-1",
+ "keys": ["1"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "notebook:change-cell-to-heading-2",
+ "keys": ["2"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "notebook:change-cell-to-heading-3",
+ "keys": ["3"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "notebook:change-cell-to-heading-4",
+ "keys": ["4"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "notebook:change-cell-to-heading-5",
+ "keys": ["5"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "notebook:change-cell-to-heading-6",
+ "keys": ["6"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "notebook:change-cell-to-markdown",
+ "keys": ["M"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "notebook:change-cell-to-raw",
+ "keys": ["R"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "notebook:copy-cell",
+ "keys": ["C"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "notebook:cut-cell",
+ "keys": ["X"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "notebook:delete-cell",
+ "keys": ["D", "D"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "notebook:enter-command-mode",
+ "keys": ["Escape"],
+ "selector": ".jp-Notebook.jp-mod-editMode"
+ },
+ {
+ "command": "notebook:enter-command-mode",
+ "keys": ["Ctrl M"],
+ "selector": ".jp-Notebook.jp-mod-editMode"
+ },
+ {
+ "command": "notebook:access-previous-history-entry",
+ "keys": ["Alt ArrowUp"],
+ "selector": ".jp-Notebook.jp-mod-editMode"
+ },
+ {
+ "command": "notebook:access-next-history-entry",
+ "keys": ["Alt ArrowDown"],
+ "selector": ".jp-Notebook.jp-mod-editMode"
+ },
+ {
+ "command": "notebook:enter-edit-mode",
+ "keys": ["Enter"],
+ "selector": ".jp-Notebook.jp-mod-commandMode .jp-Cell:focus"
+ },
+ {
+ "command": "notebook:extend-marked-cells-above",
+ "keys": ["Shift ArrowUp"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "notebook:extend-marked-cells-above",
+ "keys": ["Shift K"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "notebook:extend-marked-cells-top",
+ "keys": ["Shift Home"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "notebook:extend-marked-cells-below",
+ "keys": ["Shift ArrowDown"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "notebook:extend-marked-cells-bottom",
+ "keys": ["Shift End"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "notebook:extend-marked-cells-below",
+ "keys": ["Shift J"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "notebook:insert-cell-above",
+ "keys": ["A"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "notebook:insert-cell-below",
+ "keys": ["B"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "notebook:merge-cells",
+ "keys": ["Shift M"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "notebook:merge-cell-above",
+ "keys": ["Ctrl Backspace"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "notebook:merge-cell-below",
+ "keys": ["Ctrl Shift M"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "notebook:move-cursor-down",
+ "keys": ["ArrowDown"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "notebook:move-cursor-down",
+ "keys": ["J"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "notebook:move-cursor-up",
+ "keys": ["ArrowUp"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "notebook:move-cursor-up",
+ "keys": ["K"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "notebook:move-cursor-heading-above-or-collapse",
+ "keys": ["ArrowLeft"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "notebook:move-cursor-heading-below-or-expand",
+ "keys": ["ArrowRight"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "notebook:insert-heading-above",
+ "keys": ["Shift A"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "notebook:insert-heading-below",
+ "keys": ["Shift B"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "notebook:collapse-all-headings",
+ "keys": ["Ctrl Shift ArrowLeft"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "notebook:expand-all-headings",
+ "keys": ["Ctrl Shift ArrowRight"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "notebook:paste-cell-below",
+ "keys": ["V"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "notebook:redo-cell-action",
+ "keys": ["Shift Z"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "notebook:run-cell",
+ "macKeys": ["Ctrl Enter"],
+ "keys": [],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "notebook:run-cell",
+ "macKeys": ["Ctrl Enter"],
+ "keys": [],
+ "selector": ".jp-Notebook.jp-mod-editMode"
+ },
+ {
+ "command": "notebook:run-cell",
+ "keys": ["Accel Enter"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "notebook:run-cell",
+ "keys": ["Accel Enter"],
+ "selector": ".jp-Notebook.jp-mod-editMode"
+ },
+ {
+ "command": "notebook:run-cell-and-insert-below",
+ "keys": ["Alt Enter"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "notebook:run-cell-and-insert-below",
+ "keys": ["Alt Enter"],
+ "selector": ".jp-Notebook.jp-mod-editMode"
+ },
+ {
+ "command": "notebook:run-in-console",
+ "keys": [""],
+ "selector": ".jp-Notebook.jp-mod-editMode"
+ },
+ {
+ "command": "notebook:run-cell-and-select-next",
+ "keys": ["Shift Enter"],
+ "selector": ".jp-Notebook.jp-mod-editMode"
+ },
+ {
+ "command": "viewmenu:line-numbering",
+ "keys": ["Shift L"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "viewmenu:match-brackets",
+ "keys": [""],
+ "selector": ".jp-Notebook.jp-mod-commandMode"
+ },
+ {
+ "command": "notebook:select-all",
+ "keys": ["Accel A"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "notebook:split-cell-at-cursor",
+ "keys": ["Ctrl Shift -"],
+ "selector": ".jp-Notebook.jp-mod-editMode"
+ },
+ {
+ "command": "notebook:undo-cell-action",
+ "keys": ["Z"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "notebook:toggle-render-side-by-side-current",
+ "keys": ["Shift R"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "notebook:move-cell-up",
+ "keys": ["Ctrl Shift ArrowUp"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ },
+ {
+ "command": "notebook:move-cell-down",
+ "keys": ["Ctrl Shift ArrowDown"],
+ "selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
+ }
+ ],
+ "title": "Notebook",
+ "description": "Notebook settings.",
+ "definitions": {
+ "kernelStatusConfig": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "showOnStatusBar": {
+ "type": "boolean",
+ "title": "Show kernel status on toolbar or status bar.",
+ "description": "If `true`, the kernel status progression will be displayed in the status bar otherwise it will be in the toolbar.",
+ "default": false
+ },
+ "showProgress": {
+ "type": "boolean",
+ "title": "Show execution progress.",
+ "default": true
+ },
+ "showJumpToRecentExecutionButton": {
+ "type": "boolean",
+ "title": "Show jump to most recently executed/executing cell button",
+ "description": "If enabled, displays a button that scrolls to the currently executing cell or, if none, the most recently executed cell. scrolls to the currently executing cell or, if none, the most recently executed cell. The button shows when hovering over the kernel execution indicator. Enabling this option automatically enables recording of execution timing metadata.",
+ "default": false
+ }
+ }
+ }
+ },
+ "properties": {
+ "enableKernelInitNotification": {
+ "title": "Notify about code execution if kernel is initializing",
+ "description": "Display notification if code cells are run while kernel is initializing.",
+ "type": "boolean",
+ "default": false
+ },
+ "codeCellConfig": {
+ "title": "Code Cell Configuration",
+ "description": "The configuration for all code cells; it will override the CodeMirror default configuration.",
+ "type": "object",
+ "default": {
+ "lineNumbers": false,
+ "lineWrap": false
+ }
+ },
+ "defaultCell": {
+ "title": "Default cell type",
+ "description": "The default type (markdown, code, or raw) for new cells",
+ "type": "string",
+ "enum": ["code", "markdown", "raw"],
+ "default": "code"
+ },
+ "autoStartDefaultKernel": {
+ "title": "Automatically Start Preferred Kernel",
+ "description": "Whether to automatically start the preferred kernel.",
+ "type": "boolean",
+ "default": false
+ },
+ "showInputPlaceholder": {
+ "title": "Show input placeholder",
+ "description": "Show placeholder text for standard input fields (requires reload)",
+ "type": "boolean",
+ "default": true
+ },
+ "inputHistoryScope": {
+ "type": "string",
+ "default": "global",
+ "enum": ["global", "session"],
+ "title": "Input History Scope",
+ "description": "Whether the line history for standard input (e.g. the ipdb prompt) should kept separately for different kernel sessions (`session`) or combined (`global`)."
+ },
+ "kernelShutdown": {
+ "title": "Shut down kernel",
+ "description": "Whether to shut down or not the kernel when closing a notebook.",
+ "type": "boolean",
+ "default": false
+ },
+ "markdownCellConfig": {
+ "title": "Markdown Cell Configuration",
+ "description": "The configuration for all markdown cells; it will override the CodeMirror default configuration.",
+ "type": "object",
+ "default": {
+ "lineNumbers": false,
+ "matchBrackets": false
+ }
+ },
+ "autoRenderMarkdownCells": {
+ "title": "Automatically render markdown when cursor leaves markdown cells",
+ "description": "Whether to render markdown cells when the cursor moves out of them.",
+ "type": "boolean",
+ "default": false
+ },
+ "rawCellConfig": {
+ "title": "Raw Cell Configuration",
+ "description": "The configuration for all raw cells; it will override the CodeMirror default configuration.",
+ "type": "object",
+ "default": {
+ "lineNumbers": false,
+ "matchBrackets": false
+ }
+ },
+ "scrollPastEnd": {
+ "title": "Scroll past last cell",
+ "description": "Whether to be able to scroll so the last cell is at the top of the panel",
+ "type": "boolean",
+ "default": true
+ },
+ "recordTiming": {
+ "title": "Recording timing",
+ "description": "Should timing data be recorded in cell metadata",
+ "type": "boolean",
+ "default": false
+ },
+ "overscanCount": {
+ "title": "Number of cells to render outside the viewport",
+ "description": "In 'full' windowing mode, this is the number of cells above and below the viewport.",
+ "type": "number",
+ "default": 1,
+ "minimum": 1
+ },
+ "maxNumberOutputs": {
+ "title": "The maximum number of output cells to be rendered in the output area.",
+ "description": "Defines the maximum number of output cells to be rendered in the output area for cells with many outputs. The output area will have a head and the remaining outputs will be trimmed and not displayed unless the user clicks on the information message. Set to 0 to have the complete display.",
+ "type": "number",
+ "default": 50
+ },
+ "scrollHeadingToTop": {
+ "title": "Scroll heading to top",
+ "description": "Whether to scroll heading to the document top when selecting it in the table of contents.",
+ "type": "boolean",
+ "default": true
+ },
+ "showEditorForReadOnlyMarkdown": {
+ "title": "Show editor for read-only Markdown cells",
+ "description": "Should an editor be shown for read-only markdown",
+ "type": "boolean",
+ "default": true
+ },
+ "kernelStatus": {
+ "title": "Kernel status icon configuration",
+ "description": "Defines the position and components of execution progress indicator.",
+ "$ref": "#/definitions/kernelStatusConfig",
+ "default": {
+ "showOnStatusBar": false,
+ "showProgress": true,
+ "showJumpToRecentExecutionButton": false
+ }
+ },
+ "documentWideUndoRedo": {
+ "title": "Enable undo/redo actions at the notebook document level.",
+ "description": "Enables the undo/redo actions at the notebook document level; aka undoing within a cell may undo the latest notebook change that happen in another cell. This is deprecated and will be removed in 5.0.0.",
+ "type": "boolean",
+ "default": false
+ },
+ "showHiddenCellsButton": {
+ "type": "boolean",
+ "title": "Show hidden cells button if collapsed",
+ "description": "If set to true, a button is shown below collapsed headings, indicating how many cells are hidden beneath the collapsed heading.",
+ "default": true
+ },
+ "renderingLayout": {
+ "title": "Rendering Layout",
+ "description": "Global setting to define the rendering layout in notebooks. 'default' or 'side-by-side' are supported.",
+ "enum": ["default", "side-by-side"],
+ "default": "default"
+ },
+ "sideBySideLeftMarginOverride": {
+ "title": "Side-by-side left margin override",
+ "description": "Side-by-side left margin override.",
+ "type": "string",
+ "default": "10px"
+ },
+ "sideBySideRightMarginOverride": {
+ "title": "Side-by-side right margin override",
+ "description": "Side-by-side right margin override.",
+ "type": "string",
+ "default": "10px"
+ },
+ "sideBySideOutputRatio": {
+ "title": "Side-by-side output ratio",
+ "description": "For the side-by-side rendering, the side-by-side output ratio defines the width of the output vs the input. Set 1 for same size, > 1 for larger output, < 1 for smaller output.",
+ "type": "number",
+ "default": 1,
+ "minimum": 0
+ },
+ "windowingMode": {
+ "title": "Windowing mode",
+ "description": "- 'defer': Improve loading time - Wait for idle CPU cycles to attach out of viewport cells\n- 'full': Best performance with side effects - Attach to the DOM only cells in viewport\n- 'none': Worst performance without side effects - Attach all cells to the viewport\n- 'contentVisibility': Browser-optimized rendering - Use content-visibility to skip offscreen cells",
+ "enum": ["defer", "full", "none", "contentVisibility"],
+ "default": "contentVisibility"
+ },
+ "accessKernelHistory": {
+ "title": "Kernel history access",
+ "description": "Enable kernel history access from notebook cells. Enabling this allows you to scroll through kernel history from a given notebook cell.",
+ "type": "boolean",
+ "default": false
+ },
+ "addExtraLineOnCellMerge": {
+ "title": "Add extra line when merging cells",
+ "description": "Whether to add an extra blank line between cells when merging them. When enabled, cells are joined with double newlines. When disabled, cells are joined with single newlines.",
+ "type": "boolean",
+ "default": true
+ },
+ "showMinimap": {
+ "title": "Show minimap",
+ "description": "Whether to show the notebook minimap (virtual scrollbar) by default for all notebooks.",
+ "type": "boolean",
+ "default": false
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/running-extension/package.json.orig b/share/jupyter/lab/schemas/@jupyterlab/running-extension/package.json.orig
new file mode 100644
index 0000000..d931a17
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/running-extension/package.json.orig
@@ -0,0 +1,69 @@
+{
+ "name": "@jupyterlab/running-extension",
+ "version": "4.5.1",
+ "description": "JupyterLab - Running Sessions Extension",
+ "homepage": "https://github.com/jupyterlab/jupyterlab",
+ "bugs": {
+ "url": "https://github.com/jupyterlab/jupyterlab/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jupyterlab/jupyterlab.git"
+ },
+ "license": "BSD-3-Clause",
+ "author": "Project Jupyter",
+ "sideEffects": [
+ "style/**/*.css",
+ "style/index.js"
+ ],
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts",
+ "style": "style/index.css",
+ "directories": {
+ "lib": "lib/"
+ },
+ "files": [
+ "lib/*.d.ts",
+ "lib/*.js.map",
+ "lib/*.js",
+ "schema/*.json",
+ "style/**/*.css",
+ "style/index.js",
+ "src/**/*.{ts,tsx}"
+ ],
+ "scripts": {
+ "build": "tsc -b",
+ "clean": "rimraf lib && rimraf tsconfig.tsbuildinfo",
+ "watch": "tsc -b --watch"
+ },
+ "dependencies": {
+ "@jupyterlab/application": "^4.5.1",
+ "@jupyterlab/apputils": "^4.6.1",
+ "@jupyterlab/coreutils": "^6.5.1",
+ "@jupyterlab/docmanager": "^4.5.1",
+ "@jupyterlab/docregistry": "^4.5.1",
+ "@jupyterlab/rendermime-interfaces": "^3.13.1",
+ "@jupyterlab/running": "^4.5.1",
+ "@jupyterlab/services": "^7.5.1",
+ "@jupyterlab/statedb": "^4.5.1",
+ "@jupyterlab/translation": "^4.5.1",
+ "@jupyterlab/ui-components": "^4.5.1",
+ "@lumino/commands": "^2.3.3",
+ "@lumino/polling": "^2.1.5",
+ "@lumino/signaling": "^2.1.5",
+ "@lumino/widgets": "^2.7.2",
+ "react": "^18.2.0"
+ },
+ "devDependencies": {
+ "rimraf": "~5.0.5",
+ "typescript": "~5.5.4"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "jupyterlab": {
+ "extension": true,
+ "schemaDir": "schema"
+ },
+ "styleModule": "style/index.js"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/running-extension/plugin.json b/share/jupyter/lab/schemas/@jupyterlab/running-extension/plugin.json
new file mode 100644
index 0000000..03901a3
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/running-extension/plugin.json
@@ -0,0 +1,69 @@
+{
+ "title": "Sessions",
+ "description": "Sessions Settings",
+ "jupyter.lab.menus": {
+ "main": [
+ {
+ "id": "jp-mainmenu-view",
+ "items": [
+ {
+ "command": "running:show-panel",
+ "rank": 3
+ }
+ ]
+ }
+ ],
+ "context": [
+ {
+ "command": "running:kernel-new-console",
+ "selector": ".jp-RunningSessions-item.jp-mod-kernel",
+ "rank": 0
+ },
+ {
+ "command": "running:kernel-new-notebook",
+ "selector": ".jp-RunningSessions-item.jp-mod-kernel",
+ "rank": 1
+ },
+ {
+ "type": "separator",
+ "selector": ".jp-RunningSessions-item.jp-mod-kernel",
+ "rank": 2
+ },
+ {
+ "type": "submenu",
+ "selector": ".jp-RunningSessions-item.jp-mod-kernel",
+ "rank": 3,
+ "submenu": {
+ "id": "jp-contextmenu-connected-sessions",
+ "label": "Connected Sessions…",
+ "items": []
+ }
+ },
+ {
+ "type": "separator",
+ "selector": ".jp-RunningSessions-item.jp-mod-kernel",
+ "rank": 4
+ },
+ {
+ "command": "running:kernel-shut-down",
+ "selector": ".jp-RunningSessions-item.jp-mod-kernel",
+ "rank": 5
+ }
+ ]
+ },
+ "jupyter.lab.shortcuts": [
+ {
+ "command": "running:show-panel",
+ "keys": ["Accel Shift B"],
+ "selector": "body"
+ },
+ {
+ "command": "running:show-modal",
+ "keys": ["Accel Alt A"],
+ "selector": "body"
+ }
+ ],
+ "properties": {},
+ "additionalProperties": false,
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/settingeditor-extension/form-ui.json b/share/jupyter/lab/schemas/@jupyterlab/settingeditor-extension/form-ui.json
new file mode 100644
index 0000000..a7c588a
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/settingeditor-extension/form-ui.json
@@ -0,0 +1,25 @@
+{
+ "title": "Settings Editor Form UI",
+ "description": "Settings editor form ui settings.",
+ "properties": {
+ "settingEditorType": {
+ "title": "Type of editor for the setting.",
+ "description": "Set the type of editor to use while editing your settings.",
+ "enum": ["json", "ui"],
+ "default": "ui"
+ },
+ "toSkip": {
+ "title": "Additional plugins to skip in settings editor",
+ "description": "List of additional plugin IDs that should not be displayed in the settings editor. These plugins can still be configured programmatically or via overrides.json. Note: Some core plugins like context-menu and main-menu are always hidden and cannot be made visible.",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "title": "Plugin ID",
+ "description": "Plugin ID to skip"
+ },
+ "default": []
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/settingeditor-extension/package.json.orig b/share/jupyter/lab/schemas/@jupyterlab/settingeditor-extension/package.json.orig
new file mode 100644
index 0000000..856afa1
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/settingeditor-extension/package.json.orig
@@ -0,0 +1,67 @@
+{
+ "name": "@jupyterlab/settingeditor-extension",
+ "version": "4.5.1",
+ "description": "JupyterLab - Setting Editor Extension",
+ "homepage": "https://github.com/jupyterlab/jupyterlab",
+ "bugs": {
+ "url": "https://github.com/jupyterlab/jupyterlab/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jupyterlab/jupyterlab.git"
+ },
+ "license": "BSD-3-Clause",
+ "author": "Project Jupyter",
+ "sideEffects": [
+ "style/*.css",
+ "style/index.js"
+ ],
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts",
+ "style": "style/index.css",
+ "directories": {
+ "lib": "lib/"
+ },
+ "files": [
+ "lib/*.d.ts",
+ "lib/*.js.map",
+ "lib/*.js",
+ "schema/*.json",
+ "style/**/*.css",
+ "style/index.js",
+ "src/**/*.{ts,tsx}"
+ ],
+ "scripts": {
+ "build": "tsc -b",
+ "clean": "rimraf lib && rimraf tsconfig.tsbuildinfo",
+ "watch": "tsc -b --watch"
+ },
+ "dependencies": {
+ "@codemirror/commands": "^6.8.1",
+ "@codemirror/view": "^6.38.1",
+ "@jupyterlab/application": "^4.5.1",
+ "@jupyterlab/apputils": "^4.6.1",
+ "@jupyterlab/codeeditor": "^4.5.1",
+ "@jupyterlab/pluginmanager": "^4.5.1",
+ "@jupyterlab/rendermime": "^4.5.1",
+ "@jupyterlab/settingeditor": "^4.5.1",
+ "@jupyterlab/settingregistry": "^4.5.1",
+ "@jupyterlab/statedb": "^4.5.1",
+ "@jupyterlab/translation": "^4.5.1",
+ "@jupyterlab/ui-components": "^4.5.1",
+ "@lumino/disposable": "^2.1.5",
+ "react": "^18.2.0"
+ },
+ "devDependencies": {
+ "rimraf": "~5.0.5",
+ "typescript": "~5.5.4"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "jupyterlab": {
+ "extension": true,
+ "schemaDir": "schema"
+ },
+ "styleModule": "style/index.js"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/settingeditor-extension/plugin.json b/share/jupyter/lab/schemas/@jupyterlab/settingeditor-extension/plugin.json
new file mode 100644
index 0000000..1bc50cb
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/settingeditor-extension/plugin.json
@@ -0,0 +1,21 @@
+{
+ "title": "Setting Editor",
+ "description": "Setting editor settings.",
+ "jupyter.lab.shortcuts": [
+ {
+ "command": "settingeditor:open",
+ "args": {},
+ "keys": ["Accel ,"],
+ "selector": "body"
+ },
+ {
+ "command": "settingeditor:save",
+ "args": {},
+ "keys": ["Accel S"],
+ "selector": ".jp-SettingEditor"
+ }
+ ],
+ "properties": {},
+ "additionalProperties": false,
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/shortcuts-extension/package.json.orig b/share/jupyter/lab/schemas/@jupyterlab/shortcuts-extension/package.json.orig
new file mode 100644
index 0000000..b62ae7f
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/shortcuts-extension/package.json.orig
@@ -0,0 +1,71 @@
+{
+ "name": "@jupyterlab/shortcuts-extension",
+ "version": "5.3.1",
+ "description": "JupyterLab - Shortcuts Extension",
+ "homepage": "https://github.com/jupyterlab/jupyterlab",
+ "bugs": {
+ "url": "https://github.com/jupyterlab/jupyterlab/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jupyterlab/jupyterlab.git"
+ },
+ "license": "BSD-3-Clause",
+ "author": "Project Jupyter",
+ "sideEffects": [
+ "style/*.css",
+ "style/index.js"
+ ],
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts",
+ "style": "style/index.css",
+ "directories": {
+ "lib": "lib/"
+ },
+ "files": [
+ "lib/**/*.{d.ts,eot,gif,html,jpg,js,js.map,json,png,svg,woff2,ttf}",
+ "style/**/*.{css,eot,gif,html,jpg,json,png,svg,woff2,ttf}",
+ "style/index.js",
+ "schema/*.json",
+ "src/**/*.{ts,tsx}"
+ ],
+ "scripts": {
+ "build": "tsc -b",
+ "build:test": "tsc --build tsconfig.test.json",
+ "clean": "rimraf lib && rimraf tsconfig.tsbuildinfo",
+ "test": "jest",
+ "test:cov": "jest --collect-coverage",
+ "test:debug": "node --inspect-brk ../../node_modules/.bin/jest --runInBand",
+ "test:debug:watch": "node --inspect-brk ../../node_modules/.bin/jest --runInBand --watch",
+ "watch": "tsc -b --watch"
+ },
+ "dependencies": {
+ "@jupyterlab/application": "^4.5.1",
+ "@jupyterlab/settingregistry": "^4.5.1",
+ "@jupyterlab/translation": "^4.5.1",
+ "@jupyterlab/ui-components": "^4.5.1",
+ "@lumino/algorithm": "^2.0.4",
+ "@lumino/commands": "^2.3.3",
+ "@lumino/coreutils": "^2.2.2",
+ "@lumino/disposable": "^2.1.5",
+ "@lumino/domutils": "^2.0.4",
+ "@lumino/keyboard": "^2.0.4",
+ "@lumino/signaling": "^2.1.5",
+ "react": "^18.2.0"
+ },
+ "devDependencies": {
+ "@jupyterlab/testing": "^4.5.1",
+ "@types/jest": "^29.2.0",
+ "jest": "^29.2.0",
+ "rimraf": "~5.0.5",
+ "typescript": "~5.5.4"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "jupyterlab": {
+ "extension": true,
+ "schemaDir": "schema"
+ },
+ "styleModule": "style/index.js"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/shortcuts-extension/shortcuts.json b/share/jupyter/lab/schemas/@jupyterlab/shortcuts-extension/shortcuts.json
new file mode 100644
index 0000000..fad7cf3
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/shortcuts-extension/shortcuts.json
@@ -0,0 +1,74 @@
+{
+ "jupyter.lab.setting-icon": "ui-components:keyboard",
+ "jupyter.lab.setting-icon-label": "Keyboard Shortcuts",
+ "jupyter.lab.transform": true,
+ "title": "Keyboard Shortcuts",
+ "description": "Keyboard shortcut settings.",
+ "jupyter.lab.menus": {
+ "context": [
+ {
+ "command": "shortcuts:edit-keybinding",
+ "selector": ".jp-Shortcuts-ShortcutKeysContainer",
+ "rank": 0
+ },
+ {
+ "command": "shortcuts:delete-keybinding",
+ "selector": ".jp-Shortcuts-ShortcutKeysContainer",
+ "rank": 1
+ },
+ {
+ "command": "shortcuts:add-keybinding",
+ "selector": ".jp-Shortcuts-Row",
+ "rank": 2
+ },
+ {
+ "command": "shortcuts:toggle-selectors",
+ "selector": ".jp-Shortcuts-Top",
+ "rank": 3
+ },
+ {
+ "command": "shortcuts:reset-all",
+ "selector": ".jp-Shortcuts-Top",
+ "rank": 4
+ }
+ ]
+ },
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "shortcuts": {
+ "description": "The list of keyboard shortcuts.",
+ "items": { "$ref": "#/definitions/shortcut" },
+ "type": "array",
+ "default": []
+ }
+ },
+ "definitions": {
+ "shortcut": {
+ "properties": {
+ "args": { "type": "object" },
+ "command": { "type": "string" },
+ "keys": {
+ "items": { "type": "string" },
+ "type": "array"
+ },
+ "winKeys": {
+ "items": { "type": "string" },
+ "type": "array"
+ },
+ "macKeys": {
+ "items": { "type": "string" },
+ "type": "array"
+ },
+ "linuxKeys": {
+ "items": { "type": "string" },
+ "type": "array"
+ },
+ "selector": { "type": "string" },
+ "preventDefault": { "type": "boolean" }
+ },
+ "required": ["command", "keys", "selector"],
+ "type": "object"
+ }
+ }
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/statusbar-extension/package.json.orig b/share/jupyter/lab/schemas/@jupyterlab/statusbar-extension/package.json.orig
new file mode 100644
index 0000000..814e329
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/statusbar-extension/package.json.orig
@@ -0,0 +1,59 @@
+{
+ "name": "@jupyterlab/statusbar-extension",
+ "version": "4.5.1",
+ "description": "JupyterLab - Statusbar Extension",
+ "homepage": "https://github.com/jupyterlab/jupyterlab",
+ "bugs": {
+ "url": "https://github.com/jupyterlab/jupyterlab/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jupyterlab/jupyterlab.git"
+ },
+ "license": "BSD-3-Clause",
+ "author": "Project Jupyter, Richa Gadgil, Takahiro Shimokobe, Declan Kelly",
+ "sideEffects": [
+ "style/**/*"
+ ],
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts",
+ "style": "style/index.css",
+ "directories": {
+ "lib": "lib/"
+ },
+ "files": [
+ "lib/**/*.d.ts",
+ "lib/**/*.js.map",
+ "lib/**/*.js",
+ "style/**/*.{css,eot,gif,html,jpg,json,png,svg,woff2,ttf}",
+ "schema/*.json",
+ "style/index.js",
+ "src/**/*.{ts,tsx}"
+ ],
+ "scripts": {
+ "build": "tsc -b",
+ "clean": "rimraf lib && rimraf tsconfig.tsbuildinfo",
+ "watch": "tsc -b --watch"
+ },
+ "dependencies": {
+ "@jupyterlab/application": "^4.5.1",
+ "@jupyterlab/apputils": "^4.6.1",
+ "@jupyterlab/settingregistry": "^4.5.1",
+ "@jupyterlab/statusbar": "^4.5.1",
+ "@jupyterlab/translation": "^4.5.1"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.26",
+ "@types/react-dom": "^18.0.9",
+ "rimraf": "~5.0.5",
+ "typescript": "~5.5.4"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "jupyterlab": {
+ "extension": true,
+ "schemaDir": "schema"
+ },
+ "styleModule": "style/index.js"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/statusbar-extension/plugin.json b/share/jupyter/lab/schemas/@jupyterlab/statusbar-extension/plugin.json
new file mode 100644
index 0000000..3fb9234
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/statusbar-extension/plugin.json
@@ -0,0 +1,37 @@
+{
+ "jupyter.lab.setting-icon": "ui-components:settings",
+ "jupyter.lab.setting-icon-label": "Status Bar",
+ "jupyter.lab.menus": {
+ "main": [
+ {
+ "id": "jp-mainmenu-view",
+ "items": [
+ {
+ "type": "submenu",
+ "submenu": {
+ "id": "jp-mainmenu-view-appearance",
+ "items": [
+ {
+ "command": "statusbar:toggle",
+ "rank": 15
+ }
+ ]
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "title": "Status Bar",
+ "description": "Status Bar settings.",
+ "properties": {
+ "visible": {
+ "type": "boolean",
+ "title": "Status Bar Visibility",
+ "description": "Whether to show status bar or not",
+ "default": true
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/terminal-extension/package.json.orig b/share/jupyter/lab/schemas/@jupyterlab/terminal-extension/package.json.orig
new file mode 100644
index 0000000..993ce64
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/terminal-extension/package.json.orig
@@ -0,0 +1,68 @@
+{
+ "name": "@jupyterlab/terminal-extension",
+ "version": "4.5.1",
+ "description": "JupyterLab - Terminal Emulator Extension",
+ "homepage": "https://github.com/jupyterlab/jupyterlab",
+ "bugs": {
+ "url": "https://github.com/jupyterlab/jupyterlab/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jupyterlab/jupyterlab.git"
+ },
+ "license": "BSD-3-Clause",
+ "author": "Project Jupyter",
+ "sideEffects": [
+ "style/**/*.css",
+ "style/index.js"
+ ],
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts",
+ "style": "style/index.css",
+ "directories": {
+ "lib": "lib/"
+ },
+ "files": [
+ "lib/*.d.ts",
+ "lib/*.js.map",
+ "lib/*.js",
+ "schema/*.json",
+ "style/**/*.css",
+ "style/index.js",
+ "src/**/*.{ts,tsx}"
+ ],
+ "scripts": {
+ "build": "tsc -b",
+ "clean": "rimraf lib && rimraf tsconfig.tsbuildinfo",
+ "watch": "tsc -b --watch"
+ },
+ "dependencies": {
+ "@jupyterlab/application": "^4.5.1",
+ "@jupyterlab/apputils": "^4.6.1",
+ "@jupyterlab/documentsearch": "^4.5.1",
+ "@jupyterlab/launcher": "^4.5.1",
+ "@jupyterlab/mainmenu": "^4.5.1",
+ "@jupyterlab/running": "^4.5.1",
+ "@jupyterlab/services": "^7.5.1",
+ "@jupyterlab/settingregistry": "^4.5.1",
+ "@jupyterlab/terminal": "^4.5.1",
+ "@jupyterlab/translation": "^4.5.1",
+ "@jupyterlab/ui-components": "^4.5.1",
+ "@lumino/widgets": "^2.7.2",
+ "@xterm/addon-search": "~0.15.0",
+ "color": "^5.0.0"
+ },
+ "devDependencies": {
+ "@types/webpack-env": "^1.18.0",
+ "rimraf": "~5.0.5",
+ "typescript": "~5.5.4"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "jupyterlab": {
+ "extension": true,
+ "schemaDir": "schema"
+ },
+ "styleModule": "style/index.js"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/terminal-extension/plugin.json b/share/jupyter/lab/schemas/@jupyterlab/terminal-extension/plugin.json
new file mode 100644
index 0000000..2d5632a
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/terminal-extension/plugin.json
@@ -0,0 +1,141 @@
+{
+ "jupyter.lab.setting-icon": "ui-components:terminal",
+ "jupyter.lab.setting-icon-label": "Terminal",
+ "jupyter.lab.menus": {
+ "context": [
+ {
+ "command": "terminal:copy",
+ "selector": ".jp-Terminal",
+ "rank": 1
+ },
+ {
+ "command": "terminal:paste",
+ "selector": ".jp-Terminal",
+ "rank": 2
+ },
+ {
+ "command": "terminal:refresh",
+ "selector": ".jp-Terminal",
+ "rank": 3
+ }
+ ]
+ },
+ "title": "Terminal",
+ "description": "Terminal settings.",
+ "definitions": {
+ "fontFamily": {
+ "type": "string"
+ },
+ "fontSize": {
+ "type": "integer",
+ "minimum": 9,
+ "maximum": 72
+ },
+ "lineHeight": {
+ "type": "number",
+ "minimum": 1.0
+ },
+ "theme": {
+ "enum": ["dark", "light", "inherit"]
+ },
+ "scrollback": {
+ "type": "number"
+ },
+ "pasteWithCtrlV": {
+ "type": "boolean"
+ },
+ "macOptionIsMeta": {
+ "type": "boolean"
+ }
+ },
+ "properties": {
+ "fontFamily": {
+ "title": "Font family",
+ "description": "The font family used to render text.",
+ "$ref": "#/definitions/fontFamily",
+ "default": "monospace"
+ },
+ "fontSize": {
+ "title": "Font size",
+ "description": "The font size used to render text.",
+ "$ref": "#/definitions/fontSize",
+ "default": 13
+ },
+ "lineHeight": {
+ "title": "Line height",
+ "description": "The line height used to render text.",
+ "$ref": "#/definitions/lineHeight",
+ "default": 1.0
+ },
+ "theme": {
+ "title": "Theme",
+ "description": "The theme for the terminal.",
+ "$ref": "#/definitions/theme",
+ "default": "inherit"
+ },
+ "screenReaderMode": {
+ "title": "Screen Reader Mode",
+ "description": "Add accessibility elements for use with screen readers.",
+ "type": "boolean",
+ "default": false
+ },
+ "scrollback": {
+ "title": "Scrollback Buffer",
+ "description": "The amount of scrollback beyond initial viewport",
+ "$ref": "#/definitions/lineHeight",
+ "default": 1000
+ },
+ "shutdownOnClose": {
+ "title": "Shut down on close",
+ "description": "Shut down the session when closing the terminal.",
+ "type": "boolean",
+ "default": false
+ },
+ "closeOnExit": {
+ "title": "Close on exit",
+ "description": "Close the widget when exiting the terminal.",
+ "type": "boolean",
+ "default": true
+ },
+ "pasteWithCtrlV": {
+ "title": "Paste with Ctrl+V",
+ "description": "Enable pasting with Ctrl+V. This can be disabled to use Ctrl+V in the vi editor, for instance. This setting has no effect on macOS, where Cmd+V is available",
+ "type": "boolean",
+ "default": true
+ },
+ "macOptionIsMeta": {
+ "title": "Treat option as meta key on macOS",
+ "description": "Option key on macOS can be used as meta key. This enables to use shortcuts such as option + f to move cursor forward one word",
+ "type": "boolean",
+ "default": false
+ },
+ "cursorBlink": {
+ "title": "Blinking cursor",
+ "description": "Whether to blink the cursor. Changes require reopening the terminal.",
+ "type": "boolean",
+ "default": true
+ },
+ "showStatusBarItem": {
+ "type": "string",
+ "title": "Show the status bar item",
+ "description": "Whether to show the running terminals item in the status bar",
+ "default": "if-any",
+ "oneOf": [
+ {
+ "const": "if-any",
+ "title": "Show if one or more"
+ },
+ {
+ "const": "always",
+ "title": "Always show"
+ },
+ {
+ "const": "never",
+ "title": "Don't show"
+ }
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/toc-extension/package.json.orig b/share/jupyter/lab/schemas/@jupyterlab/toc-extension/package.json.orig
new file mode 100644
index 0000000..8448389
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/toc-extension/package.json.orig
@@ -0,0 +1,61 @@
+{
+ "name": "@jupyterlab/toc-extension",
+ "version": "6.5.1",
+ "description": "JupyterLab - Table of Contents widget extension",
+ "keywords": [
+ "jupyter",
+ "jupyterlab",
+ "jupyterlab-extension"
+ ],
+ "homepage": "https://github.com/jupyterlab/jupyterlab",
+ "bugs": {
+ "url": "https://github.com/jupyterlab/jupyterlab/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jupyterlab/jupyterlab.git"
+ },
+ "license": "BSD-3-Clause",
+ "author": "Project Jupyter",
+ "sideEffects": [
+ "style/*.css",
+ "style/index.js"
+ ],
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts",
+ "style": "style/index.css",
+ "directories": {
+ "lib": "lib/"
+ },
+ "files": [
+ "lib/**/*.{d.ts,eot,gif,html,jpg,js,js.map,json,png,svg,woff2,ttf}",
+ "schema/*.json",
+ "style/**/*.{css,eot,gif,html,jpg,json,png,svg,woff2,ttf}",
+ "style/index.js",
+ "src/**/*.{ts,tsx}"
+ ],
+ "scripts": {
+ "build": "tsc -b",
+ "clean": "rimraf lib && rimraf tsconfig.tsbuildinfo",
+ "watch": "tsc -b --watch"
+ },
+ "dependencies": {
+ "@jupyterlab/application": "^4.5.1",
+ "@jupyterlab/settingregistry": "^4.5.1",
+ "@jupyterlab/toc": "^6.5.1",
+ "@jupyterlab/translation": "^4.5.1",
+ "@jupyterlab/ui-components": "^4.5.1"
+ },
+ "devDependencies": {
+ "rimraf": "~5.0.5",
+ "typescript": "~5.5.4"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "jupyterlab": {
+ "extension": true,
+ "schemaDir": "schema"
+ },
+ "styleModule": "style/index.js"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/toc-extension/registry.json b/share/jupyter/lab/schemas/@jupyterlab/toc-extension/registry.json
new file mode 100644
index 0000000..aeb56c4
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/toc-extension/registry.json
@@ -0,0 +1,72 @@
+{
+ "jupyter.lab.setting-icon": "ui-components:toc",
+ "jupyter.lab.setting-icon-label": "Table of Contents",
+ "title": "Table of Contents",
+ "description": "Default table of contents settings.",
+ "jupyter.lab.menus": {
+ "main": [
+ {
+ "id": "jp-mainmenu-view",
+ "items": [
+ {
+ "command": "toc:show-panel",
+ "rank": 4
+ }
+ ]
+ }
+ ],
+ "context": [
+ {
+ "command": "toc:run-cells",
+ "selector": ".jp-TableOfContents-content[data-document-type=\"notebook\"] .jp-tocItem"
+ }
+ ]
+ },
+ "jupyter.lab.shortcuts": [
+ {
+ "command": "toc:show-panel",
+ "keys": ["Accel Shift K"],
+ "selector": "body"
+ }
+ ],
+ "properties": {
+ "maximalDepth": {
+ "title": "Maximal headings depth",
+ "type": "integer",
+ "minimum": 1,
+ "default": 4
+ },
+ "numberingH1": {
+ "title": "Enable 1st headings numbering",
+ "description": "Whether to number first-level headings or not.",
+ "type": "boolean",
+ "default": true
+ },
+ "numberHeaders": {
+ "title": "Enable headings numbering",
+ "description": "Whether to automatically number the headings or not.",
+ "type": "boolean",
+ "default": false
+ },
+ "includeOutput": {
+ "title": "Include cell output in headings",
+ "description": "Whether to include cell output in headings or not.",
+ "type": "boolean",
+ "default": true
+ },
+ "syncCollapseState": {
+ "type": "boolean",
+ "title": "Synchronize collapse state",
+ "description": "If set to true, when a heading is collapsed in the table of contents the corresponding section in the document is collapsed as well and vice versa. This inhibits the cell output headings.",
+ "default": false
+ },
+ "baseNumbering": {
+ "title": "Base level for the highest headings",
+ "type": "integer",
+ "description": "The number headings start at.",
+ "default": 1
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/tooltip-extension/consoles.json b/share/jupyter/lab/schemas/@jupyterlab/tooltip-extension/consoles.json
new file mode 100644
index 0000000..e75d468
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/tooltip-extension/consoles.json
@@ -0,0 +1,19 @@
+{
+ "title": "Console Tooltips",
+ "description": "Console tooltip settings.",
+ "jupyter.lab.shortcuts": [
+ {
+ "command": "tooltip:dismiss",
+ "keys": ["Escape"],
+ "selector": "body.jp-mod-tooltip .jp-CodeConsole-promptCell"
+ },
+ {
+ "command": "tooltip:launch-console",
+ "keys": ["Shift Tab"],
+ "selector": ".jp-CodeConsole-promptCell .jp-InputArea-editor:not(.jp-mod-has-primary-selection):not(.jp-mod-in-leading-whitespace)"
+ }
+ ],
+ "properties": {},
+ "additionalProperties": false,
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/tooltip-extension/files.json b/share/jupyter/lab/schemas/@jupyterlab/tooltip-extension/files.json
new file mode 100644
index 0000000..d0d8449
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/tooltip-extension/files.json
@@ -0,0 +1,14 @@
+{
+ "title": "File Editor Tooltips",
+ "description": "File editor tooltip settings.",
+ "jupyter.lab.shortcuts": [
+ {
+ "command": "tooltip:launch-file",
+ "keys": ["Shift Tab"],
+ "selector": ".jp-FileEditor .jp-CodeMirrorEditor:not(.jp-mod-has-primary-selection):not(.jp-mod-in-leading-whitespace)"
+ }
+ ],
+ "properties": {},
+ "additionalProperties": false,
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/tooltip-extension/notebooks.json b/share/jupyter/lab/schemas/@jupyterlab/tooltip-extension/notebooks.json
new file mode 100644
index 0000000..137a137
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/tooltip-extension/notebooks.json
@@ -0,0 +1,19 @@
+{
+ "title": "Notebook Tooltips",
+ "description": "Notebook tooltip settings.",
+ "jupyter.lab.shortcuts": [
+ {
+ "command": "tooltip:dismiss",
+ "keys": ["Escape"],
+ "selector": "body.jp-mod-tooltip .jp-Notebook"
+ },
+ {
+ "command": "tooltip:launch-notebook",
+ "keys": ["Shift Tab"],
+ "selector": ".jp-Notebook.jp-mod-editMode .jp-InputArea-editor:not(.jp-mod-has-primary-selection):not(.jp-mod-in-leading-whitespace):not(.jp-mod-completer-active)"
+ }
+ ],
+ "properties": {},
+ "additionalProperties": false,
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/tooltip-extension/package.json.orig b/share/jupyter/lab/schemas/@jupyterlab/tooltip-extension/package.json.orig
new file mode 100644
index 0000000..51408a3
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/tooltip-extension/package.json.orig
@@ -0,0 +1,66 @@
+{
+ "name": "@jupyterlab/tooltip-extension",
+ "version": "4.5.1",
+ "description": "JupyterLab - Tooltip Extension",
+ "homepage": "https://github.com/jupyterlab/jupyterlab",
+ "bugs": {
+ "url": "https://github.com/jupyterlab/jupyterlab/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jupyterlab/jupyterlab.git"
+ },
+ "license": "BSD-3-Clause",
+ "author": "Project Jupyter",
+ "sideEffects": [
+ "style/**/*.css",
+ "style/index.js"
+ ],
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts",
+ "style": "style/index.css",
+ "directories": {
+ "lib": "lib/"
+ },
+ "files": [
+ "lib/*.d.ts",
+ "lib/*.js.map",
+ "lib/*.js",
+ "schema/*.json",
+ "style/**/*.css",
+ "style/index.js",
+ "src/**/*.{ts,tsx}"
+ ],
+ "scripts": {
+ "build": "tsc -b",
+ "clean": "rimraf lib && rimraf tsconfig.tsbuildinfo",
+ "watch": "tsc -b --watch"
+ },
+ "dependencies": {
+ "@jupyterlab/application": "^4.5.1",
+ "@jupyterlab/codeeditor": "^4.5.1",
+ "@jupyterlab/console": "^4.5.1",
+ "@jupyterlab/coreutils": "^6.5.1",
+ "@jupyterlab/fileeditor": "^4.5.1",
+ "@jupyterlab/notebook": "^4.5.1",
+ "@jupyterlab/rendermime": "^4.5.1",
+ "@jupyterlab/services": "^7.5.1",
+ "@jupyterlab/tooltip": "^4.5.1",
+ "@jupyterlab/translation": "^4.5.1",
+ "@lumino/algorithm": "^2.0.4",
+ "@lumino/coreutils": "^2.2.2",
+ "@lumino/widgets": "^2.7.2"
+ },
+ "devDependencies": {
+ "rimraf": "~5.0.5",
+ "typescript": "~5.5.4"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "jupyterlab": {
+ "extension": true,
+ "schemaDir": "schema"
+ },
+ "styleModule": "style/index.js"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/translation-extension/package.json.orig b/share/jupyter/lab/schemas/@jupyterlab/translation-extension/package.json.orig
new file mode 100644
index 0000000..270852a
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/translation-extension/package.json.orig
@@ -0,0 +1,58 @@
+{
+ "name": "@jupyterlab/translation-extension",
+ "version": "4.5.1",
+ "description": "JupyterLab - Translation services",
+ "keywords": [
+ "jupyter",
+ "jupyterlab",
+ "jupyterlab-extension"
+ ],
+ "homepage": "https://github.com/jupyterlab/jupyterlab",
+ "bugs": {
+ "url": "https://github.com/jupyterlab/jupyterlab/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jupyterlab/jupyterlab.git"
+ },
+ "license": "BSD-3-Clause",
+ "author": "Project Jupyter",
+ "sideEffects": [
+ "style/*.css",
+ "style/index.js"
+ ],
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts",
+ "style": "style/index.css",
+ "files": [
+ "lib/**/*.{d.ts,eot,gif,html,jpg,js,js.map,json,png,svg,woff2,ttf}",
+ "schema/**/*.{json,}",
+ "style/**/*.{css,eot,gif,html,jpg,json,png,svg,woff2,ttf}",
+ "style/index.js",
+ "src/**/*.{ts,tsx}"
+ ],
+ "scripts": {
+ "build": "tsc",
+ "clean": "rimraf lib tsconfig.tsbuildinfo",
+ "watch": "tsc -w"
+ },
+ "dependencies": {
+ "@jupyterlab/application": "^4.5.1",
+ "@jupyterlab/apputils": "^4.6.1",
+ "@jupyterlab/mainmenu": "^4.5.1",
+ "@jupyterlab/settingregistry": "^4.5.1",
+ "@jupyterlab/translation": "^4.5.1"
+ },
+ "devDependencies": {
+ "rimraf": "~5.0.5",
+ "typescript": "~5.5.4"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "jupyterlab": {
+ "extension": true,
+ "schemaDir": "schema"
+ },
+ "styleModule": "style/index.js"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/translation-extension/plugin.json b/share/jupyter/lab/schemas/@jupyterlab/translation-extension/plugin.json
new file mode 100644
index 0000000..15d3f58
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/translation-extension/plugin.json
@@ -0,0 +1,52 @@
+{
+ "jupyter.lab.setting-icon": "ui-components:settings",
+ "jupyter.lab.setting-icon-label": "Language",
+ "jupyter.lab.menus": {
+ "main": [
+ {
+ "id": "jp-mainmenu-settings",
+ "items": [
+ {
+ "type": "separator",
+ "rank": 1
+ },
+ {
+ "type": "submenu",
+ "rank": 1,
+ "submenu": {
+ "id": "jp-mainmenu-settings-language",
+ "label": "Language"
+ }
+ },
+ {
+ "type": "separator",
+ "rank": 1
+ }
+ ]
+ }
+ ]
+ },
+ "title": "Language",
+ "description": "Language settings.",
+ "type": "object",
+ "properties": {
+ "locale": {
+ "type": "string",
+ "title": "Language locale",
+ "description": "Set the interface display language. Examples: 'es_CO', 'fr_FR'. Set 'default' to use the server default locale. Requires corresponding language pack to be installed.",
+ "default": "default"
+ },
+ "stringsPrefix": {
+ "type": "string",
+ "title": "Localized strings prefix",
+ "description": "Add a prefix to localized strings.",
+ "default": "!!"
+ },
+ "displayStringsPrefix": {
+ "type": "boolean",
+ "title": "Display localized strings prefix",
+ "description": "Display the `stringsPrefix` on localized strings.",
+ "default": false
+ }
+ }
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/workspaces-extension/indicator.json b/share/jupyter/lab/schemas/@jupyterlab/workspaces-extension/indicator.json
new file mode 100644
index 0000000..91877c3
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/workspaces-extension/indicator.json
@@ -0,0 +1,37 @@
+{
+ "title": "Workspace Indicator",
+ "description": "Workspace Indicator Settings",
+ "jupyter.lab.toolbars": {
+ "TopBar": [
+ {
+ "name": "workspaceIndicator",
+ "rank": 1000,
+ "disabled": true
+ }
+ ]
+ },
+ "jupyter.lab.menus": {
+ "main": [
+ {
+ "id": "jp-mainmenu-view",
+ "items": [
+ {
+ "type": "submenu",
+ "submenu": {
+ "id": "jp-mainmenu-view-appearance",
+ "items": [
+ {
+ "command": "workspace-indicator:toggle",
+ "rank": 16
+ }
+ ]
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "properties": {},
+ "additionalProperties": false,
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/workspaces-extension/menu.json b/share/jupyter/lab/schemas/@jupyterlab/workspaces-extension/menu.json
new file mode 100644
index 0000000..1337877
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/workspaces-extension/menu.json
@@ -0,0 +1,70 @@
+{
+ "title": "Workspaces Menu",
+ "description": "Workspaces Menu",
+ "jupyter.lab.menus": {
+ "main": [
+ {
+ "id": "jp-mainmenu-file",
+ "items": [
+ {
+ "type": "submenu",
+ "rank": 10,
+ "submenu": {
+ "id": "jp-mainmenu-file-workspaces",
+ "label": "Workspaces",
+ "items": [
+ {
+ "command": "workspace-ui:open",
+ "rank": 0
+ },
+ {
+ "command": "workspace-ui:create-new",
+ "rank": 1
+ },
+ {
+ "command": "workspace-ui:clone",
+ "rank": 2
+ },
+ {
+ "command": "workspace-ui:rename",
+ "rank": 3
+ },
+ {
+ "command": "workspace-ui:save",
+ "rank": 4
+ },
+ {
+ "command": "workspace-ui:save-as",
+ "rank": 5
+ },
+ {
+ "command": "workspace-ui:import",
+ "rank": 6
+ },
+ {
+ "command": "workspace-ui:export",
+ "rank": 7
+ },
+ {
+ "type": "separator",
+ "rank": 8
+ },
+ {
+ "command": "workspace-ui:reset",
+ "rank": 9
+ },
+ {
+ "command": "workspace-ui:delete",
+ "rank": 10
+ }
+ ]
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "properties": {},
+ "additionalProperties": false,
+ "type": "object"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/workspaces-extension/package.json.orig b/share/jupyter/lab/schemas/@jupyterlab/workspaces-extension/package.json.orig
new file mode 100644
index 0000000..32ba119
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/workspaces-extension/package.json.orig
@@ -0,0 +1,64 @@
+{
+ "name": "@jupyterlab/workspaces-extension",
+ "version": "4.5.1",
+ "description": "JupyterLab Extension providing UI for workspace management",
+ "homepage": "https://github.com/jupyterlab/jupyterlab",
+ "bugs": {
+ "url": "https://github.com/jupyterlab/jupyterlab/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jupyterlab/jupyterlab.git"
+ },
+ "license": "BSD-3-Clause",
+ "author": "Project Jupyter",
+ "sideEffects": [
+ "style/**/*"
+ ],
+ "main": "lib/index.js",
+ "types": "lib/index.d.ts",
+ "style": "style/index.css",
+ "directories": {
+ "lib": "lib/"
+ },
+ "files": [
+ "lib/**/*.{d.ts,eot,gif,html,jpg,js,js.map,json,png,svg,woff2,ttf}",
+ "schema/*.json",
+ "style/**/*.{css,eot,gif,html,jpg,json,png,svg,woff2,ttf}",
+ "src/**/*.{ts,tsx}",
+ "style/index.js"
+ ],
+ "scripts": {
+ "build": "tsc -b",
+ "build:test": "tsc --build tsconfig.test.json",
+ "clean": "rimraf lib tsconfig.tsbuildinfo",
+ "watch": "tsc -b --watch"
+ },
+ "dependencies": {
+ "@jupyterlab/application": "^4.5.1",
+ "@jupyterlab/apputils": "^4.6.1",
+ "@jupyterlab/coreutils": "^6.5.1",
+ "@jupyterlab/filebrowser": "^4.5.1",
+ "@jupyterlab/running": "^4.5.1",
+ "@jupyterlab/services": "^7.5.1",
+ "@jupyterlab/settingregistry": "^4.5.1",
+ "@jupyterlab/statedb": "^4.5.1",
+ "@jupyterlab/translation": "^4.5.1",
+ "@jupyterlab/ui-components": "^4.5.1",
+ "@jupyterlab/workspaces": "^4.5.1",
+ "react": "^18.2.0"
+ },
+ "devDependencies": {
+ "@types/jest": "^29.2.0",
+ "rimraf": "~5.0.5",
+ "typescript": "~5.5.4"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "jupyterlab": {
+ "extension": true,
+ "schemaDir": "schema"
+ },
+ "styleModule": "style/index.js"
+}
diff --git a/share/jupyter/lab/schemas/@jupyterlab/workspaces-extension/sidebar.json b/share/jupyter/lab/schemas/@jupyterlab/workspaces-extension/sidebar.json
new file mode 100644
index 0000000..6fc7152
--- /dev/null
+++ b/share/jupyter/lab/schemas/@jupyterlab/workspaces-extension/sidebar.json
@@ -0,0 +1,51 @@
+{
+ "title": "Workspaces Sidebar",
+ "description": "Workspaces Sidebar",
+ "jupyter.lab.menus": {
+ "context": [
+ {
+ "command": "workspace-ui:clone",
+ "selector": ".jp-RunningSessions-item.jp-mod-workspace",
+ "rank": 0
+ },
+ {
+ "command": "workspace-ui:rename",
+ "selector": ".jp-RunningSessions-item.jp-mod-workspace",
+ "rank": 1
+ },
+ {
+ "command": "workspace-ui:reset",
+ "selector": ".jp-RunningSessions-item.jp-mod-workspace",
+ "rank": 2
+ },
+ {
+ "command": "workspace-ui:delete",
+ "selector": ".jp-RunningSessions-item.jp-mod-workspace",
+ "rank": 3
+ },
+ {
+ "command": "workspace-ui:export",
+ "selector": ".jp-RunningSessions-item.jp-mod-workspace",
+ "rank": 4
+ },
+ {
+ "type": "separator",
+ "selector": ".jp-RunningSessions-item.jp-mod-workspace",
+ "rank": 5
+ },
+ {
+ "command": "workspace-ui:import",
+ "selector": ".jp-RunningSessions-section:has(.jp-mod-workspace)",
+ "rank": 6
+ },
+ {
+ "command": "workspace-ui:create-new",
+ "selector": ".jp-RunningSessions-section:has(.jp-mod-workspace)",
+ "rank": 7
+ }
+ ]
+ },
+ "properties": {},
+ "additionalProperties": false,
+ "type": "object"
+}
diff --git a/share/jupyter/lab/static/100.1d14ca44a3cc8849349f.js b/share/jupyter/lab/static/100.1d14ca44a3cc8849349f.js
new file mode 100644
index 0000000..7327c9a
--- /dev/null
+++ b/share/jupyter/lab/static/100.1d14ca44a3cc8849349f.js
@@ -0,0 +1 @@
+"use strict";(self["webpackChunk_jupyterlab_application_top"]=self["webpackChunk_jupyterlab_application_top"]||[]).push([[100,5338,2957],{5338:(a,e,t)=>{var p;var r=t(86672);if(true){e.H=r.createRoot;p=r.hydrateRoot}else{var o}}}]);
\ No newline at end of file
diff --git a/share/jupyter/lab/static/1039.3fe94e87219c0ed159d3.js b/share/jupyter/lab/static/1039.3fe94e87219c0ed159d3.js
new file mode 100644
index 0000000..043513c
--- /dev/null
+++ b/share/jupyter/lab/static/1039.3fe94e87219c0ed159d3.js
@@ -0,0 +1 @@
+"use strict";(self["webpackChunk_jupyterlab_application_top"]=self["webpackChunk_jupyterlab_application_top"]||[]).push([[1039],{71471:(t,e)=>{Object.defineProperty(e,"__esModule",{value:true});e.VERSION=void 0;e.VERSION="3.2.2"},29796:function(t,e,r){var n=this&&this.__extends||function(){var t=function(e,r){t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]};return t(e,r)};return function(e,r){if(typeof r!=="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();var o=this&&this.__values||function(t){var e=typeof Symbol==="function"&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&typeof t.length==="number")return{next:function(){if(t&&n>=t.length)t=void 0;return{value:t&&t[n++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:true});e.HandlerList=void 0;var i=r(82776);var a=function(t){n(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}e.prototype.register=function(t){return this.add(t,t.priority)};e.prototype.unregister=function(t){this.remove(t)};e.prototype.handlesDocument=function(t){var e,r;try{for(var n=o(this),i=n.next();!i.done;i=n.next()){var a=i.value;var u=a.item;if(u.handlesDocument(t)){return u}}}catch(s){e={error:s}}finally{try{if(i&&!i.done&&(r=n.return))r.call(n)}finally{if(e)throw e.error}}throw new Error("Can't find handler for document")};e.prototype.document=function(t,e){if(e===void 0){e=null}return this.handlesDocument(t).create(t,e)};return e}(i.PrioritizedList);e.HandlerList=a},81039:(t,e,r)=>{Object.defineProperty(e,"__esModule",{value:true});e.mathjax=void 0;var n=r(71471);var o=r(29796);var i=r(9841);e.mathjax={version:n.VERSION,handlers:new o.HandlerList,document:function(t,r){return e.mathjax.handlers.document(t,r)},handleRetriesFor:i.handleRetriesFor,retryAfter:i.retryAfter,asyncLoad:null}},82776:(t,e)=>{Object.defineProperty(e,"__esModule",{value:true});e.PrioritizedList=void 0;var r=function(){function t(){this.items=[];this.items=[]}t.prototype[Symbol.iterator]=function(){var t=0;var e=this.items;return{next:function(){return{value:e[t++],done:t>e.length}}}};t.prototype.add=function(e,r){if(r===void 0){r=t.DEFAULTPRIORITY}var n=this.items.length;do{n--}while(n>=0&&r=0&&this.items[e].item!==t);if(e>=0){this.items.splice(e,1)}};t.DEFAULTPRIORITY=5;return t}();e.PrioritizedList=r},9841:(t,e)=>{Object.defineProperty(e,"__esModule",{value:true});e.retryAfter=e.handleRetriesFor=void 0;function r(t){return new Promise((function e(r,n){try{r(t())}catch(o){if(o.retry&&o.retry instanceof Promise){o.retry.then((function(){return e(r,n)})).catch((function(t){return n(t)}))}else if(o.restart&&o.restart.isCallback){MathJax.Callback.After((function(){return e(r,n)}),o.restart)}else{n(o)}}}))}e.handleRetriesFor=r;function n(t){var e=new Error("MathJax retry");e.retry=t;throw e}e.retryAfter=n}}]);
\ No newline at end of file
diff --git a/share/jupyter/lab/static/1042.37576ba0f95d869bc96f.js b/share/jupyter/lab/static/1042.37576ba0f95d869bc96f.js
new file mode 100644
index 0000000..ed0ab93
--- /dev/null
+++ b/share/jupyter/lab/static/1042.37576ba0f95d869bc96f.js
@@ -0,0 +1 @@
+"use strict";(self["webpackChunk_jupyterlab_application_top"]=self["webpackChunk_jupyterlab_application_top"]||[]).push([[1042],{46884:(e,t,n)=>{n.d(t,{A:()=>r});var i=n(70416);var s=n(1218);var r=(0,i.K2)(((e,t)=>{let n;if(t==="sandbox"){n=(0,s.Ltv)("#i"+e)}const i=t==="sandbox"?(0,s.Ltv)(n.nodes()[0].contentDocument.body):(0,s.Ltv)("body");const r=i.select(`[id="${e}"]`);return r}),"getDiagramElement")},47925:(e,t,n)=>{n.d(t,{P:()=>r});var i=n(42418);var s=n(70416);var r=(0,s.K2)(((e,t,n,r)=>{e.attr("class",n);const{width:c,height:l,x:h,y:d}=o(e,t);(0,i.a$)(e,l,c,r);const u=a(h,d,c,l,t);e.attr("viewBox",u);s.Rm.debug(`viewBox configured: ${u} with padding: ${t}`)}),"setupViewPortForSVG");var o=(0,s.K2)(((e,t)=>{const n=e.node()?.getBBox()||{width:0,height:0,x:0,y:0};return{width:n.width+t*2,height:n.height+t*2,x:n.x,y:n.y}}),"calculateDimensionsWithPadding");var a=(0,s.K2)(((e,t,n,i,s)=>`${e-s} ${t-s} ${n} ${i}`),"createViewBox")},41042:(e,t,n)=>{n.d(t,{diagram:()=>P});var i=n(46884);var s=n(47925);var r=n(78188);var o=n(25301);var a=n(46103);var c=n(47655);var l=n(15164);var h=n(55750);var d=n(95035);var u=n(29131);var g=n(42418);var p=n(70416);const y=typeof crypto!=="undefined"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto);const f={randomUUID:y};let m;const b=new Uint8Array(16);function E(){if(!m){if(typeof crypto==="undefined"||!crypto.getRandomValues){throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported")}m=crypto.getRandomValues.bind(crypto)}return m(b)}const _=[];for(let B=0;B<256;++B){_.push((B+256).toString(16).slice(1))}function k(e,t=0){return(_[e[t+0]]+_[e[t+1]]+_[e[t+2]]+_[e[t+3]]+"-"+_[e[t+4]]+_[e[t+5]]+"-"+_[e[t+6]]+_[e[t+7]]+"-"+_[e[t+8]]+_[e[t+9]]+"-"+_[e[t+10]]+_[e[t+11]]+_[e[t+12]]+_[e[t+13]]+_[e[t+14]]+_[e[t+15]]).toLowerCase()}function v(e,t=0){const n=k(e,t);if(!validate(n)){throw TypeError("Stringified UUID is invalid")}return n}const D=null&&v;function S(e,t,n){if(f.randomUUID&&!t&&!e){return f.randomUUID()}e=e||{};const i=e.random??e.rng?.()??E();if(i.length<16){throw new Error("Random bytes length must be >= 16")}i[6]=i[6]&15|64;i[8]=i[8]&63|128;if(t){n=n||0;if(n<0||n+16>t.length){throw new RangeError(`UUID byte range ${n}:${n+15} is out of buffer bounds`)}for(let e=0;e<16;++e){t[n+e]=i[e]}return t}return k(i)}const N=S;var L=n(63170);var x=n(77470);var I=n(48750);var O=function(){var e=(0,p.K2)((function(e,t,n,i){for(n=n||{},i=e.length;i--;n[e[i]]=t);return n}),"o"),t=[1,4],n=[1,13],i=[1,12],s=[1,15],r=[1,16],o=[1,20],a=[1,19],c=[6,7,8],l=[1,26],h=[1,24],d=[1,25],u=[6,7,11],g=[1,6,13,15,16,19,22],y=[1,33],f=[1,34],m=[1,6,7,11,13,15,16,19,22];var b={trace:(0,p.K2)((function e(){}),"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,MINDMAP:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,ICON:15,CLASS:16,nodeWithId:17,nodeWithoutId:18,NODE_DSTART:19,NODE_DESCR:20,NODE_DEND:21,NODE_ID:22,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"MINDMAP",11:"EOF",13:"SPACELIST",15:"ICON",16:"CLASS",19:"NODE_DSTART",20:"NODE_DESCR",21:"NODE_DEND",22:"NODE_ID"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[18,3],[17,1],[17,4]],performAction:(0,p.K2)((function e(t,n,i,s,r,o,a){var c=o.length-1;switch(r){case 6:case 7:return s;break;case 8:s.getLogger().trace("Stop NL ");break;case 9:s.getLogger().trace("Stop EOF ");break;case 11:s.getLogger().trace("Stop NL2 ");break;case 12:s.getLogger().trace("Stop EOF2 ");break;case 15:s.getLogger().info("Node: ",o[c].id);s.addNode(o[c-1].length,o[c].id,o[c].descr,o[c].type);break;case 16:s.getLogger().trace("Icon: ",o[c]);s.decorateNode({icon:o[c]});break;case 17:case 21:s.decorateNode({class:o[c]});break;case 18:s.getLogger().trace("SPACELIST");break;case 19:s.getLogger().trace("Node: ",o[c].id);s.addNode(0,o[c].id,o[c].descr,o[c].type);break;case 20:s.decorateNode({icon:o[c]});break;case 25:s.getLogger().trace("node found ..",o[c-2]);this.$={id:o[c-1],descr:o[c-1],type:s.getType(o[c-2],o[c])};break;case 26:this.$={id:o[c],descr:o[c],type:s.nodeType.DEFAULT};break;case 27:s.getLogger().trace("node found ..",o[c-3]);this.$={id:o[c-3],descr:o[c-1],type:s.getType(o[c-2],o[c])};break}}),"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:t},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:t},{6:n,7:[1,10],9:9,12:11,13:i,14:14,15:s,16:r,17:17,18:18,19:o,22:a},e(c,[2,3]),{1:[2,2]},e(c,[2,4]),e(c,[2,5]),{1:[2,6],6:n,12:21,13:i,14:14,15:s,16:r,17:17,18:18,19:o,22:a},{6:n,9:22,12:11,13:i,14:14,15:s,16:r,17:17,18:18,19:o,22:a},{6:l,7:h,10:23,11:d},e(u,[2,22],{17:17,18:18,14:27,15:[1,28],16:[1,29],19:o,22:a}),e(u,[2,18]),e(u,[2,19]),e(u,[2,20]),e(u,[2,21]),e(u,[2,23]),e(u,[2,24]),e(u,[2,26],{19:[1,30]}),{20:[1,31]},{6:l,7:h,10:32,11:d},{1:[2,7],6:n,12:21,13:i,14:14,15:s,16:r,17:17,18:18,19:o,22:a},e(g,[2,14],{7:y,11:f}),e(m,[2,8]),e(m,[2,9]),e(m,[2,10]),e(u,[2,15]),e(u,[2,16]),e(u,[2,17]),{20:[1,35]},{21:[1,36]},e(g,[2,13],{7:y,11:f}),e(m,[2,11]),e(m,[2,12]),{21:[1,37]},e(u,[2,25]),e(u,[2,27])],defaultActions:{2:[2,1],6:[2,2]},parseError:(0,p.K2)((function e(t,n){if(n.recoverable){this.trace(t)}else{var i=new Error(t);i.hash=n;throw i}}),"parseError"),parse:(0,p.K2)((function e(t){var n=this,i=[0],s=[],r=[null],o=[],a=this.table,c="",l=0,h=0,d=0,u=2,g=1;var y=o.slice.call(arguments,1);var f=Object.create(this.lexer);var m={yy:{}};for(var b in this.yy){if(Object.prototype.hasOwnProperty.call(this.yy,b)){m.yy[b]=this.yy[b]}}f.setInput(t,m.yy);m.yy.lexer=f;m.yy.parser=this;if(typeof f.yylloc=="undefined"){f.yylloc={}}var E=f.yylloc;o.push(E);var _=f.options&&f.options.ranges;if(typeof m.yy.parseError==="function"){this.parseError=m.yy.parseError}else{this.parseError=Object.getPrototypeOf(this).parseError}function k(e){i.length=i.length-2*e;r.length=r.length-e;o.length=o.length-e}(0,p.K2)(k,"popStack");function v(){var e;e=s.pop()||f.lex()||g;if(typeof e!=="number"){if(e instanceof Array){s=e;e=s.pop()}e=n.symbols_[e]||e}return e}(0,p.K2)(v,"lex");var D,S,N,L,x,I,O={},T,w,C,R;while(true){N=i[i.length-1];if(this.defaultActions[N]){L=this.defaultActions[N]}else{if(D===null||typeof D=="undefined"){D=v()}L=a[N]&&a[N][D]}if(typeof L==="undefined"||!L.length||!L[0]){var $="";R=[];for(T in a[N]){if(this.terminals_[T]&&T>u){R.push("'"+this.terminals_[T]+"'")}}if(f.showPosition){$="Parse error on line "+(l+1)+":\n"+f.showPosition()+"\nExpecting "+R.join(", ")+", got '"+(this.terminals_[D]||D)+"'"}else{$="Parse error on line "+(l+1)+": Unexpected "+(D==g?"end of input":"'"+(this.terminals_[D]||D)+"'")}this.parseError($,{text:f.match,token:this.terminals_[D]||D,line:f.yylineno,loc:E,expected:R})}if(L[0]instanceof Array&&L.length>1){throw new Error("Parse Error: multiple actions possible at state: "+N+", token: "+D)}switch(L[0]){case 1:i.push(D);r.push(f.yytext);o.push(f.yylloc);i.push(L[1]);D=null;if(!S){h=f.yyleng;c=f.yytext;l=f.yylineno;E=f.yylloc;if(d>0){d--}}else{D=S;S=null}break;case 2:w=this.productions_[L[1]][1];O.$=r[r.length-w];O._$={first_line:o[o.length-(w||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(w||1)].first_column,last_column:o[o.length-1].last_column};if(_){O._$.range=[o[o.length-(w||1)].range[0],o[o.length-1].range[1]]}I=this.performAction.apply(O,[c,h,l,m.yy,L[1],r,o].concat(y));if(typeof I!=="undefined"){return I}if(w){i=i.slice(0,-1*w*2);r=r.slice(0,-1*w);o=o.slice(0,-1*w)}i.push(this.productions_[L[1]][0]);r.push(O.$);o.push(O._$);C=a[i[i.length-2]][i[i.length-1]];i.push(C);break;case 3:return true}}return true}),"parse")};var E=function(){var e={EOF:1,parseError:(0,p.K2)((function e(t,n){if(this.yy.parser){this.yy.parser.parseError(t,n)}else{throw new Error(t)}}),"parseError"),setInput:(0,p.K2)((function(e,t){this.yy=t||this.yy||{};this._input=e;this._more=this._backtrack=this.done=false;this.yylineno=this.yyleng=0;this.yytext=this.matched=this.match="";this.conditionStack=["INITIAL"];this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0};if(this.options.ranges){this.yylloc.range=[0,0]}this.offset=0;return this}),"setInput"),input:(0,p.K2)((function(){var e=this._input[0];this.yytext+=e;this.yyleng++;this.offset++;this.match+=e;this.matched+=e;var t=e.match(/(?:\r\n?|\n).*/g);if(t){this.yylineno++;this.yylloc.last_line++}else{this.yylloc.last_column++}if(this.options.ranges){this.yylloc.range[1]++}this._input=this._input.slice(1);return e}),"input"),unput:(0,p.K2)((function(e){var t=e.length;var n=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input;this.yytext=this.yytext.substr(0,this.yytext.length-t);this.offset-=t;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1);this.matched=this.matched.substr(0,this.matched.length-1);if(n.length-1){this.yylineno-=n.length-1}var s=this.yylloc.range;this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-t};if(this.options.ranges){this.yylloc.range=[s[0],s[0]+this.yyleng-t]}this.yyleng=this.yytext.length;return this}),"unput"),more:(0,p.K2)((function(){this._more=true;return this}),"more"),reject:(0,p.K2)((function(){if(this.options.backtrack_lexer){this._backtrack=true}else{return this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}return this}),"reject"),less:(0,p.K2)((function(e){this.unput(this.match.slice(e))}),"less"),pastInput:(0,p.K2)((function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")}),"pastInput"),upcomingInput:(0,p.K2)((function(){var e=this.match;if(e.length<20){e+=this._input.substr(0,20-e.length)}return(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")}),"upcomingInput"),showPosition:(0,p.K2)((function(){var e=this.pastInput();var t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"}),"showPosition"),test_match:(0,p.K2)((function(e,t){var n,i,s;if(this.options.backtrack_lexer){s={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done};if(this.options.ranges){s.yylloc.range=this.yylloc.range.slice(0)}}i=e[0].match(/(?:\r\n?|\n).*/g);if(i){this.yylineno+=i.length}this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length};this.yytext+=e[0];this.match+=e[0];this.matches=e;this.yyleng=this.yytext.length;if(this.options.ranges){this.yylloc.range=[this.offset,this.offset+=this.yyleng]}this._more=false;this._backtrack=false;this._input=this._input.slice(e[0].length);this.matched+=e[0];n=this.performAction.call(this,this.yy,this,t,this.conditionStack[this.conditionStack.length-1]);if(this.done&&this._input){this.done=false}if(n){return n}else if(this._backtrack){for(var r in s){this[r]=s[r]}return false}return false}),"test_match"),next:(0,p.K2)((function(){if(this.done){return this.EOF}if(!this._input){this.done=true}var e,t,n,i;if(!this._more){this.yytext="";this.match=""}var s=this._currentRules();for(var r=0;rt[0].length)){t=n;i=r;if(this.options.backtrack_lexer){e=this.test_match(n,s[r]);if(e!==false){return e}else if(this._backtrack){t=false;continue}else{return false}}else if(!this.options.flex){break}}}if(t){e=this.test_match(t,s[i]);if(e!==false){return e}return false}if(this._input===""){return this.EOF}else{return this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}}),"next"),lex:(0,p.K2)((function e(){var t=this.next();if(t){return t}else{return this.lex()}}),"lex"),begin:(0,p.K2)((function e(t){this.conditionStack.push(t)}),"begin"),popState:(0,p.K2)((function e(){var t=this.conditionStack.length-1;if(t>0){return this.conditionStack.pop()}else{return this.conditionStack[0]}}),"popState"),_currentRules:(0,p.K2)((function e(){if(this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules}else{return this.conditions["INITIAL"].rules}}),"_currentRules"),topState:(0,p.K2)((function e(t){t=this.conditionStack.length-1-Math.abs(t||0);if(t>=0){return this.conditionStack[t]}else{return"INITIAL"}}),"topState"),pushState:(0,p.K2)((function e(t){this.begin(t)}),"pushState"),stateStackSize:(0,p.K2)((function e(){return this.conditionStack.length}),"stateStackSize"),options:{"case-insensitive":true},performAction:(0,p.K2)((function e(t,n,i,s){var r=s;switch(i){case 0:t.getLogger().trace("Found comment",n.yytext);return 6;break;case 1:return 8;break;case 2:this.begin("CLASS");break;case 3:this.popState();return 16;break;case 4:this.popState();break;case 5:t.getLogger().trace("Begin icon");this.begin("ICON");break;case 6:t.getLogger().trace("SPACELINE");return 6;break;case 7:return 7;break;case 8:return 15;break;case 9:t.getLogger().trace("end icon");this.popState();break;case 10:t.getLogger().trace("Exploding node");this.begin("NODE");return 19;break;case 11:t.getLogger().trace("Cloud");this.begin("NODE");return 19;break;case 12:t.getLogger().trace("Explosion Bang");this.begin("NODE");return 19;break;case 13:t.getLogger().trace("Cloud Bang");this.begin("NODE");return 19;break;case 14:this.begin("NODE");return 19;break;case 15:this.begin("NODE");return 19;break;case 16:this.begin("NODE");return 19;break;case 17:this.begin("NODE");return 19;break;case 18:return 13;break;case 19:return 22;break;case 20:return 11;break;case 21:this.begin("NSTR2");break;case 22:return"NODE_DESCR";break;case 23:this.popState();break;case 24:t.getLogger().trace("Starting NSTR");this.begin("NSTR");break;case 25:t.getLogger().trace("description:",n.yytext);return"NODE_DESCR";break;case 26:this.popState();break;case 27:this.popState();t.getLogger().trace("node end ))");return"NODE_DEND";break;case 28:this.popState();t.getLogger().trace("node end )");return"NODE_DEND";break;case 29:this.popState();t.getLogger().trace("node end ...",n.yytext);return"NODE_DEND";break;case 30:this.popState();t.getLogger().trace("node end ((");return"NODE_DEND";break;case 31:this.popState();t.getLogger().trace("node end (-");return"NODE_DEND";break;case 32:this.popState();t.getLogger().trace("node end (-");return"NODE_DEND";break;case 33:this.popState();t.getLogger().trace("node end ((");return"NODE_DEND";break;case 34:this.popState();t.getLogger().trace("node end ((");return"NODE_DEND";break;case 35:t.getLogger().trace("Long description:",n.yytext);return 20;break;case 36:t.getLogger().trace("Long description:",n.yytext);return 20;break}}),"anonymous"),rules:[/^(?:\s*%%.*)/i,/^(?:mindmap\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{CLASS:{rules:[3,4],inclusive:false},ICON:{rules:[8,9],inclusive:false},NSTR2:{rules:[22,23],inclusive:false},NSTR:{rules:[25,26],inclusive:false},NODE:{rules:[21,24,27,28,29,30,31,32,33,34,35,36],inclusive:false},INITIAL:{rules:[0,1,2,5,6,7,10,11,12,13,14,15,16,17,18,19,20],inclusive:true}}};return e}();b.lexer=E;function _(){this.yy={}}(0,p.K2)(_,"Parser");_.prototype=b;b.Parser=_;return new _}();O.parser=O;var T=O;var w={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6};var C=class{constructor(){this.nodes=[];this.count=0;this.elements={};this.getLogger=this.getLogger.bind(this);this.nodeType=w;this.clear();this.getType=this.getType.bind(this);this.getElementById=this.getElementById.bind(this);this.getParent=this.getParent.bind(this);this.getMindmap=this.getMindmap.bind(this);this.addNode=this.addNode.bind(this);this.decorateNode=this.decorateNode.bind(this)}static{(0,p.K2)(this,"MindmapDB")}clear(){this.nodes=[];this.count=0;this.elements={};this.baseLevel=void 0}getParent(e){for(let t=this.nodes.length-1;t>=0;t--){if(this.nodes[t].level0?this.nodes[0]:null}addNode(e,t,n,i){p.Rm.info("addNode",e,t,n,i);let s=false;if(this.nodes.length===0){this.baseLevel=e;e=0;s=true}else if(this.baseLevel!==void 0){e=e-this.baseLevel;s=false}const r=(0,g.D7)();let o=r.mindmap?.padding??g.UI.mindmap.padding;switch(i){case this.nodeType.ROUNDED_RECT:case this.nodeType.RECT:case this.nodeType.HEXAGON:o*=2;break}const a={id:this.count++,nodeId:(0,g.jZ)(t,r),level:e,descr:(0,g.jZ)(n,r),type:i,children:[],width:r.mindmap?.maxNodeWidth??g.UI.mindmap.maxNodeWidth,padding:o,isRoot:s};const c=this.getParent(e);if(c){c.children.push(a);this.nodes.push(a)}else{if(s){this.nodes.push(a)}else{throw new Error(`There can be only one root. No parent could be found for ("${a.descr}")`)}}}getType(e,t){p.Rm.debug("In get type",e,t);switch(e){case"[":return this.nodeType.RECT;case"(":return t===")"?this.nodeType.ROUNDED_RECT:this.nodeType.CLOUD;case"((":return this.nodeType.CIRCLE;case")":return this.nodeType.CLOUD;case"))":return this.nodeType.BANG;case"{{":return this.nodeType.HEXAGON;default:return this.nodeType.DEFAULT}}setElementForId(e,t){this.elements[e]=t}getElementById(e){return this.elements[e]}decorateNode(e){if(!e){return}const t=(0,g.D7)();const n=this.nodes[this.nodes.length-1];if(e.icon){n.icon=(0,g.jZ)(e.icon,t)}if(e.class){n.class=(0,g.jZ)(e.class,t)}}type2Str(e){switch(e){case this.nodeType.DEFAULT:return"no-border";case this.nodeType.RECT:return"rect";case this.nodeType.ROUNDED_RECT:return"rounded-rect";case this.nodeType.CIRCLE:return"circle";case this.nodeType.CLOUD:return"cloud";case this.nodeType.BANG:return"bang";case this.nodeType.HEXAGON:return"hexgon";default:return"no-border"}}assignSections(e,t){if(e.level===0){e.section=void 0}else{e.section=t}if(e.children){for(const[n,i]of e.children.entries()){const s=e.level===0?n:t;this.assignSections(i,s)}}}flattenNodes(e,t){const n=["mindmap-node"];if(e.isRoot===true){n.push("section-root","section--1")}else if(e.section!==void 0){n.push(`section-${e.section}`)}if(e.class){n.push(e.class)}const i=n.join(" ");const s=(0,p.K2)((e=>{switch(e){case w.CIRCLE:return"mindmapCircle";case w.RECT:return"rect";case w.ROUNDED_RECT:return"rounded";case w.CLOUD:return"cloud";case w.BANG:return"bang";case w.HEXAGON:return"hexagon";case w.DEFAULT:return"defaultMindmapNode";case w.NO_BORDER:default:return"rect"}}),"getShapeFromType");const r={id:e.id.toString(),domId:"node_"+e.id.toString(),label:e.descr,isGroup:false,shape:s(e.type),width:e.width,height:e.height??0,padding:e.padding,cssClasses:i,cssStyles:[],look:"default",icon:e.icon,x:e.x,y:e.y,level:e.level,nodeId:e.nodeId,type:e.type,section:e.section};t.push(r);if(e.children){for(const n of e.children){this.flattenNodes(n,t)}}}generateEdges(e,t){if(!e.children){return}for(const n of e.children){let i="edge";if(n.section!==void 0){i+=` section-edge-${n.section}`}const s=e.level+1;i+=` edge-depth-${s}`;const r={id:`edge_${e.id}_${n.id}`,start:e.id.toString(),end:n.id.toString(),type:"normal",curve:"basis",thickness:"normal",look:"default",classes:i,depth:e.level,section:n.section};t.push(r);this.generateEdges(n,t)}}getData(){const e=this.getMindmap();const t=(0,g.D7)();const n=(0,g.TM)();const i=n.layout!==void 0;const s=t;if(!i){s.layout="cose-bilkent"}if(!e){return{nodes:[],edges:[],config:s}}p.Rm.debug("getData: mindmapRoot",e,t);this.assignSections(e);const r=[];const o=[];this.flattenNodes(e,r);this.generateEdges(e,o);p.Rm.debug(`getData: processed ${r.length} nodes and ${o.length} edges`);const a=new Map;for(const c of r){a.set(c.id,{shape:c.shape,width:c.width,height:c.height,padding:c.padding})}return{nodes:r,edges:o,config:s,rootNode:e,markers:["point"],direction:"TB",nodeSpacing:50,rankSpacing:50,shapes:Object.fromEntries(a),type:"mindmap",diagramId:"mindmap-"+N()}}getLogger(){return p.Rm}};var R=(0,p.K2)((async(e,t,n,o)=>{p.Rm.debug("Rendering mindmap diagram\n"+e);const a=o.db;const c=a.getData();const l=(0,i.A)(t,c.config.securityLevel);c.type=o.type;c.layoutAlgorithm=(0,r.q7)(c.config.layout,{fallback:"cose-bilkent"});c.diagramId=t;const h=a.getMindmap();if(!h){return}c.nodes.forEach((e=>{if(e.shape==="rounded"){e.radius=15;e.taper=15;e.stroke="none";e.width=0;e.padding=15}else if(e.shape==="circle"){e.padding=10}else if(e.shape==="rect"){e.width=0;e.padding=10}}));await(0,r.XX)(c,l);(0,s.P)(l,c.config.mindmap?.padding??g.UI.mindmap.padding,"mindmapDiagram",c.config.mindmap?.useMaxWidth??g.UI.mindmap.useMaxWidth)}),"draw");var $={draw:R};var A=(0,p.K2)((e=>{let t="";for(let n=0;n`\n .edge {\n stroke-width: 3;\n }\n ${A(e)}\n .section-root rect, .section-root path, .section-root circle, .section-root polygon {\n fill: ${e.git0};\n }\n .section-root text {\n fill: ${e.gitBranchLabel0};\n }\n .section-root span {\n color: ${e.gitBranchLabel0};\n }\n .section-2 span {\n color: ${e.gitBranchLabel0};\n }\n .icon-container {\n height:100%;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .edge {\n fill: none;\n }\n .mindmap-node-label {\n dy: 1em;\n alignment-baseline: middle;\n text-anchor: middle;\n dominant-baseline: middle;\n text-align: center;\n }\n`),"getStyles");var U=K;var P={get db(){return new C},renderer:$,parser:T,styles:U}}}]);
\ No newline at end of file
diff --git a/share/jupyter/lab/static/1096.dd4c563e0483cbbeb9c9.js b/share/jupyter/lab/static/1096.dd4c563e0483cbbeb9c9.js
new file mode 100644
index 0000000..d3d3b3e
--- /dev/null
+++ b/share/jupyter/lab/static/1096.dd4c563e0483cbbeb9c9.js
@@ -0,0 +1 @@
+"use strict";(self["webpackChunk_jupyterlab_application_top"]=self["webpackChunk_jupyterlab_application_top"]||[]).push([[1096],{80815:(e,f,o)=>{o.d(f,{A:()=>H});var t=o(31601);var n=o.n(t);var a=o(76314);var r=o.n(a);var c=o(4417);var i=o.n(c);var b=new URL(o(16811),o.b);var s=new URL(o(92459),o.b);var l=new URL(o(14451),o.b);var d=new URL(o(84189),o.b);var m=new URL(o(17868),o.b);var p=new URL(o(45425),o.b);var h=new URL(o(73321),o.b);var u=new URL(o(17129),o.b);var g=new URL(o(2539),o.b);var w=new URL(o(27740),o.b);var y=new URL(o(3537),o.b);var v=new URL(o(63369),o.b);var x=new URL(o(21833),o.b);var F=new URL(o(60651),o.b);var k=new URL(o(37800),o.b);var _=r()(n());var A=i()(b);var T=i()(b,{hash:"?#iefix"});var q=i()(s);var I=i()(l);var z=i()(d);var B=i()(m,{hash:"#fontawesome"});var O=i()(p);var R=i()(p,{hash:"?#iefix"});var j=i()(h);var L=i()(u);var E=i()(g);var S=i()(w,{hash:"#fontawesome"});var C=i()(y);var N=i()(y,{hash:"?#iefix"});var U=i()(v);var D=i()(x);var M=i()(F);var X=i()(k,{hash:"#fontawesome"});_.push([e.id,'/*!\n * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\n.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.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-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\\f26e"}.fa-accessible-icon:before{content:"\\f368"}.fa-accusoft:before{content:"\\f369"}.fa-acquisitions-incorporated:before{content:"\\f6af"}.fa-ad:before{content:"\\f641"}.fa-address-book:before{content:"\\f2b9"}.fa-address-card:before{content:"\\f2bb"}.fa-adjust:before{content:"\\f042"}.fa-adn:before{content:"\\f170"}.fa-adversal:before{content:"\\f36a"}.fa-affiliatetheme:before{content:"\\f36b"}.fa-air-freshener:before{content:"\\f5d0"}.fa-airbnb:before{content:"\\f834"}.fa-algolia:before{content:"\\f36c"}.fa-align-center:before{content:"\\f037"}.fa-align-justify:before{content:"\\f039"}.fa-align-left:before{content:"\\f036"}.fa-align-right:before{content:"\\f038"}.fa-alipay:before{content:"\\f642"}.fa-allergies:before{content:"\\f461"}.fa-amazon:before{content:"\\f270"}.fa-amazon-pay:before{content:"\\f42c"}.fa-ambulance:before{content:"\\f0f9"}.fa-american-sign-language-interpreting:before{content:"\\f2a3"}.fa-amilia:before{content:"\\f36d"}.fa-anchor:before{content:"\\f13d"}.fa-android:before{content:"\\f17b"}.fa-angellist:before{content:"\\f209"}.fa-angle-double-down:before{content:"\\f103"}.fa-angle-double-left:before{content:"\\f100"}.fa-angle-double-right:before{content:"\\f101"}.fa-angle-double-up:before{content:"\\f102"}.fa-angle-down:before{content:"\\f107"}.fa-angle-left:before{content:"\\f104"}.fa-angle-right:before{content:"\\f105"}.fa-angle-up:before{content:"\\f106"}.fa-angry:before{content:"\\f556"}.fa-angrycreative:before{content:"\\f36e"}.fa-angular:before{content:"\\f420"}.fa-ankh:before{content:"\\f644"}.fa-app-store:before{content:"\\f36f"}.fa-app-store-ios:before{content:"\\f370"}.fa-apper:before{content:"\\f371"}.fa-apple:before{content:"\\f179"}.fa-apple-alt:before{content:"\\f5d1"}.fa-apple-pay:before{content:"\\f415"}.fa-archive:before{content:"\\f187"}.fa-archway:before{content:"\\f557"}.fa-arrow-alt-circle-down:before{content:"\\f358"}.fa-arrow-alt-circle-left:before{content:"\\f359"}.fa-arrow-alt-circle-right:before{content:"\\f35a"}.fa-arrow-alt-circle-up:before{content:"\\f35b"}.fa-arrow-circle-down:before{content:"\\f0ab"}.fa-arrow-circle-left:before{content:"\\f0a8"}.fa-arrow-circle-right:before{content:"\\f0a9"}.fa-arrow-circle-up:before{content:"\\f0aa"}.fa-arrow-down:before{content:"\\f063"}.fa-arrow-left:before{content:"\\f060"}.fa-arrow-right:before{content:"\\f061"}.fa-arrow-up:before{content:"\\f062"}.fa-arrows-alt:before{content:"\\f0b2"}.fa-arrows-alt-h:before{content:"\\f337"}.fa-arrows-alt-v:before{content:"\\f338"}.fa-artstation:before{content:"\\f77a"}.fa-assistive-listening-systems:before{content:"\\f2a2"}.fa-asterisk:before{content:"\\f069"}.fa-asymmetrik:before{content:"\\f372"}.fa-at:before{content:"\\f1fa"}.fa-atlas:before{content:"\\f558"}.fa-atlassian:before{content:"\\f77b"}.fa-atom:before{content:"\\f5d2"}.fa-audible:before{content:"\\f373"}.fa-audio-description:before{content:"\\f29e"}.fa-autoprefixer:before{content:"\\f41c"}.fa-avianex:before{content:"\\f374"}.fa-aviato:before{content:"\\f421"}.fa-award:before{content:"\\f559"}.fa-aws:before{content:"\\f375"}.fa-baby:before{content:"\\f77c"}.fa-baby-carriage:before{content:"\\f77d"}.fa-backspace:before{content:"\\f55a"}.fa-backward:before{content:"\\f04a"}.fa-bacon:before{content:"\\f7e5"}.fa-bacteria:before{content:"\\e059"}.fa-bacterium:before{content:"\\e05a"}.fa-bahai:before{content:"\\f666"}.fa-balance-scale:before{content:"\\f24e"}.fa-balance-scale-left:before{content:"\\f515"}.fa-balance-scale-right:before{content:"\\f516"}.fa-ban:before{content:"\\f05e"}.fa-band-aid:before{content:"\\f462"}.fa-bandcamp:before{content:"\\f2d5"}.fa-barcode:before{content:"\\f02a"}.fa-bars:before{content:"\\f0c9"}.fa-baseball-ball:before{content:"\\f433"}.fa-basketball-ball:before{content:"\\f434"}.fa-bath:before{content:"\\f2cd"}.fa-battery-empty:before{content:"\\f244"}.fa-battery-full:before{content:"\\f240"}.fa-battery-half:before{content:"\\f242"}.fa-battery-quarter:before{content:"\\f243"}.fa-battery-three-quarters:before{content:"\\f241"}.fa-battle-net:before{content:"\\f835"}.fa-bed:before{content:"\\f236"}.fa-beer:before{content:"\\f0fc"}.fa-behance:before{content:"\\f1b4"}.fa-behance-square:before{content:"\\f1b5"}.fa-bell:before{content:"\\f0f3"}.fa-bell-slash:before{content:"\\f1f6"}.fa-bezier-curve:before{content:"\\f55b"}.fa-bible:before{content:"\\f647"}.fa-bicycle:before{content:"\\f206"}.fa-biking:before{content:"\\f84a"}.fa-bimobject:before{content:"\\f378"}.fa-binoculars:before{content:"\\f1e5"}.fa-biohazard:before{content:"\\f780"}.fa-birthday-cake:before{content:"\\f1fd"}.fa-bitbucket:before{content:"\\f171"}.fa-bitcoin:before{content:"\\f379"}.fa-bity:before{content:"\\f37a"}.fa-black-tie:before{content:"\\f27e"}.fa-blackberry:before{content:"\\f37b"}.fa-blender:before{content:"\\f517"}.fa-blender-phone:before{content:"\\f6b6"}.fa-blind:before{content:"\\f29d"}.fa-blog:before{content:"\\f781"}.fa-blogger:before{content:"\\f37c"}.fa-blogger-b:before{content:"\\f37d"}.fa-bluetooth:before{content:"\\f293"}.fa-bluetooth-b:before{content:"\\f294"}.fa-bold:before{content:"\\f032"}.fa-bolt:before{content:"\\f0e7"}.fa-bomb:before{content:"\\f1e2"}.fa-bone:before{content:"\\f5d7"}.fa-bong:before{content:"\\f55c"}.fa-book:before{content:"\\f02d"}.fa-book-dead:before{content:"\\f6b7"}.fa-book-medical:before{content:"\\f7e6"}.fa-book-open:before{content:"\\f518"}.fa-book-reader:before{content:"\\f5da"}.fa-bookmark:before{content:"\\f02e"}.fa-bootstrap:before{content:"\\f836"}.fa-border-all:before{content:"\\f84c"}.fa-border-none:before{content:"\\f850"}.fa-border-style:before{content:"\\f853"}.fa-bowling-ball:before{content:"\\f436"}.fa-box:before{content:"\\f466"}.fa-box-open:before{content:"\\f49e"}.fa-box-tissue:before{content:"\\e05b"}.fa-boxes:before{content:"\\f468"}.fa-braille:before{content:"\\f2a1"}.fa-brain:before{content:"\\f5dc"}.fa-bread-slice:before{content:"\\f7ec"}.fa-briefcase:before{content:"\\f0b1"}.fa-briefcase-medical:before{content:"\\f469"}.fa-broadcast-tower:before{content:"\\f519"}.fa-broom:before{content:"\\f51a"}.fa-brush:before{content:"\\f55d"}.fa-btc:before{content:"\\f15a"}.fa-buffer:before{content:"\\f837"}.fa-bug:before{content:"\\f188"}.fa-building:before{content:"\\f1ad"}.fa-bullhorn:before{content:"\\f0a1"}.fa-bullseye:before{content:"\\f140"}.fa-burn:before{content:"\\f46a"}.fa-buromobelexperte:before{content:"\\f37f"}.fa-bus:before{content:"\\f207"}.fa-bus-alt:before{content:"\\f55e"}.fa-business-time:before{content:"\\f64a"}.fa-buy-n-large:before{content:"\\f8a6"}.fa-buysellads:before{content:"\\f20d"}.fa-calculator:before{content:"\\f1ec"}.fa-calendar:before{content:"\\f133"}.fa-calendar-alt:before{content:"\\f073"}.fa-calendar-check:before{content:"\\f274"}.fa-calendar-day:before{content:"\\f783"}.fa-calendar-minus:before{content:"\\f272"}.fa-calendar-plus:before{content:"\\f271"}.fa-calendar-times:before{content:"\\f273"}.fa-calendar-week:before{content:"\\f784"}.fa-camera:before{content:"\\f030"}.fa-camera-retro:before{content:"\\f083"}.fa-campground:before{content:"\\f6bb"}.fa-canadian-maple-leaf:before{content:"\\f785"}.fa-candy-cane:before{content:"\\f786"}.fa-cannabis:before{content:"\\f55f"}.fa-capsules:before{content:"\\f46b"}.fa-car:before{content:"\\f1b9"}.fa-car-alt:before{content:"\\f5de"}.fa-car-battery:before{content:"\\f5df"}.fa-car-crash:before{content:"\\f5e1"}.fa-car-side:before{content:"\\f5e4"}.fa-caravan:before{content:"\\f8ff"}.fa-caret-down:before{content:"\\f0d7"}.fa-caret-left:before{content:"\\f0d9"}.fa-caret-right:before{content:"\\f0da"}.fa-caret-square-down:before{content:"\\f150"}.fa-caret-square-left:before{content:"\\f191"}.fa-caret-square-right:before{content:"\\f152"}.fa-caret-square-up:before{content:"\\f151"}.fa-caret-up:before{content:"\\f0d8"}.fa-carrot:before{content:"\\f787"}.fa-cart-arrow-down:before{content:"\\f218"}.fa-cart-plus:before{content:"\\f217"}.fa-cash-register:before{content:"\\f788"}.fa-cat:before{content:"\\f6be"}.fa-cc-amazon-pay:before{content:"\\f42d"}.fa-cc-amex:before{content:"\\f1f3"}.fa-cc-apple-pay:before{content:"\\f416"}.fa-cc-diners-club:before{content:"\\f24c"}.fa-cc-discover:before{content:"\\f1f2"}.fa-cc-jcb:before{content:"\\f24b"}.fa-cc-mastercard:before{content:"\\f1f1"}.fa-cc-paypal:before{content:"\\f1f4"}.fa-cc-stripe:before{content:"\\f1f5"}.fa-cc-visa:before{content:"\\f1f0"}.fa-centercode:before{content:"\\f380"}.fa-centos:before{content:"\\f789"}.fa-certificate:before{content:"\\f0a3"}.fa-chair:before{content:"\\f6c0"}.fa-chalkboard:before{content:"\\f51b"}.fa-chalkboard-teacher:before{content:"\\f51c"}.fa-charging-station:before{content:"\\f5e7"}.fa-chart-area:before{content:"\\f1fe"}.fa-chart-bar:before{content:"\\f080"}.fa-chart-line:before{content:"\\f201"}.fa-chart-pie:before{content:"\\f200"}.fa-check:before{content:"\\f00c"}.fa-check-circle:before{content:"\\f058"}.fa-check-double:before{content:"\\f560"}.fa-check-square:before{content:"\\f14a"}.fa-cheese:before{content:"\\f7ef"}.fa-chess:before{content:"\\f439"}.fa-chess-bishop:before{content:"\\f43a"}.fa-chess-board:before{content:"\\f43c"}.fa-chess-king:before{content:"\\f43f"}.fa-chess-knight:before{content:"\\f441"}.fa-chess-pawn:before{content:"\\f443"}.fa-chess-queen:before{content:"\\f445"}.fa-chess-rook:before{content:"\\f447"}.fa-chevron-circle-down:before{content:"\\f13a"}.fa-chevron-circle-left:before{content:"\\f137"}.fa-chevron-circle-right:before{content:"\\f138"}.fa-chevron-circle-up:before{content:"\\f139"}.fa-chevron-down:before{content:"\\f078"}.fa-chevron-left:before{content:"\\f053"}.fa-chevron-right:before{content:"\\f054"}.fa-chevron-up:before{content:"\\f077"}.fa-child:before{content:"\\f1ae"}.fa-chrome:before{content:"\\f268"}.fa-chromecast:before{content:"\\f838"}.fa-church:before{content:"\\f51d"}.fa-circle:before{content:"\\f111"}.fa-circle-notch:before{content:"\\f1ce"}.fa-city:before{content:"\\f64f"}.fa-clinic-medical:before{content:"\\f7f2"}.fa-clipboard:before{content:"\\f328"}.fa-clipboard-check:before{content:"\\f46c"}.fa-clipboard-list:before{content:"\\f46d"}.fa-clock:before{content:"\\f017"}.fa-clone:before{content:"\\f24d"}.fa-closed-captioning:before{content:"\\f20a"}.fa-cloud:before{content:"\\f0c2"}.fa-cloud-download-alt:before{content:"\\f381"}.fa-cloud-meatball:before{content:"\\f73b"}.fa-cloud-moon:before{content:"\\f6c3"}.fa-cloud-moon-rain:before{content:"\\f73c"}.fa-cloud-rain:before{content:"\\f73d"}.fa-cloud-showers-heavy:before{content:"\\f740"}.fa-cloud-sun:before{content:"\\f6c4"}.fa-cloud-sun-rain:before{content:"\\f743"}.fa-cloud-upload-alt:before{content:"\\f382"}.fa-cloudflare:before{content:"\\e07d"}.fa-cloudscale:before{content:"\\f383"}.fa-cloudsmith:before{content:"\\f384"}.fa-cloudversify:before{content:"\\f385"}.fa-cocktail:before{content:"\\f561"}.fa-code:before{content:"\\f121"}.fa-code-branch:before{content:"\\f126"}.fa-codepen:before{content:"\\f1cb"}.fa-codiepie:before{content:"\\f284"}.fa-coffee:before{content:"\\f0f4"}.fa-cog:before{content:"\\f013"}.fa-cogs:before{content:"\\f085"}.fa-coins:before{content:"\\f51e"}.fa-columns:before{content:"\\f0db"}.fa-comment:before{content:"\\f075"}.fa-comment-alt:before{content:"\\f27a"}.fa-comment-dollar:before{content:"\\f651"}.fa-comment-dots:before{content:"\\f4ad"}.fa-comment-medical:before{content:"\\f7f5"}.fa-comment-slash:before{content:"\\f4b3"}.fa-comments:before{content:"\\f086"}.fa-comments-dollar:before{content:"\\f653"}.fa-compact-disc:before{content:"\\f51f"}.fa-compass:before{content:"\\f14e"}.fa-compress:before{content:"\\f066"}.fa-compress-alt:before{content:"\\f422"}.fa-compress-arrows-alt:before{content:"\\f78c"}.fa-concierge-bell:before{content:"\\f562"}.fa-confluence:before{content:"\\f78d"}.fa-connectdevelop:before{content:"\\f20e"}.fa-contao:before{content:"\\f26d"}.fa-cookie:before{content:"\\f563"}.fa-cookie-bite:before{content:"\\f564"}.fa-copy:before{content:"\\f0c5"}.fa-copyright:before{content:"\\f1f9"}.fa-cotton-bureau:before{content:"\\f89e"}.fa-couch:before{content:"\\f4b8"}.fa-cpanel:before{content:"\\f388"}.fa-creative-commons:before{content:"\\f25e"}.fa-creative-commons-by:before{content:"\\f4e7"}.fa-creative-commons-nc:before{content:"\\f4e8"}.fa-creative-commons-nc-eu:before{content:"\\f4e9"}.fa-creative-commons-nc-jp:before{content:"\\f4ea"}.fa-creative-commons-nd:before{content:"\\f4eb"}.fa-creative-commons-pd:before{content:"\\f4ec"}.fa-creative-commons-pd-alt:before{content:"\\f4ed"}.fa-creative-commons-remix:before{content:"\\f4ee"}.fa-creative-commons-sa:before{content:"\\f4ef"}.fa-creative-commons-sampling:before{content:"\\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\\f4f1"}.fa-creative-commons-share:before{content:"\\f4f2"}.fa-creative-commons-zero:before{content:"\\f4f3"}.fa-credit-card:before{content:"\\f09d"}.fa-critical-role:before{content:"\\f6c9"}.fa-crop:before{content:"\\f125"}.fa-crop-alt:before{content:"\\f565"}.fa-cross:before{content:"\\f654"}.fa-crosshairs:before{content:"\\f05b"}.fa-crow:before{content:"\\f520"}.fa-crown:before{content:"\\f521"}.fa-crutch:before{content:"\\f7f7"}.fa-css3:before{content:"\\f13c"}.fa-css3-alt:before{content:"\\f38b"}.fa-cube:before{content:"\\f1b2"}.fa-cubes:before{content:"\\f1b3"}.fa-cut:before{content:"\\f0c4"}.fa-cuttlefish:before{content:"\\f38c"}.fa-d-and-d:before{content:"\\f38d"}.fa-d-and-d-beyond:before{content:"\\f6ca"}.fa-dailymotion:before{content:"\\e052"}.fa-dashcube:before{content:"\\f210"}.fa-database:before{content:"\\f1c0"}.fa-deaf:before{content:"\\f2a4"}.fa-deezer:before{content:"\\e077"}.fa-delicious:before{content:"\\f1a5"}.fa-democrat:before{content:"\\f747"}.fa-deploydog:before{content:"\\f38e"}.fa-deskpro:before{content:"\\f38f"}.fa-desktop:before{content:"\\f108"}.fa-dev:before{content:"\\f6cc"}.fa-deviantart:before{content:"\\f1bd"}.fa-dharmachakra:before{content:"\\f655"}.fa-dhl:before{content:"\\f790"}.fa-diagnoses:before{content:"\\f470"}.fa-diaspora:before{content:"\\f791"}.fa-dice:before{content:"\\f522"}.fa-dice-d20:before{content:"\\f6cf"}.fa-dice-d6:before{content:"\\f6d1"}.fa-dice-five:before{content:"\\f523"}.fa-dice-four:before{content:"\\f524"}.fa-dice-one:before{content:"\\f525"}.fa-dice-six:before{content:"\\f526"}.fa-dice-three:before{content:"\\f527"}.fa-dice-two:before{content:"\\f528"}.fa-digg:before{content:"\\f1a6"}.fa-digital-ocean:before{content:"\\f391"}.fa-digital-tachograph:before{content:"\\f566"}.fa-directions:before{content:"\\f5eb"}.fa-discord:before{content:"\\f392"}.fa-discourse:before{content:"\\f393"}.fa-disease:before{content:"\\f7fa"}.fa-divide:before{content:"\\f529"}.fa-dizzy:before{content:"\\f567"}.fa-dna:before{content:"\\f471"}.fa-dochub:before{content:"\\f394"}.fa-docker:before{content:"\\f395"}.fa-dog:before{content:"\\f6d3"}.fa-dollar-sign:before{content:"\\f155"}.fa-dolly:before{content:"\\f472"}.fa-dolly-flatbed:before{content:"\\f474"}.fa-donate:before{content:"\\f4b9"}.fa-door-closed:before{content:"\\f52a"}.fa-door-open:before{content:"\\f52b"}.fa-dot-circle:before{content:"\\f192"}.fa-dove:before{content:"\\f4ba"}.fa-download:before{content:"\\f019"}.fa-draft2digital:before{content:"\\f396"}.fa-drafting-compass:before{content:"\\f568"}.fa-dragon:before{content:"\\f6d5"}.fa-draw-polygon:before{content:"\\f5ee"}.fa-dribbble:before{content:"\\f17d"}.fa-dribbble-square:before{content:"\\f397"}.fa-dropbox:before{content:"\\f16b"}.fa-drum:before{content:"\\f569"}.fa-drum-steelpan:before{content:"\\f56a"}.fa-drumstick-bite:before{content:"\\f6d7"}.fa-drupal:before{content:"\\f1a9"}.fa-dumbbell:before{content:"\\f44b"}.fa-dumpster:before{content:"\\f793"}.fa-dumpster-fire:before{content:"\\f794"}.fa-dungeon:before{content:"\\f6d9"}.fa-dyalog:before{content:"\\f399"}.fa-earlybirds:before{content:"\\f39a"}.fa-ebay:before{content:"\\f4f4"}.fa-edge:before{content:"\\f282"}.fa-edge-legacy:before{content:"\\e078"}.fa-edit:before{content:"\\f044"}.fa-egg:before{content:"\\f7fb"}.fa-eject:before{content:"\\f052"}.fa-elementor:before{content:"\\f430"}.fa-ellipsis-h:before{content:"\\f141"}.fa-ellipsis-v:before{content:"\\f142"}.fa-ello:before{content:"\\f5f1"}.fa-ember:before{content:"\\f423"}.fa-empire:before{content:"\\f1d1"}.fa-envelope:before{content:"\\f0e0"}.fa-envelope-open:before{content:"\\f2b6"}.fa-envelope-open-text:before{content:"\\f658"}.fa-envelope-square:before{content:"\\f199"}.fa-envira:before{content:"\\f299"}.fa-equals:before{content:"\\f52c"}.fa-eraser:before{content:"\\f12d"}.fa-erlang:before{content:"\\f39d"}.fa-ethereum:before{content:"\\f42e"}.fa-ethernet:before{content:"\\f796"}.fa-etsy:before{content:"\\f2d7"}.fa-euro-sign:before{content:"\\f153"}.fa-evernote:before{content:"\\f839"}.fa-exchange-alt:before{content:"\\f362"}.fa-exclamation:before{content:"\\f12a"}.fa-exclamation-circle:before{content:"\\f06a"}.fa-exclamation-triangle:before{content:"\\f071"}.fa-expand:before{content:"\\f065"}.fa-expand-alt:before{content:"\\f424"}.fa-expand-arrows-alt:before{content:"\\f31e"}.fa-expeditedssl:before{content:"\\f23e"}.fa-external-link-alt:before{content:"\\f35d"}.fa-external-link-square-alt:before{content:"\\f360"}.fa-eye:before{content:"\\f06e"}.fa-eye-dropper:before{content:"\\f1fb"}.fa-eye-slash:before{content:"\\f070"}.fa-facebook:before{content:"\\f09a"}.fa-facebook-f:before{content:"\\f39e"}.fa-facebook-messenger:before{content:"\\f39f"}.fa-facebook-square:before{content:"\\f082"}.fa-fan:before{content:"\\f863"}.fa-fantasy-flight-games:before{content:"\\f6dc"}.fa-fast-backward:before{content:"\\f049"}.fa-fast-forward:before{content:"\\f050"}.fa-faucet:before{content:"\\e005"}.fa-fax:before{content:"\\f1ac"}.fa-feather:before{content:"\\f52d"}.fa-feather-alt:before{content:"\\f56b"}.fa-fedex:before{content:"\\f797"}.fa-fedora:before{content:"\\f798"}.fa-female:before{content:"\\f182"}.fa-fighter-jet:before{content:"\\f0fb"}.fa-figma:before{content:"\\f799"}.fa-file:before{content:"\\f15b"}.fa-file-alt:before{content:"\\f15c"}.fa-file-archive:before{content:"\\f1c6"}.fa-file-audio:before{content:"\\f1c7"}.fa-file-code:before{content:"\\f1c9"}.fa-file-contract:before{content:"\\f56c"}.fa-file-csv:before{content:"\\f6dd"}.fa-file-download:before{content:"\\f56d"}.fa-file-excel:before{content:"\\f1c3"}.fa-file-export:before{content:"\\f56e"}.fa-file-image:before{content:"\\f1c5"}.fa-file-import:before{content:"\\f56f"}.fa-file-invoice:before{content:"\\f570"}.fa-file-invoice-dollar:before{content:"\\f571"}.fa-file-medical:before{content:"\\f477"}.fa-file-medical-alt:before{content:"\\f478"}.fa-file-pdf:before{content:"\\f1c1"}.fa-file-powerpoint:before{content:"\\f1c4"}.fa-file-prescription:before{content:"\\f572"}.fa-file-signature:before{content:"\\f573"}.fa-file-upload:before{content:"\\f574"}.fa-file-video:before{content:"\\f1c8"}.fa-file-word:before{content:"\\f1c2"}.fa-fill:before{content:"\\f575"}.fa-fill-drip:before{content:"\\f576"}.fa-film:before{content:"\\f008"}.fa-filter:before{content:"\\f0b0"}.fa-fingerprint:before{content:"\\f577"}.fa-fire:before{content:"\\f06d"}.fa-fire-alt:before{content:"\\f7e4"}.fa-fire-extinguisher:before{content:"\\f134"}.fa-firefox:before{content:"\\f269"}.fa-firefox-browser:before{content:"\\e007"}.fa-first-aid:before{content:"\\f479"}.fa-first-order:before{content:"\\f2b0"}.fa-first-order-alt:before{content:"\\f50a"}.fa-firstdraft:before{content:"\\f3a1"}.fa-fish:before{content:"\\f578"}.fa-fist-raised:before{content:"\\f6de"}.fa-flag:before{content:"\\f024"}.fa-flag-checkered:before{content:"\\f11e"}.fa-flag-usa:before{content:"\\f74d"}.fa-flask:before{content:"\\f0c3"}.fa-flickr:before{content:"\\f16e"}.fa-flipboard:before{content:"\\f44d"}.fa-flushed:before{content:"\\f579"}.fa-fly:before{content:"\\f417"}.fa-folder:before{content:"\\f07b"}.fa-folder-minus:before{content:"\\f65d"}.fa-folder-open:before{content:"\\f07c"}.fa-folder-plus:before{content:"\\f65e"}.fa-font:before{content:"\\f031"}.fa-font-awesome:before{content:"\\f2b4"}.fa-font-awesome-alt:before{content:"\\f35c"}.fa-font-awesome-flag:before{content:"\\f425"}.fa-font-awesome-logo-full:before{content:"\\f4e6"}.fa-fonticons:before{content:"\\f280"}.fa-fonticons-fi:before{content:"\\f3a2"}.fa-football-ball:before{content:"\\f44e"}.fa-fort-awesome:before{content:"\\f286"}.fa-fort-awesome-alt:before{content:"\\f3a3"}.fa-forumbee:before{content:"\\f211"}.fa-forward:before{content:"\\f04e"}.fa-foursquare:before{content:"\\f180"}.fa-free-code-camp:before{content:"\\f2c5"}.fa-freebsd:before{content:"\\f3a4"}.fa-frog:before{content:"\\f52e"}.fa-frown:before{content:"\\f119"}.fa-frown-open:before{content:"\\f57a"}.fa-fulcrum:before{content:"\\f50b"}.fa-funnel-dollar:before{content:"\\f662"}.fa-futbol:before{content:"\\f1e3"}.fa-galactic-republic:before{content:"\\f50c"}.fa-galactic-senate:before{content:"\\f50d"}.fa-gamepad:before{content:"\\f11b"}.fa-gas-pump:before{content:"\\f52f"}.fa-gavel:before{content:"\\f0e3"}.fa-gem:before{content:"\\f3a5"}.fa-genderless:before{content:"\\f22d"}.fa-get-pocket:before{content:"\\f265"}.fa-gg:before{content:"\\f260"}.fa-gg-circle:before{content:"\\f261"}.fa-ghost:before{content:"\\f6e2"}.fa-gift:before{content:"\\f06b"}.fa-gifts:before{content:"\\f79c"}.fa-git:before{content:"\\f1d3"}.fa-git-alt:before{content:"\\f841"}.fa-git-square:before{content:"\\f1d2"}.fa-github:before{content:"\\f09b"}.fa-github-alt:before{content:"\\f113"}.fa-github-square:before{content:"\\f092"}.fa-gitkraken:before{content:"\\f3a6"}.fa-gitlab:before{content:"\\f296"}.fa-gitter:before{content:"\\f426"}.fa-glass-cheers:before{content:"\\f79f"}.fa-glass-martini:before{content:"\\f000"}.fa-glass-martini-alt:before{content:"\\f57b"}.fa-glass-whiskey:before{content:"\\f7a0"}.fa-glasses:before{content:"\\f530"}.fa-glide:before{content:"\\f2a5"}.fa-glide-g:before{content:"\\f2a6"}.fa-globe:before{content:"\\f0ac"}.fa-globe-africa:before{content:"\\f57c"}.fa-globe-americas:before{content:"\\f57d"}.fa-globe-asia:before{content:"\\f57e"}.fa-globe-europe:before{content:"\\f7a2"}.fa-gofore:before{content:"\\f3a7"}.fa-golf-ball:before{content:"\\f450"}.fa-goodreads:before{content:"\\f3a8"}.fa-goodreads-g:before{content:"\\f3a9"}.fa-google:before{content:"\\f1a0"}.fa-google-drive:before{content:"\\f3aa"}.fa-google-pay:before{content:"\\e079"}.fa-google-play:before{content:"\\f3ab"}.fa-google-plus:before{content:"\\f2b3"}.fa-google-plus-g:before{content:"\\f0d5"}.fa-google-plus-square:before{content:"\\f0d4"}.fa-google-wallet:before{content:"\\f1ee"}.fa-gopuram:before{content:"\\f664"}.fa-graduation-cap:before{content:"\\f19d"}.fa-gratipay:before{content:"\\f184"}.fa-grav:before{content:"\\f2d6"}.fa-greater-than:before{content:"\\f531"}.fa-greater-than-equal:before{content:"\\f532"}.fa-grimace:before{content:"\\f57f"}.fa-grin:before{content:"\\f580"}.fa-grin-alt:before{content:"\\f581"}.fa-grin-beam:before{content:"\\f582"}.fa-grin-beam-sweat:before{content:"\\f583"}.fa-grin-hearts:before{content:"\\f584"}.fa-grin-squint:before{content:"\\f585"}.fa-grin-squint-tears:before{content:"\\f586"}.fa-grin-stars:before{content:"\\f587"}.fa-grin-tears:before{content:"\\f588"}.fa-grin-tongue:before{content:"\\f589"}.fa-grin-tongue-squint:before{content:"\\f58a"}.fa-grin-tongue-wink:before{content:"\\f58b"}.fa-grin-wink:before{content:"\\f58c"}.fa-grip-horizontal:before{content:"\\f58d"}.fa-grip-lines:before{content:"\\f7a4"}.fa-grip-lines-vertical:before{content:"\\f7a5"}.fa-grip-vertical:before{content:"\\f58e"}.fa-gripfire:before{content:"\\f3ac"}.fa-grunt:before{content:"\\f3ad"}.fa-guilded:before{content:"\\e07e"}.fa-guitar:before{content:"\\f7a6"}.fa-gulp:before{content:"\\f3ae"}.fa-h-square:before{content:"\\f0fd"}.fa-hacker-news:before{content:"\\f1d4"}.fa-hacker-news-square:before{content:"\\f3af"}.fa-hackerrank:before{content:"\\f5f7"}.fa-hamburger:before{content:"\\f805"}.fa-hammer:before{content:"\\f6e3"}.fa-hamsa:before{content:"\\f665"}.fa-hand-holding:before{content:"\\f4bd"}.fa-hand-holding-heart:before{content:"\\f4be"}.fa-hand-holding-medical:before{content:"\\e05c"}.fa-hand-holding-usd:before{content:"\\f4c0"}.fa-hand-holding-water:before{content:"\\f4c1"}.fa-hand-lizard:before{content:"\\f258"}.fa-hand-middle-finger:before{content:"\\f806"}.fa-hand-paper:before{content:"\\f256"}.fa-hand-peace:before{content:"\\f25b"}.fa-hand-point-down:before{content:"\\f0a7"}.fa-hand-point-left:before{content:"\\f0a5"}.fa-hand-point-right:before{content:"\\f0a4"}.fa-hand-point-up:before{content:"\\f0a6"}.fa-hand-pointer:before{content:"\\f25a"}.fa-hand-rock:before{content:"\\f255"}.fa-hand-scissors:before{content:"\\f257"}.fa-hand-sparkles:before{content:"\\e05d"}.fa-hand-spock:before{content:"\\f259"}.fa-hands:before{content:"\\f4c2"}.fa-hands-helping:before{content:"\\f4c4"}.fa-hands-wash:before{content:"\\e05e"}.fa-handshake:before{content:"\\f2b5"}.fa-handshake-alt-slash:before{content:"\\e05f"}.fa-handshake-slash:before{content:"\\e060"}.fa-hanukiah:before{content:"\\f6e6"}.fa-hard-hat:before{content:"\\f807"}.fa-hashtag:before{content:"\\f292"}.fa-hat-cowboy:before{content:"\\f8c0"}.fa-hat-cowboy-side:before{content:"\\f8c1"}.fa-hat-wizard:before{content:"\\f6e8"}.fa-hdd:before{content:"\\f0a0"}.fa-head-side-cough:before{content:"\\e061"}.fa-head-side-cough-slash:before{content:"\\e062"}.fa-head-side-mask:before{content:"\\e063"}.fa-head-side-virus:before{content:"\\e064"}.fa-heading:before{content:"\\f1dc"}.fa-headphones:before{content:"\\f025"}.fa-headphones-alt:before{content:"\\f58f"}.fa-headset:before{content:"\\f590"}.fa-heart:before{content:"\\f004"}.fa-heart-broken:before{content:"\\f7a9"}.fa-heartbeat:before{content:"\\f21e"}.fa-helicopter:before{content:"\\f533"}.fa-highlighter:before{content:"\\f591"}.fa-hiking:before{content:"\\f6ec"}.fa-hippo:before{content:"\\f6ed"}.fa-hips:before{content:"\\f452"}.fa-hire-a-helper:before{content:"\\f3b0"}.fa-history:before{content:"\\f1da"}.fa-hive:before{content:"\\e07f"}.fa-hockey-puck:before{content:"\\f453"}.fa-holly-berry:before{content:"\\f7aa"}.fa-home:before{content:"\\f015"}.fa-hooli:before{content:"\\f427"}.fa-hornbill:before{content:"\\f592"}.fa-horse:before{content:"\\f6f0"}.fa-horse-head:before{content:"\\f7ab"}.fa-hospital:before{content:"\\f0f8"}.fa-hospital-alt:before{content:"\\f47d"}.fa-hospital-symbol:before{content:"\\f47e"}.fa-hospital-user:before{content:"\\f80d"}.fa-hot-tub:before{content:"\\f593"}.fa-hotdog:before{content:"\\f80f"}.fa-hotel:before{content:"\\f594"}.fa-hotjar:before{content:"\\f3b1"}.fa-hourglass:before{content:"\\f254"}.fa-hourglass-end:before{content:"\\f253"}.fa-hourglass-half:before{content:"\\f252"}.fa-hourglass-start:before{content:"\\f251"}.fa-house-damage:before{content:"\\f6f1"}.fa-house-user:before{content:"\\e065"}.fa-houzz:before{content:"\\f27c"}.fa-hryvnia:before{content:"\\f6f2"}.fa-html5:before{content:"\\f13b"}.fa-hubspot:before{content:"\\f3b2"}.fa-i-cursor:before{content:"\\f246"}.fa-ice-cream:before{content:"\\f810"}.fa-icicles:before{content:"\\f7ad"}.fa-icons:before{content:"\\f86d"}.fa-id-badge:before{content:"\\f2c1"}.fa-id-card:before{content:"\\f2c2"}.fa-id-card-alt:before{content:"\\f47f"}.fa-ideal:before{content:"\\e013"}.fa-igloo:before{content:"\\f7ae"}.fa-image:before{content:"\\f03e"}.fa-images:before{content:"\\f302"}.fa-imdb:before{content:"\\f2d8"}.fa-inbox:before{content:"\\f01c"}.fa-indent:before{content:"\\f03c"}.fa-industry:before{content:"\\f275"}.fa-infinity:before{content:"\\f534"}.fa-info:before{content:"\\f129"}.fa-info-circle:before{content:"\\f05a"}.fa-innosoft:before{content:"\\e080"}.fa-instagram:before{content:"\\f16d"}.fa-instagram-square:before{content:"\\e055"}.fa-instalod:before{content:"\\e081"}.fa-intercom:before{content:"\\f7af"}.fa-internet-explorer:before{content:"\\f26b"}.fa-invision:before{content:"\\f7b0"}.fa-ioxhost:before{content:"\\f208"}.fa-italic:before{content:"\\f033"}.fa-itch-io:before{content:"\\f83a"}.fa-itunes:before{content:"\\f3b4"}.fa-itunes-note:before{content:"\\f3b5"}.fa-java:before{content:"\\f4e4"}.fa-jedi:before{content:"\\f669"}.fa-jedi-order:before{content:"\\f50e"}.fa-jenkins:before{content:"\\f3b6"}.fa-jira:before{content:"\\f7b1"}.fa-joget:before{content:"\\f3b7"}.fa-joint:before{content:"\\f595"}.fa-joomla:before{content:"\\f1aa"}.fa-journal-whills:before{content:"\\f66a"}.fa-js:before{content:"\\f3b8"}.fa-js-square:before{content:"\\f3b9"}.fa-jsfiddle:before{content:"\\f1cc"}.fa-kaaba:before{content:"\\f66b"}.fa-kaggle:before{content:"\\f5fa"}.fa-key:before{content:"\\f084"}.fa-keybase:before{content:"\\f4f5"}.fa-keyboard:before{content:"\\f11c"}.fa-keycdn:before{content:"\\f3ba"}.fa-khanda:before{content:"\\f66d"}.fa-kickstarter:before{content:"\\f3bb"}.fa-kickstarter-k:before{content:"\\f3bc"}.fa-kiss:before{content:"\\f596"}.fa-kiss-beam:before{content:"\\f597"}.fa-kiss-wink-heart:before{content:"\\f598"}.fa-kiwi-bird:before{content:"\\f535"}.fa-korvue:before{content:"\\f42f"}.fa-landmark:before{content:"\\f66f"}.fa-language:before{content:"\\f1ab"}.fa-laptop:before{content:"\\f109"}.fa-laptop-code:before{content:"\\f5fc"}.fa-laptop-house:before{content:"\\e066"}.fa-laptop-medical:before{content:"\\f812"}.fa-laravel:before{content:"\\f3bd"}.fa-lastfm:before{content:"\\f202"}.fa-lastfm-square:before{content:"\\f203"}.fa-laugh:before{content:"\\f599"}.fa-laugh-beam:before{content:"\\f59a"}.fa-laugh-squint:before{content:"\\f59b"}.fa-laugh-wink:before{content:"\\f59c"}.fa-layer-group:before{content:"\\f5fd"}.fa-leaf:before{content:"\\f06c"}.fa-leanpub:before{content:"\\f212"}.fa-lemon:before{content:"\\f094"}.fa-less:before{content:"\\f41d"}.fa-less-than:before{content:"\\f536"}.fa-less-than-equal:before{content:"\\f537"}.fa-level-down-alt:before{content:"\\f3be"}.fa-level-up-alt:before{content:"\\f3bf"}.fa-life-ring:before{content:"\\f1cd"}.fa-lightbulb:before{content:"\\f0eb"}.fa-line:before{content:"\\f3c0"}.fa-link:before{content:"\\f0c1"}.fa-linkedin:before{content:"\\f08c"}.fa-linkedin-in:before{content:"\\f0e1"}.fa-linode:before{content:"\\f2b8"}.fa-linux:before{content:"\\f17c"}.fa-lira-sign:before{content:"\\f195"}.fa-list:before{content:"\\f03a"}.fa-list-alt:before{content:"\\f022"}.fa-list-ol:before{content:"\\f0cb"}.fa-list-ul:before{content:"\\f0ca"}.fa-location-arrow:before{content:"\\f124"}.fa-lock:before{content:"\\f023"}.fa-lock-open:before{content:"\\f3c1"}.fa-long-arrow-alt-down:before{content:"\\f309"}.fa-long-arrow-alt-left:before{content:"\\f30a"}.fa-long-arrow-alt-right:before{content:"\\f30b"}.fa-long-arrow-alt-up:before{content:"\\f30c"}.fa-low-vision:before{content:"\\f2a8"}.fa-luggage-cart:before{content:"\\f59d"}.fa-lungs:before{content:"\\f604"}.fa-lungs-virus:before{content:"\\e067"}.fa-lyft:before{content:"\\f3c3"}.fa-magento:before{content:"\\f3c4"}.fa-magic:before{content:"\\f0d0"}.fa-magnet:before{content:"\\f076"}.fa-mail-bulk:before{content:"\\f674"}.fa-mailchimp:before{content:"\\f59e"}.fa-male:before{content:"\\f183"}.fa-mandalorian:before{content:"\\f50f"}.fa-map:before{content:"\\f279"}.fa-map-marked:before{content:"\\f59f"}.fa-map-marked-alt:before{content:"\\f5a0"}.fa-map-marker:before{content:"\\f041"}.fa-map-marker-alt:before{content:"\\f3c5"}.fa-map-pin:before{content:"\\f276"}.fa-map-signs:before{content:"\\f277"}.fa-markdown:before{content:"\\f60f"}.fa-marker:before{content:"\\f5a1"}.fa-mars:before{content:"\\f222"}.fa-mars-double:before{content:"\\f227"}.fa-mars-stroke:before{content:"\\f229"}.fa-mars-stroke-h:before{content:"\\f22b"}.fa-mars-stroke-v:before{content:"\\f22a"}.fa-mask:before{content:"\\f6fa"}.fa-mastodon:before{content:"\\f4f6"}.fa-maxcdn:before{content:"\\f136"}.fa-mdb:before{content:"\\f8ca"}.fa-medal:before{content:"\\f5a2"}.fa-medapps:before{content:"\\f3c6"}.fa-medium:before{content:"\\f23a"}.fa-medium-m:before{content:"\\f3c7"}.fa-medkit:before{content:"\\f0fa"}.fa-medrt:before{content:"\\f3c8"}.fa-meetup:before{content:"\\f2e0"}.fa-megaport:before{content:"\\f5a3"}.fa-meh:before{content:"\\f11a"}.fa-meh-blank:before{content:"\\f5a4"}.fa-meh-rolling-eyes:before{content:"\\f5a5"}.fa-memory:before{content:"\\f538"}.fa-mendeley:before{content:"\\f7b3"}.fa-menorah:before{content:"\\f676"}.fa-mercury:before{content:"\\f223"}.fa-meteor:before{content:"\\f753"}.fa-microblog:before{content:"\\e01a"}.fa-microchip:before{content:"\\f2db"}.fa-microphone:before{content:"\\f130"}.fa-microphone-alt:before{content:"\\f3c9"}.fa-microphone-alt-slash:before{content:"\\f539"}.fa-microphone-slash:before{content:"\\f131"}.fa-microscope:before{content:"\\f610"}.fa-microsoft:before{content:"\\f3ca"}.fa-minus:before{content:"\\f068"}.fa-minus-circle:before{content:"\\f056"}.fa-minus-square:before{content:"\\f146"}.fa-mitten:before{content:"\\f7b5"}.fa-mix:before{content:"\\f3cb"}.fa-mixcloud:before{content:"\\f289"}.fa-mixer:before{content:"\\e056"}.fa-mizuni:before{content:"\\f3cc"}.fa-mobile:before{content:"\\f10b"}.fa-mobile-alt:before{content:"\\f3cd"}.fa-modx:before{content:"\\f285"}.fa-monero:before{content:"\\f3d0"}.fa-money-bill:before{content:"\\f0d6"}.fa-money-bill-alt:before{content:"\\f3d1"}.fa-money-bill-wave:before{content:"\\f53a"}.fa-money-bill-wave-alt:before{content:"\\f53b"}.fa-money-check:before{content:"\\f53c"}.fa-money-check-alt:before{content:"\\f53d"}.fa-monument:before{content:"\\f5a6"}.fa-moon:before{content:"\\f186"}.fa-mortar-pestle:before{content:"\\f5a7"}.fa-mosque:before{content:"\\f678"}.fa-motorcycle:before{content:"\\f21c"}.fa-mountain:before{content:"\\f6fc"}.fa-mouse:before{content:"\\f8cc"}.fa-mouse-pointer:before{content:"\\f245"}.fa-mug-hot:before{content:"\\f7b6"}.fa-music:before{content:"\\f001"}.fa-napster:before{content:"\\f3d2"}.fa-neos:before{content:"\\f612"}.fa-network-wired:before{content:"\\f6ff"}.fa-neuter:before{content:"\\f22c"}.fa-newspaper:before{content:"\\f1ea"}.fa-nimblr:before{content:"\\f5a8"}.fa-node:before{content:"\\f419"}.fa-node-js:before{content:"\\f3d3"}.fa-not-equal:before{content:"\\f53e"}.fa-notes-medical:before{content:"\\f481"}.fa-npm:before{content:"\\f3d4"}.fa-ns8:before{content:"\\f3d5"}.fa-nutritionix:before{content:"\\f3d6"}.fa-object-group:before{content:"\\f247"}.fa-object-ungroup:before{content:"\\f248"}.fa-octopus-deploy:before{content:"\\e082"}.fa-odnoklassniki:before{content:"\\f263"}.fa-odnoklassniki-square:before{content:"\\f264"}.fa-oil-can:before{content:"\\f613"}.fa-old-republic:before{content:"\\f510"}.fa-om:before{content:"\\f679"}.fa-opencart:before{content:"\\f23d"}.fa-openid:before{content:"\\f19b"}.fa-opera:before{content:"\\f26a"}.fa-optin-monster:before{content:"\\f23c"}.fa-orcid:before{content:"\\f8d2"}.fa-osi:before{content:"\\f41a"}.fa-otter:before{content:"\\f700"}.fa-outdent:before{content:"\\f03b"}.fa-page4:before{content:"\\f3d7"}.fa-pagelines:before{content:"\\f18c"}.fa-pager:before{content:"\\f815"}.fa-paint-brush:before{content:"\\f1fc"}.fa-paint-roller:before{content:"\\f5aa"}.fa-palette:before{content:"\\f53f"}.fa-palfed:before{content:"\\f3d8"}.fa-pallet:before{content:"\\f482"}.fa-paper-plane:before{content:"\\f1d8"}.fa-paperclip:before{content:"\\f0c6"}.fa-parachute-box:before{content:"\\f4cd"}.fa-paragraph:before{content:"\\f1dd"}.fa-parking:before{content:"\\f540"}.fa-passport:before{content:"\\f5ab"}.fa-pastafarianism:before{content:"\\f67b"}.fa-paste:before{content:"\\f0ea"}.fa-patreon:before{content:"\\f3d9"}.fa-pause:before{content:"\\f04c"}.fa-pause-circle:before{content:"\\f28b"}.fa-paw:before{content:"\\f1b0"}.fa-paypal:before{content:"\\f1ed"}.fa-peace:before{content:"\\f67c"}.fa-pen:before{content:"\\f304"}.fa-pen-alt:before{content:"\\f305"}.fa-pen-fancy:before{content:"\\f5ac"}.fa-pen-nib:before{content:"\\f5ad"}.fa-pen-square:before{content:"\\f14b"}.fa-pencil-alt:before{content:"\\f303"}.fa-pencil-ruler:before{content:"\\f5ae"}.fa-penny-arcade:before{content:"\\f704"}.fa-people-arrows:before{content:"\\e068"}.fa-people-carry:before{content:"\\f4ce"}.fa-pepper-hot:before{content:"\\f816"}.fa-perbyte:before{content:"\\e083"}.fa-percent:before{content:"\\f295"}.fa-percentage:before{content:"\\f541"}.fa-periscope:before{content:"\\f3da"}.fa-person-booth:before{content:"\\f756"}.fa-phabricator:before{content:"\\f3db"}.fa-phoenix-framework:before{content:"\\f3dc"}.fa-phoenix-squadron:before{content:"\\f511"}.fa-phone:before{content:"\\f095"}.fa-phone-alt:before{content:"\\f879"}.fa-phone-slash:before{content:"\\f3dd"}.fa-phone-square:before{content:"\\f098"}.fa-phone-square-alt:before{content:"\\f87b"}.fa-phone-volume:before{content:"\\f2a0"}.fa-photo-video:before{content:"\\f87c"}.fa-php:before{content:"\\f457"}.fa-pied-piper:before{content:"\\f2ae"}.fa-pied-piper-alt:before{content:"\\f1a8"}.fa-pied-piper-hat:before{content:"\\f4e5"}.fa-pied-piper-pp:before{content:"\\f1a7"}.fa-pied-piper-square:before{content:"\\e01e"}.fa-piggy-bank:before{content:"\\f4d3"}.fa-pills:before{content:"\\f484"}.fa-pinterest:before{content:"\\f0d2"}.fa-pinterest-p:before{content:"\\f231"}.fa-pinterest-square:before{content:"\\f0d3"}.fa-pizza-slice:before{content:"\\f818"}.fa-place-of-worship:before{content:"\\f67f"}.fa-plane:before{content:"\\f072"}.fa-plane-arrival:before{content:"\\f5af"}.fa-plane-departure:before{content:"\\f5b0"}.fa-plane-slash:before{content:"\\e069"}.fa-play:before{content:"\\f04b"}.fa-play-circle:before{content:"\\f144"}.fa-playstation:before{content:"\\f3df"}.fa-plug:before{content:"\\f1e6"}.fa-plus:before{content:"\\f067"}.fa-plus-circle:before{content:"\\f055"}.fa-plus-square:before{content:"\\f0fe"}.fa-podcast:before{content:"\\f2ce"}.fa-poll:before{content:"\\f681"}.fa-poll-h:before{content:"\\f682"}.fa-poo:before{content:"\\f2fe"}.fa-poo-storm:before{content:"\\f75a"}.fa-poop:before{content:"\\f619"}.fa-portrait:before{content:"\\f3e0"}.fa-pound-sign:before{content:"\\f154"}.fa-power-off:before{content:"\\f011"}.fa-pray:before{content:"\\f683"}.fa-praying-hands:before{content:"\\f684"}.fa-prescription:before{content:"\\f5b1"}.fa-prescription-bottle:before{content:"\\f485"}.fa-prescription-bottle-alt:before{content:"\\f486"}.fa-print:before{content:"\\f02f"}.fa-procedures:before{content:"\\f487"}.fa-product-hunt:before{content:"\\f288"}.fa-project-diagram:before{content:"\\f542"}.fa-pump-medical:before{content:"\\e06a"}.fa-pump-soap:before{content:"\\e06b"}.fa-pushed:before{content:"\\f3e1"}.fa-puzzle-piece:before{content:"\\f12e"}.fa-python:before{content:"\\f3e2"}.fa-qq:before{content:"\\f1d6"}.fa-qrcode:before{content:"\\f029"}.fa-question:before{content:"\\f128"}.fa-question-circle:before{content:"\\f059"}.fa-quidditch:before{content:"\\f458"}.fa-quinscape:before{content:"\\f459"}.fa-quora:before{content:"\\f2c4"}.fa-quote-left:before{content:"\\f10d"}.fa-quote-right:before{content:"\\f10e"}.fa-quran:before{content:"\\f687"}.fa-r-project:before{content:"\\f4f7"}.fa-radiation:before{content:"\\f7b9"}.fa-radiation-alt:before{content:"\\f7ba"}.fa-rainbow:before{content:"\\f75b"}.fa-random:before{content:"\\f074"}.fa-raspberry-pi:before{content:"\\f7bb"}.fa-ravelry:before{content:"\\f2d9"}.fa-react:before{content:"\\f41b"}.fa-reacteurope:before{content:"\\f75d"}.fa-readme:before{content:"\\f4d5"}.fa-rebel:before{content:"\\f1d0"}.fa-receipt:before{content:"\\f543"}.fa-record-vinyl:before{content:"\\f8d9"}.fa-recycle:before{content:"\\f1b8"}.fa-red-river:before{content:"\\f3e3"}.fa-reddit:before{content:"\\f1a1"}.fa-reddit-alien:before{content:"\\f281"}.fa-reddit-square:before{content:"\\f1a2"}.fa-redhat:before{content:"\\f7bc"}.fa-redo:before{content:"\\f01e"}.fa-redo-alt:before{content:"\\f2f9"}.fa-registered:before{content:"\\f25d"}.fa-remove-format:before{content:"\\f87d"}.fa-renren:before{content:"\\f18b"}.fa-reply:before{content:"\\f3e5"}.fa-reply-all:before{content:"\\f122"}.fa-replyd:before{content:"\\f3e6"}.fa-republican:before{content:"\\f75e"}.fa-researchgate:before{content:"\\f4f8"}.fa-resolving:before{content:"\\f3e7"}.fa-restroom:before{content:"\\f7bd"}.fa-retweet:before{content:"\\f079"}.fa-rev:before{content:"\\f5b2"}.fa-ribbon:before{content:"\\f4d6"}.fa-ring:before{content:"\\f70b"}.fa-road:before{content:"\\f018"}.fa-robot:before{content:"\\f544"}.fa-rocket:before{content:"\\f135"}.fa-rocketchat:before{content:"\\f3e8"}.fa-rockrms:before{content:"\\f3e9"}.fa-route:before{content:"\\f4d7"}.fa-rss:before{content:"\\f09e"}.fa-rss-square:before{content:"\\f143"}.fa-ruble-sign:before{content:"\\f158"}.fa-ruler:before{content:"\\f545"}.fa-ruler-combined:before{content:"\\f546"}.fa-ruler-horizontal:before{content:"\\f547"}.fa-ruler-vertical:before{content:"\\f548"}.fa-running:before{content:"\\f70c"}.fa-rupee-sign:before{content:"\\f156"}.fa-rust:before{content:"\\e07a"}.fa-sad-cry:before{content:"\\f5b3"}.fa-sad-tear:before{content:"\\f5b4"}.fa-safari:before{content:"\\f267"}.fa-salesforce:before{content:"\\f83b"}.fa-sass:before{content:"\\f41e"}.fa-satellite:before{content:"\\f7bf"}.fa-satellite-dish:before{content:"\\f7c0"}.fa-save:before{content:"\\f0c7"}.fa-schlix:before{content:"\\f3ea"}.fa-school:before{content:"\\f549"}.fa-screwdriver:before{content:"\\f54a"}.fa-scribd:before{content:"\\f28a"}.fa-scroll:before{content:"\\f70e"}.fa-sd-card:before{content:"\\f7c2"}.fa-search:before{content:"\\f002"}.fa-search-dollar:before{content:"\\f688"}.fa-search-location:before{content:"\\f689"}.fa-search-minus:before{content:"\\f010"}.fa-search-plus:before{content:"\\f00e"}.fa-searchengin:before{content:"\\f3eb"}.fa-seedling:before{content:"\\f4d8"}.fa-sellcast:before{content:"\\f2da"}.fa-sellsy:before{content:"\\f213"}.fa-server:before{content:"\\f233"}.fa-servicestack:before{content:"\\f3ec"}.fa-shapes:before{content:"\\f61f"}.fa-share:before{content:"\\f064"}.fa-share-alt:before{content:"\\f1e0"}.fa-share-alt-square:before{content:"\\f1e1"}.fa-share-square:before{content:"\\f14d"}.fa-shekel-sign:before{content:"\\f20b"}.fa-shield-alt:before{content:"\\f3ed"}.fa-shield-virus:before{content:"\\e06c"}.fa-ship:before{content:"\\f21a"}.fa-shipping-fast:before{content:"\\f48b"}.fa-shirtsinbulk:before{content:"\\f214"}.fa-shoe-prints:before{content:"\\f54b"}.fa-shopify:before{content:"\\e057"}.fa-shopping-bag:before{content:"\\f290"}.fa-shopping-basket:before{content:"\\f291"}.fa-shopping-cart:before{content:"\\f07a"}.fa-shopware:before{content:"\\f5b5"}.fa-shower:before{content:"\\f2cc"}.fa-shuttle-van:before{content:"\\f5b6"}.fa-sign:before{content:"\\f4d9"}.fa-sign-in-alt:before{content:"\\f2f6"}.fa-sign-language:before{content:"\\f2a7"}.fa-sign-out-alt:before{content:"\\f2f5"}.fa-signal:before{content:"\\f012"}.fa-signature:before{content:"\\f5b7"}.fa-sim-card:before{content:"\\f7c4"}.fa-simplybuilt:before{content:"\\f215"}.fa-sink:before{content:"\\e06d"}.fa-sistrix:before{content:"\\f3ee"}.fa-sitemap:before{content:"\\f0e8"}.fa-sith:before{content:"\\f512"}.fa-skating:before{content:"\\f7c5"}.fa-sketch:before{content:"\\f7c6"}.fa-skiing:before{content:"\\f7c9"}.fa-skiing-nordic:before{content:"\\f7ca"}.fa-skull:before{content:"\\f54c"}.fa-skull-crossbones:before{content:"\\f714"}.fa-skyatlas:before{content:"\\f216"}.fa-skype:before{content:"\\f17e"}.fa-slack:before{content:"\\f198"}.fa-slack-hash:before{content:"\\f3ef"}.fa-slash:before{content:"\\f715"}.fa-sleigh:before{content:"\\f7cc"}.fa-sliders-h:before{content:"\\f1de"}.fa-slideshare:before{content:"\\f1e7"}.fa-smile:before{content:"\\f118"}.fa-smile-beam:before{content:"\\f5b8"}.fa-smile-wink:before{content:"\\f4da"}.fa-smog:before{content:"\\f75f"}.fa-smoking:before{content:"\\f48d"}.fa-smoking-ban:before{content:"\\f54d"}.fa-sms:before{content:"\\f7cd"}.fa-snapchat:before{content:"\\f2ab"}.fa-snapchat-ghost:before{content:"\\f2ac"}.fa-snapchat-square:before{content:"\\f2ad"}.fa-snowboarding:before{content:"\\f7ce"}.fa-snowflake:before{content:"\\f2dc"}.fa-snowman:before{content:"\\f7d0"}.fa-snowplow:before{content:"\\f7d2"}.fa-soap:before{content:"\\e06e"}.fa-socks:before{content:"\\f696"}.fa-solar-panel:before{content:"\\f5ba"}.fa-sort:before{content:"\\f0dc"}.fa-sort-alpha-down:before{content:"\\f15d"}.fa-sort-alpha-down-alt:before{content:"\\f881"}.fa-sort-alpha-up:before{content:"\\f15e"}.fa-sort-alpha-up-alt:before{content:"\\f882"}.fa-sort-amount-down:before{content:"\\f160"}.fa-sort-amount-down-alt:before{content:"\\f884"}.fa-sort-amount-up:before{content:"\\f161"}.fa-sort-amount-up-alt:before{content:"\\f885"}.fa-sort-down:before{content:"\\f0dd"}.fa-sort-numeric-down:before{content:"\\f162"}.fa-sort-numeric-down-alt:before{content:"\\f886"}.fa-sort-numeric-up:before{content:"\\f163"}.fa-sort-numeric-up-alt:before{content:"\\f887"}.fa-sort-up:before{content:"\\f0de"}.fa-soundcloud:before{content:"\\f1be"}.fa-sourcetree:before{content:"\\f7d3"}.fa-spa:before{content:"\\f5bb"}.fa-space-shuttle:before{content:"\\f197"}.fa-speakap:before{content:"\\f3f3"}.fa-speaker-deck:before{content:"\\f83c"}.fa-spell-check:before{content:"\\f891"}.fa-spider:before{content:"\\f717"}.fa-spinner:before{content:"\\f110"}.fa-splotch:before{content:"\\f5bc"}.fa-spotify:before{content:"\\f1bc"}.fa-spray-can:before{content:"\\f5bd"}.fa-square:before{content:"\\f0c8"}.fa-square-full:before{content:"\\f45c"}.fa-square-root-alt:before{content:"\\f698"}.fa-squarespace:before{content:"\\f5be"}.fa-stack-exchange:before{content:"\\f18d"}.fa-stack-overflow:before{content:"\\f16c"}.fa-stackpath:before{content:"\\f842"}.fa-stamp:before{content:"\\f5bf"}.fa-star:before{content:"\\f005"}.fa-star-and-crescent:before{content:"\\f699"}.fa-star-half:before{content:"\\f089"}.fa-star-half-alt:before{content:"\\f5c0"}.fa-star-of-david:before{content:"\\f69a"}.fa-star-of-life:before{content:"\\f621"}.fa-staylinked:before{content:"\\f3f5"}.fa-steam:before{content:"\\f1b6"}.fa-steam-square:before{content:"\\f1b7"}.fa-steam-symbol:before{content:"\\f3f6"}.fa-step-backward:before{content:"\\f048"}.fa-step-forward:before{content:"\\f051"}.fa-stethoscope:before{content:"\\f0f1"}.fa-sticker-mule:before{content:"\\f3f7"}.fa-sticky-note:before{content:"\\f249"}.fa-stop:before{content:"\\f04d"}.fa-stop-circle:before{content:"\\f28d"}.fa-stopwatch:before{content:"\\f2f2"}.fa-stopwatch-20:before{content:"\\e06f"}.fa-store:before{content:"\\f54e"}.fa-store-alt:before{content:"\\f54f"}.fa-store-alt-slash:before{content:"\\e070"}.fa-store-slash:before{content:"\\e071"}.fa-strava:before{content:"\\f428"}.fa-stream:before{content:"\\f550"}.fa-street-view:before{content:"\\f21d"}.fa-strikethrough:before{content:"\\f0cc"}.fa-stripe:before{content:"\\f429"}.fa-stripe-s:before{content:"\\f42a"}.fa-stroopwafel:before{content:"\\f551"}.fa-studiovinari:before{content:"\\f3f8"}.fa-stumbleupon:before{content:"\\f1a4"}.fa-stumbleupon-circle:before{content:"\\f1a3"}.fa-subscript:before{content:"\\f12c"}.fa-subway:before{content:"\\f239"}.fa-suitcase:before{content:"\\f0f2"}.fa-suitcase-rolling:before{content:"\\f5c1"}.fa-sun:before{content:"\\f185"}.fa-superpowers:before{content:"\\f2dd"}.fa-superscript:before{content:"\\f12b"}.fa-supple:before{content:"\\f3f9"}.fa-surprise:before{content:"\\f5c2"}.fa-suse:before{content:"\\f7d6"}.fa-swatchbook:before{content:"\\f5c3"}.fa-swift:before{content:"\\f8e1"}.fa-swimmer:before{content:"\\f5c4"}.fa-swimming-pool:before{content:"\\f5c5"}.fa-symfony:before{content:"\\f83d"}.fa-synagogue:before{content:"\\f69b"}.fa-sync:before{content:"\\f021"}.fa-sync-alt:before{content:"\\f2f1"}.fa-syringe:before{content:"\\f48e"}.fa-table:before{content:"\\f0ce"}.fa-table-tennis:before{content:"\\f45d"}.fa-tablet:before{content:"\\f10a"}.fa-tablet-alt:before{content:"\\f3fa"}.fa-tablets:before{content:"\\f490"}.fa-tachometer-alt:before{content:"\\f3fd"}.fa-tag:before{content:"\\f02b"}.fa-tags:before{content:"\\f02c"}.fa-tape:before{content:"\\f4db"}.fa-tasks:before{content:"\\f0ae"}.fa-taxi:before{content:"\\f1ba"}.fa-teamspeak:before{content:"\\f4f9"}.fa-teeth:before{content:"\\f62e"}.fa-teeth-open:before{content:"\\f62f"}.fa-telegram:before{content:"\\f2c6"}.fa-telegram-plane:before{content:"\\f3fe"}.fa-temperature-high:before{content:"\\f769"}.fa-temperature-low:before{content:"\\f76b"}.fa-tencent-weibo:before{content:"\\f1d5"}.fa-tenge:before{content:"\\f7d7"}.fa-terminal:before{content:"\\f120"}.fa-text-height:before{content:"\\f034"}.fa-text-width:before{content:"\\f035"}.fa-th:before{content:"\\f00a"}.fa-th-large:before{content:"\\f009"}.fa-th-list:before{content:"\\f00b"}.fa-the-red-yeti:before{content:"\\f69d"}.fa-theater-masks:before{content:"\\f630"}.fa-themeco:before{content:"\\f5c6"}.fa-themeisle:before{content:"\\f2b2"}.fa-thermometer:before{content:"\\f491"}.fa-thermometer-empty:before{content:"\\f2cb"}.fa-thermometer-full:before{content:"\\f2c7"}.fa-thermometer-half:before{content:"\\f2c9"}.fa-thermometer-quarter:before{content:"\\f2ca"}.fa-thermometer-three-quarters:before{content:"\\f2c8"}.fa-think-peaks:before{content:"\\f731"}.fa-thumbs-down:before{content:"\\f165"}.fa-thumbs-up:before{content:"\\f164"}.fa-thumbtack:before{content:"\\f08d"}.fa-ticket-alt:before{content:"\\f3ff"}.fa-tiktok:before{content:"\\e07b"}.fa-times:before{content:"\\f00d"}.fa-times-circle:before{content:"\\f057"}.fa-tint:before{content:"\\f043"}.fa-tint-slash:before{content:"\\f5c7"}.fa-tired:before{content:"\\f5c8"}.fa-toggle-off:before{content:"\\f204"}.fa-toggle-on:before{content:"\\f205"}.fa-toilet:before{content:"\\f7d8"}.fa-toilet-paper:before{content:"\\f71e"}.fa-toilet-paper-slash:before{content:"\\e072"}.fa-toolbox:before{content:"\\f552"}.fa-tools:before{content:"\\f7d9"}.fa-tooth:before{content:"\\f5c9"}.fa-torah:before{content:"\\f6a0"}.fa-torii-gate:before{content:"\\f6a1"}.fa-tractor:before{content:"\\f722"}.fa-trade-federation:before{content:"\\f513"}.fa-trademark:before{content:"\\f25c"}.fa-traffic-light:before{content:"\\f637"}.fa-trailer:before{content:"\\e041"}.fa-train:before{content:"\\f238"}.fa-tram:before{content:"\\f7da"}.fa-transgender:before{content:"\\f224"}.fa-transgender-alt:before{content:"\\f225"}.fa-trash:before{content:"\\f1f8"}.fa-trash-alt:before{content:"\\f2ed"}.fa-trash-restore:before{content:"\\f829"}.fa-trash-restore-alt:before{content:"\\f82a"}.fa-tree:before{content:"\\f1bb"}.fa-trello:before{content:"\\f181"}.fa-trophy:before{content:"\\f091"}.fa-truck:before{content:"\\f0d1"}.fa-truck-loading:before{content:"\\f4de"}.fa-truck-monster:before{content:"\\f63b"}.fa-truck-moving:before{content:"\\f4df"}.fa-truck-pickup:before{content:"\\f63c"}.fa-tshirt:before{content:"\\f553"}.fa-tty:before{content:"\\f1e4"}.fa-tumblr:before{content:"\\f173"}.fa-tumblr-square:before{content:"\\f174"}.fa-tv:before{content:"\\f26c"}.fa-twitch:before{content:"\\f1e8"}.fa-twitter:before{content:"\\f099"}.fa-twitter-square:before{content:"\\f081"}.fa-typo3:before{content:"\\f42b"}.fa-uber:before{content:"\\f402"}.fa-ubuntu:before{content:"\\f7df"}.fa-uikit:before{content:"\\f403"}.fa-umbraco:before{content:"\\f8e8"}.fa-umbrella:before{content:"\\f0e9"}.fa-umbrella-beach:before{content:"\\f5ca"}.fa-uncharted:before{content:"\\e084"}.fa-underline:before{content:"\\f0cd"}.fa-undo:before{content:"\\f0e2"}.fa-undo-alt:before{content:"\\f2ea"}.fa-uniregistry:before{content:"\\f404"}.fa-unity:before{content:"\\e049"}.fa-universal-access:before{content:"\\f29a"}.fa-university:before{content:"\\f19c"}.fa-unlink:before{content:"\\f127"}.fa-unlock:before{content:"\\f09c"}.fa-unlock-alt:before{content:"\\f13e"}.fa-unsplash:before{content:"\\e07c"}.fa-untappd:before{content:"\\f405"}.fa-upload:before{content:"\\f093"}.fa-ups:before{content:"\\f7e0"}.fa-usb:before{content:"\\f287"}.fa-user:before{content:"\\f007"}.fa-user-alt:before{content:"\\f406"}.fa-user-alt-slash:before{content:"\\f4fa"}.fa-user-astronaut:before{content:"\\f4fb"}.fa-user-check:before{content:"\\f4fc"}.fa-user-circle:before{content:"\\f2bd"}.fa-user-clock:before{content:"\\f4fd"}.fa-user-cog:before{content:"\\f4fe"}.fa-user-edit:before{content:"\\f4ff"}.fa-user-friends:before{content:"\\f500"}.fa-user-graduate:before{content:"\\f501"}.fa-user-injured:before{content:"\\f728"}.fa-user-lock:before{content:"\\f502"}.fa-user-md:before{content:"\\f0f0"}.fa-user-minus:before{content:"\\f503"}.fa-user-ninja:before{content:"\\f504"}.fa-user-nurse:before{content:"\\f82f"}.fa-user-plus:before{content:"\\f234"}.fa-user-secret:before{content:"\\f21b"}.fa-user-shield:before{content:"\\f505"}.fa-user-slash:before{content:"\\f506"}.fa-user-tag:before{content:"\\f507"}.fa-user-tie:before{content:"\\f508"}.fa-user-times:before{content:"\\f235"}.fa-users:before{content:"\\f0c0"}.fa-users-cog:before{content:"\\f509"}.fa-users-slash:before{content:"\\e073"}.fa-usps:before{content:"\\f7e1"}.fa-ussunnah:before{content:"\\f407"}.fa-utensil-spoon:before{content:"\\f2e5"}.fa-utensils:before{content:"\\f2e7"}.fa-vaadin:before{content:"\\f408"}.fa-vector-square:before{content:"\\f5cb"}.fa-venus:before{content:"\\f221"}.fa-venus-double:before{content:"\\f226"}.fa-venus-mars:before{content:"\\f228"}.fa-vest:before{content:"\\e085"}.fa-vest-patches:before{content:"\\e086"}.fa-viacoin:before{content:"\\f237"}.fa-viadeo:before{content:"\\f2a9"}.fa-viadeo-square:before{content:"\\f2aa"}.fa-vial:before{content:"\\f492"}.fa-vials:before{content:"\\f493"}.fa-viber:before{content:"\\f409"}.fa-video:before{content:"\\f03d"}.fa-video-slash:before{content:"\\f4e2"}.fa-vihara:before{content:"\\f6a7"}.fa-vimeo:before{content:"\\f40a"}.fa-vimeo-square:before{content:"\\f194"}.fa-vimeo-v:before{content:"\\f27d"}.fa-vine:before{content:"\\f1ca"}.fa-virus:before{content:"\\e074"}.fa-virus-slash:before{content:"\\e075"}.fa-viruses:before{content:"\\e076"}.fa-vk:before{content:"\\f189"}.fa-vnv:before{content:"\\f40b"}.fa-voicemail:before{content:"\\f897"}.fa-volleyball-ball:before{content:"\\f45f"}.fa-volume-down:before{content:"\\f027"}.fa-volume-mute:before{content:"\\f6a9"}.fa-volume-off:before{content:"\\f026"}.fa-volume-up:before{content:"\\f028"}.fa-vote-yea:before{content:"\\f772"}.fa-vr-cardboard:before{content:"\\f729"}.fa-vuejs:before{content:"\\f41f"}.fa-walking:before{content:"\\f554"}.fa-wallet:before{content:"\\f555"}.fa-warehouse:before{content:"\\f494"}.fa-watchman-monitoring:before{content:"\\e087"}.fa-water:before{content:"\\f773"}.fa-wave-square:before{content:"\\f83e"}.fa-waze:before{content:"\\f83f"}.fa-weebly:before{content:"\\f5cc"}.fa-weibo:before{content:"\\f18a"}.fa-weight:before{content:"\\f496"}.fa-weight-hanging:before{content:"\\f5cd"}.fa-weixin:before{content:"\\f1d7"}.fa-whatsapp:before{content:"\\f232"}.fa-whatsapp-square:before{content:"\\f40c"}.fa-wheelchair:before{content:"\\f193"}.fa-whmcs:before{content:"\\f40d"}.fa-wifi:before{content:"\\f1eb"}.fa-wikipedia-w:before{content:"\\f266"}.fa-wind:before{content:"\\f72e"}.fa-window-close:before{content:"\\f410"}.fa-window-maximize:before{content:"\\f2d0"}.fa-window-minimize:before{content:"\\f2d1"}.fa-window-restore:before{content:"\\f2d2"}.fa-windows:before{content:"\\f17a"}.fa-wine-bottle:before{content:"\\f72f"}.fa-wine-glass:before{content:"\\f4e3"}.fa-wine-glass-alt:before{content:"\\f5ce"}.fa-wix:before{content:"\\f5cf"}.fa-wizards-of-the-coast:before{content:"\\f730"}.fa-wodu:before{content:"\\e088"}.fa-wolf-pack-battalion:before{content:"\\f514"}.fa-won-sign:before{content:"\\f159"}.fa-wordpress:before{content:"\\f19a"}.fa-wordpress-simple:before{content:"\\f411"}.fa-wpbeginner:before{content:"\\f297"}.fa-wpexplorer:before{content:"\\f2de"}.fa-wpforms:before{content:"\\f298"}.fa-wpressr:before{content:"\\f3e4"}.fa-wrench:before{content:"\\f0ad"}.fa-x-ray:before{content:"\\f497"}.fa-xbox:before{content:"\\f412"}.fa-xing:before{content:"\\f168"}.fa-xing-square:before{content:"\\f169"}.fa-y-combinator:before{content:"\\f23b"}.fa-yahoo:before{content:"\\f19e"}.fa-yammer:before{content:"\\f840"}.fa-yandex:before{content:"\\f413"}.fa-yandex-international:before{content:"\\f414"}.fa-yarn:before{content:"\\f7e3"}.fa-yelp:before{content:"\\f1e9"}.fa-yen-sign:before{content:"\\f157"}.fa-yin-yang:before{content:"\\f6ad"}.fa-yoast:before{content:"\\f2b1"}.fa-youtube:before{content:"\\f167"}.fa-youtube-square:before{content:"\\f431"}.fa-zhihu:before{content:"\\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:400;font-display:block;src:url('+A+");src:url("+T+') format("embedded-opentype"),url('+q+') format("woff2"),url('+I+') format("woff"),url('+z+') format("truetype"),url('+B+') format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:block;src:url('+O+");src:url("+R+') format("embedded-opentype"),url('+j+') format("woff2"),url('+L+') format("woff"),url('+E+') format("truetype"),url('+S+') format("svg")}.fab,.far{font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:block;src:url('+C+");src:url("+N+') format("embedded-opentype"),url('+U+') format("woff2"),url('+D+') format("woff"),url('+M+') format("truetype"),url('+X+') format("svg")}.fa,.far,.fas{font-family:"Font Awesome 5 Free"}.fa,.fas{font-weight:900}',""]);const H=_},14115:(e,f,o)=>{o.d(f,{A:()=>i});var t=o(31601);var n=o.n(t);var a=o(76314);var r=o.n(a);var c=r()(n());c.push([e.id,'/*!\n * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\n.fa.fa-glass:before{content:"\\f000"}.fa.fa-meetup{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-star-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-star-o:before{content:"\\f005"}.fa.fa-close:before,.fa.fa-remove:before{content:"\\f00d"}.fa.fa-gear:before{content:"\\f013"}.fa.fa-trash-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-trash-o:before{content:"\\f2ed"}.fa.fa-file-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-o:before{content:"\\f15b"}.fa.fa-clock-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-clock-o:before{content:"\\f017"}.fa.fa-arrow-circle-o-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-arrow-circle-o-down:before{content:"\\f358"}.fa.fa-arrow-circle-o-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-arrow-circle-o-up:before{content:"\\f35b"}.fa.fa-play-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-play-circle-o:before{content:"\\f144"}.fa.fa-repeat:before,.fa.fa-rotate-right:before{content:"\\f01e"}.fa.fa-refresh:before{content:"\\f021"}.fa.fa-list-alt{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-dedent:before{content:"\\f03b"}.fa.fa-video-camera:before{content:"\\f03d"}.fa.fa-picture-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-picture-o:before{content:"\\f03e"}.fa.fa-photo{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-photo:before{content:"\\f03e"}.fa.fa-image{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-image:before{content:"\\f03e"}.fa.fa-pencil:before{content:"\\f303"}.fa.fa-map-marker:before{content:"\\f3c5"}.fa.fa-pencil-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-pencil-square-o:before{content:"\\f044"}.fa.fa-share-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-share-square-o:before{content:"\\f14d"}.fa.fa-check-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-check-square-o:before{content:"\\f14a"}.fa.fa-arrows:before{content:"\\f0b2"}.fa.fa-times-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-times-circle-o:before{content:"\\f057"}.fa.fa-check-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-check-circle-o:before{content:"\\f058"}.fa.fa-mail-forward:before{content:"\\f064"}.fa.fa-expand:before{content:"\\f424"}.fa.fa-compress:before{content:"\\f422"}.fa.fa-eye,.fa.fa-eye-slash{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-warning:before{content:"\\f071"}.fa.fa-calendar:before{content:"\\f073"}.fa.fa-arrows-v:before{content:"\\f338"}.fa.fa-arrows-h:before{content:"\\f337"}.fa.fa-bar-chart{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bar-chart:before{content:"\\f080"}.fa.fa-bar-chart-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bar-chart-o:before{content:"\\f080"}.fa.fa-facebook-square,.fa.fa-twitter-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-gears:before{content:"\\f085"}.fa.fa-thumbs-o-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-thumbs-o-up:before{content:"\\f164"}.fa.fa-thumbs-o-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-thumbs-o-down:before{content:"\\f165"}.fa.fa-heart-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-heart-o:before{content:"\\f004"}.fa.fa-sign-out:before{content:"\\f2f5"}.fa.fa-linkedin-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-linkedin-square:before{content:"\\f08c"}.fa.fa-thumb-tack:before{content:"\\f08d"}.fa.fa-external-link:before{content:"\\f35d"}.fa.fa-sign-in:before{content:"\\f2f6"}.fa.fa-github-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-lemon-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-lemon-o:before{content:"\\f094"}.fa.fa-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-square-o:before{content:"\\f0c8"}.fa.fa-bookmark-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bookmark-o:before{content:"\\f02e"}.fa.fa-facebook,.fa.fa-twitter{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-facebook:before{content:"\\f39e"}.fa.fa-facebook-f{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-facebook-f:before{content:"\\f39e"}.fa.fa-github{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-credit-card{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-feed:before{content:"\\f09e"}.fa.fa-hdd-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hdd-o:before{content:"\\f0a0"}.fa.fa-hand-o-right{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-o-right:before{content:"\\f0a4"}.fa.fa-hand-o-left{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-o-left:before{content:"\\f0a5"}.fa.fa-hand-o-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-o-up:before{content:"\\f0a6"}.fa.fa-hand-o-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-o-down:before{content:"\\f0a7"}.fa.fa-arrows-alt:before{content:"\\f31e"}.fa.fa-group:before{content:"\\f0c0"}.fa.fa-chain:before{content:"\\f0c1"}.fa.fa-scissors:before{content:"\\f0c4"}.fa.fa-files-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-files-o:before{content:"\\f0c5"}.fa.fa-floppy-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-floppy-o:before{content:"\\f0c7"}.fa.fa-navicon:before,.fa.fa-reorder:before{content:"\\f0c9"}.fa.fa-google-plus,.fa.fa-google-plus-square,.fa.fa-pinterest,.fa.fa-pinterest-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-google-plus:before{content:"\\f0d5"}.fa.fa-money{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-money:before{content:"\\f3d1"}.fa.fa-unsorted:before{content:"\\f0dc"}.fa.fa-sort-desc:before{content:"\\f0dd"}.fa.fa-sort-asc:before{content:"\\f0de"}.fa.fa-linkedin{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-linkedin:before{content:"\\f0e1"}.fa.fa-rotate-left:before{content:"\\f0e2"}.fa.fa-legal:before{content:"\\f0e3"}.fa.fa-dashboard:before,.fa.fa-tachometer:before{content:"\\f3fd"}.fa.fa-comment-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-comment-o:before{content:"\\f075"}.fa.fa-comments-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-comments-o:before{content:"\\f086"}.fa.fa-flash:before{content:"\\f0e7"}.fa.fa-clipboard,.fa.fa-paste{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-paste:before{content:"\\f328"}.fa.fa-lightbulb-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-lightbulb-o:before{content:"\\f0eb"}.fa.fa-exchange:before{content:"\\f362"}.fa.fa-cloud-download:before{content:"\\f381"}.fa.fa-cloud-upload:before{content:"\\f382"}.fa.fa-bell-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bell-o:before{content:"\\f0f3"}.fa.fa-cutlery:before{content:"\\f2e7"}.fa.fa-file-text-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-text-o:before{content:"\\f15c"}.fa.fa-building-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-building-o:before{content:"\\f1ad"}.fa.fa-hospital-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hospital-o:before{content:"\\f0f8"}.fa.fa-tablet:before{content:"\\f3fa"}.fa.fa-mobile-phone:before,.fa.fa-mobile:before{content:"\\f3cd"}.fa.fa-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-circle-o:before{content:"\\f111"}.fa.fa-mail-reply:before{content:"\\f3e5"}.fa.fa-github-alt{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-folder-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-folder-o:before{content:"\\f07b"}.fa.fa-folder-open-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-folder-open-o:before{content:"\\f07c"}.fa.fa-smile-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-smile-o:before{content:"\\f118"}.fa.fa-frown-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-frown-o:before{content:"\\f119"}.fa.fa-meh-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-meh-o:before{content:"\\f11a"}.fa.fa-keyboard-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-keyboard-o:before{content:"\\f11c"}.fa.fa-flag-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-flag-o:before{content:"\\f024"}.fa.fa-mail-reply-all:before{content:"\\f122"}.fa.fa-star-half-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-star-half-o:before{content:"\\f089"}.fa.fa-star-half-empty{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-star-half-empty:before{content:"\\f089"}.fa.fa-star-half-full{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-star-half-full:before{content:"\\f089"}.fa.fa-code-fork:before{content:"\\f126"}.fa.fa-chain-broken:before{content:"\\f127"}.fa.fa-shield:before{content:"\\f3ed"}.fa.fa-calendar-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-o:before{content:"\\f133"}.fa.fa-css3,.fa.fa-html5,.fa.fa-maxcdn{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-ticket:before{content:"\\f3ff"}.fa.fa-minus-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-minus-square-o:before{content:"\\f146"}.fa.fa-level-up:before{content:"\\f3bf"}.fa.fa-level-down:before{content:"\\f3be"}.fa.fa-pencil-square:before{content:"\\f14b"}.fa.fa-external-link-square:before{content:"\\f360"}.fa.fa-compass{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-down:before{content:"\\f150"}.fa.fa-toggle-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-toggle-down:before{content:"\\f150"}.fa.fa-caret-square-o-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-up:before{content:"\\f151"}.fa.fa-toggle-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-toggle-up:before{content:"\\f151"}.fa.fa-caret-square-o-right{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-right:before{content:"\\f152"}.fa.fa-toggle-right{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-toggle-right:before{content:"\\f152"}.fa.fa-eur:before,.fa.fa-euro:before{content:"\\f153"}.fa.fa-gbp:before{content:"\\f154"}.fa.fa-dollar:before,.fa.fa-usd:before{content:"\\f155"}.fa.fa-inr:before,.fa.fa-rupee:before{content:"\\f156"}.fa.fa-cny:before,.fa.fa-jpy:before,.fa.fa-rmb:before,.fa.fa-yen:before{content:"\\f157"}.fa.fa-rouble:before,.fa.fa-rub:before,.fa.fa-ruble:before{content:"\\f158"}.fa.fa-krw:before,.fa.fa-won:before{content:"\\f159"}.fa.fa-bitcoin,.fa.fa-btc{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-bitcoin:before{content:"\\f15a"}.fa.fa-file-text:before{content:"\\f15c"}.fa.fa-sort-alpha-asc:before{content:"\\f15d"}.fa.fa-sort-alpha-desc:before{content:"\\f881"}.fa.fa-sort-amount-asc:before{content:"\\f160"}.fa.fa-sort-amount-desc:before{content:"\\f884"}.fa.fa-sort-numeric-asc:before{content:"\\f162"}.fa.fa-sort-numeric-desc:before{content:"\\f886"}.fa.fa-xing,.fa.fa-xing-square,.fa.fa-youtube,.fa.fa-youtube-play,.fa.fa-youtube-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-youtube-play:before{content:"\\f167"}.fa.fa-adn,.fa.fa-bitbucket,.fa.fa-bitbucket-square,.fa.fa-dropbox,.fa.fa-flickr,.fa.fa-instagram,.fa.fa-stack-overflow{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-bitbucket-square:before{content:"\\f171"}.fa.fa-tumblr,.fa.fa-tumblr-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-long-arrow-down:before{content:"\\f309"}.fa.fa-long-arrow-up:before{content:"\\f30c"}.fa.fa-long-arrow-left:before{content:"\\f30a"}.fa.fa-long-arrow-right:before{content:"\\f30b"}.fa.fa-android,.fa.fa-apple,.fa.fa-dribbble,.fa.fa-foursquare,.fa.fa-gittip,.fa.fa-gratipay,.fa.fa-linux,.fa.fa-skype,.fa.fa-trello,.fa.fa-windows{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-gittip:before{content:"\\f184"}.fa.fa-sun-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-sun-o:before{content:"\\f185"}.fa.fa-moon-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-moon-o:before{content:"\\f186"}.fa.fa-pagelines,.fa.fa-renren,.fa.fa-stack-exchange,.fa.fa-vk,.fa.fa-weibo{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-arrow-circle-o-right{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-arrow-circle-o-right:before{content:"\\f35a"}.fa.fa-arrow-circle-o-left{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-arrow-circle-o-left:before{content:"\\f359"}.fa.fa-caret-square-o-left{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-left:before{content:"\\f191"}.fa.fa-toggle-left{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-toggle-left:before{content:"\\f191"}.fa.fa-dot-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-dot-circle-o:before{content:"\\f192"}.fa.fa-vimeo-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-try:before,.fa.fa-turkish-lira:before{content:"\\f195"}.fa.fa-plus-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-plus-square-o:before{content:"\\f0fe"}.fa.fa-openid,.fa.fa-slack,.fa.fa-wordpress{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-bank:before,.fa.fa-institution:before{content:"\\f19c"}.fa.fa-mortar-board:before{content:"\\f19d"}.fa.fa-delicious,.fa.fa-digg,.fa.fa-drupal,.fa.fa-google,.fa.fa-joomla,.fa.fa-pied-piper-alt,.fa.fa-pied-piper-pp,.fa.fa-reddit,.fa.fa-reddit-square,.fa.fa-stumbleupon,.fa.fa-stumbleupon-circle,.fa.fa-yahoo{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-spoon:before{content:"\\f2e5"}.fa.fa-behance,.fa.fa-behance-square,.fa.fa-steam,.fa.fa-steam-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-automobile:before{content:"\\f1b9"}.fa.fa-envelope-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-envelope-o:before{content:"\\f0e0"}.fa.fa-deviantart,.fa.fa-soundcloud,.fa.fa-spotify{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-file-pdf-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-pdf-o:before{content:"\\f1c1"}.fa.fa-file-word-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-word-o:before{content:"\\f1c2"}.fa.fa-file-excel-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-excel-o:before{content:"\\f1c3"}.fa.fa-file-powerpoint-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-powerpoint-o:before{content:"\\f1c4"}.fa.fa-file-image-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-image-o:before{content:"\\f1c5"}.fa.fa-file-photo-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-photo-o:before{content:"\\f1c5"}.fa.fa-file-picture-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-picture-o:before{content:"\\f1c5"}.fa.fa-file-archive-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-archive-o:before{content:"\\f1c6"}.fa.fa-file-zip-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-zip-o:before{content:"\\f1c6"}.fa.fa-file-audio-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-audio-o:before{content:"\\f1c7"}.fa.fa-file-sound-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-sound-o:before{content:"\\f1c7"}.fa.fa-file-video-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-video-o:before{content:"\\f1c8"}.fa.fa-file-movie-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-movie-o:before{content:"\\f1c8"}.fa.fa-file-code-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-code-o:before{content:"\\f1c9"}.fa.fa-codepen,.fa.fa-jsfiddle,.fa.fa-vine{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-life-bouy,.fa.fa-life-ring{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-life-bouy:before{content:"\\f1cd"}.fa.fa-life-buoy{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-life-buoy:before{content:"\\f1cd"}.fa.fa-life-saver{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-life-saver:before{content:"\\f1cd"}.fa.fa-support{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-support:before{content:"\\f1cd"}.fa.fa-circle-o-notch:before{content:"\\f1ce"}.fa.fa-ra,.fa.fa-rebel{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-ra:before{content:"\\f1d0"}.fa.fa-resistance{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-resistance:before{content:"\\f1d0"}.fa.fa-empire,.fa.fa-ge{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-ge:before{content:"\\f1d1"}.fa.fa-git,.fa.fa-git-square,.fa.fa-hacker-news,.fa.fa-y-combinator-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-y-combinator-square:before{content:"\\f1d4"}.fa.fa-yc-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-yc-square:before{content:"\\f1d4"}.fa.fa-qq,.fa.fa-tencent-weibo,.fa.fa-wechat,.fa.fa-weixin{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-wechat:before{content:"\\f1d7"}.fa.fa-send:before{content:"\\f1d8"}.fa.fa-paper-plane-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-paper-plane-o:before{content:"\\f1d8"}.fa.fa-send-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-send-o:before{content:"\\f1d8"}.fa.fa-circle-thin{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-circle-thin:before{content:"\\f111"}.fa.fa-header:before{content:"\\f1dc"}.fa.fa-sliders:before{content:"\\f1de"}.fa.fa-futbol-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-futbol-o:before{content:"\\f1e3"}.fa.fa-soccer-ball-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-soccer-ball-o:before{content:"\\f1e3"}.fa.fa-slideshare,.fa.fa-twitch,.fa.fa-yelp{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-newspaper-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-newspaper-o:before{content:"\\f1ea"}.fa.fa-cc-amex,.fa.fa-cc-discover,.fa.fa-cc-mastercard,.fa.fa-cc-paypal,.fa.fa-cc-stripe,.fa.fa-cc-visa,.fa.fa-google-wallet,.fa.fa-paypal{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-bell-slash-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bell-slash-o:before{content:"\\f1f6"}.fa.fa-trash:before{content:"\\f2ed"}.fa.fa-copyright{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-eyedropper:before{content:"\\f1fb"}.fa.fa-area-chart:before{content:"\\f1fe"}.fa.fa-pie-chart:before{content:"\\f200"}.fa.fa-line-chart:before{content:"\\f201"}.fa.fa-angellist,.fa.fa-ioxhost,.fa.fa-lastfm,.fa.fa-lastfm-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-cc{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-cc:before{content:"\\f20a"}.fa.fa-ils:before,.fa.fa-shekel:before,.fa.fa-sheqel:before{content:"\\f20b"}.fa.fa-meanpath{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-meanpath:before{content:"\\f2b4"}.fa.fa-buysellads,.fa.fa-connectdevelop,.fa.fa-dashcube,.fa.fa-forumbee,.fa.fa-leanpub,.fa.fa-sellsy,.fa.fa-shirtsinbulk,.fa.fa-simplybuilt,.fa.fa-skyatlas{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-diamond{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-diamond:before{content:"\\f3a5"}.fa.fa-intersex:before{content:"\\f224"}.fa.fa-facebook-official{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-facebook-official:before{content:"\\f09a"}.fa.fa-pinterest-p,.fa.fa-whatsapp{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-hotel:before{content:"\\f236"}.fa.fa-medium,.fa.fa-viacoin,.fa.fa-y-combinator,.fa.fa-yc{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-yc:before{content:"\\f23b"}.fa.fa-expeditedssl,.fa.fa-opencart,.fa.fa-optin-monster{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-battery-4:before,.fa.fa-battery:before{content:"\\f240"}.fa.fa-battery-3:before{content:"\\f241"}.fa.fa-battery-2:before{content:"\\f242"}.fa.fa-battery-1:before{content:"\\f243"}.fa.fa-battery-0:before{content:"\\f244"}.fa.fa-object-group,.fa.fa-object-ungroup,.fa.fa-sticky-note-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-sticky-note-o:before{content:"\\f249"}.fa.fa-cc-diners-club,.fa.fa-cc-jcb{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-clone,.fa.fa-hourglass-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hourglass-o:before{content:"\\f254"}.fa.fa-hourglass-1:before{content:"\\f251"}.fa.fa-hourglass-2:before{content:"\\f252"}.fa.fa-hourglass-3:before{content:"\\f253"}.fa.fa-hand-rock-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-rock-o:before{content:"\\f255"}.fa.fa-hand-grab-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-grab-o:before{content:"\\f255"}.fa.fa-hand-paper-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-paper-o:before{content:"\\f256"}.fa.fa-hand-stop-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-stop-o:before{content:"\\f256"}.fa.fa-hand-scissors-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-scissors-o:before{content:"\\f257"}.fa.fa-hand-lizard-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-lizard-o:before{content:"\\f258"}.fa.fa-hand-spock-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-spock-o:before{content:"\\f259"}.fa.fa-hand-pointer-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-pointer-o:before{content:"\\f25a"}.fa.fa-hand-peace-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-peace-o:before{content:"\\f25b"}.fa.fa-registered{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-chrome,.fa.fa-creative-commons,.fa.fa-firefox,.fa.fa-get-pocket,.fa.fa-gg,.fa.fa-gg-circle,.fa.fa-internet-explorer,.fa.fa-odnoklassniki,.fa.fa-odnoklassniki-square,.fa.fa-opera,.fa.fa-safari,.fa.fa-tripadvisor,.fa.fa-wikipedia-w{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-television:before{content:"\\f26c"}.fa.fa-500px,.fa.fa-amazon,.fa.fa-contao{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-calendar-plus-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-plus-o:before{content:"\\f271"}.fa.fa-calendar-minus-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-minus-o:before{content:"\\f272"}.fa.fa-calendar-times-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-times-o:before{content:"\\f273"}.fa.fa-calendar-check-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-check-o:before{content:"\\f274"}.fa.fa-map-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-map-o:before{content:"\\f279"}.fa.fa-commenting:before{content:"\\f4ad"}.fa.fa-commenting-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-commenting-o:before{content:"\\f4ad"}.fa.fa-houzz,.fa.fa-vimeo{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-vimeo:before{content:"\\f27d"}.fa.fa-black-tie,.fa.fa-edge,.fa.fa-fonticons,.fa.fa-reddit-alien{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-credit-card-alt:before{content:"\\f09d"}.fa.fa-codiepie,.fa.fa-fort-awesome,.fa.fa-mixcloud,.fa.fa-modx,.fa.fa-product-hunt,.fa.fa-scribd,.fa.fa-usb{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-pause-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-pause-circle-o:before{content:"\\f28b"}.fa.fa-stop-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-stop-circle-o:before{content:"\\f28d"}.fa.fa-bluetooth,.fa.fa-bluetooth-b,.fa.fa-envira,.fa.fa-gitlab,.fa.fa-wheelchair-alt,.fa.fa-wpbeginner,.fa.fa-wpforms{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-wheelchair-alt:before{content:"\\f368"}.fa.fa-question-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-question-circle-o:before{content:"\\f059"}.fa.fa-volume-control-phone:before{content:"\\f2a0"}.fa.fa-asl-interpreting:before{content:"\\f2a3"}.fa.fa-deafness:before,.fa.fa-hard-of-hearing:before{content:"\\f2a4"}.fa.fa-glide,.fa.fa-glide-g{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-signing:before{content:"\\f2a7"}.fa.fa-first-order,.fa.fa-google-plus-official,.fa.fa-pied-piper,.fa.fa-snapchat,.fa.fa-snapchat-ghost,.fa.fa-snapchat-square,.fa.fa-themeisle,.fa.fa-viadeo,.fa.fa-viadeo-square,.fa.fa-yoast{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-google-plus-official:before{content:"\\f2b3"}.fa.fa-google-plus-circle{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-google-plus-circle:before{content:"\\f2b3"}.fa.fa-fa,.fa.fa-font-awesome{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-fa:before{content:"\\f2b4"}.fa.fa-handshake-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-handshake-o:before{content:"\\f2b5"}.fa.fa-envelope-open-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-envelope-open-o:before{content:"\\f2b6"}.fa.fa-linode{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-address-book-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-address-book-o:before{content:"\\f2b9"}.fa.fa-vcard:before{content:"\\f2bb"}.fa.fa-address-card-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-address-card-o:before{content:"\\f2bb"}.fa.fa-vcard-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-vcard-o:before{content:"\\f2bb"}.fa.fa-user-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-user-circle-o:before{content:"\\f2bd"}.fa.fa-user-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-user-o:before{content:"\\f007"}.fa.fa-id-badge{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-drivers-license:before{content:"\\f2c2"}.fa.fa-id-card-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-id-card-o:before{content:"\\f2c2"}.fa.fa-drivers-license-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-drivers-license-o:before{content:"\\f2c2"}.fa.fa-free-code-camp,.fa.fa-quora,.fa.fa-telegram{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-thermometer-4:before,.fa.fa-thermometer:before{content:"\\f2c7"}.fa.fa-thermometer-3:before{content:"\\f2c8"}.fa.fa-thermometer-2:before{content:"\\f2c9"}.fa.fa-thermometer-1:before{content:"\\f2ca"}.fa.fa-thermometer-0:before{content:"\\f2cb"}.fa.fa-bathtub:before,.fa.fa-s15:before{content:"\\f2cd"}.fa.fa-window-maximize,.fa.fa-window-restore{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-times-rectangle:before{content:"\\f410"}.fa.fa-window-close-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-window-close-o:before{content:"\\f410"}.fa.fa-times-rectangle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-times-rectangle-o:before{content:"\\f410"}.fa.fa-bandcamp,.fa.fa-eercast,.fa.fa-etsy,.fa.fa-grav,.fa.fa-imdb,.fa.fa-ravelry{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-eercast:before{content:"\\f2da"}.fa.fa-snowflake-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-snowflake-o:before{content:"\\f2dc"}.fa.fa-superpowers,.fa.fa-wpexplorer{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-cab:before{content:"\\f1ba"}',""]);const i=c},86739:(e,f,o)=>{o.d(f,{A:()=>i});var t=o(31601);var n=o.n(t);var a=o(76314);var r=o.n(a);var c=r()(n());c.push([e.id,'/**\n * Copyright (c) 2014 The xterm.js authors. All rights reserved.\n * Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)\n * https://github.com/chjj/term.js\n * @license MIT\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the "Software"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *\n * Originally forked from (with the author\'s permission):\n * Fabrice Bellard\'s javascript vt100 for jslinux:\n * http://bellard.org/jslinux/\n * Copyright (c) 2011 Fabrice Bellard\n * The original design remains. The terminal itself\n * has been extended to include xterm CSI codes, among\n * other features.\n */\n\n/**\n * Default styles for xterm.js\n */\n\n.xterm {\n cursor: text;\n position: relative;\n user-select: none;\n -ms-user-select: none;\n -webkit-user-select: none;\n}\n\n.xterm.focus,\n.xterm:focus {\n outline: none;\n}\n\n.xterm .xterm-helpers {\n position: absolute;\n top: 0;\n /**\n * The z-index of the helpers must be higher than the canvases in order for\n * IMEs to appear on top.\n */\n z-index: 5;\n}\n\n.xterm .xterm-helper-textarea {\n padding: 0;\n border: 0;\n margin: 0;\n /* Move textarea out of the screen to the far left, so that the cursor is not visible */\n position: absolute;\n opacity: 0;\n left: -9999em;\n top: 0;\n width: 0;\n height: 0;\n z-index: -5;\n /** Prevent wrapping so the IME appears against the textarea at the correct position */\n white-space: nowrap;\n overflow: hidden;\n resize: none;\n}\n\n.xterm .composition-view {\n /* TODO: Composition position got messed up somewhere */\n background: #000;\n color: #FFF;\n display: none;\n position: absolute;\n white-space: nowrap;\n z-index: 1;\n}\n\n.xterm .composition-view.active {\n display: block;\n}\n\n.xterm .xterm-viewport {\n /* On OS X this is required in order for the scroll bar to appear fully opaque */\n background-color: #000;\n overflow-y: scroll;\n cursor: default;\n position: absolute;\n right: 0;\n left: 0;\n top: 0;\n bottom: 0;\n}\n\n.xterm .xterm-screen {\n position: relative;\n}\n\n.xterm .xterm-screen canvas {\n position: absolute;\n left: 0;\n top: 0;\n}\n\n.xterm .xterm-scroll-area {\n visibility: hidden;\n}\n\n.xterm-char-measure-element {\n display: inline-block;\n visibility: hidden;\n position: absolute;\n top: 0;\n left: -9999em;\n line-height: normal;\n}\n\n.xterm.enable-mouse-events {\n /* When mouse events are enabled (eg. tmux), revert to the standard pointer cursor */\n cursor: default;\n}\n\n.xterm.xterm-cursor-pointer,\n.xterm .xterm-cursor-pointer {\n cursor: pointer;\n}\n\n.xterm.column-select.focus {\n /* Column selection mode */\n cursor: crosshair;\n}\n\n.xterm .xterm-accessibility:not(.debug),\n.xterm .xterm-message {\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n right: 0;\n z-index: 10;\n color: transparent;\n pointer-events: none;\n}\n\n.xterm .xterm-accessibility-tree:not(.debug) *::selection {\n color: transparent;\n}\n\n.xterm .xterm-accessibility-tree {\n user-select: text;\n white-space: pre;\n}\n\n.xterm .live-region {\n position: absolute;\n left: -9999px;\n width: 1px;\n height: 1px;\n overflow: hidden;\n}\n\n.xterm-dim {\n /* Dim should not apply to background, so the opacity of the foreground color is applied\n * explicitly in the generated class and reset to 1 here */\n opacity: 1 !important;\n}\n\n.xterm-underline-1 { text-decoration: underline; }\n.xterm-underline-2 { text-decoration: double underline; }\n.xterm-underline-3 { text-decoration: wavy underline; }\n.xterm-underline-4 { text-decoration: dotted underline; }\n.xterm-underline-5 { text-decoration: dashed underline; }\n\n.xterm-overline {\n text-decoration: overline;\n}\n\n.xterm-overline.xterm-underline-1 { text-decoration: overline underline; }\n.xterm-overline.xterm-underline-2 { text-decoration: overline double underline; }\n.xterm-overline.xterm-underline-3 { text-decoration: overline wavy underline; }\n.xterm-overline.xterm-underline-4 { text-decoration: overline dotted underline; }\n.xterm-overline.xterm-underline-5 { text-decoration: overline dashed underline; }\n\n.xterm-strikethrough {\n text-decoration: line-through;\n}\n\n.xterm-screen .xterm-decoration-container .xterm-decoration {\n\tz-index: 6;\n\tposition: absolute;\n}\n\n.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer {\n\tz-index: 7;\n}\n\n.xterm-decoration-overview-ruler {\n z-index: 8;\n position: absolute;\n top: 0;\n right: 0;\n pointer-events: none;\n}\n\n.xterm-decoration-top {\n z-index: 2;\n position: relative;\n}\n',""]);const i=c},9112:(e,f,o)=>{o.d(f,{A:()=>i});var t=o(31601);var n=o.n(t);var a=o(76314);var r=o.n(a);var c=r()(n());c.push([e.id,":root{--toastify-color-light:#fff;--toastify-color-dark:#121212;--toastify-color-info:#3498db;--toastify-color-success:#07bc0c;--toastify-color-warning:#f1c40f;--toastify-color-error:#e74c3c;--toastify-color-transparent:hsla(0,0%,100%,.7);--toastify-icon-color-info:var(--toastify-color-info);--toastify-icon-color-success:var(--toastify-color-success);--toastify-icon-color-warning:var(--toastify-color-warning);--toastify-icon-color-error:var(--toastify-color-error);--toastify-toast-width:320px;--toastify-toast-background:#fff;--toastify-toast-min-height:64px;--toastify-toast-max-height:800px;--toastify-font-family:sans-serif;--toastify-z-index:9999;--toastify-text-color-light:#757575;--toastify-text-color-dark:#fff;--toastify-text-color-info:#fff;--toastify-text-color-success:#fff;--toastify-text-color-warning:#fff;--toastify-text-color-error:#fff;--toastify-spinner-color:#616161;--toastify-spinner-color-empty-area:#e0e0e0;--toastify-color-progress-light:linear-gradient(90deg,#4cd964,#5ac8fa,#007aff,#34aadc,#5856d6,#ff2d55);--toastify-color-progress-dark:#bb86fc;--toastify-color-progress-info:var(--toastify-color-info);--toastify-color-progress-success:var(--toastify-color-success);--toastify-color-progress-warning:var(--toastify-color-warning);--toastify-color-progress-error:var(--toastify-color-error)}.Toastify__toast-container{z-index:var(--toastify-z-index);-webkit-transform:translateZ(var(--toastify-z-index));position:fixed;padding:4px;width:var(--toastify-toast-width);box-sizing:border-box;color:#fff}.Toastify__toast-container--top-left{top:1em;left:1em}.Toastify__toast-container--top-center{top:1em;left:50%;transform:translateX(-50%)}.Toastify__toast-container--top-right{top:1em;right:1em}.Toastify__toast-container--bottom-left{bottom:1em;left:1em}.Toastify__toast-container--bottom-center{bottom:1em;left:50%;transform:translateX(-50%)}.Toastify__toast-container--bottom-right{bottom:1em;right:1em}@media only screen and (max-width:480px){.Toastify__toast-container{width:100vw;padding:0;left:0;margin:0}.Toastify__toast-container--top-center,.Toastify__toast-container--top-left,.Toastify__toast-container--top-right{top:0;transform:translateX(0)}.Toastify__toast-container--bottom-center,.Toastify__toast-container--bottom-left,.Toastify__toast-container--bottom-right{bottom:0;transform:translateX(0)}.Toastify__toast-container--rtl{right:0;left:auto}}.Toastify__toast{position:relative;min-height:var(--toastify-toast-min-height);box-sizing:border-box;margin-bottom:1rem;padding:8px;border-radius:4px;box-shadow:0 1px 10px 0 rgba(0,0,0,.1),0 2px 15px 0 rgba(0,0,0,.05);display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;max-height:var(--toastify-toast-max-height);overflow:hidden;font-family:var(--toastify-font-family);cursor:default;direction:ltr;z-index:0}.Toastify__toast--rtl{direction:rtl}.Toastify__toast--close-on-click{cursor:pointer}.Toastify__toast-body{margin:auto 0;-ms-flex:1 1 auto;flex:1 1 auto;padding:6px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.Toastify__toast-body>div:last-child{word-break:break-word;-ms-flex:1;flex:1}.Toastify__toast-icon{-webkit-margin-end:10px;margin-inline-end:10px;width:20px;-ms-flex-negative:0;flex-shrink:0;display:-ms-flexbox;display:flex}.Toastify--animate{animation-fill-mode:both;animation-duration:.7s}.Toastify--animate-icon{animation-fill-mode:both;animation-duration:.3s}@media only screen and (max-width:480px){.Toastify__toast{margin-bottom:0;border-radius:0}}.Toastify__toast-theme--dark{background:var(--toastify-color-dark);color:var(--toastify-text-color-dark)}.Toastify__toast-theme--colored.Toastify__toast--default,.Toastify__toast-theme--light{background:var(--toastify-color-light);color:var(--toastify-text-color-light)}.Toastify__toast-theme--colored.Toastify__toast--info{color:var(--toastify-text-color-info);background:var(--toastify-color-info)}.Toastify__toast-theme--colored.Toastify__toast--success{color:var(--toastify-text-color-success);background:var(--toastify-color-success)}.Toastify__toast-theme--colored.Toastify__toast--warning{color:var(--toastify-text-color-warning);background:var(--toastify-color-warning)}.Toastify__toast-theme--colored.Toastify__toast--error{color:var(--toastify-text-color-error);background:var(--toastify-color-error)}.Toastify__progress-bar-theme--light{background:var(--toastify-color-progress-light)}.Toastify__progress-bar-theme--dark{background:var(--toastify-color-progress-dark)}.Toastify__progress-bar--info{background:var(--toastify-color-progress-info)}.Toastify__progress-bar--success{background:var(--toastify-color-progress-success)}.Toastify__progress-bar--warning{background:var(--toastify-color-progress-warning)}.Toastify__progress-bar--error{background:var(--toastify-color-progress-error)}.Toastify__progress-bar-theme--colored.Toastify__progress-bar--error,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--info,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--success,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--warning{background:var(--toastify-color-transparent)}.Toastify__close-button{color:#fff;background:transparent;outline:none;border:none;padding:0;cursor:pointer;opacity:.7;transition:.3s ease;-ms-flex-item-align:start;align-self:flex-start}.Toastify__close-button--light{color:#000;opacity:.3}.Toastify__close-button>svg{fill:currentColor;height:16px;width:14px}.Toastify__close-button:focus,.Toastify__close-button:hover{opacity:1}@keyframes Toastify__trackProgress{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.Toastify__progress-bar{position:absolute;bottom:0;left:0;width:100%;height:5px;z-index:var(--toastify-z-index);opacity:.7;transform-origin:left}.Toastify__progress-bar--animated{animation:Toastify__trackProgress linear 1 forwards}.Toastify__progress-bar--controlled{transition:transform .2s}.Toastify__progress-bar--rtl{right:0;left:auto;transform-origin:right}.Toastify__spinner{width:20px;height:20px;box-sizing:border-box;border:2px solid;border-radius:100%;border-color:var(--toastify-spinner-color-empty-area);border-right-color:var(--toastify-spinner-color);animation:Toastify__spin .65s linear infinite}@keyframes Toastify__bounceInRight{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(3000px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes Toastify__bounceOutRight{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}@keyframes Toastify__bounceInLeft{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(-3000px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes Toastify__bounceOutLeft{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes Toastify__bounceInUp{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,3000px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes Toastify__bounceOutUp{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes Toastify__bounceInDown{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,-3000px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes Toastify__bounceOutDown{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}.Toastify__bounce-enter--bottom-left,.Toastify__bounce-enter--top-left{animation-name:Toastify__bounceInLeft}.Toastify__bounce-enter--bottom-right,.Toastify__bounce-enter--top-right{animation-name:Toastify__bounceInRight}.Toastify__bounce-enter--top-center{animation-name:Toastify__bounceInDown}.Toastify__bounce-enter--bottom-center{animation-name:Toastify__bounceInUp}.Toastify__bounce-exit--bottom-left,.Toastify__bounce-exit--top-left{animation-name:Toastify__bounceOutLeft}.Toastify__bounce-exit--bottom-right,.Toastify__bounce-exit--top-right{animation-name:Toastify__bounceOutRight}.Toastify__bounce-exit--top-center{animation-name:Toastify__bounceOutUp}.Toastify__bounce-exit--bottom-center{animation-name:Toastify__bounceOutDown}@keyframes Toastify__zoomIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes Toastify__zoomOut{0%{opacity:1}50%{opacity:0;transform:scale3d(.3,.3,.3)}to{opacity:0}}.Toastify__zoom-enter{animation-name:Toastify__zoomIn}.Toastify__zoom-exit{animation-name:Toastify__zoomOut}@keyframes Toastify__flipIn{0%{transform:perspective(400px) rotateX(90deg);animation-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotateX(-20deg);animation-timing-function:ease-in}60%{transform:perspective(400px) rotateX(10deg);opacity:1}80%{transform:perspective(400px) rotateX(-5deg)}to{transform:perspective(400px)}}@keyframes Toastify__flipOut{0%{transform:perspective(400px)}30%{transform:perspective(400px) rotateX(-20deg);opacity:1}to{transform:perspective(400px) rotateX(90deg);opacity:0}}.Toastify__flip-enter{animation-name:Toastify__flipIn}.Toastify__flip-exit{animation-name:Toastify__flipOut}@keyframes Toastify__slideInRight{0%{transform:translate3d(110%,0,0);visibility:visible}to{transform:translateZ(0)}}@keyframes Toastify__slideInLeft{0%{transform:translate3d(-110%,0,0);visibility:visible}to{transform:translateZ(0)}}@keyframes Toastify__slideInUp{0%{transform:translate3d(0,110%,0);visibility:visible}to{transform:translateZ(0)}}@keyframes Toastify__slideInDown{0%{transform:translate3d(0,-110%,0);visibility:visible}to{transform:translateZ(0)}}@keyframes Toastify__slideOutRight{0%{transform:translateZ(0)}to{visibility:hidden;transform:translate3d(110%,0,0)}}@keyframes Toastify__slideOutLeft{0%{transform:translateZ(0)}to{visibility:hidden;transform:translate3d(-110%,0,0)}}@keyframes Toastify__slideOutDown{0%{transform:translateZ(0)}to{visibility:hidden;transform:translate3d(0,500px,0)}}@keyframes Toastify__slideOutUp{0%{transform:translateZ(0)}to{visibility:hidden;transform:translate3d(0,-500px,0)}}.Toastify__slide-enter--bottom-left,.Toastify__slide-enter--top-left{animation-name:Toastify__slideInLeft}.Toastify__slide-enter--bottom-right,.Toastify__slide-enter--top-right{animation-name:Toastify__slideInRight}.Toastify__slide-enter--top-center{animation-name:Toastify__slideInDown}.Toastify__slide-enter--bottom-center{animation-name:Toastify__slideInUp}.Toastify__slide-exit--bottom-left,.Toastify__slide-exit--top-left{animation-name:Toastify__slideOutLeft}.Toastify__slide-exit--bottom-right,.Toastify__slide-exit--top-right{animation-name:Toastify__slideOutRight}.Toastify__slide-exit--top-center{animation-name:Toastify__slideOutUp}.Toastify__slide-exit--bottom-center{animation-name:Toastify__slideOutDown}@keyframes Toastify__spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}",""]);const i=c},76314:e=>{e.exports=function(e){var f=[];f.toString=function f(){return this.map((function(f){var o="";var t=typeof f[5]!=="undefined";if(f[4]){o+="@supports (".concat(f[4],") {")}if(f[2]){o+="@media ".concat(f[2]," {")}if(t){o+="@layer".concat(f[5].length>0?" ".concat(f[5]):""," {")}o+=e(f);if(t){o+="}"}if(f[2]){o+="}"}if(f[4]){o+="}"}return o})).join("")};f.i=function e(o,t,n,a,r){if(typeof o==="string"){o=[[null,o,undefined]]}var c={};if(n){for(var i=0;i0?" ".concat(l[5]):""," {").concat(l[1],"}");l[5]=r}}if(t){if(!l[2]){l[2]=t}else{l[1]="@media ".concat(l[2]," {").concat(l[1],"}");l[2]=t}}if(a){if(!l[4]){l[4]="".concat(a)}else{l[1]="@supports (".concat(l[4],") {").concat(l[1],"}");l[4]=a}}f.push(l)}};return f}},4417:e=>{e.exports=function(e,f){if(!f){f={}}if(!e){return e}e=String(e.__esModule?e.default:e);if(/^['"].*['"]$/.test(e)){e=e.slice(1,-1)}if(f.hash){e+=f.hash}if(/["'() \t\n]|(%20)/.test(e)||f.needQuotes){return'"'.concat(e.replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"')}return e}},31601:e=>{e.exports=function(e){return e[1]}},2898:(e,f,o)=>{var t=o(85072);var n=o.n(t);var a=o(97825);var r=o.n(a);var c=o(77659);var i=o.n(c);var b=o(55056);var s=o.n(b);var l=o(10540);var d=o.n(l);var m=o(41113);var p=o.n(m);var h=o(80815);var u={};u.styleTagTransform=p();u.setAttributes=s();u.insert=i().bind(null,"head");u.domAPI=r();u.insertStyleElement=d();var g=n()(h.A,u);var w=h.A&&h.A.locals?h.A.locals:undefined},40244:(e,f,o)=>{var t=o(85072);var n=o.n(t);var a=o(97825);var r=o.n(a);var c=o(77659);var i=o.n(c);var b=o(55056);var s=o.n(b);var l=o(10540);var d=o.n(l);var m=o(41113);var p=o.n(m);var h=o(14115);var u={};u.styleTagTransform=p();u.setAttributes=s();u.insert=i().bind(null,"head");u.domAPI=r();u.insertStyleElement=d();var g=n()(h.A,u);var w=h.A&&h.A.locals?h.A.locals:undefined},69448:(e,f,o)=>{var t=o(85072);var n=o.n(t);var a=o(97825);var r=o.n(a);var c=o(77659);var i=o.n(c);var b=o(55056);var s=o.n(b);var l=o(10540);var d=o.n(l);var m=o(41113);var p=o.n(m);var h=o(86739);var u={};u.styleTagTransform=p();u.setAttributes=s();u.insert=i().bind(null,"head");u.domAPI=r();u.insertStyleElement=d();var g=n()(h.A,u);var w=h.A&&h.A.locals?h.A.locals:undefined},85072:e=>{var f=[];function o(e){var o=-1;for(var t=0;t{var f={};function o(e){if(typeof f[e]==="undefined"){var o=document.querySelector(e);if(window.HTMLIFrameElement&&o instanceof window.HTMLIFrameElement){try{o=o.contentDocument.head}catch(t){o=null}}f[e]=o}return f[e]}function t(e,f){var t=o(e);if(!t){throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.")}t.appendChild(f)}e.exports=t},10540:e=>{function f(e){var f=document.createElement("style");e.setAttributes(f,e.attributes);e.insert(f,e.options);return f}e.exports=f},55056:(e,f,o)=>{function t(e){var f=true?o.nc:0;if(f){e.setAttribute("nonce",f)}}e.exports=t},97825:e=>{function f(e,f,o){var t="";if(o.supports){t+="@supports (".concat(o.supports,") {")}if(o.media){t+="@media ".concat(o.media," {")}var n=typeof o.layer!=="undefined";if(n){t+="@layer".concat(o.layer.length>0?" ".concat(o.layer):""," {")}t+=o.css;if(n){t+="}"}if(o.media){t+="}"}if(o.supports){t+="}"}var a=o.sourceMap;if(a&&typeof btoa!=="undefined"){t+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(a))))," */")}f.styleTagTransform(t,e,f.options)}function o(e){if(e.parentNode===null){return false}e.parentNode.removeChild(e)}function t(e){var t=e.insertStyleElement(e);return{update:function o(n){f(t,e,n)},remove:function e(){o(t)}}}e.exports=t},41113:e=>{function f(e,f){if(f.styleSheet){f.styleSheet.cssText=e}else{while(f.firstChild){f.removeChild(f.firstChild)}f.appendChild(document.createTextNode(e))}}e.exports=f},16811:(e,f,o)=>{e.exports=o.p+"e4299464e7b012968eed.eot"},84189:(e,f,o)=>{e.exports=o.p+"cda59d6efffa685830fd.ttf"},14451:(e,f,o)=>{e.exports=o.p+"f9217f66874b0c01cd8c.woff"},92459:(e,f,o)=>{e.exports=o.p+"8ea8791754915a898a31.woff2"},45425:(e,f,o)=>{e.exports=o.p+"79d088064beb3826054f.eot"},2539:(e,f,o)=>{e.exports=o.p+"e8711bbb871afd8e9dea.ttf"},17129:(e,f,o)=>{e.exports=o.p+"cb9e9e693192413cde2b.woff"},73321:(e,f,o)=>{e.exports=o.p+"e42a88444448ac3d6054.woff2"},3537:(e,f,o)=>{e.exports=o.p+"373c04fd2418f5c77eea.eot"},60651:(e,f,o)=>{e.exports=o.p+"af6397503fcefbd61397.ttf"},21833:(e,f,o)=>{e.exports=o.p+"3f6d3488cf65374f6f67.woff"},63369:(e,f,o)=>{e.exports=o.p+"9834b82ad26e2a37583d.woff2"},23182:(e,f,o)=>{e.exports=o.p+"3de784d07b9fa8f104c1.woff"},27075:(e,f,o)=>{e.exports=o.p+"af04542b29eaac04550a.woff"},51508:(e,f,o)=>{e.exports=o.p+"26683bf201fb258a2237.woff"},31517:(e,f,o)=>{e.exports=o.p+"721921bab0d001ebff02.woff"},13110:(e,f,o)=>{e.exports=o.p+"870673df72e70f87c91a.woff"},91495:(e,f,o)=>{e.exports=o.p+"88b98cad3688915e50da.woff"},35492:(e,f,o)=>{e.exports=o.p+"355254db9ca10a09a3b5.woff"},98072:(e,f,o)=>{e.exports=o.p+"1cb1c39ea642f26a4dfe.woff"},13566:(e,f,o)=>{e.exports=o.p+"8ea8dbb1b02e6f730f55.woff"},21033:(e,f,o)=>{e.exports=o.p+"a009bea404f7a500ded4.woff"},50584:(e,f,o)=>{e.exports=o.p+"32792104b5ef69eded90.woff"},17739:(e,f,o)=>{e.exports=o.p+"fc6ddf5df402b263cfb1.woff"},49485:(e,f,o)=>{e.exports=o.p+"b418136e3b384baaadec.woff"},1910:(e,f,o)=>{e.exports=o.p+"af96f67d7accf5fd2a4a.woff"},4777:(e,f,o)=>{e.exports=o.p+"c49810b53ecc0d87d802.woff"},64452:(e,f,o)=>{e.exports=o.p+"30e889b58cbc51adfbb0.woff"},943:(e,f,o)=>{e.exports=o.p+"5cda41563a095bd70c78.woff"},71698:(e,f,o)=>{e.exports=o.p+"3bc6ecaae7ecf6f8d7f8.woff"},98786:(e,f,o)=>{e.exports=o.p+"c56da8d69f1a0208b8e0.woff"},94665:(e,f,o)=>{e.exports=o.p+"36e0d72d8a7afc696a3e.woff"},83202:(e,f,o)=>{e.exports=o.p+"72bc573386dd1d48c5bb.woff"},77778:(e,f,o)=>{e.exports=o.p+"481e39042508ae313a60.woff"},17868:(e,f,o)=>{e.exports=o.p+"a3b9817780214caf01e8.svg"},27740:(e,f,o)=>{e.exports=o.p+"be0a084962d8066884f7.svg"},37800:(e,f,o)=>{e.exports=o.p+"9674eb1bd55047179038.svg"}}]);
\ No newline at end of file
diff --git a/share/jupyter/lab/static/1109.74211c725919c045e958.js b/share/jupyter/lab/static/1109.74211c725919c045e958.js
new file mode 100644
index 0000000..54e20f0
--- /dev/null
+++ b/share/jupyter/lab/static/1109.74211c725919c045e958.js
@@ -0,0 +1 @@
+"use strict";(self["webpackChunk_jupyterlab_application_top"]=self["webpackChunk_jupyterlab_application_top"]||[]).push([[1109],{11109:(r,a,e)=>{e.d(a,{diagram:()=>d});var s=e(67863);var t=e(10628);var v=e(46884);var l=e(47925);var p=e(78188);var i=e(25301);var n=e(46103);var u=e(47655);var c=e(15164);var o=e(55750);var b=e(95035);var _=e(29131);var k=e(42418);var w=e(70416);var d={parser:s._$,get db(){return new s.NM},renderer:s.Lh,styles:s.tM,init:(0,w.K2)((r=>{if(!r.class){r.class={}}r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute}),"init")}}}]);
\ No newline at end of file
diff --git a/share/jupyter/lab/static/1189.c1482e88f0e949753db6.js b/share/jupyter/lab/static/1189.c1482e88f0e949753db6.js
new file mode 100644
index 0000000..fa51589
--- /dev/null
+++ b/share/jupyter/lab/static/1189.c1482e88f0e949753db6.js
@@ -0,0 +1 @@
+"use strict";(self["webpackChunk_jupyterlab_application_top"]=self["webpackChunk_jupyterlab_application_top"]||[]).push([[1189],{91189:(e,r,t)=>{t.r(r);t.d(r,{tcl:()=>p});function a(e){var r={},t=e.split(" ");for(var a=0;a!?^\/\|]/;function o(e,r,t){r.tokenize=t;return t(e,r)}function s(e,r){var t=r.beforeParams;r.beforeParams=false;var a=e.next();if((a=='"'||a=="'")&&r.inParams){return o(e,r,f(a))}else if(/[\[\]{}\(\),;\.]/.test(a)){if(a=="("&&t)r.inParams=true;else if(a==")")r.inParams=false;return null}else if(/\d/.test(a)){e.eatWhile(/[\w\.]/);return"number"}else if(a=="#"){if(e.eat("*"))return o(e,r,u);if(a=="#"&&e.match(/ *\[ *\[/))return o(e,r,c);e.skipToEnd();return"comment"}else if(a=='"'){e.skipTo(/"/);return"comment"}else if(a=="$"){e.eatWhile(/[$_a-z0-9A-Z\.{:]/);e.eatWhile(/}/);r.beforeParams=true;return"builtin"}else if(l.test(a)){e.eatWhile(l);return"comment"}else{e.eatWhile(/[\w\$_{}\xa1-\uffff]/);var s=e.current().toLowerCase();if(n&&n.propertyIsEnumerable(s))return"keyword";if(i&&i.propertyIsEnumerable(s)){r.beforeParams=true;return"keyword"}return null}}function f(e){return function(r,t){var a=false,n,i=false;while((n=r.next())!=null){if(n==e&&!a){i=true;break}a=!a&&n=="\\"}if(i)t.tokenize=s;return"string"}}function u(e,r){var t=false,a;while(a=e.next()){if(a=="#"&&t){r.tokenize=s;break}t=a=="*"}return"comment"}function c(e,r){var t=0,a;while(a=e.next()){if(a=="#"&&t==2){r.tokenize=s;break}if(a=="]")t++;else if(a!=" ")t=0}return"meta"}const p={name:"tcl",startState:function(){return{tokenize:s,beforeParams:false,inParams:false}},token:function(e,r){if(e.eatSpace())return null;return r.tokenize(e,r)},languageData:{commentTokens:{line:"#"}}}}}]);
\ No newline at end of file
diff --git a/share/jupyter/lab/static/1208.4b9ab7b231d39ebdbc3f.js b/share/jupyter/lab/static/1208.4b9ab7b231d39ebdbc3f.js
new file mode 100644
index 0000000..e3cf6bb
--- /dev/null
+++ b/share/jupyter/lab/static/1208.4b9ab7b231d39ebdbc3f.js
@@ -0,0 +1 @@
+"use strict";(self["webpackChunk_jupyterlab_application_top"]=self["webpackChunk_jupyterlab_application_top"]||[]).push([[1208],{91208:(e,t,r)=>{r.r(t);r.d(t,{DefaultBufferLength:()=>n,IterMode:()=>d,MountedTree:()=>o,NodeProp:()=>l,NodeSet:()=>u,NodeType:()=>h,NodeWeakMap:()=>E,Parser:()=>j,Tree:()=>c,TreeBuffer:()=>m,TreeCursor:()=>I,TreeFragment:()=>O,parseMixed:()=>D});const n=1024;let i=0;class s{constructor(e,t){this.from=e;this.to=t}}class l{constructor(e={}){this.id=i++;this.perNode=!!e.perNode;this.deserialize=e.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")})}add(e){if(this.perNode)throw new RangeError("Can't add per-node props to node types");if(typeof e!="function")e=h.match(e);return t=>{let r=e(t);return r===undefined?null:[this,r]}}}l.closedBy=new l({deserialize:e=>e.split(" ")});l.openedBy=new l({deserialize:e=>e.split(" ")});l.group=new l({deserialize:e=>e.split(" ")});l.isolate=new l({deserialize:e=>{if(e&&e!="rtl"&&e!="ltr"&&e!="auto")throw new RangeError("Invalid value for isolate: "+e);return e||"auto"}});l.contextHash=new l({perNode:true});l.lookAhead=new l({perNode:true});l.mounted=new l({perNode:true});class o{constructor(e,t,r){this.tree=e;this.overlay=t;this.parser=r}static get(e){return e&&e.props&&e.props[l.mounted.id]}}const f=Object.create(null);class h{constructor(e,t,r,n=0){this.name=e;this.props=t;this.id=r;this.flags=n}static define(e){let t=e.props&&e.props.length?Object.create(null):f;let r=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(e.name==null?8:0);let n=new h(e.name||"",t,e.id,r);if(e.props)for(let i of e.props){if(!Array.isArray(i))i=i(n);if(i){if(i[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");t[i[0].id]=i[1]}}return n}prop(e){return this.props[e.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(e){if(typeof e=="string"){if(this.name==e)return true;let t=this.prop(l.group);return t?t.indexOf(e)>-1:false}return this.id==e}static match(e){let t=Object.create(null);for(let r in e)for(let n of r.split(" "))t[n]=e[r];return e=>{for(let r=e.prop(l.group),n=-1;n<(r?r.length:0);n++){let i=t[n<0?e.name:r[n]];if(i)return i}}}}h.none=new h("",Object.create(null),0,8);class u{constructor(e){this.types=e;for(let t=0;t0;for(let o=this.cursor(s|d.IncludeAnonymous);;){let e=false;if(o.from<=i&&o.to>=n&&(!l&&o.type.isAnonymous||t(o)!==false)){if(o.firstChild())continue;e=true}for(;;){if(e&&r&&(l||!o.type.isAnonymous))r(o);if(o.nextSibling())break;if(!o.parent())return;e=true}}}prop(e){return!e.perNode?this.type.prop(e):this.props?this.props[e.id]:undefined}get propValues(){let e=[];if(this.props)for(let t in this.props)e.push([+t,this.props[t]]);return e}balance(e={}){return this.children.length<=8?this:P(h.none,this.children,this.positions,0,this.children.length,0,this.length,((e,t,r)=>new c(this.type,e,t,r,this.propValues)),e.makeTree||((e,t,r)=>new c(h.none,e,t,r)))}static build(e){return T(e)}}c.empty=new c(h.none,[],[],0);class g{constructor(e,t){this.buffer=e;this.index=t}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new g(this.buffer,this.index)}}class m{constructor(e,t,r){this.buffer=e;this.length=t;this.set=r}get type(){return h.none}toString(){let e=[];for(let t=0;t0)break}}return l}slice(e,t,r){let n=this.buffer;let i=new Uint16Array(t-e),s=0;for(let l=e,o=0;l=t&&rt;case 1:return r<=t&&n>t;case 2:return n>t;case 4:return true}}function x(e,t,r,n){var i;while(e.from==e.to||(r<1?e.from>=t:e.from>t)||(r>-1?e.to<=t:e.to0?l.length:-1;e!=h;e+=t){let h=l[e],u=f[e]+s.from;if(!b(n,r,u,u+h.length))continue;if(h instanceof m){if(i&d.ExcludeBuffers)continue;let l=h.findChild(0,h.buffer.length,t,r-u,n);if(l>-1)return new A(new k(s,h,e,u),null,l)}else if(i&d.IncludeAnonymous||(!h.type.isAnonymous||B(h))){let l;if(!(i&d.IgnoreMounts)&&(l=o.get(h))&&!l.overlay)return new w(l.tree,u,e,s);let f=new w(h,u,e,s);return i&d.IncludeAnonymous||!f.type.isAnonymous?f:f.nextChild(t<0?h.children.length-1:0,t,r,n)}}if(i&d.IncludeAnonymous||!s.type.isAnonymous)return null;if(s.index>=0)e=s.index+t;else e=t<0?-1:s._parent._tree.children.length;s=s._parent;if(!s)return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this._tree.children.length-1,-1,e,-2)}enter(e,t,r=0){let n;if(!(r&d.IgnoreOverlays)&&(n=o.get(this._tree))&&n.overlay){let r=e-this.from;for(let{from:e,to:i}of n.overlay){if((t>0?e<=r:e=r:i>r))return new w(n.tree,n.overlay[0].from+this.from,-1,this)}}return this.nextChild(0,1,e,t,r)}nextSignificantParent(){let e=this;while(e.type.isAnonymous&&e._parent)e=e._parent;return e}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}}function v(e,t,r,n){let i=e.cursor(),s=[];if(!i.firstChild())return s;if(r!=null)for(let l=false;!l;){l=i.type.is(r);if(!i.nextSibling())return s}for(;;){if(n!=null&&i.type.is(n))return s;if(i.type.is(t))s.push(i.node);if(!i.nextSibling())return n==null?s:[]}}function _(e,t,r=t.length-1){for(let n=e.parent;r>=0;n=n.parent){if(!n)return false;if(!n.type.isAnonymous){if(t[r]&&t[r]!=n.name)return false;r--}}return true}class k{constructor(e,t,r,n){this.parent=e;this.buffer=t;this.index=r;this.start=n}}class A extends y{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(e,t,r){super();this.context=e;this._parent=t;this.index=r;this.type=e.buffer.set.types[e.buffer.buffer[r]]}child(e,t,r){let{buffer:n}=this.context;let i=n.findChild(this.index+4,n.buffer[this.index+3],e,t-this.context.start,r);return i<0?null:new A(this.context,this,i)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}enter(e,t,r=0){if(r&d.ExcludeBuffers)return null;let{buffer:n}=this.context;let i=n.findChild(this.index+4,n.buffer[this.index+3],t>0?1:-1,e-this.context.start,t);return i<0?null:new A(this.context,this,i)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){let{buffer:e}=this.context;let t=e.buffer[this.index+3];if(t<(this._parent?e.buffer[this._parent.index+3]:e.buffer.length))return new A(this.context,this._parent,t);return this.externalSibling(1)}get prevSibling(){let{buffer:e}=this.context;let t=this._parent?this._parent.index+4:0;if(this.index==t)return this.externalSibling(-1);return new A(this.context,this._parent,e.findChild(t,this.index,-1,0,4))}get tree(){return null}toTree(){let e=[],t=[];let{buffer:r}=this.context;let n=this.index+4,i=r.buffer[this.index+3];if(i>n){let s=r.buffer[this.index+1];e.push(r.slice(n,i,s));t.push(0)}return new c(this.type,e,t,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}}function C(e){if(!e.length)return null;let t=0,r=e[0];for(let s=1;sr.from||n.to=t){let l=new w(e.tree,e.overlay[0].from+s.from,-1,s);(i||(i=[n])).push(x(l,t,r,false))}}}return i?C(i):n}class I{get name(){return this.type.name}constructor(e,t=0){this.mode=t;this.buffer=null;this.stack=[];this.index=0;this.bufferNode=null;if(e instanceof w){this.yieldNode(e)}else{this._tree=e.context.parent;this.buffer=e.context;for(let t=e._parent;t;t=t._parent)this.stack.unshift(t.index);this.bufferNode=e;this.yieldBuf(e.index)}}yieldNode(e){if(!e)return false;this._tree=e;this.type=e.type;this.from=e.from;this.to=e.to;return true}yieldBuf(e,t){this.index=e;let{start:r,buffer:n}=this.buffer;this.type=t||n.set.types[n.buffer[e]];this.from=r+n.buffer[e+1];this.to=r+n.buffer[e+2];return true}yield(e){if(!e)return false;if(e instanceof w){this.buffer=null;return this.yieldNode(e)}this.buffer=e.context;return this.yieldBuf(e.index,e.type)}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(e,t,r){if(!this.buffer)return this.yield(this._tree.nextChild(e<0?this._tree._tree.children.length-1:0,e,t,r,this.mode));let{buffer:n}=this.buffer;let i=n.findChild(this.index+4,n.buffer[this.index+3],e,t-this.buffer.start,r);if(i<0)return false;this.stack.push(this.index);return this.yieldBuf(i)}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(e){return this.enterChild(1,e,2)}childBefore(e){return this.enterChild(-1,e,-2)}enter(e,t,r=this.mode){if(!this.buffer)return this.yield(this._tree.enter(e,t,r));return r&d.ExcludeBuffers?false:this.enterChild(1,e,t)}parent(){if(!this.buffer)return this.yieldNode(this.mode&d.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let e=this.mode&d.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();this.buffer=null;return this.yieldNode(e)}sibling(e){if(!this.buffer)return!this._tree._parent?false:this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+e,e,0,4,this.mode));let{buffer:t}=this.buffer,r=this.stack.length-1;if(e<0){let e=r<0?0:this.stack[r]+4;if(this.index!=e)return this.yieldBuf(t.findChild(e,this.index,-1,0,4))}else{let e=t.buffer[this.index+3];if(e<(r<0?t.buffer.length:t.buffer[this.stack[r]+3]))return this.yieldBuf(e)}return r<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+e,e,0,4,this.mode)):false}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(e){let t,r,{buffer:n}=this;if(n){if(e>0){if(this.index-1)for(let n=t+e,i=e<0?-1:r._tree.children.length;n!=i;n+=e){let e=r._tree.children[n];if(this.mode&d.IncludeAnonymous||e instanceof m||!e.type.isAnonymous||B(e))return false}}return true}move(e,t){if(t&&this.enterChild(e,0,4))return true;for(;;){if(this.sibling(e))return true;if(this.atLastNode(e)||!this.parent())return false}}next(e=true){return this.move(1,e)}prev(e=true){return this.move(-1,e)}moveTo(e,t=0){while(this.from==this.to||(t<1?this.from>=e:this.from>e)||(t>-1?this.to<=e:this.to=0;){for(let s=e;s;s=s._parent)if(s.index==n){if(n==this.index)return s;t=s;r=i+1;break e}n=this.stack[--i]}}for(let n=r;n=0;i--){if(i<0)return _(this.node,e,n);let s=r[t.buffer[this.stack[i]]];if(!s.isAnonymous){if(e[n]&&e[n]!=s.name)return false;n--}}return true}}function B(e){return e.children.some((e=>e instanceof m||!e.type.isAnonymous||B(e)))}function T(e){var t;let{buffer:r,nodeSet:i,maxBufferLength:s=n,reused:o=[],minRepeatType:f=i.types.length}=e;let h=Array.isArray(r)?new g(r,r.length):r;let u=i.types;let a=0,p=0;function d(e,t,r,n,l,c){let{id:g,start:k,end:A,size:C}=h;let S=p;while(C<0){h.next();if(C==-1){let t=o[g];r.push(t);n.push(k-e);return}else if(C==-3){a=g;return}else if(C==-4){p=g;return}else{throw new RangeError(`Unrecognized record size: ${C}`)}}let N=u[g],I,B;let T=k-e;if(A-k<=s&&(B=v(h.pos-t,l))){let t=new Uint16Array(B.size-B.skip);let r=h.pos-B.size,n=t.length;while(h.pos>r)n=_(B.start,t,n);I=new m(t,A-B.start,i);T=B.start-e}else{let e=h.pos-C;h.next();let t=[],r=[];let n=g>=f?g:-1;let i=0,l=A;while(h.pos>e){if(n>=0&&h.id==n&&h.size>=0){if(h.end<=l-s){y(t,r,k,i,h.end,l,n,S);i=t.length;l=h.end}h.next()}else if(c>2500){b(k,e,t,r)}else{d(k,e,t,r,n,c+1)}}if(n>=0&&i>0&&i-1&&i>0){let e=x(N);I=P(N,t,r,0,t.length,0,A-k,e,e)}else{I=w(N,t,r,A-k,S-A)}}r.push(I);n.push(T)}function b(e,t,r,n){let l=[];let o=0,f=-1;while(h.pos>t){let{id:e,start:t,end:r,size:n}=h;if(n>4){h.next()}else if(f>-1&&t=0;e-=3){t[r++]=l[e];t[r++]=l[e+1]-s;t[r++]=l[e+2]-s;t[r++]=r}r.push(new m(t,l[2]-s,i));n.push(s-e)}}function x(e){return(t,r,n)=>{let i=0,s=t.length-1,o,f;if(s>=0&&(o=t[s])instanceof c){if(!s&&o.type==e&&o.length==n)return o;if(f=o.prop(l.lookAhead))i=r[s]+o.length+f}return w(e,t,r,n,i)}}function y(e,t,r,n,s,l,o,f){let h=[],u=[];while(e.length>n){h.push(e.pop());u.push(t.pop()+r-s)}e.push(w(i.types[o],h,u,l-s,f-l));t.push(s-r)}function w(e,t,r,n,i=0,s){if(a){let e=[l.contextHash,a];s=s?[e].concat(s):[e]}if(i>25){let e=[l.lookAhead,i];s=s?[e].concat(s):[e]}return new c(e,t,r,n,s)}function v(e,t){let r=h.fork();let n=0,i=0,l=0,o=r.end-s;let u={size:0,start:0,skip:0};e:for(let s=r.pos-e;r.pos>s;){let e=r.size;if(r.id==t&&e>=0){u.size=n;u.start=i;u.skip=l;l+=4;n+=4;r.next();continue}let h=r.pos-e;if(e<0||h=f?4:0;let p=r.start;r.next();while(r.pos>h){if(r.size<0){if(r.size==-3)a+=4;else break e}else if(r.id>=f){a+=4}r.next()}i=p;n+=e;l+=a}if(t<0||n==e){u.size=n;u.start=i;u.skip=l}return u.size>4?u:undefined}function _(e,t,r){let{id:n,start:i,end:s,size:l}=h;h.next();if(l>=0&&n4){let n=h.pos-(l-4);while(h.pos>n)r=_(e,t,r)}t[--r]=o;t[--r]=s-e;t[--r]=i-e;t[--r]=n}else if(l==-3){a=n}else if(l==-4){p=n}return r}let k=[],A=[];while(h.pos>0)d(e.start||0,e.bufferStart||0,k,A,-1,0);let C=(t=e.length)!==null&&t!==void 0?t:k.length?A[0]+k[0].length:0;return new c(u[e.topID],k.reverse(),A.reverse(),C)}const M=new WeakMap;function z(e,t){if(!e.isAnonymous||t instanceof m||t.type!=e)return 1;let r=M.get(t);if(r==null){r=1;for(let n of t.children){if(n.type!=e||!(n instanceof c)){r=1;break}r+=z(e,n)}M.set(t,r)}return r}function P(e,t,r,n,i,s,l,o,f){let h=0;for(let c=n;c=u)break;c+=r}if(o==n+1){if(c>u){let e=t[n];d(e.children,e.positions,0,e.children.length,r[n]+l);continue}a.push(t[n])}else{let i=r[o-1]+t[o-1].length-h;a.push(P(e,t,r,n,o,h,i,null,f))}p.push(h+l-s)}}d(t,r,n,i,0);return(o||f)(a,p,l)}class E{constructor(){this.map=new WeakMap}setBuffer(e,t,r){let n=this.map.get(e);if(!n)this.map.set(e,n=new Map);n.set(t,r)}getBuffer(e,t){let r=this.map.get(e);return r&&r.get(t)}set(e,t){if(e instanceof A)this.setBuffer(e.context.buffer,e.index,t);else if(e instanceof w)this.map.set(e.tree,t)}get(e){return e instanceof A?this.getBuffer(e.context.buffer,e.index):e instanceof w?this.map.get(e.tree):undefined}cursorSet(e,t){if(e.buffer)this.setBuffer(e.buffer.buffer,e.index,t);else this.map.set(e.tree,t)}cursorGet(e){return e.buffer?this.getBuffer(e.buffer.buffer,e.index):this.map.get(e.tree)}}class O{constructor(e,t,r,n,i=false,s=false){this.from=e;this.to=t;this.tree=r;this.offset=n;this.open=(i?1:0)|(s?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(e,t=[],r=false){let n=[new O(0,e.length,e,0,false,r)];for(let i of t)if(i.to>e.length)n.push(i);return n}static applyChanges(e,t,r=128){if(!t.length)return e;let n=[];let i=1,s=e.length?e[0]:null;for(let l=0,o=0,f=0;;l++){let h=l=r)while(s&&s.from=t.from||u<=t.to||f){let e=Math.max(t.from,o)-f,r=Math.min(t.to,u)-f;t=e>=r?null:new O(e,r,t.tree,t.offset+f,l>0,!!h)}if(t)n.push(t);if(s.to>u)break;s=inew s(e.from,e.to))):[new s(0,0)];return this.createParse(e,t||[],r)}parse(e,t,r){let n=this.startParse(e,t,r);for(;;){let e=n.advance();if(e)return e}}}class F{constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return false}read(e,t){return this.string.slice(e,t)}}function D(e){return(t,r,n,i)=>new J(t,e,r,n,i)}class R{constructor(e,t,r,n,i){this.parser=e;this.parse=t;this.overlay=r;this.target=n;this.from=i}}function W(e){if(!e.length||e.some((e=>e.from>=e.to)))throw new RangeError("Invalid inner parse ranges given: "+JSON.stringify(e))}class U{constructor(e,t,r,n,i,s,l){this.parser=e;this.predicate=t;this.mounts=r;this.index=n;this.start=i;this.target=s;this.prev=l;this.depth=0;this.ranges=[]}}const L=new l({perNode:true});class J{constructor(e,t,r,n,i){this.nest=t;this.input=r;this.fragments=n;this.ranges=i;this.inner=[];this.innerDone=0;this.baseTree=null;this.stoppedAt=null;this.baseParse=e}advance(){if(this.baseParse){let e=this.baseParse.advance();if(!e)return null;this.baseParse=null;this.baseTree=e;this.startInner();if(this.stoppedAt!=null)for(let t of this.inner)t.parse.stopAt(this.stoppedAt)}if(this.innerDone==this.inner.length){let e=this.baseTree;if(this.stoppedAt!=null)e=new c(e.type,e.children,e.positions,e.length,e.propValues.concat([[L,this.stoppedAt]]));return e}let e=this.inner[this.innerDone],t=e.parse.advance();if(t){this.innerDone++;let r=Object.assign(Object.create(null),e.target.props);r[l.mounted.id]=new o(t,e.overlay,e.parser);e.target.props=r}return null}get parsedPos(){if(this.baseParse)return 0;let e=this.input.length;for(let t=this.innerDone;t=this.stoppedAt){o=false}else if(e.hasNode(n)){if(t){let e=t.mounts.find((e=>e.frag.from<=n.from&&e.frag.to>=n.to&&e.mount.overlay));if(e)for(let r of e.mount.overlay){let i=r.from+e.pos,s=r.to+e.pos;if(i>=n.from&&s<=n.to&&!t.ranges.some((e=>e.fromi)))t.ranges.push({from:i,to:s})}}o=false}else if(r&&(l=V(r.ranges,n.from,n.to))){o=l!=2}else if(!n.type.isAnonymous&&(i=this.nest(n,this.input))&&(n.fromnew s(e.from-n.from,e.to-n.from))):null,n.tree,e.length?e[0].from:n.from));if(!i.overlay)o=false;else if(e.length)r={ranges:e,depth:0,prev:r}}}else if(t&&(f=t.predicate(n))){if(f===true)f=new s(n.from,n.to);if(f.fromnew s(e.from-t.start,e.to-t.start))),t.target,e[0].from))}t=t.prev}if(r&&! --r.depth)r=r.prev}}}}}function V(e,t,r){for(let n of e){if(n.from>=r)break;if(n.to>t)return n.from<=t&&n.to>=r?2:1}return 0}function H(e,t,r,n,i,s){if(t=e&&t.enter(r,1,d.IgnoreOverlays|d.ExcludeBuffers));else if(!t.next(false))this.done=true}}hasNode(e){this.moveTo(e.from);if(!this.done&&this.cursor.from+this.offset==e.from&&this.cursor.tree){for(let t=this.cursor.tree;;){if(t==e.tree)return true;if(t.children.length&&t.positions[0]==0&&t.children[0]instanceof c)t=t.children[0];else break}}return false}}class q{constructor(e){var t;this.fragments=e;this.curTo=0;this.fragI=0;if(e.length){let r=this.curFrag=e[0];this.curTo=(t=r.tree.prop(L))!==null&&t!==void 0?t:r.to;this.inner=new $(r.tree,-r.offset)}else{this.curFrag=this.inner=null}}hasNode(e){while(this.curFrag&&e.from>=this.curTo)this.nextFrag();return this.curFrag&&this.curFrag.from<=e.from&&this.curTo>=e.to&&this.inner.hasNode(e)}nextFrag(){var e;this.fragI++;if(this.fragI==this.fragments.length){this.curFrag=this.inner=null}else{let t=this.curFrag=this.fragments[this.fragI];this.curTo=(e=t.tree.prop(L))!==null&&e!==void 0?e:t.to;this.inner=new $(t.tree,-t.offset)}}findMounts(e,t){var r;let n=[];if(this.inner){this.inner.cursor.moveTo(e,1);for(let e=this.inner.cursor.node;e;e=e.parent){let i=(r=e.tree)===null||r===void 0?void 0:r.prop(l.mounted);if(i&&i.parser==t){for(let t=this.fragI;t=e.to)break;if(r.tree==this.curFrag.tree)n.push({frag:r,pos:e.from-r.offset,mount:i})}}}}return n}}function K(e,t){let r=null,n=t;for(let i=1,l=0;i=f)break;if(e.to<=o)continue;if(!r)n=r=t.slice();if(e.fromf)r.splice(l+1,0,new s(f,e.to))}else if(e.to>f){r[l--]=new s(f,e.to)}else{r.splice(l--,1)}}}return n}function Q(e,t,r,n){let i=0,l=0,o=false,f=false,h=-1e9;let u=[];for(;;){let a=i==e.length?1e9:o?e[i].to:e[i].from;let p=l==t.length?1e9:f?t[l].to:t[l].from;if(o!=f){let e=Math.max(h,r),t=Math.min(a,p,n);if(enew s(e.from+n,e.to+n)));let u=Q(t,o,f,h);for(let t=0,n=f;;t++){let s=t==u.length,o=s?h:u[t].from;if(o>n)r.push(new O(n,o,i.tree,-e,l.from>=n||l.openStart,l.to<=o||l.openEnd));if(s)break;n=u[t].to}}else{r.push(new O(f,h,i.tree,-e,l.from>=e||l.openStart,l.to<=o||l.openEnd))}}return r}}}]);
\ No newline at end of file
diff --git a/share/jupyter/lab/static/1218.856189c1ebf3c45164d6.js b/share/jupyter/lab/static/1218.856189c1ebf3c45164d6.js
new file mode 100644
index 0000000..2c37f18
--- /dev/null
+++ b/share/jupyter/lab/static/1218.856189c1ebf3c45164d6.js
@@ -0,0 +1 @@
+"use strict";(self["webpackChunk_jupyterlab_application_top"]=self["webpackChunk_jupyterlab_application_top"]||[]).push([[1218],{1218:(t,n,e)=>{e.d(n,{JLW:()=>jr.A,l78:()=>g,tlR:()=>_,qrM:()=>ri.Ay,Yu4:()=>ni.A,IA3:()=>ei.A,Wi0:()=>ui,PGM:()=>ai,OEq:()=>li.A,y8u:()=>hi.Ay,olC:()=>ci.A,IrU:()=>fi.A,oDi:()=>di.A,Q7f:()=>pi.A,cVp:()=>vi.A,lUB:()=>_i.A,Lx9:()=>yi.A,nVG:()=>mi.G,uxU:()=>mi.N,Xf2:()=>gi.A,GZz:()=>wi.Ay,UPb:()=>wi.Ps,dyv:()=>wi.Ko,GPZ:()=>Pr.GP,Sk5:()=>Vr.Ay,bEH:()=>Ir.interpolateHcl,n8j:()=>Fr.A,T9B:()=>r.A,jkA:()=>i.A,rLf:()=>ti,WH:()=>Lr,m4Y:()=>Yr.A,UMr:()=>Ur.A,w7C:()=>Rr.A,zt:()=>qr,Ltv:()=>Kr,UAC:()=>zi.UA,DCK:()=>Ti.DC,TUC:()=>Mi.TU,Agd:()=>ki.Ag,t6C:()=>Ai.y,wXd:()=>xi.wX,ABi:()=>Mi.AB,Ui6:()=>Ei.Ui,rGn:()=>Mi.rG,ucG:()=>bi.R,YPH:()=>Mi.YP,Mol:()=>Mi.Mo,PGu:()=>Mi.PG,GuW:()=>Mi.Gu,hkb:()=>Br.A});var r=e(21671);var i=e(44317);function o(t){return t}var u=1,a=2,s=3,l=4,c=1e-6;function f(t){return"translate("+t+",0)"}function h(t){return"translate(0,"+t+")"}function p(t){return n=>+t(n)}function v(t,n){n=Math.max(0,t.bandwidth()-n*2)/2;if(t.round())n=Math.round(n);return e=>+t(e)+n}function d(){return!this.__axis}function y(t,n){var e=[],r=null,i=null,y=6,_=6,m=3,g=typeof window!=="undefined"&&window.devicePixelRatio>1?0:.5,w=t===u||t===l?-1:1,A=t===l||t===a?"x":"y",b=t===u||t===s?f:h;function x(f){var h=r==null?n.ticks?n.ticks.apply(n,e):n.domain():r,x=i==null?n.tickFormat?n.tickFormat.apply(n,e):o:i,k=Math.max(y,0)+m,z=n.range(),M=+z[0]+g,E=+z[z.length-1]+g,T=(n.bandwidth?v:p)(n.copy(),g),C=f.selection?f.selection():f,S=C.selectAll(".domain").data([null]),N=C.selectAll(".tick").data(h,n).order(),P=N.exit(),V=N.enter().append("g").attr("class","tick"),B=N.select("line"),I=N.select("text");S=S.merge(S.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor"));N=N.merge(V);B=B.merge(V.append("line").attr("stroke","currentColor").attr(A+"2",w*y));I=I.merge(V.append("text").attr("fill","currentColor").attr(A,w*k).attr("dy",t===u?"0em":t===s?"0.71em":"0.32em"));if(f!==C){S=S.transition(f);N=N.transition(f);B=B.transition(f);I=I.transition(f);P=P.transition(f).attr("opacity",c).attr("transform",(function(t){return isFinite(t=T(t))?b(t+g):this.getAttribute("transform")}));V.attr("opacity",c).attr("transform",(function(t){var n=this.parentNode.__axis;return b((n&&isFinite(n=n(t))?n:T(t))+g)}))}P.remove();S.attr("d",t===l||t===a?_?"M"+w*_+","+M+"H"+g+"V"+E+"H"+w*_:"M"+g+","+M+"V"+E:_?"M"+M+","+w*_+"V"+g+"H"+E+"V"+w*_:"M"+M+","+g+"H"+E);N.attr("opacity",1).attr("transform",(function(t){return b(T(t)+g)}));B.attr(A+"2",w*y);I.attr(A,w*k).text(x);C.filter(d).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===a?"start":t===l?"end":"middle");C.each((function(){this.__axis=T}))}x.scale=function(t){return arguments.length?(n=t,x):n};x.ticks=function(){return e=Array.from(arguments),x};x.tickArguments=function(t){return arguments.length?(e=t==null?[]:Array.from(t),x):e.slice()};x.tickValues=function(t){return arguments.length?(r=t==null?null:Array.from(t),x):r&&r.slice()};x.tickFormat=function(t){return arguments.length?(i=t,x):i};x.tickSize=function(t){return arguments.length?(y=_=+t,x):y};x.tickSizeInner=function(t){return arguments.length?(y=+t,x):y};x.tickSizeOuter=function(t){return arguments.length?(_=+t,x):_};x.tickPadding=function(t){return arguments.length?(m=+t,x):m};x.offset=function(t){return arguments.length?(g=+t,x):g};return x}function _(t){return y(u,t)}function m(t){return y(a,t)}function g(t){return y(s,t)}function w(t){return y(l,t)}function A(){}function b(t){return t==null?A:function(){return this.querySelector(t)}}function x(t){if(typeof t!=="function")t=b(t);for(var n=this._groups,e=n.length,r=new Array(e),i=0;i=g)g=m+1;while(!(A=y[g])&&++g=0;){if(u=r[i]){if(o&&u.compareDocumentPosition(o)^4)o.parentNode.insertBefore(u,o);o=u}}}return this}function $(t){if(!t)t=tt;function n(n,e){return n&&e?t(n.__data__,e.__data__):!n-!e}for(var e=this._groups,r=e.length,i=new Array(r),o=0;on?1:t>=n?0:NaN}function nt(){var t=arguments[0];arguments[0]=this;t.apply(null,arguments);return this}function et(){return Array.from(this)}function rt(){for(var t=this._groups,n=0,e=t.length;n=0&&(n=t.slice(0,e))!=="xmlns")t=t.slice(e+1);return st.hasOwnProperty(n)?{space:st[n],local:t}:t}function ct(t){return function(){this.removeAttribute(t)}}function ft(t){return function(){this.removeAttributeNS(t.space,t.local)}}function ht(t,n){return function(){this.setAttribute(t,n)}}function pt(t,n){return function(){this.setAttributeNS(t.space,t.local,n)}}function vt(t,n){return function(){var e=n.apply(this,arguments);if(e==null)this.removeAttribute(t);else this.setAttribute(t,e)}}function dt(t,n){return function(){var e=n.apply(this,arguments);if(e==null)this.removeAttributeNS(t.space,t.local);else this.setAttributeNS(t.space,t.local,e)}}function yt(t,n){var e=lt(t);if(arguments.length<2){var r=this.node();return e.local?r.getAttributeNS(e.space,e.local):r.getAttribute(e)}return this.each((n==null?e.local?ft:ct:typeof n==="function"?e.local?dt:vt:e.local?pt:ht)(e,n))}function _t(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function mt(t){return function(){this.style.removeProperty(t)}}function gt(t,n,e){return function(){this.style.setProperty(t,n,e)}}function wt(t,n,e){return function(){var r=n.apply(this,arguments);if(r==null)this.style.removeProperty(t);else this.style.setProperty(t,r,e)}}function At(t,n,e){return arguments.length>1?this.each((n==null?mt:typeof n==="function"?wt:gt)(t,n,e==null?"":e)):bt(this.node(),t)}function bt(t,n){return t.style.getPropertyValue(n)||_t(t).getComputedStyle(t,null).getPropertyValue(n)}function xt(t){return function(){delete this[t]}}function kt(t,n){return function(){this[t]=n}}function zt(t,n){return function(){var e=n.apply(this,arguments);if(e==null)delete this[t];else this[t]=e}}function Mt(t,n){return arguments.length>1?this.each((n==null?xt:typeof n==="function"?zt:kt)(t,n)):this.node()[t]}function Et(t){return t.trim().split(/^|\s+/)}function Tt(t){return t.classList||new Ct(t)}function Ct(t){this._node=t;this._names=Et(t.getAttribute("class")||"")}Ct.prototype={add:function(t){var n=this._names.indexOf(t);if(n<0){this._names.push(t);this._node.setAttribute("class",this._names.join(" "))}},remove:function(t){var n=this._names.indexOf(t);if(n>=0){this._names.splice(n,1);this._node.setAttribute("class",this._names.join(" "))}},contains:function(t){return this._names.indexOf(t)>=0}};function St(t,n){var e=Tt(t),r=-1,i=n.length;while(++r=0)n=t.slice(e+1),t=t.slice(0,e);return{type:t,name:n}}))}function ln(t){return function(){var n=this.__on;if(!n)return;for(var e=0,r=-1,i=n.length,o;e{r.stop();t(e+n)}),n,e);return r}var zn=(0,bn.A)("start","end","cancel","interrupt");var Mn=[];var En=0;var Tn=1;var Cn=2;var Sn=3;var Nn=4;var Pn=5;var Vn=6;function Bn(t,n,e,r,i,o){var u=t.__transition;if(!u)t.__transition={};else if(e in u)return;Un(t,e,{name:n,index:r,group:i,on:zn,tween:Mn,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:En})}function In(t,n){var e=Dn(t,n);if(e.state>En)throw new Error("too late; already scheduled");return e}function Gn(t,n){var e=Dn(t,n);if(e.state>Sn)throw new Error("too late; already running");return e}function Dn(t,n){var e=t.__transition;if(!e||!(e=e[n]))throw new Error("transition not found");return e}function Un(t,n,e){var r=t.__transition,i;r[n]=e;e.timer=(0,xn.O1)(o,0,e.time);function o(t){e.state=Tn;e.timer.restart(u,e.delay,e.time);if(e.delay<=t)u(t-e.delay)}function u(o){var l,c,f,h;if(e.state!==Tn)return s();for(l in r){h=r[l];if(h.name!==e.name)continue;if(h.state===Sn)return kn(u);if(h.state===Nn){h.state=Vn;h.timer.stop();h.on.call("interrupt",t,t.__data__,h.index,h.group);delete r[l]}else if(+lCn&&r.state=0)t=t.slice(0,n);return!t||t==="start"}))}function be(t,n,e){var r,i,o=Ae(n)?In:Gn;return function(){var u=o(this,t),a=u.on;if(a!==r)(i=(r=a).copy()).on(n,e);u.on=i}}function xe(t,n){var e=this._id;return arguments.length<2?Dn(this.node(),e).on.on(t):this.each(be(e,t,n))}function ke(t){return function(){var n=this.parentNode;for(var e in this.__transition)if(+e!==t)return;if(n)n.removeChild(this)}}function ze(){return this.on("end.remove",ke(this._id))}function Me(t){var n=this._name,e=this._id;if(typeof t!=="function")t=b(t);for(var r=this._groups,i=r.length,o=new Array(i),u=0;u{const n=t.identifier;t=pointer(t,r);t.point0=t.slice();t.identifier=n;return t}));interrupt(r);var B=c(r,arguments,true).beforestart();if(o==="overlay"){if(v)C=true;const e=[V[0],V[1]||V[0]];h.selection=v=[[y=t===vr?d:cr(e[0][0],e[1][0]),g=t===pr?m:cr(e[0][1],e[1][1])],[b=t===vr?A:lr(e[0][0],e[1][0]),z=t===pr?k:lr(e[0][1],e[1][1])]];if(V.length>1)L(n)}else{y=v[0][0];g=v[0][1];b=v[1][0];z=v[1][1]}_=y;w=g;x=b;M=z;var I=select(r).attr("pointer-events","none");var G=I.selectAll(".overlay").attr("cursor",yr[o]);if(n.touches){B.moved=U;B.ended=O}else{var D=select(n.view).on("mousemove.brush",U,true).on("mouseup.brush",O,true);if(i)D.on("keydown.brush",H,true).on("keyup.brush",Y,true);dragDisable(n.view)}l.call(r);B.start(n,u.name);function U(t){for(const n of t.changedTouches||[t]){for(const t of V)if(t.identifier===n.identifier)t.cur=pointer(n,r)}if(S&&!N&&!P&&V.length===1){const t=V[0];if(sr(t.cur[0]-t[0])>sr(t.cur[1]-t[1]))P=true;else N=true}for(const n of V)if(n.cur)n[0]=n.cur[0],n[1]=n.cur[1];C=true;noevent(t);L(t)}function L(t){const n=V[0],e=n.point0;var i;E=n[0]-e[0];T=n[1]-e[1];switch(u){case or:case ir:{if(s)E=lr(d-y,cr(A-b,E)),_=y+E,x=b+E;if(f)T=lr(m-g,cr(k-z,T)),w=g+T,M=z+T;break}case ur:{if(V[1]){if(s)_=lr(d,cr(A,V[0][0])),x=lr(d,cr(A,V[1][0])),s=1;if(f)w=lr(m,cr(k,V[0][1])),M=lr(m,cr(k,V[1][1])),f=1}else{if(s<0)E=lr(d-y,cr(A-y,E)),_=y+E,x=b;else if(s>0)E=lr(d-b,cr(A-b,E)),_=y,x=b+E;if(f<0)T=lr(m-g,cr(k-g,T)),w=g+T,M=z;else if(f>0)T=lr(m-z,cr(k-z,T)),w=g,M=z+T}break}case ar:{if(s)_=lr(d,cr(A,y-E*s)),x=lr(d,cr(A,b+E*s));if(f)w=lr(m,cr(k,g-T*f)),M=lr(m,cr(k,z+T*f));break}}if(x<_){s*=-1;i=y,y=b,b=i;i=_,_=x,x=i;if(o in _r)G.attr("cursor",yr[o=_r[o]])}if(M0)y=_-E;if(f<0)z=M-T;else if(f>0)g=w-T;u=or;G.attr("cursor",yr.selection);L(t)}break}default:return}noevent(t)}function Y(t){switch(t.keyCode){case 16:{if(S){N=P=S=false;L(t)}break}case 18:{if(u===ar){if(s<0)b=x;else if(s>0)y=_;if(f<0)z=M;else if(f>0)g=w;u=ur;L(t)}break}case 32:{if(u===or){if(t.altKey){if(s)b=x-E*s,y=_+E*s;if(f)z=M-T*f,g=w+T*f;u=ar}else{if(s<0)b=x;else if(s>0)y=_;if(f<0)z=M;else if(f>0)g=w;u=ur}G.attr("cursor",yr[o]);L(t)}break}default:return}noevent(t)}}function p(t){c(this,arguments).moved(t)}function v(t){c(this,arguments).ended(t)}function d(){var e=this.__brush||{selection:null};e.extent=hr(n.apply(this,arguments));e.dim=t;return e}s.extent=function(t){return arguments.length?(n=typeof t==="function"?t:constant(hr(t)),s):n};s.filter=function(t){return arguments.length?(e=typeof t==="function"?t:constant(!!t),s):e};s.touchable=function(t){return arguments.length?(r=typeof t==="function"?t:constant(!!t),s):r};s.handleSize=function(t){return arguments.length?(u=+t,s):u};s.keyModifiers=function(t){return arguments.length?(i=!!t,s):i};s.on=function(){var t=o.on.apply(o,arguments);return t===o?s:t};return s}var Pr=e(24626);var Vr=e(59459);var Br=e(93926);var Ir=e(67360);var Gr=e(18312);var Dr=e(25758);var Ur=e(16527);function Lr(){var t=(0,Ur.A)().unknown(undefined),n=t.domain,e=t.range,r=0,i=1,o,u,a=false,s=0,l=0,c=.5;delete t.unknown;function f(){var t=n().length,f=it?1:n>=t?0:NaN}function Qr(t){return t}var $r=e(98247);function ti(){var t=Qr,n=Jr,e=null,r=(0,Zr.A)(0),i=(0,Zr.A)($r.FA),o=(0,Zr.A)(0);function u(u){var a,s=(u=(0,Wr.A)(u)).length,l,c,f=0,h=new Array(s),p=new Array(s),v=+r.apply(this,arguments),d=Math.min($r.FA,Math.max(-$r.FA,i.apply(this,arguments)-v)),y,_=Math.min(Math.abs(d)/s,o.apply(this,arguments)),m=_*(d<0?-1:1),g;for(a=0;a0){f+=g}}if(n!=null)h.sort((function(t,e){return n(p[t],p[e])}));else if(e!=null)h.sort((function(t,n){return e(u[t],u[n])}));for(a=0,c=f?(d-s*m)/f:0;a0?g*c:0)+m,p[l]={data:u[l],index:a,value:g,startAngle:v,endAngle:y,padAngle:_}}return p}u.value=function(n){return arguments.length?(t=typeof n==="function"?n:(0,Zr.A)(+n),u):t};u.sortValues=function(t){return arguments.length?(n=t,e=null,u):n};u.sort=function(t){return arguments.length?(e=t,n=null,u):e};u.startAngle=function(t){return arguments.length?(r=typeof t==="function"?t:(0,Zr.A)(+t),u):r};u.endAngle=function(t){return arguments.length?(i=typeof t==="function"?t:(0,Zr.A)(+t),u):i};u.padAngle=function(t){return arguments.length?(o=typeof t==="function"?t:(0,Zr.A)(+t),u):o};return u}var ni=e(60075);var ei=e(69683);var ri=e(24363);class ii{constructor(t,n){this._context=t;this._x=n}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){if(this._line||this._line!==0&&this._point===1)this._context.closePath();this._line=1-this._line}point(t,n){t=+t,n=+n;switch(this._point){case 0:{this._point=1;if(this._line)this._context.lineTo(t,n);else this._context.moveTo(t,n);break}case 1:this._point=2;default:{if(this._x)this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,n,t,n);else this._context.bezierCurveTo(this._x0,this._y0=(this._y0+n)/2,t,this._y0,t,n);break}}this._x0=t,this._y0=n}}class oi{constructor(t){this._context=t}lineStart(){this._point=0}lineEnd(){}point(t,n){t=+t,n=+n;if(this._point===0){this._point=1}else{const e=pointRadial(this._x0,this._y0);const r=pointRadial(this._x0,this._y0=(this._y0+n)/2);const i=pointRadial(t,this._y0);const o=pointRadial(t,n);this._context.moveTo(...e);this._context.bezierCurveTo(...r,...i,...o)}this._x0=t,this._y0=n}}function ui(t){return new ii(t,true)}function ai(t){return new ii(t,false)}function si(t){return new oi(t)}var li=e(54545);var ci=e(13893);var fi=e(46457);var hi=e(43793);var pi=e(25633);var vi=e(13309);var di=e(76413);var yi=e(43272);var _i=e(71228);var mi=e(67694);var gi=e(29944);var wi=e(79011);var Ai=e(26530);var bi=e(61147);var xi=e(23383);var ki=e(9017);var zi=e(20293);var Mi=e(61779);var Ei=e(77849);var Ti=e(82692);function Ci(t,n,e){this.k=t;this.x=n;this.y=e}Ci.prototype={constructor:Ci,scale:function(t){return t===1?this:new Ci(this.k*t,this.x,this.y)},translate:function(t,n){return t===0&n===0?this:new Ci(this.k,this.x+this.k*t,this.y+this.k*n)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var Si=new Ci(1,0,0);Ni.prototype=Ci.prototype;function Ni(t){while(!t.__zoom)if(!(t=t.parentNode))return Si;return t.__zoom}function Pi(t){return(!t.ctrlKey||t.type==="wheel")&&!t.button}function Vi(){var t=this;if(t instanceof SVGElement){t=t.ownerSVGElement||t;if(t.hasAttribute("viewBox")){t=t.viewBox.baseVal;return[[t.x,t.y],[t.x+t.width,t.y+t.height]]}return[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]}return[[0,0],[t.clientWidth,t.clientHeight]]}function Bi(){return this.__zoom||identity}function Ii(t){return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function Gi(){return navigator.maxTouchPoints||"ontouchstart"in this}function Di(t,n,e){var r=t.invertX(n[0][0])-e[0][0],i=t.invertX(n[1][0])-e[1][0],o=t.invertY(n[0][1])-e[0][1],u=t.invertY(n[1][1])-e[1][1];return t.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),u>o?(o+u)/2:Math.min(0,o)||Math.max(0,u))}function Ui(){var t=Pi,n=Vi,e=Di,r=Ii,i=Gi,o=[0,Infinity],u=[[-Infinity,-Infinity],[Infinity,Infinity]],a=250,s=interpolateZoom,l=dispatch("start","zoom","end"),c,f,h,p=500,v=150,d=0,y=10;function _(t){t.property("__zoom",Bi).on("wheel.zoom",k,{passive:false}).on("mousedown.zoom",z).on("dblclick.zoom",M).filter(i).on("touchstart.zoom",E).on("touchmove.zoom",T).on("touchend.zoom touchcancel.zoom",C).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}_.transform=function(t,n,e,r){var i=t.selection?t.selection():t;i.property("__zoom",Bi);if(t!==i){A(t,n,e,r)}else{i.interrupt().each((function(){b(this,arguments).event(r).start().zoom(null,typeof n==="function"?n.apply(this,arguments):n).end()}))}};_.scaleBy=function(t,n,e,r){_.scaleTo(t,(function(){var t=this.__zoom.k,e=typeof n==="function"?n.apply(this,arguments):n;return t*e}),e,r)};_.scaleTo=function(t,r,i,o){_.transform(t,(function(){var t=n.apply(this,arguments),o=this.__zoom,a=i==null?w(t):typeof i==="function"?i.apply(this,arguments):i,s=o.invert(a),l=typeof r==="function"?r.apply(this,arguments):r;return e(g(m(o,l),a,s),t,u)}),i,o)};_.translateBy=function(t,r,i,o){_.transform(t,(function(){return e(this.__zoom.translate(typeof r==="function"?r.apply(this,arguments):r,typeof i==="function"?i.apply(this,arguments):i),n.apply(this,arguments),u)}),null,o)};_.translateTo=function(t,r,i,o,a){_.transform(t,(function(){var t=n.apply(this,arguments),a=this.__zoom,s=o==null?w(t):typeof o==="function"?o.apply(this,arguments):o;return e(identity.translate(s[0],s[1]).scale(a.k).translate(typeof r==="function"?-r.apply(this,arguments):-r,typeof i==="function"?-i.apply(this,arguments):-i),t,u)}),o,a)};function m(t,n){n=Math.max(o[0],Math.min(o[1],n));return n===t.k?t:new Transform(n,t.x,t.y)}function g(t,n,e){var r=n[0]-e[0]*t.k,i=n[1]-e[1]*t.k;return r===t.x&&i===t.y?t:new Transform(t.k,r,i)}function w(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function A(t,e,r,i){t.on("start.zoom",(function(){b(this,arguments).event(i).start()})).on("interrupt.zoom end.zoom",(function(){b(this,arguments).event(i).end()})).tween("zoom",(function(){var t=this,o=arguments,u=b(t,o).event(i),a=n.apply(t,o),l=r==null?w(a):typeof r==="function"?r.apply(t,o):r,c=Math.max(a[1][0]-a[0][0],a[1][1]-a[0][1]),f=t.__zoom,h=typeof e==="function"?e.apply(t,o):e,p=s(f.invert(l).concat(c/f.k),h.invert(l).concat(c/h.k));return function(t){if(t===1)t=h;else{var n=p(t),e=c/n[2];t=new Transform(e,l[0]-n[0]*e,l[1]-n[1]*e)}u.zoom(null,t)}}))}function b(t,n,e){return!e&&t.__zooming||new x(t,n)}function x(t,e){this.that=t;this.args=e;this.active=0;this.sourceEvent=null;this.extent=n.apply(t,e);this.taps=0}x.prototype={event:function(t){if(t)this.sourceEvent=t;return this},start:function(){if(++this.active===1){this.that.__zooming=this;this.emit("start")}return this},zoom:function(t,n){if(this.mouse&&t!=="mouse")this.mouse[1]=n.invert(this.mouse[0]);if(this.touch0&&t!=="touch")this.touch0[1]=n.invert(this.touch0[0]);if(this.touch1&&t!=="touch")this.touch1[1]=n.invert(this.touch1[0]);this.that.__zoom=n;this.emit("zoom");return this},end:function(){if(--this.active===0){delete this.that.__zooming;this.emit("end")}return this},emit:function(t){var n=select(this.that).datum();l.call(t,this.that,new ZoomEvent(t,{sourceEvent:this.sourceEvent,target:_,type:t,transform:this.that.__zoom,dispatch:l}),n)}};function k(n,...i){if(!t.apply(this,arguments))return;var a=b(this,i).event(n),s=this.__zoom,l=Math.max(o[0],Math.min(o[1],s.k*Math.pow(2,r.apply(this,arguments)))),c=pointer(n);if(a.wheel){if(a.mouse[0][0]!==c[0]||a.mouse[0][1]!==c[1]){a.mouse[1]=s.invert(a.mouse[0]=c)}clearTimeout(a.wheel)}else if(s.k===l)return;else{a.mouse=[c,s.invert(c)];interrupt(this);a.start()}noevent(n);a.wheel=setTimeout(f,v);a.zoom("mouse",e(g(m(s,l),a.mouse[0],a.mouse[1]),a.extent,u));function f(){a.wheel=null;a.end()}}function z(n,...r){if(h||!t.apply(this,arguments))return;var i=n.currentTarget,o=b(this,r,true).event(n),a=select(n.view).on("mousemove.zoom",f,true).on("mouseup.zoom",p,true),s=pointer(n,i),l=n.clientX,c=n.clientY;dragDisable(n.view);nopropagation(n);o.mouse=[s,this.__zoom.invert(s)];interrupt(this);o.start();function f(t){noevent(t);if(!o.moved){var n=t.clientX-l,r=t.clientY-c;o.moved=n*n+r*r>d}o.event(t).zoom("mouse",e(g(o.that.__zoom,o.mouse[0]=pointer(t,i),o.mouse[1]),o.extent,u))}function p(t){a.on("mousemove.zoom mouseup.zoom",null);dragEnable(t.view,o.moved);noevent(t);o.event(t).end()}}function M(r,...i){if(!t.apply(this,arguments))return;var o=this.__zoom,s=pointer(r.changedTouches?r.changedTouches[0]:r,this),l=o.invert(s),c=o.k*(r.shiftKey?.5:2),f=e(g(m(o,c),s,l),n.apply(this,i),u);noevent(r);if(a>0)select(this).transition().duration(a).call(A,f,s,r);else select(this).call(_.transform,f,s,r)}function E(n,...e){if(!t.apply(this,arguments))return;var r=n.touches,i=r.length,o=b(this,e,n.changedTouches.length===i).event(n),u,a,s,l;nopropagation(n);for(a=0;a0?O:I)(u)};var k=function(u){if(u==undefined){throw TypeError("Can't call method on "+u)}return u};var V=function(u){return function(D,e){var r=String(k(D));var t=j(e);var n=r.length;var F,C;if(t<0||t>=n){return u?"":undefined}F=r.charCodeAt(t);return F<55296||F>56319||t+1===n||(C=r.charCodeAt(t+1))<56320||C>57343?u?r.charAt(t):F:u?r.slice(t,t+2):(F-55296<<10)+(C-56320)+65536}};var M=V(false);_(_.P,"String",{codePointAt:function u(D){return M(this,D)}});var J=e.String.codePointAt;var L=Math.max;var T=Math.min;var z=function(u,D){u=j(u);return u<0?L(u+D,0):T(u,D)};var H=String.fromCharCode;var $=String.fromCodePoint;_(_.S+_.F*(!!$&&$.length!=1),"String",{fromCodePoint:function u(D){var e=arguments;var r=[];var t=arguments.length;var n=0;var F;while(t>n){F=+e[n++];if(z(F,1114111)!==F){throw RangeError(F+" is not a valid code point")}r.push(F<65536?H(F):H(((F-=65536)>>10)+55296,F%1024+56320))}return r.join("")}});var R=e.String.fromCodePoint;var G=/[\u1680\u2000-\u200A\u202F\u205F\u3000]/;var U=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/;var Z=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/;var q={Space_Separator:G,ID_Start:U,ID_Continue:Z};var W={isSpaceSeparator:function u(D){return typeof D==="string"&&q.Space_Separator.test(D)},isIdStartChar:function u(D){return typeof D==="string"&&(D>="a"&&D<="z"||D>="A"&&D<="Z"||D==="$"||D==="_"||q.ID_Start.test(D))},isIdContinueChar:function u(D){return typeof D==="string"&&(D>="a"&&D<="z"||D>="A"&&D<="Z"||D>="0"&&D<="9"||D==="$"||D==="_"||D===""||D===""||q.ID_Continue.test(D))},isDigit:function u(D){return typeof D==="string"&&/[0-9]/.test(D)},isHexDigit:function u(D){return typeof D==="string"&&/[0-9A-Fa-f]/.test(D)}};var X;var K;var Q;var Y;var uu;var Du;var eu;var ru;var tu;var nu=function u(D,e){X=String(D);K="start";Q=[];Y=0;uu=1;Du=0;eu=undefined;ru=undefined;tu=undefined;do{eu=ou();hu[K]()}while(eu.type!=="eof");if(typeof e==="function"){return Fu({"":tu},"",e)}return tu};function Fu(u,D,e){var r=u[D];if(r!=null&&typeof r==="object"){if(Array.isArray(r)){for(var t=0;t0){var e=cu();if(!W.isHexDigit(e)){throw yu(fu())}u+=fu()}return String.fromCodePoint(parseInt(u,16))}var hu={start:function u(){if(eu.type==="eof"){throw wu()}gu()},beforePropertyName:function u(){switch(eu.type){case"identifier":case"string":ru=eu.value;K="afterPropertyName";return;case"punctuator":mu();return;case"eof":throw wu()}},afterPropertyName:function u(){if(eu.type==="eof"){throw wu()}K="beforePropertyValue"},beforePropertyValue:function u(){if(eu.type==="eof"){throw wu()}gu()},beforeArrayValue:function u(){if(eu.type==="eof"){throw wu()}if(eu.type==="punctuator"&&eu.value==="]"){mu();return}gu()},afterPropertyValue:function u(){if(eu.type==="eof"){throw wu()}switch(eu.value){case",":K="beforePropertyName";return;case"}":mu()}},afterArrayValue:function u(){if(eu.type==="eof"){throw wu()}switch(eu.value){case",":K="beforeArrayValue";return;case"]":mu()}},end:function u(){}};function gu(){var u;switch(eu.type){case"punctuator":switch(eu.value){case"{":u={};break;case"[":u=[];break}break;case"null":case"boolean":case"numeric":case"string":u=eu.value;break}if(tu===undefined){tu=u}else{var D=Q[Q.length-1];if(Array.isArray(D)){D.push(u)}else{Object.defineProperty(D,ru,{value:u,writable:true,enumerable:true,configurable:true})}}if(u!==null&&typeof u==="object"){Q.push(u);if(Array.isArray(u)){K="beforeArrayValue"}else{K="beforePropertyName"}}else{var e=Q[Q.length-1];if(e==null){K="end"}else if(Array.isArray(e)){K="afterArrayValue"}else{K="afterPropertyValue"}}}function mu(){Q.pop();var u=Q[Q.length-1];if(u==null){K="end"}else if(Array.isArray(u)){K="afterArrayValue"}else{K="afterPropertyValue"}}function yu(u){if(u===undefined){return Nu("JSON5: invalid end of input at "+uu+":"+Du)}return Nu("JSON5: invalid character '"+xu(u)+"' at "+uu+":"+Du)}function wu(){return Nu("JSON5: invalid end of input at "+uu+":"+Du)}function bu(){Du-=5;return Nu("JSON5: invalid identifier character at "+uu+":"+Du)}function Su(u){console.warn("JSON5: '"+xu(u)+"' in strings is not valid ECMAScript; consider escaping")}function xu(u){var D={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};if(D[u]){return D[u]}if(u<" "){var e=u.charCodeAt(0).toString(16);return"\\x"+("00"+e).substring(e.length)}return u}function Nu(u){var D=new SyntaxError(u);D.lineNumber=uu;D.columnNumber=Du;return D}var Pu=function u(D,e,r){var t=[];var n="";var F;var C;var A="";var i;if(e!=null&&typeof e==="object"&&!Array.isArray(e)){r=e.space;i=e.quote;e=e.replacer}if(typeof e==="function"){C=e}else if(Array.isArray(e)){F=[];for(var a=0,E=e;a0){r=Math.min(10,Math.floor(r));A=" ".substr(0,r)}}else if(typeof r==="string"){A=r.substr(0,10)}return f("",{"":D});function f(u,D){var e=D[u];if(e!=null){if(typeof e.toJSON5==="function"){e=e.toJSON5(u)}else if(typeof e.toJSON==="function"){e=e.toJSON(u)}}if(C){e=C.call(D,u,e)}if(e instanceof Number){e=Number(e)}else if(e instanceof String){e=String(e)}else if(e instanceof Boolean){e=e.valueOf()}switch(e){case null:return"null";case true:return"true";case false:return"false"}if(typeof e==="string"){return B(e,false)}if(typeof e==="number"){return String(e)}if(typeof e==="object"){return Array.isArray(e)?v(e):s(e)}return undefined}function B(u){var D={"'":.1,'"':.2};var e={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};var r="";for(var t=0;t=0){throw TypeError("Converting circular structure to JSON5")}t.push(u);var D=n;n=n+A;var e=F||Object.keys(u);var r=[];for(var C=0,i=e;C=0){throw TypeError("Converting circular structure to JSON5")}t.push(u);var D=n;n=n+A;var e=[];for(var r=0;r{s.d(t,{KO:()=>us});var i=s(66575);var n=s.n(i);var r=s(27421);var l=s(65606);class a{constructor(e){this.start=e}}class o extends a{constructor(e,t,s,i,n,r,l,a,o,u,h,f,c,p,d){super(e);this.rules=t;this.topRules=s;this.tokens=i;this.localTokens=n;this.context=r;this.externalTokens=l;this.externalSpecializers=a;this.externalPropSources=o;this.precedences=u;this.mainSkip=h;this.scopedSkip=f;this.dialects=c;this.externalProps=p;this.autoDelim=d}toString(){return Object.values(this.rules).join("\n")}}class u extends a{constructor(e,t,s,i,n){super(e);this.id=t;this.props=s;this.params=i;this.expr=n}toString(){return this.id.name+(this.params.length?`<${this.params.join()}>`:"")+" -> "+this.expr}}class h extends a{constructor(e,t){super(e);this.items=t}}class f extends a{constructor(e,t){super(e);this.items=t}}class c extends a{constructor(e,t,s){super(e);this.a=t;this.b=s}}class p extends a{constructor(e,t,s,i,n){super(e);this.precedences=t;this.conflicts=s;this.rules=i;this.literals=n}}class d extends a{constructor(e,t,s,i){super(e);this.precedences=t;this.rules=s;this.fallback=i}}class m extends a{constructor(e,t,s){super(e);this.literal=t;this.props=s}}class g extends a{constructor(e,t,s){super(e);this.id=t;this.source=s}}class k extends a{constructor(e,t,s,i){super(e);this.id=t;this.source=s;this.tokens=i}}class x extends a{constructor(e,t,s,i,n,r){super(e);this.type=t;this.token=s;this.id=i;this.source=n;this.tokens=r}}class b extends a{constructor(e,t,s){super(e);this.id=t;this.source=s}}class w extends a{constructor(e,t,s,i){super(e);this.id=t;this.externalID=s;this.source=i}}class y extends a{constructor(e,t){super(e);this.name=t}toString(){return this.name}}class $ extends a{walk(e){return e(this)}eq(e){return false}}$.prototype.prec=10;class v extends ${constructor(e,t,s){super(e);this.id=t;this.args=s}toString(){return this.id.name+(this.args.length?`<${this.args.join()}>`:"")}eq(e){return this.id.name==e.id.name&&G(this.args,e.args)}walk(e){let t=C(this.args,e);return e(t==this.args?this:new v(this.start,this.id,t))}}class S extends ${constructor(e,t,s,i,n){super(e);this.type=t;this.props=s;this.token=i;this.content=n}toString(){return`@${this.type}[${this.props.join(",")}]<${this.token}, ${this.content}>`}eq(e){return this.type==e.type&&E.eqProps(this.props,e.props)&&D(this.token,e.token)&&D(this.content,e.content)}walk(e){let t=this.token.walk(e),s=this.content.walk(e);return e(t==this.token&&s==this.content?this:new S(this.start,this.type,this.props,t,s))}}class T extends ${constructor(e,t){super(e);this.rule=t}toString(){let e=this.rule;return`${e.id}${e.props.length?`[${e.props.join(",")}]`:""} { ${e.expr} }`}eq(e){let t=this.rule,s=e.rule;return D(t.expr,s.expr)&&t.id.name==s.id.name&&E.eqProps(t.props,s.props)}walk(e){let t=this.rule,s=t.expr.walk(e);return e(s==t.expr?this:new T(this.start,new u(t.start,t.id,t.props,[],s)))}}class O extends ${constructor(e,t){super(e);this.exprs=t}toString(){return this.exprs.map((e=>_(e,this))).join(" | ")}eq(e){return G(this.exprs,e.exprs)}walk(e){let t=C(this.exprs,e);return e(t==this.exprs?this:new O(this.start,t))}}O.prototype.prec=1;class R extends ${constructor(e,t,s,i=false){super(e);this.exprs=t;this.markers=s;this.empty=i}toString(){return this.empty?"()":this.exprs.map((e=>_(e,this))).join(" ")}eq(e){return G(this.exprs,e.exprs)&&this.markers.every(((t,s)=>{let i=e.markers[s];return t.length==i.length&&t.every(((e,t)=>e.eq(i[t])))}))}walk(e){let t=C(this.exprs,e);return e(t==this.exprs?this:new R(this.start,t,this.markers,this.empty&&!t.length))}}R.prototype.prec=2;class P extends a{constructor(e,t,s){super(e);this.id=t;this.type=s}toString(){return(this.type=="ambig"?"~":"!")+this.id.name}eq(e){return this.id.name==e.id.name&&this.type==e.type}}class j extends ${constructor(e,t,s){super(e);this.expr=t;this.kind=s}toString(){return _(this.expr,this)+this.kind}eq(e){return D(this.expr,e.expr)&&this.kind==e.kind}walk(e){let t=this.expr.walk(e);return e(t==this.expr?this:new j(this.start,t,this.kind))}}j.prototype.prec=3;class N extends ${constructor(e,t){super(e);this.value=t}toString(){return JSON.stringify(this.value)}eq(e){return this.value==e.value}}class A extends ${constructor(e,t,s){super(e);this.ranges=t;this.inverted=s}toString(){return`[${this.inverted?"^":""}${this.ranges.map((([e,t])=>String.fromCodePoint(e)+(t==e+1?"":"-"+String.fromCodePoint(t))))}]`}eq(e){return this.inverted==e.inverted&&this.ranges.length==e.ranges.length&&this.ranges.every((([t,s],i)=>{let[n,r]=e.ranges[i];return t==n&&s==r}))}}class z extends ${constructor(e){super(e)}toString(){return"_"}eq(){return true}}function C(e,t){let s=null;for(let i=0;iD(e,t[s])))}class E extends a{constructor(e,t,s,i){super(e);this.at=t;this.name=s;this.value=i}eq(e){return this.name==e.name&&this.value.length==e.value.length&&this.value.every(((t,s)=>t.value==e.value[s].value&&t.name==e.value[s].name))}toString(){let e=(this.at?"@":"")+this.name;if(this.value.length){e+="=";for(let{name:t,value:s}of this.value)e+=t?`{${t}}`:/[^\w-]/.test(s)?JSON.stringify(s):s}return e}static eqProps(e,t){return e.length==t.length&&e.every(((e,s)=>e.eq(t[s])))}}class J extends a{constructor(e,t,s){super(e);this.value=t;this.name=s}}function _(e,t){return e.prec0}get eof(){return(this.flags&4)>0}get error(){return"error"in this.props}get top(){return(this.flags&2)>0}get interesting(){return this.flags>0||this.nodeName!=null}get repeated(){return(this.flags&16)>0}set preserve(e){this.flags=e?this.flags|8:this.flags&~8}get preserve(){return(this.flags&8)>0}set inline(e){this.flags=e?this.flags|32:this.flags&~32}get inline(){return(this.flags&32)>0}cmp(e){return this.hash-e.hash}}class L{constructor(){this.terms=[];this.names=Object.create(null);this.tops=[];this.eof=this.term("␄",null,1|4);this.error=this.term("⚠","⚠",8)}term(e,t,s=0,i={}){let n=new F(e,s,t,i);this.terms.push(n);this.names[e]=n;return n}makeTop(e,t){const s=this.term("@top",e,2,t);this.tops.push(s);return s}makeTerminal(e,t,s={}){return this.term(e,t,1,s)}makeNonTerminal(e,t,s={}){return this.term(e,t,0,s)}makeRepeat(e){return this.term(e,null,16)}uniqueName(e){for(let t=0;;t++){let s=t?`${e}-${t}`:e;if(!this.names[s])return s}}finish(e){for(let r of e)r.name.rules.push(r);this.terms=this.terms.filter((t=>t.terminal||t.preserve||e.some((e=>e.name==t||e.parts.includes(t)))));let t={};let s=[this.error];this.error.id=0;let i=0+1;for(let r of this.terms)if(r.id<0&&r.nodeType&&!r.repeated){r.id=i++;s.push(r)}let n=i;for(let r of this.terms)if(r.repeated){r.id=i++;s.push(r)}this.eof.id=i++;for(let r of this.terms){if(r.id<0)r.id=i++;if(r.name)t[r.id]=r.name}if(i>=65534)throw new B("Too many terms");return{nodeTypes:s,names:t,minRepeatTerm:n,maxTerm:i-1}}}function W(e,t,s){if(e.length!=t.length)return e.length-t.length;for(let i=0;iet?1:0))||this.cut-e.cut}}Y.none=new Y(0);function Z(e,t){if(e.length==0||e==t)return t;if(t.length==0)return e;let s=e.slice();for(let i of t)if(!e.includes(i))s.push(i);return s.sort()}let H=0;class Q{constructor(e,t,s,i){this.name=e;this.parts=t;this.conflicts=s;this.skip=i;this.id=H++}cmp(e){return this.id-e.id}cmpNoName(e){return this.parts.length-e.parts.length||this.skip.hash-e.skip.hash||this.parts.reduce(((t,s,i)=>t||s.cmp(e.parts[i])),0)||W(this.conflicts,e.conflicts,((e,t)=>e.cmp(t)))}toString(){return this.name+" -> "+this.parts.join(" ")}get isRepeatWrap(){return this.name.repeated&&this.parts.length==2&&this.parts[0]==this.name}sameReduce(e){return this.name==e.name&&this.parts.length==e.parts.length&&this.isRepeatWrap==e.isRepeatWrap}}const V=65535;class X{constructor(e,t,s){this.from=e;this.to=t;this.target=s}toString(){return`-> ${this.target.id}[label=${JSON.stringify(this.from<0?"ε":ee(this.from)+(this.to>this.from+1?"-"+ee(this.to-1):""))}]`}}function ee(e){return e>V?"∞":e==10?"\\n":e==13?"\\r":e<32||e>=55296&&e<57343?"\\u{"+e.toString(16)+"}":String.fromCharCode(e)}function te(e,t){let s=Object.create(null);let i=Object.create(null);for(let n of e){let e=oe(n.accepting);let t=i[e]||(i[e]=[]);t.push(n);s[n.id]=t}for(;;){let i=false,n=Object.create(null);for(let t of e){if(n[t.id])continue;let e=s[t.id];if(e.length==1){n[e[0].id]=e;continue}let r=[];e:for(let t of e){for(let e of r){if(se(t,e[0],s)){e.push(t);continue e}}r.push([t])}if(r.length>1)i=true;for(let t of r)for(let e of t)n[e.id]=t}if(!i)return ie(e,t,s);s=n}}function se(e,t,s){if(e.edges.length!=t.edges.length)return false;for(let i=0;ie.id-t.id)));return te(Object.values(t),i);function n(i){let r=t[oe(i)]=new e(i.reduce(((e,t)=>Z(e,t.accepting)),[]),s++);let l=[];for(let e of i)for(let t of e.edges){if(t.from>=0)l.push(t)}let a=fe(l);for(let e of a){let s=e.targets.sort(((e,t)=>e.id-t.id));r.edge(e.from,e.to,t[oe(s)]||n(s))}return r}}closure(){let e=[],t=Object.create(null);function s(i){if(t[i.id])return;t[i.id]=true;if(i.edges.some((e=>e.from>=0))||i.accepting.length>0&&!i.edges.some((e=>ue(i.accepting,e.target.accepting))))e.push(i);for(let e of i.edges)if(e.from<0)s(e.target)}s(this);return e}findConflicts(e){let t=[],s=this.cycleTerms();function i(e,s,i,n,r){if(e.idt.a==e&&t.b==s));if(!l)t.push(new le(e,s,i,ae(n),r&&ae(r)));else if(l.soft!=i)l.soft=0}this.reachable(((t,n)=>{if(t.accepting.length==0)return;for(let e=0;e{if(r!=t)for(let a of r.accepting){let r=s.includes(a);for(let o of t.accepting)if(a!=o)i(a,o,r||s.includes(o)||!e(a,o)?0:1,n,n.concat(l))}}))}));return t}cycleTerms(){let e=[];this.reachable((t=>{for(let{target:s}of t.edges)e.push(t,s)}));let t=new Map;let s=[];for(let n=0;n{if(t.accepting.length)e+=` ${t.id} [label=${JSON.stringify(t.accepting.join())}];\n`;for(let s of t.edges)e+=` ${t.id} ${s};\n`}));return e+"}"}toArray(e,t){let s=[];let i=[];this.reachable((n=>{let r=i.length;let l=r+3+n.accepting.length*2;s[n.id]=r;i.push(n.stateMask(e),l,n.edges.length);n.accepting.sort(((e,s)=>t.indexOf(e.id)-t.indexOf(s.id)));for(let t of n.accepting)i.push(t.id,e[t.id]||65535);for(let e of n.edges)i.push(e.from,e.to,-e.target.id-1)}));for(let n=0;nMath.pow(2,16))throw new B("Tokenizer tables too big to represent with 16-bit offsets.");return Uint16Array.from(i)}stateMask(e){let t=0;this.reachable((s=>{for(let i of s.accepting)t|=e[i.id]||65535}));return t}};let le=class e{constructor(e,t,s,i,n){this.a=e;this.b=t;this.soft=s;this.exampleA=i;this.exampleB=n}};function ae(e){let t="";for(let s=0;se-t));for(let n=1;ni&&t.frome.from==65535&&e.to==65535));if(i.length){let e=[];for(let t of i)for(let s of t.target.closure())if(!e.includes(s))e.push(s);if(e.length)s.push(new he(65535,65535,e))}return s}let ce=/[\w_-]+/gy;try{ce=/[\p{Alphabetic}\d_-]+/guy}catch(ds){}const pe=[];class de{constructor(e,t=null){this.string=e;this.fileName=t;this.type="sof";this.value=null;this.start=0;this.end=0;this.next()}lineInfo(e){for(let t=1,s=0;;){let i=this.string.indexOf("\n",s);if(i>-1&&i-1){let e=this.lineInfo(t);s+=(s?" ":"")+e.line+":"+e.ch}return s?e+` (${s})`:e}raise(e,t=-1){throw new B(this.message(e,t))}match(e,t){let s=t.exec(this.string.slice(e));return s?e+s[0].length:-1}next(){let e=this.match(this.end,/^(\s|\/\/.*|\/\*[^]*?\*\/)*/);if(e==this.string.length)return this.set("eof",null,e,e);let t=this.string[e];if(t=='"'){let t=this.match(e+1,/^(\\.|[^"\\])*"/);if(t==-1)this.raise("Unterminated string literal",e);return this.set("string",Je(this.string.slice(e+1,t-1)),e,t)}else if(t=="'"){let t=this.match(e+1,/^(\\.|[^'\\])*'/);if(t==-1)this.raise("Unterminated string literal",e);return this.set("string",Je(this.string.slice(e+1,t-1)),e,t)}else if(t=="@"){ce.lastIndex=e+1;let t=ce.exec(this.string);if(!t)return this.raise("@ without a name",e);return this.set("at",t[0],e,e+1+t[0].length)}else if((t=="$"||t=="!")&&this.string[e+1]=="["){let t=this.match(e+2,/^(?:\\.|[^\]\\])*\]/);if(t==-1)this.raise("Unterminated character set",e);return this.set("set",this.string.slice(e+2,t-1),e,t)}else if(/[\[\]()!~+*?{}<>\.,|:$=]/.test(t)){return this.set(t,null,e,e+1)}else{ce.lastIndex=e;let s=ce.exec(this.string);if(!s)return this.raise("Unexpected character "+JSON.stringify(t),e);return this.set("id",s[0],e,e+s[0].length)}}set(e,t,s,i){this.type=e;this.value=t;this.start=s;this.end=i}eat(e,t=null){if(this.type==e&&(t==null||this.value===t)){this.next();return true}else{return false}}unexpected(){return this.raise(`Unexpected token '${this.string.slice(this.start,this.end)}'`,this.start)}expect(e,t=null){let s=this.value;if(this.type!=e||!(t==null||s===t))this.unexpected();this.next();return s}parse(){return me(this)}}function me(e){let t=e.start;let s=[];let i=null;let n=null;let r=[];let l=null;let a=[];let u=[];let h=null;let f=[];let c=[];let p=[];let d=[];let m=[];let k=false;let x=false;while(e.type!="eof"){let t=e.start;if(e.eat("at","top")){if(e.type!="id")e.raise(`Top rules must have a name`,e.start);m.push(ge(e,Pe(e)));k=true}else if(e.type=="at"&&e.value=="tokens"){if(n)e.raise(`Multiple @tokens declaractions`,e.start);else n=Ne(e)}else if(e.eat("at","local")){e.expect("id","tokens");r.push(Ae(e,t))}else if(e.eat("at","context")){if(h)e.raise(`Multiple @context declarations`,t);let s=Pe(e);e.expect("id","from");let i=e.expect("string");h=new g(t,s,i)}else if(e.eat("at","external")){if(e.eat("id","tokens"))f.push(qe(e,t));else if(e.eat("id","prop"))p.push(Ee(e,t));else if(e.eat("id","extend"))c.push(De(e,"extend",t));else if(e.eat("id","specialize"))c.push(De(e,"specialize",t));else if(e.eat("id","propSource"))d.push(Ge(e,t));else e.unexpected()}else if(e.eat("at","dialects")){e.expect("{");for(let t=true;!e.eat("}");t=false){if(!t)e.eat(",");u.push(Pe(e))}}else if(e.type=="at"&&e.value=="precedence"){if(i)e.raise(`Multiple precedence declarations`,e.start);i=je(e)}else if(e.eat("at","detectDelim")){x=true}else if(e.eat("at","skip")){let t=be(e);if(e.type=="{"){e.next();let s=[],i=[];while(!e.eat("}")){if(e.eat("at","top")){i.push(ge(e,Pe(e)));k=true}else{s.push(ge(e))}}a.push({expr:t,topRules:i,rules:s})}else{if(l)e.raise(`Multiple top-level skip declarations`,e.start);l=t}}else{s.push(ge(e))}}if(!k)return e.raise(`Missing @top declaration`);return new o(t,s,m,n,r,h,f,c,d,i,l,a,u,p,x)}function ge(e,t){let s=t?t.start:e.start;let i=t||Pe(e);let n=ke(e);let r=[];if(e.eat("<"))while(!e.eat(">")){if(r.length)e.expect(",");r.push(Pe(e))}let l=be(e);return new u(s,i,n,r,l)}function ke(e){if(e.type!="[")return pe;let t=[];e.expect("[");while(!e.eat("]")){if(t.length)e.expect(",");t.push(xe(e))}return t}function xe(e){let t=e.start,s=[],i=e.value,n=e.type=="at";if(!e.eat("at")&&!e.eat("id"))e.unexpected();if(e.eat("="))for(;;){if(e.type=="string"||e.type=="id"){s.push(new J(e.start,e.value,null));e.next()}else if(e.eat(".")){s.push(new J(e.start,".",null))}else if(e.eat("{")){s.push(new J(e.start,null,e.expect("id")));e.expect("}")}else{break}}return new E(t,n,i,s)}function be(e){e.expect("{");let t=Re(e);e.expect("}");return t}const we="";function ye(e){let t=e.start;if(e.eat("(")){if(e.eat(")"))return new R(t,pe,[pe,pe]);let s=Re(e);e.expect(")");return s}else if(e.type=="string"){let s=e.value;e.next();if(s.length==0)return new R(t,pe,[pe,pe]);return new N(t,s)}else if(e.eat("id","_")){return new z(t)}else if(e.type=="set"){let s=e.value,i=e.string[e.start]=="!";let n=Je(s.replace(/\\.|-|"/g,(e=>e=="-"?we:e=='"'?'\\"':e)));let r=[];for(let t=0;t65535?2:1;if(t65535?3:2;if(ie[0]-t[0])),i)}else if(e.type=="at"&&(e.value=="specialize"||e.value=="extend")){let{start:t,value:s}=e;e.next();let i=ke(e);e.expect("<");let n=Re(e),r;if(e.eat(",")){r=Re(e)}else if(n instanceof N){r=n}else{e.raise(`@${s} requires two arguments when its first argument isn't a literal string`)}e.expect(">");return new S(t,s,i,n,r)}else if(e.type=="at"&&I.hasOwnProperty(e.value)){let t=new q(e.start,e.value);e.next();return t}else if(e.type=="["){let s=ge(e,new y(t,"_anon"));if(s.params.length)e.raise(`Inline rules can't have parameters`,s.start);return new T(t,s)}else{let s=Pe(e);if(e.type=="["||e.type=="{"){let i=ge(e,s);if(i.params.length)e.raise(`Inline rules can't have parameters`,i.start);return new T(t,i)}else{if(e.eat(".")&&s.name=="std"&&I.hasOwnProperty(e.value)){let s=new q(t,e.value);e.next();return s}return new v(t,s,$e(e))}}}function $e(e){let t=[];if(e.eat("<"))while(!e.eat(">")){if(t.length)e.expect(",");t.push(Re(e))}return t}function ve(e,t,s,i){if(!t.every((([e,t])=>t<=s||e>=i)))e.raise("Overlapping character range",e.start);t.push([s,i])}function Se(e){let t=e.start;let s=ye(e);for(;;){let i=e.type;if(e.eat("*")||e.eat("?")||e.eat("+"))s=new j(t,s,i);else return s}}function Te(e){return e.type=="}"||e.type==")"||e.type=="|"||e.type=="/"||e.type=="/\\"||e.type=="{"||e.type==","||e.type==">"}function Oe(e){let t=e.start,s=[],i=[pe];do{for(;;){let t=e.start,s;if(e.eat("~"))s="ambig";else if(e.eat("!"))s="prec";else break;i[i.length-1]=i[i.length-1].concat(new P(t,Pe(e),s))}if(Te(e))break;s.push(Se(e));i.push(pe)}while(!Te(e));if(s.length==1&&i.every((e=>e.length==0)))return s[0];return new R(t,s,i,!s.length)}function Re(e){let t=e.start,s=Oe(e);if(!e.eat("|"))return s;let i=[s];do{i.push(Oe(e))}while(e.eat("|"));let n=i.find((e=>e instanceof R&&e.empty));if(n)e.raise("Empty expression in choice operator. If this is intentional, use () to make it explicit.",n.start);return new O(t,i)}function Pe(e){if(e.type!="id")e.unexpected();let t=e.start,s=e.value;e.next();return new y(t,s)}function je(e){let t=e.start;e.next();e.expect("{");let s=[];while(!e.eat("}")){if(s.length)e.eat(",");s.push({id:Pe(e),type:e.eat("at","left")?"left":e.eat("at","right")?"right":e.eat("at","cut")?"cut":null})}return new h(t,s)}function Ne(e){let t=e.start;e.next();e.expect("{");let s=[];let i=[];let n=[];let r=[];while(!e.eat("}")){if(e.type=="at"&&e.value=="precedence"){n.push(ze(e))}else if(e.type=="at"&&e.value=="conflict"){r.push(Ce(e))}else if(e.type=="string"){i.push(new m(e.start,e.expect("string"),ke(e)))}else{s.push(ge(e))}}return new p(t,n,r,s,i)}function Ae(e,t){e.expect("{");let s=[];let i=[];let n=null;while(!e.eat("}")){if(e.type=="at"&&e.value=="precedence"){i.push(ze(e))}else if(e.eat("at","else")&&!n){n={id:Pe(e),props:ke(e)}}else{s.push(ge(e))}}return new d(t,i,s,n)}function ze(e){let t=e.start;e.next();e.expect("{");let s=[];while(!e.eat("}")){if(s.length)e.eat(",");let t=ye(e);if(t instanceof N||t instanceof v)s.push(t);else e.raise(`Invalid expression in token precedences`,t.start)}return new f(t,s)}function Ce(e){let t=e.start;e.next();e.expect("{");let s=ye(e);if(!(s instanceof N||s instanceof v))e.raise(`Invalid expression in token conflict`,s.start);e.eat(",");let i=ye(e);if(!(i instanceof N||i instanceof v))e.raise(`Invalid expression in token conflict`,i.start);e.expect("}");return new c(t,s,i)}function Ie(e){let t=[];e.expect("{");while(!e.eat("}")){if(t.length)e.eat(",");let s=Pe(e);let i=ke(e);t.push({id:s,props:i})}return t}function qe(e,t){let s=Pe(e);e.expect("id","from");let i=e.expect("string");return new k(t,s,i,Ie(e))}function De(e,t,s){let i=be(e);let n=Pe(e);e.expect("id","from");let r=e.expect("string");return new x(s,t,i,n,r,Ie(e))}function Ge(e,t){let s=Pe(e);e.expect("id","from");return new b(t,s,e.expect("string"))}function Ee(e,t){let s=Pe(e);let i=e.eat("id","as")?Pe(e):s;e.expect("id","from");let n=e.expect("string");return new w(t,i,s,n)}function Je(e){let t=/\\(?:u\{([\da-f]+)\}|u([\da-f]{4})|x([\da-f]{2})|([ntbrf0])|(.))|[^]/giy;let s="",i;while(i=t.exec(e)){let[e,t,n,r,l,a]=i;if(t||n||r)s+=String.fromCodePoint(parseInt(t||n||r,16));else if(l)s+=l=="n"?"\n":l=="t"?"\t":l=="0"?"\0":l=="r"?"\r":l=="f"?"\f":"\b";else if(a)s+=a;else s+=e}return s}function _e(e,t){return(e<<5)+e+t}function Be(e,t){for(let s=0;s{let s=Date.now();let i=t();console.log(`${e} (${((Date.now()-s)/1e3).toFixed(2)}s)`);return i}:(e,t)=>t();class Le{constructor(e,t,s,i,n,r){this.rule=e;this.pos=t;this.ahead=s;this.ambigAhead=i;this.skipAhead=n;this.via=r;this.hash=0}finish(){let e=_e(_e(this.rule.id,this.pos),this.skipAhead.hash);for(let t of this.ahead)e=_e(e,t.hash);for(let t of this.ambigAhead)e=Be(e,t);this.hash=e;return this}get next(){return this.pose.cmp(t)))||W(this.ambigAhead,e.ambigAhead,Ye)}eqSimple(e){return e.rule==this.rule&&e.pos==this.pos}toString(){let e=this.rule.parts.map((e=>e.name));e.splice(this.pos,0,"·");return`${this.rule.name} -> ${e.join(" ")}`}eq(e){return this==e||this.hash==e.hash&&this.rule==e.rule&&this.pos==e.pos&&this.skipAhead==e.skipAhead&&Qe(this.ahead,e.ahead)&&Qe(this.ambigAhead,e.ambigAhead)}trail(e=60){let t=[];for(let i=this;i;i=i.via){for(let e=i.pos-1;e>=0;e--)t.push(i.rule.parts[e])}let s=t.reverse().join(" ");if(s.length>e)s=s.slice(s.length-e).replace(/.*? /,"… ");return s}conflicts(e=this.pos){let t=this.rule.conflicts[e];if(e==this.rule.parts.length&&this.ambigAhead.length)t=t.join(new Y(0,this.ambigAhead));return t}static addOrigins(e,t){let s=e.slice();for(let i=0;it?1:0}function Ze(e,t,s,i){let n=[];for(let r=t+1;re.term+"="+e)).join(",")+(this.goto.length?" | "+this.goto.map((e=>e.term+"="+e)).join(","):"");return this.id+": "+this.set.filter((e=>e.pos>0)).join()+(this.defaultReduce?`\n always ${this.defaultReduce.name}(${this.defaultReduce.parts.length})`:e.length?"\n "+e:"")}addActionInner(e,t){e:for(let s=0;s0){this.actions.splice(s,1);this.actionPositions.splice(s,1);s--;continue e}else if(o<0){return null}else if(l.ambigGroups.some((e=>a.ambigGroups.includes(e)))){continue e}else{return i}}}this.actions.push(e);this.actionPositions.push(t);return null}addAction(e,t,s){let i=this.addActionInner(e,t);if(i){let n=this.actionPositions[this.actions.indexOf(i)][0];let r=[t[0].rule.name,n.rule.name];if(s.conflicts.some((e=>e.rules.some((e=>r.includes(e))))))return;let l;if(i instanceof Ve)l=`shift/reduce conflict between\n ${n}\nand\n ${t[0].rule}`;else l=`reduce/reduce conflict between\n ${n.rule}\nand\n ${t[0].rule}`;l+=`\nWith input:\n ${t[0].trail(70)} · ${e.term} …`;if(i instanceof Ve)l+=ut(t[0],i.term,s.first);l+=ot(n,t[0]);s.conflicts.push(new at(l,r))}}getGoto(e){return this.goto.find((t=>t.term==e))}hasSet(e){return He(this.set,e)}actionsByTerm(){let e=this._actionsByTerm;if(!e){this._actionsByTerm=e=Object.create(null);for(let t of this.actions)(e[t.term.id]||(e[t.term.id]=[])).push(t)}return e}finish(){if(this.actions.length){let e=this.actions[0];if(e instanceof Xe){let{rule:t}=e;if(this.actions.every((e=>e instanceof Xe&&e.rule.sameReduce(t))))this.defaultReduce=t}}this.actions.sort(((e,t)=>e.cmp(t)));this.goto.sort(((e,t)=>e.cmp(t)))}eq(e){let t=this.defaultReduce,s=e.defaultReduce;if(t||s)return t&&s?t.sameReduce(s):false;return this.skip==e.skip&&this.tokenGroup==e.tokenGroup&&He(this.actions,e.actions)&&He(this.goto,e.goto)}}function it(e,t){let s=[],i=[];function n(t,n,r,l,a){for(let o of t.rules){let t=s.find((e=>e.rule==o));if(!t){let i=e.find((e=>e.pos==0&&e.rule==o));t=i?new Le(o,0,i.ahead.slice(),i.ambigAhead,i.skipAhead,i.via):new Le(o,0,[],xt,l,a);s.push(t)}if(t.skipAhead!=l)throw new B("Inconsistent skip sets after "+a.trail());t.ambigAhead=Z(t.ambigAhead,r);for(let e of n)if(!t.ahead.includes(e)){t.ahead.push(e);if(t.rule.parts.length&&!t.rule.parts[0].terminal)nt(t,i)}}}for(let l of e){let e=l.next;if(e&&!e.terminal)n(e,Ze(l.rule,l.pos,l.ahead,t),l.conflicts(l.pos+1).ambigGroups,l.pos==l.rule.parts.length-1?l.skipAhead:l.rule.skip,l)}while(i.length){let e=i.pop();n(e.rule.parts[0],Ze(e.rule,0,e.ahead,t),Z(e.rule.conflicts[1].ambigGroups,e.rule.parts.length==1?e.ambigAhead:xt),e.rule.parts.length==1?e.skipAhead:e.rule.skip,e)}let r=e.slice();for(let l of s){l.ahead.sort(((e,t)=>e.hash-t.hash));l.finish();let t=e.findIndex((e=>e.pos==0&&e.rule==l.rule));if(t>-1)r[t]=l;else r.push(l)}return r.sort(((e,t)=>e.cmp(t)))}function nt(e,t){if(!t.includes(e))t.push(e)}function rt(e){let t=Object.create(null);for(let s of e.terms)if(!s.terminal)t[s.name]=[];for(;;){let s=false;for(let i of e.terms)if(!i.terminal)for(let e of i.rules){let n=t[i.name];let r=false,l=n.length;for(let s of e.parts){r=true;if(s.terminal){nt(s,n)}else{for(let e of t[s.name]){if(e==null)r=false;else nt(e,n)}}if(r)break}if(!r)nt(null,n);if(n.length>l)s=true}if(!s)return t}}class lt{constructor(e,t){this.set=e;this.state=t}}class at{constructor(e,t){this.error=e;this.rules=t}}function ot(e,t){if(e.eqSimple(t))return"";function s(e,t){let s=[];for(let i=t.via;!i.eqSimple(e);i=i.via)s.push(i);if(!s.length)return"";s.unshift(t);return s.reverse().map(((e,s)=>"\n"+" ".repeat(s+1)+(e==t?"":"via ")+e)).join("")}for(let i=e;i;i=i.via)for(let n=t;n;n=n.via){if(i.eqSimple(n))return"\nShared origin: "+i+s(i,e)+s(i,t)}return""}function ut(e,t,s){let i=e,n=[];for(;;){for(let e=i.pos-1;e>=0;e--)n.push(i.rule.parts[e]);if(!i.via)break;i=i.via}n.reverse();let r=new Set;function l(i,a,o){if(a==n.length&&o&&!i.next)return`\nThe reduction of ${e.rule.name} is allowed before ${t} because of this rule:\n ${o}`;for(let e;e=i.next;){if(anew Le(s,0,[e.eof],xt,t,null).finish())),u)}let o=new tt(s);for(let u=0;ue.advance()));if(i.terminal){let t=ft(r);let l=a(t);if(l)e.addAction(new Ve(i,l),n[s],o)}else{let t=a(r);if(t)e.goto.push(new Ve(i,t))}}let l=false;for(let s of r)for(let t of s.ahead){let i=e.actions.length;e.addAction(new Xe(t,s.rule),[s],o);if(e.actions.length==i)l=true}if(l)for(let i=0;ie.actions.some((e=>e.term==t&&e instanceof Ve)))))e.goto.splice(i--,1)}}if(o.conflicts.length)throw new B(o.conflicts.map((e=>e.error)).join("\n\n"));for(let u of i)u.finish();if(Me)console.log(`${i.length} states total.`);return i}function ft(e){let t=null,s=1;for(let i of e){let e=i.rule.conflicts[i.pos-1].cut;if(es){s=e;t=[]}t.push(i)}return t||e}function ct(e,t,s){for(let n of e.goto)for(let e of t.goto){if(n.term==e.term&&s[n.target.id]!=s[e.target.id])return false}let i=t.actionsByTerm();for(let n of e.actions){let t=i[n.term.id];if(t&&t.some((e=>!e.matches(n,s)))){if(t.length==1)return false;let i=e.actionsByTerm()[n.term.id];if(i.length!=t.length||i.some((e=>!t.some((t=>e.matches(t,s))))))return false}}return true}function pt(e,t){let s=[];for(let i of e){let e=t[i.id];if(!s[e]){s[e]=new st(e,i.set,0,i.skip,i.hash,i.startRule);s[e].tokenGroup=i.tokenGroup;s[e].defaultReduce=i.defaultReduce}}for(let i of e){let e=t[i.id],n=s[e];n.flags|=i.flags;for(let r=0;rt.eq(e)))){n.actions.push(e);n.actionPositions.push(i.actionPositions[r])}}for(let r of i.goto){let e=r.map(t,s);if(!n.goto.some((t=>t.eq(e))))n.goto.push(e)}}return s}class dt{constructor(e,t){this.origin=e;this.members=[t]}}function mt(e,t){if(e.length!=t.length)return false;for(let s=0;sct(l,e[s],t)))){s[o].members.push(l.id);return}}t[l.id]=s.length;s.push(new dt(r.origin,l.id))}for(let n=1;;n++){let r=false,l=Date.now();for(let n=0,a=s.length;nn.eq(e)));if(l<0){s[t]=r.length;r.push(n)}else{s[t]=l;i=true;let e=r[l],a=null;for(let t of n.set)if(!e.set.some((e=>e.eqSimple(t))))(a||(a=[])).push(t);if(a)e.set=a.concat(e.set).sort(((e,t)=>e.cmp(t)))}}if(Me)console.log(`Merge identical pass ${t}${i?"":", done"} (${((Date.now()-n)/1e3).toFixed(2)}s)`);if(!i)return e;for(let e of r)if(!e.defaultReduce){e.actions=e.actions.map((e=>e.map(s,r)));e.goto=e.goto.map((e=>e.map(s,r)))}for(let e=0;e=34)t++;if(t>=92)t++;return String.fromCharCode(t)}function yt(e,t=65535){if(e>t)throw new Error("Trying to encode a number that's too big: "+e);if(e==65535)return String.fromCharCode(126);let s="";for(let i=46;;i=0){let t=e%46,n=e-t;s=wt(t+i)+s;if(n==0)break;e=n/46}return s}function $t(e,t=65535){let s='"'+yt(e.length,4294967295);for(let i=0;i{this.input=new de(e,t.fileName);this.ast=this.input.parse()}));let s=i.NodeProp;for(let n in s){if(s[n]instanceof i.NodeProp&&!s[n].perNode)this.knownProps[n]={prop:s[n],source:{name:n,from:null}}}for(let n of this.ast.externalProps){this.knownProps[n.id.name]={prop:this.options.externalProp?this.options.externalProp(n.id.name):new i.NodeProp,source:{name:n.externalID.name,from:n.source}}}this.dialects=this.ast.dialects.map((e=>e.name));this.tokens=new Mt(this,this.ast.tokens);this.localTokens=this.ast.localTokens.map((e=>new Ft(this,e)));this.externalTokens=this.ast.externalTokens.map((e=>new ns(this,e)));this.externalSpecializers=this.ast.externalSpecializers.map((e=>new rs(this,e)));Fe("Build rules",(()=>{let e=this.newName("%noskip",true);this.defineRule(e,[]);let t=this.ast.mainSkip?this.newName("%mainskip",true):e;let s=[],i=[];for(let n of this.ast.rules)this.astRules.push({skip:t,rule:n});for(let n of this.ast.topRules)i.push({skip:t,rule:n});for(let n of this.ast.scopedSkip){let r=e,l=this.ast.scopedSkip.findIndex(((e,t)=>t-1)r=s[l];else if(this.ast.mainSkip&&D(n.expr,this.ast.mainSkip))r=t;else if(!es(n.expr))r=this.newName("%skip",true);s.push(r);for(let e of n.rules)this.astRules.push({skip:r,rule:e});for(let e of n.topRules)i.push({skip:r,rule:e})}for(let{rule:n}of this.astRules){this.unique(n.id)}this.currentSkip.push(e);this.skipRules=t==e?[t]:[e,t];if(t!=e)this.defineRule(t,this.normalizeExpr(this.ast.mainSkip));for(let n=0;ne.rule.start-t.rule.start))){this.unique(n.id);this.used(n.id.name);this.currentSkip.push(r);let{name:e,props:t}=this.nodeInfo(n.props,"a",n.id.name,vt,vt,n.expr);let s=this.terms.makeTop(e,t);this.namedTerms[e]=s;this.defineRule(s,this.normalizeExpr(n.expr));this.currentSkip.pop()}for(let n of this.externalSpecializers)n.finish();for(let{skip:n,rule:r}of this.astRules){if(this.ruleNames[r.id.name]&&ps(r)&&!r.params.length){this.buildRule(r,[],n,false);if(r.expr instanceof R&&r.expr.exprs.length==0)this.used(r.id.name)}}}));for(let i in this.ruleNames){let e=this.ruleNames[i];if(e)this.warn(`Unused rule '${e.name}'`,e.start)}this.tokens.takePrecedences();this.tokens.takeConflicts();for(let i of this.localTokens)i.takePrecedences();for(let{name:i,group:n,rule:r}of this.definedGroups)this.defineGroup(i,n,r);this.checkGroups()}unique(e){if(e.name in this.ruleNames)this.raise(`Duplicate definition of rule '${e.name}'`,e.start);this.ruleNames[e.name]=e}used(e){this.ruleNames[e]=null}newName(e,t=null,s={}){for(let i=t?0:1;;i++){let n=i?`${e}-${i}`:e;if(!this.terms.names[n])return this.terms.makeNonTerminal(n,t===true?null:t,s)}}prepareParser(){let e=Fe("Simplify rules",(()=>os(this.rules,[...this.skipRules,...this.terms.tops])));let{nodeTypes:t,names:s,minRepeatTerm:i,maxTerm:n}=this.terms.finish(e);for(let R in this.namedTerms)this.termTable[R]=this.namedTerms[R].id;if(/\bgrammar\b/.test(Ue))console.log(e.join("\n"));let r=this.terms.tops.slice();let l=rt(this.terms);let a=this.skipRules.map(((e,t)=>{let s=[],i=[],n=[];for(let r of e.rules){if(!r.parts.length)continue;let e=r.parts[0];for(let t of e.terminal?[e]:l[e.name]||[])if(t&&!i.includes(t))i.push(t);if(e.terminal&&r.parts.length==1&&!n.some((t=>t!=r&&t.parts[0]==e)))s.push(e);else n.push(r)}e.rules=n;if(n.length)r.push(e);return{skip:s,rule:n.length?e:null,startTokens:i,id:t}}));let o=Fe("Build full automaton",(()=>ht(this.terms,r,l)));let u=this.localTokens.map(((e,t)=>e.buildLocalGroup(o,a,t)));let{tokenGroups:h,tokenPrec:f,tokenData:c}=Fe("Build token groups",(()=>this.tokens.buildTokenGroups(o,a,u.length)));let p=Fe("Finish automaton",(()=>bt(o)));let d=It(p,this.terms.tops);if(/\blr\b/.test(Ue))console.log(p.join("\n"));let m=[];for(let R of this.externalSpecializers)m.push(R);for(let R in this.specialized)m.push({token:this.terms.names[R],table:At(this.specialized[R])});let g=e=>{if(e instanceof ns)return e.ast.start;return this.tokens.ast?this.tokens.ast.start:-1};let k=h.concat(this.externalTokens).sort(((e,t)=>g(e)-g(t))).concat(u);let x=new qt;let b=a.map((e=>{let t=[];for(let s of e.skip)t.push(s.id,0,262144>>16);if(e.rule){let s=p.find((t=>t.startRule==e.rule));for(let e of s.actions)t.push(e.term.id,s.id,131072>>16)}t.push(65535,0);return x.storeArray(t)}));let w=Fe("Finish states",(()=>{let e=new Uint32Array(p.length*6);let t=this.computeForceReductions(p,a);let s=new jt(k,x,e,b,a,p,this);for(let i of p)s.finish(i,d(i.id),t[i.id]);return e}));let y=Object.create(null);for(let R=0;Re.id)).concat(65535));let $=null;if(this.dynamicRulePrecedences.length){$=Object.create(null);for(let{rule:e,prec:t}of this.dynamicRulePrecedences)$[e.id]=t}let v=Object.create(null);for(let R of this.terms.tops)v[R.nodeName]=[p.find((e=>e.startRule==R)).id,R.id];let S=x.storeArray(f.concat(65535));let{nodeProps:T,skippedTypes:O}=this.gatherNodeProps(t);return{states:w,stateData:x.finish(),goto:Dt(p),nodeNames:t.filter((e=>e.ide.nodeName)).join(" "),nodeProps:T,skippedTypes:O,maxTerm:n,repeatNodeCount:t.length-i,tokenizers:k,tokenData:c,topRules:v,dialects:y,dynamicPrecedences:$,specialized:m,tokenPrec:S,termNames:s}}getParser(){let{states:e,stateData:t,goto:s,nodeNames:i,nodeProps:n,skippedTypes:l,maxTerm:a,repeatNodeCount:o,tokenizers:u,tokenData:h,topRules:f,dialects:c,dynamicPrecedences:p,specialized:d,tokenPrec:m,termNames:g}=this.prepareParser();let k=d.map((e=>{if(e instanceof rs){let t=this.options.externalSpecializer(e.ast.id.name,this.termTable);return{term:e.term.id,get:(s,i)=>t(s,i)<<1|(e.ast.type=="extend"?1:0),external:t,extend:e.ast.type=="extend"}}else{return{term:e.token.id,get:t=>e.table[t]||-1}}}));return r.U1.deserialize({version:14,states:e,stateData:t,goto:s,nodeNames:i,maxTerm:a,repeatNodeCount:o,nodeProps:n.map((({prop:e,terms:t})=>[this.knownProps[e].prop,...t])),propSources:!this.options.externalPropSource?undefined:this.ast.externalPropSources.map((e=>this.options.externalPropSource(e.id.name))),skippedNodes:l,tokenData:h,tokenizers:u.map((e=>e.create())),context:!this.ast.context?undefined:typeof this.options.contextTracker=="function"?this.options.contextTracker(this.termTable):this.options.contextTracker,topRules:f,dialects:c,dynamicPrecedences:p,specialized:k,tokenPrec:m,termNames:g})}getParserFile(){let{states:e,stateData:t,goto:s,nodeNames:i,nodeProps:n,skippedTypes:r,maxTerm:l,repeatNodeCount:a,tokenizers:o,tokenData:u,topRules:h,dialects:f,dynamicPrecedences:c,specialized:p,tokenPrec:d,termNames:m}=this.prepareParser();let g=this.options.moduleStyle||"es";let k="// This file was generated by lezer-generator. You probably shouldn't edit it.\n",x=k;let b={},w=Object.create(null);let y=Object.create(null);for(let G of hs)y[G]=true;let $=this.options.exportName||"parser";y[$]=true;let v=e=>{for(let t=0;;t++){let s=e+(t?"_"+t:"");if(!y[s])return s}};let S=(e,t,s=e)=>{let i=e+" from "+t;if(w[i])return w[i];let n=JSON.stringify(t),r=e;if(e in y){r=v(s);e+=`${g=="cjs"?":":" as"} ${r}`}y[r]=true;(b[n]||(b[n]=[])).push(e);return w[i]=r};let T=S("LRParser","@lezer/lr");let O=o.map((e=>e.createSource(S)));let R=this.ast.context?S(this.ast.context.id.name,this.ast.context.source):null;let P=n.map((({prop:e,terms:t})=>{let{source:s}=this.knownProps[e];let i=s.from?S(s.name,s.from):JSON.stringify(s.name);return`[${i}, ${t.map(C).join(",")}]`}));function j(e){return"{__proto__:null,"+Object.keys(e).map((t=>`${/^(\d+|[a-zA-Z_]\w*)$/.test(t)?t:JSON.stringify(t)}:${e[t]}`)).join(", ")+"}"}let N="";let A=p.map((e=>{if(e instanceof rs){let t=S(e.ast.id.name,e.ast.source);let s=this.options.typeScript?": any":"";return`{term: ${e.term.id}, get: (value${s}, stack${s}) => (${t}(value, stack) << 1)${e.ast.type=="extend"?` | ${1}`:""}, external: ${t}${e.ast.type=="extend"?", extend: true":""}}`}else{let t=v("spec_"+e.token.name.replace(/\W/g,""));y[t]=true;N+=`const ${t} = ${j(e.table)}\n`;let s=this.options.typeScript?`: keyof typeof ${t}`:"";return`{term: ${e.token.id}, get: (value${s}) => ${t}[value] || -1}`}}));let z=this.ast.externalPropSources.map((e=>S(e.id.name,e.source)));for(let G in b){if(g=="cjs")x+=`const {${b[G].join(", ")}} = require(${G})\n`;else x+=`import {${b[G].join(", ")}} from ${G}\n`}x+=N;function C(e){return typeof e!="string"||/^(true|false|\d+(\.\d+)?|\.\d+)$/.test(e)?e:JSON.stringify(e)}let I=Object.keys(f).map((e=>`${e}: ${f[e]}`));let q=`${T}.deserialize({\n version: ${14},\n states: ${$t(e,4294967295)},\n stateData: ${$t(t)},\n goto: ${$t(s)},\n nodeNames: ${JSON.stringify(i)},\n maxTerm: ${l}${R?`,\n context: ${R}`:""}${P.length?`,\n nodeProps: [\n ${P.join(",\n ")}\n ]`:""}${z.length?`,\n propSources: [${z.join()}]`:""}${r.length?`,\n skippedNodes: ${JSON.stringify(r)}`:""},\n repeatNodeCount: ${a},\n tokenData: ${$t(u)},\n tokenizers: [${O.join(", ")}],\n topRules: ${JSON.stringify(h)}${I.length?`,\n dialects: {${I.join(", ")}}`:""}${c?`,\n dynamicPrecedences: ${JSON.stringify(c)}`:""}${A.length?`,\n specialized: [${A.join(",")}]`:""},\n tokenPrec: ${d}${this.options.includeNames?`,\n termNames: ${JSON.stringify(m)}`:""}\n})`;let D=[];for(let G in this.termTable){let e=G;if(hs.includes(e))for(let t=1;;t++){e="_".repeat(t)+G;if(!(e in this.termTable))break}else if(!/^[\w$]+$/.test(G)){continue}D.push(`${e}${g=="cjs"?":":" ="} ${this.termTable[G]}`)}for(let G=0;G{if(!e[s.id]){e[s.id]=true;t.push(s)}};this.terms.tops.forEach(s);for(let i=0;it.prop==e));if(!s)i.push(s={prop:e,values:{}});(s.values[n.props[e]]||(s.values[n.props[e]]=[])).push(n.id)}}return{nodeProps:i.map((({prop:e,values:t})=>{let s=[];for(let i in t){let e=t[i];if(e.length==1){s.push(e[0],i)}else{s.push(-e.length);for(let t of e)s.push(t);s.push(i)}}return{prop:e,terms:s}})),skippedTypes:s}}makeTerminal(e,t,s){return this.terms.makeTerminal(this.terms.uniqueName(e),t,s)}computeForceReductions(e,t){let s=[];let i=[];let n=Object.create(null);for(let a of e){s.push(0);for(let e of a.goto){let t=n[e.term.id]||(n[e.term.id]=[]);let s=t.find((t=>t.target==e.target.id));if(s)s.parents.push(a.id);else t.push({parents:[a.id],target:e.target.id})}i[a.id]=a.set.filter((e=>e.pos>0&&!e.rule.name.top)).sort(((e,t)=>t.pos-e.pos||e.rule.parts.length-t.rule.parts.length))}let r=Object.create(null);function l(e,t,s=null){let i=n[e];if(!i)return false;return i.some((e=>{let i=s?s.filter((t=>e.parents.includes(t))):e.parents;if(i.length==0)return false;if(e.target==t)return true;let n=r[e.target];return n!=null&&l(n,t,i)}))}for(let a of e){if(a.defaultReduce&&a.defaultReduce.parts.length>0){s[a.id]=zt(a.defaultReduce,t);if(a.defaultReduce.parts.length==1)r[a.id]=a.defaultReduce.name.id}}for(let a=1;;a++){let n=true;for(let o of e){if(o.defaultReduce)continue;let e=i[o.id];if(e.length!=a){if(e.length>a)n=false;continue}for(let i of e){if(i.pos!=1||!l(i.rule.name.id,o.id)){s[o.id]=zt(i.rule,t,i.pos);if(i.pos==1)r[o.id]=i.rule.name.id;break}}}if(n)break}return s}substituteArgs(e,t,s){if(t.length==0)return e;return e.walk((e=>{let i;if(e instanceof v&&(i=s.findIndex((t=>t.name==e.id.name)))>-1){let s=t[i];if(e.args.length){if(s instanceof v&&!s.args.length)return new v(e.start,s.id,e.args);this.raise(`Passing arguments to a parameter that already has arguments`,e.start)}return s}else if(e instanceof T){let i=e.rule,n=this.substituteArgsInProps(i.props,t,s);return n==i.props?e:new T(e.start,new u(i.start,i.id,n,i.params,i.expr))}else if(e instanceof S){let i=this.substituteArgsInProps(e.props,t,s);return i==e.props?e:new S(e.start,e.type,i,e.token,e.content)}return e}))}substituteArgsInProps(e,t,s){let i=e=>{let i=e;for(let n=0;ne.name==r.name));if(l<0)continue;if(i==e)i=e.slice();let a=t[l];if(a instanceof v&&!a.args.length)i[n]=new J(r.start,a.id.name,null);else if(a instanceof N)i[n]=new J(r.start,a.value,null);else this.raise(`Trying to interpolate expression '${a}' into a prop`,r.start)}return i};let n=e;for(let r=0;re.id.name==i.id.name)):-1;if(n<0)this.raise(`Reference to unknown precedence: '${i.id.name}'`,i.id.start);let r=e.items[n],l=e.items.length-n;if(r.type=="cut"){t=t.join(new Y(0,vt,l))}else{t=t.join(new Y(l<<2));s=s.join(new Y((l<<2)+(r.type=="left"?1:r.type=="right"?-1:0)))}}}return{here:t,atEnd:s}}raise(e,t=1){return this.input.raise(e,t)}warn(e,t=-1){let s=this.input.message(e,t);if(this.options.warn)this.options.warn(s);else console.warn(s)}defineRule(e,t){let s=this.currentSkip[this.currentSkip.length-1];for(let i of t)this.rules.push(new Q(e,i.terms,i.ensureConflicts(),s))}resolve(e){for(let i of this.built)if(i.matches(e))return[Tt(i.term)];let t=this.tokens.getToken(e);if(t)return[Tt(t)];for(let i of this.localTokens){let t=i.getToken(e);if(t)return[Tt(t)]}for(let i of this.externalTokens){let t=i.getToken(e);if(t)return[Tt(t)]}for(let i of this.externalSpecializers){let t=i.getToken(e);if(t)return[Tt(t)]}let s=this.astRules.find((t=>t.rule.id.name==e.id.name));if(!s)return this.raise(`Reference to undefined rule '${e.id.name}'`,e.start);if(s.rule.params.length!=e.args.length)this.raise(`Wrong number or arguments for '${e.id.name}'`,e.start);this.used(s.rule.id.name);return[Tt(this.buildRule(s.rule,e.args,s.skip))]}normalizeRepeat(e){let t=this.built.find((t=>t.matchesRepeat(e)));if(t)return Tt(t.term);let s=e.expr.precthis.normalizeExpr(e)));let s=this;function i(n,r,l){let{here:a,atEnd:o}=s.conflictsFor(e.markers[r]);if(r==t.length)return[n.withConflicts(n.terms.length,a.join(l))];let u=[];for(let e of t[r]){for(let t of i(n.concat(e).withConflicts(n.terms.length,a),r+1,l.join(o)))u.push(t)}return u}return i(St.none,0,Y.none)}normalizeExpr(e){if(e instanceof j&&e.kind=="?"){return[St.none,...this.normalizeExpr(e.expr)]}else if(e instanceof j){let t=this.normalizeRepeat(e);return e.kind=="+"?[t]:[St.none,t]}else if(e instanceof O){return e.exprs.reduce(((e,t)=>e.concat(this.normalizeExpr(t))),[])}else if(e instanceof R){return this.normalizeSequence(e)}else if(e instanceof N){return[Tt(this.tokens.getLiteral(e))]}else if(e instanceof v){return this.resolve(e)}else if(e instanceof S){return[Tt(this.resolveSpecialization(e))]}else if(e instanceof T){return[Tt(this.buildRule(e.rule,vt,this.currentSkip[this.currentSkip.length-1],true))]}else{return this.raise(`This type of expression ('${e}') may not occur in non-token rules`,e.start)}}buildRule(e,t,s,i=false){let n=this.substituteArgs(e.expr,t,e.params);let{name:r,props:l,dynamicPrec:a,inline:o,group:u,exported:h}=this.nodeInfo(e.props||vt,i?"pg":"pgi",e.id.name,t,e.params,e.expr);if(h&&e.params.length)this.warn(`Can't export parameterized rules`,e.start);if(h&&i)this.warn(`Can't export inline rule`,e.start);let f=this.newName(e.id.name+(t.length?"<"+t.join(",")+">":""),r||true,l);if(o)f.inline=true;if(a)this.registerDynamicPrec(f,a);if((f.nodeType||h)&&e.params.length==0){if(!r)f.preserve=true;if(!i)this.namedTerms[h||e.id.name]=f}if(!i)this.built.push(new Ot(e.id.name,t,f));this.currentSkip.push(s);let c=this.normalizeExpr(n);if(c.length>100*(n instanceof O?n.exprs.length:1))this.warn(`Rule ${e.id.name} is generating a lot (${c.length}) of choices.\n Consider splitting it up or reducing the amount of ? or | operator uses.`,e.start);if(/\brulesize\b/.test(Ue)&&c.length>10)console.log(`Rule ${e.id.name}: ${c.length} variants`);this.defineRule(f,c);this.currentSkip.pop();if(u)this.definedGroups.push({name:f,group:u,rule:e});return f}nodeInfo(e,t,s=null,i=vt,n=vt,r,l){let a={};let o=s&&(t.indexOf("a")>-1||!cs(s))&&!/ /.test(s)?s:null;let u=null,h=0,f=false,c=null,p=null;for(let d of e){if(!d.at){if(!this.knownProps[d.name]){let e=["name","dialect","dynamicPrecedence","export","isGroup"].includes(d.name)?` (did you mean '@${d.name}'?)`:"";this.raise(`Unknown prop name '${d.name}'${e}`,d.start)}a[d.name]=this.finishProp(d,i,n)}else if(d.name=="name"){o=this.finishProp(d,i,n);if(/ /.test(o))this.raise(`Node names cannot have spaces ('${o}')`,d.start)}else if(d.name=="dialect"){if(t.indexOf("d")<0)this.raise("Can't specify a dialect on non-token rules",e[0].start);if(d.value.length!=1&&!d.value[0].value)this.raise("The '@dialect' rule prop must hold a plain string value");let s=this.dialects.indexOf(d.value[0].value);if(s<0)this.raise(`Unknown dialect '${d.value[0].value}'`,d.value[0].start);u=s}else if(d.name=="dynamicPrecedence"){if(t.indexOf("p")<0)this.raise("Dynamic precedence can only be specified on nonterminals");if(d.value.length!=1||!/^-?(?:10|\d)$/.test(d.value[0].value))this.raise("The '@dynamicPrecedence' rule prop must hold an integer between -10 and 10");h=+d.value[0].value}else if(d.name=="inline"){if(d.value.length)this.raise("'@inline' doesn't take a value",d.value[0].start);if(t.indexOf("i")<0)this.raise("Inline can only be specified on nonterminals");f=true}else if(d.name=="isGroup"){if(t.indexOf("g")<0)this.raise("'@isGroup' can only be specified on nonterminals");c=d.value.length?this.finishProp(d,i,n):s}else if(d.name=="export"){if(d.value.length)p=this.finishProp(d,i,n);else p=s}else{this.raise(`Unknown built-in prop name '@${d.name}'`,d.start)}}if(r&&this.ast.autoDelim&&(o||U(a))){let e=this.findDelimiters(r);if(e){Nt(e[0],"closedBy",e[1].nodeName);Nt(e[1],"openedBy",e[0].nodeName)}}if(l&&U(l)){for(let e in l)if(!(e in a))a[e]=l[e]}if(U(a)&&!o)this.raise(`Node has properties but no name`,e.length?e[0].start:r.start);if(f&&(U(a)||u||h))this.raise(`Inline nodes can't have props, dynamic precedence, or a dialect`,e[0].start);if(f&&o)o=null;return{name:o,props:a,dialect:u,dynamicPrec:h,inline:f,group:c,exported:p}}finishProp(e,t,s){return e.value.map((e=>{if(e.value)return e.value;let i=s.findIndex((t=>t.name==e.name));if(i<0)this.raise(`Property refers to '${e.name}', but no parameter by that name is in scope`,e.start);let n=t[i];if(n instanceof v&&!n.args.length)return n.id.name;if(n instanceof N)return n.value;return this.raise(`Expression '${n}' can not be used as part of a property value`,e.start)})).join("")}resolveSpecialization(e){let t=e.type;let{name:s,props:i,dialect:n,exported:r}=this.nodeInfo(e.props,"d");let l=this.normalizeExpr(e.token);if(l.length!=1||l[0].terms.length!=1||!l[0].terms[0].terminal)this.raise(`The first argument to '${t}' must resolve to a token`,e.token.start);let a;if(e.content instanceof N)a=[e.content.value];else if(e.content instanceof O&&e.content.exprs.every((e=>e instanceof N)))a=e.content.exprs.map((e=>e.value));else return this.raise(`The second argument to '${e.type}' must be a literal or choice of literals`,e.content.start);let o=l[0].terms[0],u=null;let h=this.specialized[o.name]||(this.specialized[o.name]=[]);for(let f of a){let l=h.find((e=>e.value==f));if(l==null){if(!u){u=this.makeTerminal(o.name+"/"+JSON.stringify(f),s,i);if(n!=null)(this.tokens.byDialect[n]||(this.tokens.byDialect[n]=[])).push(u)}h.push({value:f,term:u,type:t,dialect:n,name:s});this.tokenOrigins[u.name]={spec:o};if(s||r){if(!s)u.preserve=true;this.namedTerms[r||s]=u}}else{if(l.type!=t)this.raise(`Conflicting specialization types for ${JSON.stringify(f)} of ${o.name} (${t} vs ${l.type})`,e.start);if(l.dialect!=n)this.raise(`Conflicting dialects for specialization ${JSON.stringify(f)} of ${o.name}`,e.start);if(l.name!=s)this.raise(`Conflicting names for specialization ${JSON.stringify(f)} of ${o.name}`,e.start);if(u&&l.term!=u)this.raise(`Conflicting specialization tokens for ${JSON.stringify(f)} of ${o.name}`,e.start);u=l.term}}return u}findDelimiters(e){if(!(e instanceof R)||e.exprs.length<2)return null;let t=e=>{if(e instanceof N)return{term:this.tokens.getLiteral(e),str:e.value};if(e instanceof v&&e.args.length==0){let s=this.ast.rules.find((t=>t.id.name==e.id.name));if(s)return t(s.expr);let i=this.tokens.rules.find((t=>t.id.name==e.id.name));if(i&&i.expr instanceof N)return{term:this.tokens.getToken(e),str:i.expr.value}}return null};let s=t(e.exprs[e.exprs.length-1]);if(!s||!s.term.nodeName)return null;const i=["()","[]","{}","<>"];let n=i.find((e=>s.str.indexOf(e[1])>-1&&s.str.indexOf(e[0])<0));if(!n)return null;let r=t(e.exprs[0]);if(!r||!r.term.nodeName||r.str.indexOf(n[0])<0||r.str.indexOf(n[1])>-1)return null;return[r.term,s.term]}registerDynamicPrec(e,t){this.dynamicRulePrecedences.push({rule:e,prec:t});e.preserve=true}defineGroup(e,t,s){var i;let n=[];let r=e=>{if(e.nodeName)return[e];if(n.includes(e))this.raise(`Rule '${s.id.name}' cannot define a group because it contains a non-named recursive rule ('${e.name}')`,s.start);let t=[];n.push(e);for(let i of this.rules)if(i.name==e){let e=i.parts.map(r).filter((e=>e.length));if(e.length>1)this.raise(`Rule '${s.id.name}' cannot define a group because some choices produce multiple named nodes`,s.start);if(e.length==1)for(let s of e[0])t.push(s)}n.pop();return t};for(let l of r(e))l.props["group"]=(((i=l.props["group"])===null||i===void 0?void 0:i.split(" "))||[]).concat(t).sort().join(" ")}checkGroups(){let e=Object.create(null),t=Object.create(null);for(let i of this.terms.terms)if(i.nodeName){t[i.nodeName]=true;if(i.props["group"])for(let t of i.props["group"].split(" ")){(e[t]||(e[t]=[])).push(i)}}let s=Object.keys(e);for(let i=0;ii.includes(e)))&&(r.length>i.length?i.some((e=>!r.includes(e))):r.some((e=>!i.includes(e)))))this.warn(`Groups '${n}' and '${s[t]}' overlap without one being a superset of the other`)}}}}const Pt=5;class jt{constructor(e,t,s,i,n,r,l){this.tokenizers=e;this.data=t;this.stateArray=s;this.skipData=i;this.skipInfo=n;this.states=r;this.builder=l;this.sharedActions=[]}findSharedActions(e){if(e.actions.lengtht.actions.length)&&r.actions.every((t=>e.actions.some((e=>e.eq(t))))))t=r}if(t)return t;let s=null,i=[];for(let r=e.id+1;r=Pt&&(!s||s.lengthe.eq(n))))continue;if(n instanceof Ve){i.push(n.term.id,n.target.id,0)}else{let e=zt(n.rule,this.skipInfo);if(e!=t)i.push(n.term.id,e&65535,e>>16)}}i.push(65535);if(t>-1)i.push(2,t&65535,t>>16);else if(s)i.push(1,s.addr&65535,s.addr>>16);else i.push(0);return this.data.storeArray(i)}finish(e,t,s){let i=this.builder;let n=i.skipRules.indexOf(e.skip);let r=this.skipData[n],l=this.skipInfo[n].startTokens;let a=e.defaultReduce?zt(e.defaultReduce,this.skipInfo):0;let o=t?1:0;let u=-1,h=null;if(a==0){if(t)for(const t of e.actions)if(t instanceof Xe&&t.term.eof)u=zt(t.rule,this.skipInfo);if(u<0)h=this.findSharedActions(e)}if(e.set.some((e=>e.rule.name.top&&e.pos==e.rule.parts.length)))o|=2;let f=[];for(let d=0;dt.rule==e.name))?262144:0)|s<<19}function Ct(e,t){e:for(let s=0;;){let i=e.indexOf(t[0],s);if(i==-1||i+t.length>e.length)break;for(let n=1;n{if(!s[e.id]){s[e.id]=true;i.push(e)}};for(let r of e)if(r.startRule&&t.includes(r.startRule))n(r);for(let r=0;r!s[e]}class qt{constructor(){this.data=[]}storeArray(e){let t=Ct(this.data,e);if(t>-1)return t;let s=this.data.length;for(let i of e)this.data.push(i);return s}finish(){return Uint16Array.from(this.data)}}function Dt(e){let t={};let s=0;for(let l of e){for(let e of l.goto){s=Math.max(e.term.id,s);let i=t[e.term.id]||(t[e.term.id]={});(i[e.target.id]||(i[e.target.id]=[])).push(l.id)}}let i=new qt;let n=[];let r=s+2;for(let l=0;l<=s;l++){let e=t[l];if(!e){n.push(1);continue}let s=[];let a=Object.keys(e);for(let t of a){let i=e[t];s.push((t==a[a.length-1]?1:0)+(i.length<<1));s.push(+t);for(let e of i)s.push(e)}n.push(i.storeArray(s)+r)}if(n.some((e=>e>65535)))throw new B("Goto table too large");return Uint16Array.from([s+1,...n,...i.data])}class Gt{constructor(e,t){this.tokens=e;this.groupID=t}create(){return this.groupID}createSource(){return String(this.groupID)}}function Et(e,t){if(!e.includes(t))e.push(t)}function Jt(e){let t=Object.create(null);for(let s of e){let e=1<e.id.name==t));if(!s)return null;let{name:i,props:n,dialect:r,exported:l}=this.b.nodeInfo(s.props,"d",t,e.args,s.params.length!=e.args.length?vt:s.params);let a=this.b.makeTerminal(e.toString(),i,n);if(r!=null)(this.byDialect[r]||(this.byDialect[r]=[])).push(a);if((a.nodeType||l)&&s.params.length==0){if(!a.nodeType)a.preserve=true;this.b.namedTerms[l||t]=a}this.buildRule(s,e,this.startState,new re([a]));this.built.push(new Ot(t,e.args,a));return a}buildRule(e,t,s,i,n=vt){let r=t.id.name;if(e.params.length!=t.args.length)this.b.raise(`Incorrect number of arguments for token '${r}'`,t.start);let l=this.building.find((e=>e.name==r&&G(t.args,e.args)));if(l){if(l.to==i){s.nullEdge(l.start);return}let e=this.building.length-1;while(this.building[e].name!=r)e--;this.b.raise(`Invalid (non-tail) recursion in token rules: ${this.building.slice(e).map((e=>e.name)).join(" -> ")}`,t.start)}this.b.used(e.id.name);let a=new re;s.nullEdge(a);this.building.push(new Bt(r,a,i,t.args));this.build(this.b.substituteArgs(e.expr,t.args,e.params),a,i,t.args.map(((t,s)=>new _t(e.params[s].name,t,n))));this.building.pop()}build(e,t,s,i){if(e instanceof v){let n=e.id.name,r=i.find((e=>e.name==n));if(r)return this.build(r.expr,t,s,r.scope);let l;for(let e=0,t=this.b.localTokens;e<=t.length;e++){let s=e==t.length?this.b.tokens:t[e];l=s.rules.find((e=>e.id.name==n))}if(!l)return this.b.raise(`Reference to token rule '${e.id.name}', which isn't found`,e.start);this.buildRule(l,e,t,s,i)}else if(e instanceof q){for(let[i,n]of I[e.type])t.edge(i,n,s)}else if(e instanceof O){for(let n of e.exprs)this.build(n,t,s,i)}else if(es(e)){t.nullEdge(s)}else if(e instanceof R){let n=e.markers.find((e=>e.length>0));if(n)this.b.raise("Conflict marker in token expression",n[0].start);for(let r=0;rt.id==e));if(s)t.push(s.term)}if(!t.length)this.b.warn(`Precedence specified for unknown token ${i}`,i.start);for(let i of t)is(e,i,s);s=s.concat(t)}}}precededBy(e,t){let s=this.precedenceRelations.find((t=>t.term==e));return s&&s.after.includes(t)}buildPrecTable(e){let t=[],s=this.precedenceRelations.slice();for(let{a:i,b:n,soft:r}of e)if(r){if(!s.some((e=>e.term==i))||!s.some((e=>e.term==n)))continue;if(r<0)[i,n]=[n,i];is(s,n,[i]);is(s,i,[])}e:while(s.length){for(let e=0;et.includes(e.id)))){t.push(i.term.id);if(s.length==1)break e;s[e]=s.pop();continue e}}this.b.raise(`Cyclic token precedence relation between ${s.map((e=>e.term)).join(", ")}`)}return t}}class Mt extends Ut{constructor(){super(...arguments);this.explicitConflicts=[]}getLiteral(e){let t=JSON.stringify(e.value);for(let o of this.built)if(o.id==t)return o.term;let s=null,i={},n=null,r=null;let l=this.ast?this.ast.literals.find((t=>t.literal==e.value)):null;if(l)({name:s,props:i,dialect:n,exported:r}=this.b.nodeInfo(l.props,"da",e.value));let a=this.b.makeTerminal(t,s,i);if(n!=null)(this.byDialect[n]||(this.byDialect[n]=[])).push(a);if(r)this.b.namedTerms[r]=a;this.build(e,this.startState,new re([a]),vt);this.built.push(new Ot(t,vt,a));return a}takeConflicts(){var e;let t=e=>{if(e instanceof v){for(let t of this.built)if(t.matches(e))return t.term}else{let t=JSON.stringify(e.value),s=this.built.find((e=>e.id==t));if(s)return s.term}this.b.warn(`Precedence specified for unknown token ${e}`,e.start);return null};for(let s of((e=this.ast)===null||e===void 0?void 0:e.conflicts)||[]){let e=t(s.a),i=t(s.b);if(e&&i){if(e.ide.id.name==i.accepting[0].name)).start);if(/\btokens\b/.test(Ue))console.log(i.toString());let n=i.findConflicts(Lt(e,this.b,t)).filter((({a:e,b:t})=>!this.precededBy(e,t)&&!this.precededBy(t,e)));for(let{a:h,b:f}of this.explicitConflicts){if(!n.some((e=>e.a==h&&e.b==f)))n.push(new le(h,f,0,"",""))}let r=n.filter((e=>e.soft)),l=n.filter((e=>!e.soft));let a=[];let o=[];for(let h of e){if(h.defaultReduce||h.tokenGroup>-1)continue;let e=[],i=[];let n=t[this.b.skipRules.indexOf(h.skip)].startTokens;for(let t of n)if(h.actions.some((e=>e.term==t)))this.b.raise(`Use of token ${t.name} conflicts with skip rule`);let r=[];for(let t=0;te.conflict==s))){let e=s.exampleA?` (example: ${JSON.stringify(s.exampleA)}${s.exampleB?` vs ${JSON.stringify(s.exampleB)}`:""})`:"";a.push({error:`Overlapping tokens ${t.name} and ${n.name} used in same context${e}\n`+`After: ${h.set[0].trail()}`,conflict:s})}Et(e,t);Et(i,n)}}let u=null;for(let t of o){if(i.some((e=>t.tokens.includes(e))))continue;for(let s of e)Et(t.tokens,s);u=t;break}if(!u){u=new Gt(e,o.length+s);o.push(u)}h.tokenGroup=u.groupID}if(a.length)this.b.raise(a.map((e=>e.error)).join("\n\n"));if(o.length+s>16)this.b.raise(`Too many different token groups (${o.length}) to represent them as a 16-bit bitfield`);let u=this.buildPrecTable(r);return{tokenGroups:o,tokenPrec:u,tokenData:i.toArray(Jt(o),u)}}}class Ft extends Ut{constructor(e,t){super(e,t);this.fallback=null;if(t.fallback)e.unique(t.fallback.id)}getToken(e){let t=null;if(this.ast.fallback&&this.ast.fallback.id.name==e.id.name){if(e.args.length)this.b.raise(`Incorrect number of arguments for ${e.id.name}`,e.start);if(!this.fallback){let{name:t,props:s,exported:i}=this.b.nodeInfo(this.ast.fallback.props,"",e.id.name,vt,vt);let n=this.fallback=this.b.makeTerminal(e.id.name,t,s);if(n.nodeType||i){if(!n.nodeType)n.preserve=true;this.b.namedTerms[i||e.id.name]=n}this.b.used(e.id.name)}t=this.fallback}else{t=super.getToken(e)}if(t&&!this.b.tokenOrigins[t.name])this.b.tokenOrigins[t.name]={group:this};return t}buildLocalGroup(e,t,s){let i=this.startState.compile();if(i.accepting.length)this.b.raise(`Grammar contains zero-length tokens (in '${i.accepting[0].name}')`,this.rules.find((e=>e.id.name==i.accepting[0].name)).start);for(let{a:r,b:u,exampleA:h}of i.findConflicts((()=>true))){if(!this.precededBy(r,u)&&!this.precededBy(u,r))this.b.raise(`Overlapping tokens ${r.name} and ${u.name} in local token group${h?` (example: ${JSON.stringify(h)})`:""}`)}for(let r of e){if(r.defaultReduce)continue;let e=null;let i=t[this.b.skipRules.indexOf(r.skip)].startTokens[0];for(let{term:t}of r.actions){let s=this.b.tokenOrigins[t.name];if((s===null||s===void 0?void 0:s.group)==this)e=t;else i=t}if(e){if(i)this.b.raise(`Tokens from a local token group used together with other tokens (${e.name} with ${i.name})`);r.tokenGroup=s}}let n=this.buildPrecTable(vt);let l=i.toArray({[s]:65535},n);let a=l.length;let o=new Uint16Array(l.length+n.length+1);o.set(l,0);o.set(n,a);o[o.length-1]=65535;return{groupID:s,create:()=>new r.uC(o,a,this.fallback?this.fallback.id:undefined),createSource:e=>`new ${e("LocalTokenGroup","@lezer/lr")}(${$t(o)}, ${a}${this.fallback?`, ${this.fallback.id}`:""})`}}}function Lt(e,t,s){let i=Object.create(null);function n(e,i){return e.actions.some((e=>e.term==i))||s[t.skipRules.indexOf(e.skip)].startTokens.includes(i)}return(t,s)=>{if(t.idn(e,t)&&n(e,s)))}}function Wt(e){let t=0,s=[];for(let[i,n]of e){if(i>t)s.push([t,i]);t=n}if(t<=Ht)s.push([t,Ht+1]);return s}const Kt=65536,Yt=55296,Zt=57344,Ht=1114111;const Qt=56320,Vt=57343;function Xt(e,t,s,i){if(sZt)e.edge(Math.max(s,Zt),Math.min(i,V+1),t);s=Kt}if(i<=Kt)return;let n=String.fromCodePoint(s),r=String.fromCodePoint(i-1);let l=n.charCodeAt(0),a=n.charCodeAt(1);let o=r.charCodeAt(0),u=r.charCodeAt(1);if(l==o){let s=new re;e.edge(l,l+1,s);s.edge(a,u+1,t)}else{let s=l,i=o;if(a>Qt){s++;let i=new re;e.edge(l,l+1,i);i.edge(a,Vt+1,t)}if(ue.term==t));if(i<0)e.push({term:t,after:s});else e[i]={term:t,after:e[i].after.concat(s)}}class ns{constructor(e,t){this.b=e;this.ast=t;this.tokens=ts(e,t.tokens);for(let s in this.tokens)this.b.tokenOrigins[this.tokens[s].name]={external:this}}getToken(e){return ss(this.b,this.tokens,e)}create(){return this.b.options.externalTokenizer(this.ast.id.name,this.b.termTable)}createSource(e){let{source:t,id:{name:s}}=this.ast;return e(s,t)}}class rs{constructor(e,t){this.b=e;this.ast=t;this.term=null;this.tokens=ts(e,t.tokens)}finish(){let e=this.b.normalizeExpr(this.ast.token);if(e.length!=1||e[0].terms.length!=1||!e[0].terms[0].terminal)this.b.raise(`The token expression to '@external ${this.ast.type}' must resolve to a token`,this.ast.token.start);this.term=e[0].terms[0];for(let t in this.tokens)this.b.tokenOrigins[this.tokens[t].name]={spec:this.term,external:this}}getToken(e){return ss(this.b,this.tokens,e)}}function ls(e,t){for(let s=0;;s++){let i=Object.create(null),n;if(s==0)for(let l of e){if(l.name.inline&&!i[l.name.name]){let a=e.filter((e=>e.name==l.name));if(a.some((e=>e.parts.includes(l.name))))continue;n=i[l.name.name]=a}}for(let o=0;oe.skip==u.skip||!e.parts.includes(u.name))))&&!u.parts.some((e=>!!i[e.name]))&&!e.some(((e,t)=>t!=o&&e.name==u.name)))n=i[u.name.name]=[u]}if(!n)return e;let r=[];for(let h of e){if(i[h.name.name])continue;if(!h.parts.some((e=>!!i[e.name]))){r.push(h);continue}function f(e,t,s){if(e==h.parts.length){r.push(new Q(h.name,s,t,h.skip));return}let n=h.parts[e],l=i[n.name];if(!l){f(e+1,t.concat(h.conflicts[e+1]),s.concat(n));return}for(let i of l)f(e+1,t.slice(0,t.length-1).concat(t[e].join(i.conflicts[0])).concat(i.conflicts.slice(1,i.conflicts.length-1)).concat(h.conflicts[e+1].join(i.conflicts[i.conflicts.length-1])),s.concat(i.parts))}f(0,[h.conflicts[0]],[])}e=r}}function as(e){let t=Object.create(null),s;for(let n=0;n!t[e.name]))?n:new Q(n.name,n.parts.map((e=>t[e.name]||e)),n.conflicts,n.skip))}return i}function os(e,t){return as(ls(e,t))}function us(e,t={}){let s=new Rt(e,t),i=s.getParser();i.termTable=s.termTable;return i}const hs=["await","break","case","catch","continue","debugger","default","do","else","finally","for","function","if","return","switch","throw","try","var","while","with","null","true","false","instanceof","typeof","void","delete","new","in","this","const","class","extends","export","import","super","enum","implements","interface","let","package","private","protected","public","static","yield","require"];function fs(e,t={}){return new Rt(e,t).getParserFile()}function cs(e){let t=e[0];return t=="_"||t.toUpperCase()!=t}function ps(e){return e.props.some((e=>e.at&&e.name=="export"))}}}]);
\ No newline at end of file
diff --git a/share/jupyter/lab/static/1423.4bcf4453e1c1d12d872f.js b/share/jupyter/lab/static/1423.4bcf4453e1c1d12d872f.js
new file mode 100644
index 0000000..b35d1ee
--- /dev/null
+++ b/share/jupyter/lab/static/1423.4bcf4453e1c1d12d872f.js
@@ -0,0 +1 @@
+(self["webpackChunk_jupyterlab_application_top"]=self["webpackChunk_jupyterlab_application_top"]||[]).push([[1423,5606],{75128:(t,e,s)=>{"use strict";s.d(e,{Ar:()=>d,Bc:()=>Qt,Gw:()=>Ot,_5:()=>h,et:()=>u,wm:()=>Wt});var i=s(71674);var n=s.n(i);var o=s(22819);var r=s.n(o);var l=s(4452);var a=s.n(l);class h{constructor(t,e,s,i){this.state=t;this.pos=e;this.explicit=s;this.view=i;this.abortListeners=[];this.abortOnDocChange=false}tokenBefore(t){let e=(0,l.syntaxTree)(this.state).resolveInner(this.pos,-1);while(e&&t.indexOf(e.name)<0)e=e.parent;return e?{from:e.from,to:this.pos,text:this.state.sliceDoc(e.from,this.pos),type:e.type}:null}matchBefore(t){let e=this.state.doc.lineAt(this.pos);let s=Math.max(e.from,this.pos-250);let i=e.text.slice(s-e.from,this.pos-e.from);let n=i.search(k(t,false));return n<0?null:{from:s+n,to:this.pos,text:i.slice(n)}}get aborted(){return this.abortListeners==null}addEventListener(t,e,s){if(t=="abort"&&this.abortListeners){this.abortListeners.push(e);if(s&&s.onDocChange)this.abortOnDocChange=true}}}function c(t){let e=Object.keys(t).join("");let s=/\w/.test(e);if(s)e=e.replace(/\w/g,"");return`[${s?"\\w":""}${e.replace(/[^\w\s]/g,"\\$&")}]`}function f(t){let e=Object.create(null),s=Object.create(null);for(let{label:n}of t){e[n[0]]=true;for(let t=1;ttypeof t=="string"?{label:t}:t));let[s,i]=e.every((t=>/^\w+$/.test(t.label)))?[/\w*$/,/\w+$/]:f(e);return t=>{let n=t.matchBefore(i);return n||t.explicit?{from:n?n.from:t.pos,options:e,validFor:s}:null}}function p(t,e){return s=>{for(let i=syntaxTree(s.state).resolveInner(s.pos,-1);i;i=i.parent){if(t.indexOf(i.name)>-1)return e(s);if(i.type.isTop)break}return null}}function d(t,e){return s=>{for(let e=(0,l.syntaxTree)(s.state).resolveInner(s.pos,-1);e;e=e.parent){if(t.indexOf(e.name)>-1)return null;if(e.type.isTop)break}return e(s)}}class m{constructor(t,e,s,i){this.completion=t;this.source=e;this.match=s;this.score=i}}function g(t){return t.selection.main.from}function k(t,e){var s;let{source:i}=t;let n=e&&i[0]!="^",o=i[i.length-1]!="$";if(!n&&!o)return t;return new RegExp(`${n?"^":""}(?:${i})${o?"$":""}`,(s=t.flags)!==null&&s!==void 0?s:t.ignoreCase?"i":"")}const b=i.Annotation.define();function x(t,e,s,n){let{main:o}=t.selection,r=s-o.from,l=n-o.from;return Object.assign(Object.assign({},t.changeByRange((a=>{if(a!=o&&s!=n&&t.sliceDoc(a.from+r,a.from+l)!=t.sliceDoc(s,n))return{range:a};let h=t.toText(e);return{changes:{from:a.from+r,to:n==o.from?a.to:a.from+l,insert:h},range:i.EditorSelection.cursor(a.from+r+h.length)}}))),{scrollIntoView:true,userEvent:"input.complete"})}const v=new WeakMap;function w(t){if(!Array.isArray(t))return t;let e=v.get(t);if(!e)v.set(t,e=u(t));return e}const y=i.StateEffect.define();const S=i.StateEffect.define();class C{constructor(t){this.pattern=t;this.chars=[];this.folded=[];this.any=[];this.precise=[];this.byWord=[];this.score=0;this.matched=[];for(let e=0;e=48&&n<=57||n>=97&&n<=122?2:n>=65&&n<=90?1:0:(h=(0,i.fromCodePoint)(n))!=h.toLowerCase()?1:h!=h.toUpperCase()?2:0;if(!b||x==1&&g||v==0&&x!=0){if(e[f]==n||s[f]==n&&(u=true))r[f++]=b;else if(r.length)k=false}v=x;b+=(0,i.codePointSize)(n)}if(f==a&&r[0]==0&&k)return this.result(-100+(u?-200:0),r,t);if(p==a&&d==0)return this.ret(-200-t.length+(m==t.length?0:-100),[0,m]);if(l>-1)return this.ret(-700-t.length,[l,l+this.pattern.length]);if(p==a)return this.ret(-200+-700-t.length,[d,m]);if(f==a)return this.result(-100+(u?-200:0)+-700+(k?0:-1100),r,t);return e.length==2?null:this.result((n[0]?-700:0)+-200+-1100,n,t)}result(t,e,s){let n=[],o=0;for(let r of e){let t=r+(this.astral?(0,i.codePointSize)((0,i.codePointAt)(s,r)):1);if(o&&n[o-1]==r)n[o-1]=t;else{n[o++]=r;n[o++]=t}}return this.ret(t-s.length,n)}}class P{constructor(t){this.pattern=t;this.matched=[];this.score=0;this.folded=t.toLowerCase()}match(t){if(t.lengthfalse,activateOnTypingDelay:100,selectOnOpen:true,override:null,closeOnBlur:true,maxRenderedOptions:100,defaultKeymap:true,tooltipClass:()=>"",optionClass:()=>"",aboveCursor:false,icons:true,addToOptions:[],positionInfo:I,filterStrict:false,compareCompletions:(t,e)=>t.label.localeCompare(e.label),interactionDelay:75,updateSyncTime:100},{defaultKeymap:(t,e)=>t&&e,closeOnBlur:(t,e)=>t&&e,icons:(t,e)=>t&&e,tooltipClass:(t,e)=>s=>A(t(s),e(s)),optionClass:(t,e)=>s=>A(t(s),e(s)),addToOptions:(t,e)=>t.concat(e),filterStrict:(t,e)=>t||e})}});function A(t,e){return t?e?t+" "+e:t:e}function I(t,e,s,i,n,r){let l=t.textDirection==o.Direction.RTL,a=l,h=false;let c="top",f,u;let p=e.left-n.left,d=n.right-e.right;let m=i.right-i.left,g=i.bottom-i.top;if(a&&p=g||t>e.top){f=s.bottom-e.top}else{c="bottom";f=e.bottom-s.top}}let k=(e.bottom-e.top)/r.offsetHeight;let b=(e.right-e.left)/r.offsetWidth;return{style:`${c}: ${f/k}px; max-width: ${u/b}px`,class:"cm-completionInfo-"+(h?l?"left-narrow":"right-narrow":a?"left":"right")}}function O(t){let e=t.addToOptions.slice();if(t.icons)e.push({render(t){let e=document.createElement("div");e.classList.add("cm-completionIcon");if(t.type)e.classList.add(...t.type.split(/\s+/g).map((t=>"cm-completionIcon-"+t)));e.setAttribute("aria-hidden","true");return e},position:20});e.push({render(t,e,s,i){let n=document.createElement("span");n.className="cm-completionLabel";let o=t.displayLabel||t.label,r=0;for(let l=0;lr)n.appendChild(document.createTextNode(o.slice(r,t)));let s=n.appendChild(document.createElement("span"));s.appendChild(document.createTextNode(o.slice(t,e)));s.className="cm-completionMatchedText";r=e}if(rt.position-e.position)).map((t=>t.render))}function D(t,e,s){if(t<=s)return{from:0,to:t};if(e<0)e=0;if(e<=t>>1){let t=Math.floor(e/s);return{from:t*s,to:(t+1)*s}}let i=Math.floor((t-e)/s);return{from:t-(i+1)*s,to:t-i*s}}class R{constructor(t,e,s){this.view=t;this.stateField=e;this.applyCompletion=s;this.info=null;this.infoDestroy=null;this.placeInfoReq={read:()=>this.measureInfo(),write:t=>this.placeInfo(t),key:this};this.space=null;this.currentClass="";let i=t.state.field(e);let{options:n,selected:o}=i.open;let r=t.state.facet(T);this.optionContent=O(r);this.optionClass=r.optionClass;this.tooltipClass=r.tooltipClass;this.range=D(n.length,o,r.maxRenderedOptions);this.dom=document.createElement("div");this.dom.className="cm-tooltip-autocomplete";this.updateTooltipClass(t.state);this.dom.addEventListener("mousedown",(s=>{let{options:i}=t.state.field(e).open;for(let e=s.target,n;e&&e!=this.dom;e=e.parentNode){if(e.nodeName=="LI"&&(n=/-(\d+)$/.exec(e.id))&&+n[1]{let s=t.state.field(this.stateField,false);if(s&&s.tooltip&&t.state.facet(T).closeOnBlur&&e.relatedTarget!=t.contentDOM)t.dispatch({effects:S.of(null)})}));this.showOptions(n,i.id)}mount(){this.updateSel()}showOptions(t,e){if(this.list)this.list.remove();this.list=this.dom.appendChild(this.createListBox(t,e,this.range));this.list.addEventListener("scroll",(()=>{if(this.info)this.view.requestMeasure(this.placeInfoReq)}))}update(t){var e;let s=t.state.field(this.stateField);let i=t.startState.field(this.stateField);this.updateTooltipClass(t.state);if(s!=i){let{options:n,selected:o,disabled:r}=s.open;if(!i.open||i.open.options!=n){this.range=D(n.length,o,t.state.facet(T).maxRenderedOptions);this.showOptions(n,s.id)}this.updateSel();if(r!=((e=i.open)===null||e===void 0?void 0:e.disabled))this.dom.classList.toggle("cm-tooltip-autocomplete-disabled",!!r)}}updateTooltipClass(t){let e=this.tooltipClass(t);if(e!=this.currentClass){for(let t of this.currentClass.split(" "))if(t)this.dom.classList.remove(t);for(let t of e.split(" "))if(t)this.dom.classList.add(t);this.currentClass=e}}positioned(t){this.space=t;if(this.info)this.view.requestMeasure(this.placeInfoReq)}updateSel(){let t=this.view.state.field(this.stateField),e=t.open;if(e.selected>-1&&e.selected=this.range.to){this.range=D(e.options.length,e.selected,this.view.state.facet(T).maxRenderedOptions);this.showOptions(e.options,t.id)}if(this.updateSelectedOption(e.selected)){this.destroyInfo();let{completion:s}=e.options[e.selected];let{info:i}=s;if(!i)return;let n=typeof i==="string"?document.createTextNode(i):i(s);if(!n)return;if("then"in n){n.then((e=>{if(e&&this.view.state.field(this.stateField,false)==t)this.addInfoPane(e,s)})).catch((t=>(0,o.logException)(this.view.state,t,"completion info")))}else{this.addInfoPane(n,s)}}}addInfoPane(t,e){this.destroyInfo();let s=this.info=document.createElement("div");s.className="cm-tooltip cm-completionInfo";if(t.nodeType!=null){s.appendChild(t);this.infoDestroy=null}else{let{dom:e,destroy:i}=t;s.appendChild(e);this.infoDestroy=i||null}this.dom.appendChild(s);this.view.requestMeasure(this.placeInfoReq)}updateSelectedOption(t){let e=null;for(let s=this.list.firstChild,i=this.range.from;s;s=s.nextSibling,i++){if(s.nodeName!="LI"||!s.id){i--}else if(i==t){if(!s.hasAttribute("aria-selected")){s.setAttribute("aria-selected","true");e=s}}else{if(s.hasAttribute("aria-selected"))s.removeAttribute("aria-selected")}}if(e)N(this.list,e);return e}measureInfo(){let t=this.dom.querySelector("[aria-selected]");if(!t||!this.info)return null;let e=this.dom.getBoundingClientRect();let s=this.info.getBoundingClientRect();let i=t.getBoundingClientRect();let n=this.space;if(!n){let t=this.dom.ownerDocument.documentElement;n={left:0,top:0,right:t.clientWidth,bottom:t.clientHeight}}if(i.top>Math.min(n.bottom,e.bottom)-10||i.bottom{if(t.target==i)t.preventDefault()}));let n=null;for(let o=s.from;os.from||s.from==0)){n=t;if(typeof a!="string"&&a.header){i.appendChild(a.header(a))}else{let e=i.appendChild(document.createElement("completion-section"));e.textContent=t}}}const h=i.appendChild(document.createElement("li"));h.id=e+"-"+o;h.setAttribute("role","option");let c=this.optionClass(r);if(c)h.className=c;for(let t of this.optionContent){let e=t(r,this.view.state,this.view,l);if(e)h.appendChild(e)}}if(s.from)i.classList.add("cm-completionListIncompleteTop");if(s.tonew R(s,t,e)}function N(t,e){let s=t.getBoundingClientRect();let i=e.getBoundingClientRect();let n=s.height/t.offsetHeight;if(i.tops.bottom)t.scrollTop+=(i.bottom-s.bottom)/n}function L(t){return(t.boost||0)*100+(t.apply?10:0)+(t.info?5:0)+(t.type?1:0)}function B(t,e){let s=[];let i=null;let n=t=>{s.push(t);let{section:e}=t.completion;if(e){if(!i)i=[];let t=typeof e=="string"?e:e.name;if(!i.some((e=>e.name==t)))i.push(typeof e=="string"?{name:t}:e)}};let o=e.facet(T);for(let h of t)if(h.hasResult()){let t=h.result.getMatch;if(h.result.filter===false){for(let e of h.result.options){n(new m(e,h.source,t?t(e):[],1e9-s.length))}}else{let s=e.sliceDoc(h.from,h.to),i;let r=o.filterStrict?new P(s):new C(s);for(let e of h.result.options)if(i=r.match(e.label)){let s=!e.displayLabel?i.matched:t?t(e,i.matched):[];n(new m(e,h.source,s,i.score+(e.boost||0)))}}}if(i){let t=Object.create(null),e=0;let n=(t,e)=>{var s,i;return((s=t.rank)!==null&&s!==void 0?s:1e9)-((i=e.rank)!==null&&i!==void 0?i:1e9)||(t.namee.score-t.score||a(t.completion,e.completion)))){let t=h.completion;if(!l||l.label!=t.label||l.detail!=t.detail||l.type!=null&&t.type!=null&&l.type!=t.type||l.apply!=t.apply||l.boost!=t.boost)r.push(h);else if(L(h.completion)>L(l))r[r.length-1]=h;l=h.completion}return r}class M{constructor(t,e,s,i,n,o){this.options=t;this.attrs=e;this.tooltip=s;this.timestamp=i;this.selected=n;this.disabled=o}setSelected(t,e){return t==this.selected||t>=this.options.length?this:new M(this.options,U(e,t),this.tooltip,this.timestamp,t,this.disabled)}static build(t,e,s,i,n,o){if(i&&!o&&t.some((t=>t.isPending)))return i.setDisabled();let r=B(t,e);if(!r.length)return i&&t.some((t=>t.isPending))?i.setDisabled():null;let l=e.facet(T).selectOnOpen?0:-1;if(i&&i.selected!=l&&i.selected!=-1){let t=i.options[i.selected].completion;for(let e=0;ee.hasResult()?Math.min(t,e.from):t),1e8),create:Y,above:n.aboveCursor},i?i.timestamp:Date.now(),l,false)}map(t){return new M(this.options,this.attrs,Object.assign(Object.assign({},this.tooltip),{pos:t.mapPos(this.tooltip.pos)}),this.timestamp,this.selected,this.disabled)}setDisabled(){return new M(this.options,this.attrs,this.tooltip,this.timestamp,this.selected,true)}}class z{constructor(t,e,s){this.active=t;this.id=e;this.open=s}static start(){return new z(W,"cm-ac-"+Math.floor(Math.random()*2e6).toString(36),null)}update(t){let{state:e}=t,s=e.facet(T);let i=s.override||e.languageDataAt("autocomplete",g(e)).map(w);let n=i.map((e=>{let i=this.active.find((t=>t.source==e))||new q(e,this.active.some((t=>t.state!=0))?1:0);return i.update(t,s)}));if(n.length==this.active.length&&n.every(((t,e)=>t==this.active[e])))n=this.active;let o=this.open,r=t.effects.some((t=>t.is(_)));if(o&&t.docChanged)o=o.map(t.changes);if(t.selection||n.some((e=>e.hasResult()&&t.changes.touchesRange(e.from,e.to)))||!F(n,this.active)||r)o=M.build(n,e,this.id,o,s,r);else if(o&&o.disabled&&!n.some((t=>t.isPending)))o=null;if(!o&&n.every((t=>!t.isPending))&&n.some((t=>t.hasResult())))n=n.map((t=>t.hasResult()?new q(t.source,0):t));for(let l of t.effects)if(l.is(K))o=o&&o.setSelected(l.value,this.id);return n==this.active&&o==this.open?this:new z(n,this.id,o)}get tooltip(){return this.open?this.open.tooltip:null}get attrs(){return this.open?this.open.attrs:this.active.length?$:j}}function F(t,e){if(t==e)return true;for(let s=0,i=0;;){while(s-1)s["aria-activedescendant"]=t+"-"+e;return s}const W=[];function V(t,e){if(t.isUserEvent("input.complete")){let s=t.annotation(b);if(s&&e.activateOnCompletion(s))return 4|8}let s=t.isUserEvent("input.type");return s&&e.activateOnTyping?4|1:s?1:t.isUserEvent("delete.backward")?2:t.selection?8:t.docChanged?16:0}class q{constructor(t,e,s=false){this.source=t;this.state=e;this.explicit=s}hasResult(){return false}get isPending(){return this.state==1}update(t,e){let s=V(t,e),i=this;if(s&8||s&16&&this.touches(t))i=new q(i.source,0);if(s&4&&i.state==0)i=new q(this.source,1);i=i.updateFor(t,s);for(let n of t.effects){if(n.is(y))i=new q(i.source,1,n.value);else if(n.is(S))i=new q(i.source,0);else if(n.is(_))for(let t of n.value)if(t.source==i.source)i=t}return i}updateFor(t,e){return this.map(t.changes)}map(t){return this}touches(t){return t.changes.touchesRange(g(t.state))}}class H extends q{constructor(t,e,s,i,n,o){super(t,3,e);this.limit=s;this.result=i;this.from=n;this.to=o}hasResult(){return true}updateFor(t,e){var s;if(!(e&3))return this.map(t.changes);let i=this.result;if(i.map&&!t.changes.empty)i=i.map(i,t.changes);let n=t.changes.mapPos(this.from),o=t.changes.mapPos(this.to,1);let r=g(t.state);if(r>o||!i||e&2&&(g(t.startState)==this.from||rt.map(e)))}});const K=i.StateEffect.define();const Q=i.StateField.define({create(){return z.start()},update(t,e){return t.update(e)},provide:t=>[o.showTooltip.from(t,(t=>t.tooltip)),o.EditorView.contentAttributes.from(t,(t=>t.attrs))]});function X(t,e){const s=e.completion.apply||e.completion.label;let i=t.state.field(Q).active.find((t=>t.source==e.source));if(!(i instanceof H))return false;if(typeof s=="string")t.dispatch(Object.assign(Object.assign({},x(t.state,s,i.from,i.to)),{annotations:b.of(e.completion)}));else s(t,e.completion,i.from,i.to);return true}const Y=E(Q,X);function J(t,e="option"){return s=>{let i=s.state.field(Q,false);if(!i||!i.open||i.open.disabled||Date.now()-i.open.timestamp-1?i.open.selected+n*(t?1:-1):t?0:l-1;if(a<0)a=e=="page"?0:l-1;else if(a>=l)a=e=="page"?l-1:0;s.dispatch({effects:K.of(a)});return true}}const Z=t=>{let e=t.state.field(Q,false);if(t.state.readOnly||!e||!e.open||e.open.selected<0||e.open.disabled||Date.now()-e.open.timestamp{let e=t.state.field(Q,false);if(!e)return false;t.dispatch({effects:y.of(true)});return true};const et=t=>{let e=t.state.field(Q,false);if(!e||!e.active.some((t=>t.state!=0)))return false;t.dispatch({effects:S.of(null)});return true};class st{constructor(t,e){this.active=t;this.context=e;this.time=Date.now();this.updates=[];this.done=undefined}}const it=50,nt=1e3;const ot=o.ViewPlugin.fromClass(class{constructor(t){this.view=t;this.debounceUpdate=-1;this.running=[];this.debounceAccept=-1;this.pendingStart=false;this.composing=0;for(let e of t.state.field(Q).active)if(e.isPending)this.startQuery(e)}update(t){let e=t.state.field(Q);let s=t.state.facet(T);if(!t.selectionSet&&!t.docChanged&&t.startState.field(Q)==e)return;let i=t.transactions.some((t=>{let e=V(t,s);return e&8||(t.selection||t.docChanged)&&!(e&3)}));for(let l=0;lit&&Date.now()-e.time>nt){for(let t of e.context.abortListeners){try{t()}catch(r){(0,o.logException)(this.view.state,r)}}e.context.abortListeners=null;this.running.splice(l--,1)}else{e.updates.push(...t.transactions)}}if(this.debounceUpdate>-1)clearTimeout(this.debounceUpdate);if(t.transactions.some((t=>t.effects.some((t=>t.is(y))))))this.pendingStart=true;let n=this.pendingStart?50:s.activateOnTypingDelay;this.debounceUpdate=e.active.some((t=>t.isPending&&!this.running.some((e=>e.active.source==t.source))))?setTimeout((()=>this.startUpdate()),n):-1;if(this.composing!=0)for(let o of t.transactions){if(o.isUserEvent("input.type"))this.composing=2;else if(this.composing==2&&o.selection)this.composing=3}}startUpdate(){this.debounceUpdate=-1;this.pendingStart=false;let{state:t}=this.view,e=t.field(Q);for(let s of e.active){if(s.isPending&&!this.running.some((t=>t.active.source==s.source)))this.startQuery(s)}if(this.running.length&&e.open&&e.open.disabled)this.debounceAccept=setTimeout((()=>this.accept()),this.view.state.facet(T).updateSyncTime)}startQuery(t){let{state:e}=this.view,s=g(e);let i=new h(e,s,t.explicit,this.view);let n=new st(t,i);this.running.push(n);Promise.resolve(t.source(i)).then((t=>{if(!n.context.aborted){n.done=t||null;this.scheduleAccept()}}),(t=>{this.view.dispatch({effects:S.of(null)});(0,o.logException)(this.view.state,t)}))}scheduleAccept(){if(this.running.every((t=>t.done!==undefined)))this.accept();else if(this.debounceAccept<0)this.debounceAccept=setTimeout((()=>this.accept()),this.view.state.facet(T).updateSyncTime)}accept(){var t;if(this.debounceAccept>-1)clearTimeout(this.debounceAccept);this.debounceAccept=-1;let e=[];let s=this.view.state.facet(T),i=this.view.state.field(Q);for(let n=0;nt.source==o.active.source));if(r&&r.isPending){if(o.done==null){let t=new q(o.active.source,0);for(let e of o.updates)t=t.update(e,s);if(!t.isPending)e.push(t)}else{this.startQuery(r)}}}if(e.length||i.open&&i.open.disabled)this.view.dispatch({effects:_.of(e)})}},{eventHandlers:{blur(t){let e=this.view.state.field(Q,false);if(e&&e.tooltip&&this.view.state.facet(T).closeOnBlur){let s=e.open&&(0,o.getTooltip)(this.view,e.open.tooltip);if(!s||!s.dom.contains(t.relatedTarget))setTimeout((()=>this.view.dispatch({effects:S.of(null)})),10)}},compositionstart(){this.composing=1},compositionend(){if(this.composing==3){setTimeout((()=>this.view.dispatch({effects:y.of(false)})),20)}this.composing=0}}});const rt=typeof navigator=="object"&&/Win/.test(navigator.platform);const lt=i.Prec.highest(o.EditorView.domEventHandlers({keydown(t,e){let s=e.state.field(Q,false);if(!s||!s.open||s.open.disabled||s.open.selected<0||t.key.length>1||t.ctrlKey&&!(rt&&t.altKey)||t.metaKey)return false;let i=s.open.options[s.open.selected];let n=s.active.find((t=>t.source==i.source));let o=i.completion.commitCharacters||n.result.commitCharacters;if(o&&o.indexOf(t.key)>-1)X(e,i);return false}}));const at=o.EditorView.baseTheme({".cm-tooltip.cm-tooltip-autocomplete":{"& > ul":{fontFamily:"monospace",whiteSpace:"nowrap",overflow:"hidden auto",maxWidth_fallback:"700px",maxWidth:"min(700px, 95vw)",minWidth:"250px",maxHeight:"10em",height:"100%",listStyle:"none",margin:0,padding:0,"& > li, & > completion-section":{padding:"1px 3px",lineHeight:1.2},"& > li":{overflowX:"hidden",textOverflow:"ellipsis",cursor:"pointer"},"& > completion-section":{display:"list-item",borderBottom:"1px solid silver",paddingLeft:"0.5em",opacity:.7}}},"&light .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#17c",color:"white"},"&light .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#777"},"&dark .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#347",color:"white"},"&dark .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#444"},".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after":{content:'"···"',opacity:.5,display:"block",textAlign:"center"},".cm-tooltip.cm-completionInfo":{position:"absolute",padding:"3px 9px",width:"max-content",maxWidth:`${400}px`,boxSizing:"border-box",whiteSpace:"pre-line"},".cm-completionInfo.cm-completionInfo-left":{right:"100%"},".cm-completionInfo.cm-completionInfo-right":{left:"100%"},".cm-completionInfo.cm-completionInfo-left-narrow":{right:`${30}px`},".cm-completionInfo.cm-completionInfo-right-narrow":{left:`${30}px`},"&light .cm-snippetField":{backgroundColor:"#00000022"},"&dark .cm-snippetField":{backgroundColor:"#ffffff22"},".cm-snippetFieldPosition":{verticalAlign:"text-top",width:0,height:"1.15em",display:"inline-block",margin:"0 -0.7px -.7em",borderLeft:"1.4px dotted #888"},".cm-completionMatchedText":{textDecoration:"underline"},".cm-completionDetail":{marginLeft:"0.5em",fontStyle:"italic"},".cm-completionIcon":{fontSize:"90%",width:".8em",display:"inline-block",textAlign:"center",paddingRight:".6em",opacity:"0.6",boxSizing:"content-box"},".cm-completionIcon-function, .cm-completionIcon-method":{"&:after":{content:"'ƒ'"}},".cm-completionIcon-class":{"&:after":{content:"'○'"}},".cm-completionIcon-interface":{"&:after":{content:"'◌'"}},".cm-completionIcon-variable":{"&:after":{content:"'𝑥'"}},".cm-completionIcon-constant":{"&:after":{content:"'𝐶'"}},".cm-completionIcon-type":{"&:after":{content:"'𝑡'"}},".cm-completionIcon-enum":{"&:after":{content:"'∪'"}},".cm-completionIcon-property":{"&:after":{content:"'□'"}},".cm-completionIcon-keyword":{"&:after":{content:"'🔑︎'"}},".cm-completionIcon-namespace":{"&:after":{content:"'▢'"}},".cm-completionIcon-text":{"&:after":{content:"'abc'",fontSize:"50%",verticalAlign:"middle"}}});class ht{constructor(t,e,s,i){this.field=t;this.line=e;this.from=s;this.to=i}}class ct{constructor(t,e,s){this.field=t;this.from=e;this.to=s}map(t){let e=t.mapPos(this.from,-1,i.MapMode.TrackDel);let s=t.mapPos(this.to,1,i.MapMode.TrackDel);return e==null||s==null?null:new ct(this.field,e,s)}}class ft{constructor(t,e){this.lines=t;this.fieldPositions=e}instantiate(t,e){let s=[],i=[e];let n=t.doc.lineAt(e),o=/^\s*/.exec(n.text)[0];for(let a of this.lines){if(s.length){let s=o,n=/^\t*/.exec(a)[0].length;for(let e=0;enew ct(t.field,i[t.line]+t.from,i[t.line]+t.to)));return{text:s,ranges:r}}static parse(t){let e=[];let s=[],i=[],n;for(let o of t.split(/\r\n?|\n/)){while(n=/[#$]\{(?:(\d+)(?::([^}]*))?|((?:\\[{}]|[^}])*))\}/.exec(o)){let t=n[1]?+n[1]:null,r=n[2]||n[3]||"",l=-1;let a=r.replace(/\\[{}]/g,(t=>t[1]));for(let s=0;s=l)t.field++}i.push(new ht(l,s.length,n.index,n.index+a.length));o=o.slice(0,n.index)+r+o.slice(n.index+n[0].length)}o=o.replace(/\\([{}])/g,((t,e,n)=>{for(let o of i)if(o.line==s.length&&o.from>n){o.from--;o.to--}return e}));s.push(o)}return new ft(s,i)}}let ut=o.Decoration.widget({widget:new class extends o.WidgetType{toDOM(){let t=document.createElement("span");t.className="cm-snippetFieldPosition";return t}ignoreEvent(){return false}}});let pt=o.Decoration.mark({class:"cm-snippetField"});class dt{constructor(t,e){this.ranges=t;this.active=e;this.deco=o.Decoration.set(t.map((t=>(t.from==t.to?ut:pt).range(t.from,t.to))))}map(t){let e=[];for(let s of this.ranges){let i=s.map(t);if(!i)return null;e.push(i)}return new dt(e,this.active)}selectionInsideField(t){return t.ranges.every((t=>this.ranges.some((e=>e.field==this.active&&e.from<=t.from&&e.to>=t.to))))}}const mt=i.StateEffect.define({map(t,e){return t&&t.map(e)}});const gt=i.StateEffect.define();const kt=i.StateField.define({create(){return null},update(t,e){for(let s of e.effects){if(s.is(mt))return s.value;if(s.is(gt)&&t)return new dt(t.ranges,s.value)}if(t&&e.docChanged)t=t.map(e.changes);if(t&&e.selection&&!t.selectionInsideField(e.selection))t=null;return t},provide:t=>o.EditorView.decorations.from(t,(t=>t?t.deco:o.Decoration.none))});function bt(t,e){return i.EditorSelection.create(t.filter((t=>t.field==e)).map((t=>i.EditorSelection.range(t.from,t.to))))}function xt(t){let e=ft.parse(t);return(t,s,n,o)=>{let{text:r,ranges:l}=e.instantiate(t.state,n);let{main:a}=t.state.selection;let h={changes:{from:n,to:o==a.from?a.to:o,insert:i.Text.of(r)},scrollIntoView:true,annotations:s?[b.of(s),i.Transaction.userEvent.of("input.complete")]:undefined};if(l.length)h.selection=bt(l,0);if(l.some((t=>t.field>0))){let e=new dt(l,0);let s=h.effects=[mt.of(e)];if(t.state.field(kt,false)===undefined)s.push(i.StateEffect.appendConfig.of([kt,It,Dt,at]))}t.dispatch(t.state.update(h))}}function vt(t){return({state:e,dispatch:s})=>{let i=e.field(kt,false);if(!i||t<0&&i.active==0)return false;let n=i.active+t,o=t>0&&!i.ranges.some((e=>e.field==n+t));s(e.update({selection:bt(i.ranges,n),effects:mt.of(o?null:new dt(i.ranges,n)),scrollIntoView:true}));return true}}const wt=({state:t,dispatch:e})=>{let s=t.field(kt,false);if(!s)return false;e(t.update({effects:mt.of(null)}));return true};const yt=vt(1);const St=vt(-1);function Ct(t){let e=t.field(kt,false);return!!(e&&e.ranges.some((t=>t.field==e.active+1)))}function Pt(t){let e=t.field(kt,false);return!!(e&&e.active>0)}const Tt=[{key:"Tab",run:yt,shift:St},{key:"Escape",run:wt}];const At=i.Facet.define({combine(t){return t.length?t[0]:Tt}});const It=i.Prec.highest(o.keymap.compute([At],(t=>t.facet(At))));function Ot(t,e){return Object.assign(Object.assign({},e),{apply:xt(t)})}const Dt=o.EditorView.domEventHandlers({mousedown(t,e){let s=e.state.field(kt,false),i;if(!s||(i=e.posAtCoords({x:t.clientX,y:t.clientY}))==null)return false;let n=s.ranges.find((t=>t.from<=i&&t.to>=i));if(!n||n.field==s.active)return false;e.dispatch({selection:bt(s.ranges,n.field),effects:mt.of(s.ranges.some((t=>t.field>n.field))?new dt(s.ranges,n.field):null),scrollIntoView:true});return true}});function Rt(t){let e=t.replace(/[\]\-\\]/g,"\\$&");try{return new RegExp(`[\\p{Alphabetic}\\p{Number}_${e}]+`,"ug")}catch(s){return new RegExp(`[w${e}]`,"g")}}function Et(t,e){return new RegExp(e(t.source),t.unicode?"u":"")}const Nt=null&&Object.create(null);function Lt(t){return Nt[t]||(Nt[t]=new WeakMap)}function Bt(t,e,s,i,n){for(let o=t.iterLines(),r=0;!o.next().done;){let{value:t}=o,l;e.lastIndex=0;while(l=e.exec(t)){if(!i[l[0]]&&r+l.index!=n){s.push({type:"text",label:l[0]});i[l[0]]=true;if(s.length>=2e3)return}}r+=t.length+1}}function Mt(t,e,s,i,n){let o=t.length>=1e3;let r=o&&e.get(t);if(r)return r;let l=[],a=Object.create(null);if(t.children){let o=0;for(let r of t.children){if(r.length>=1e3){for(let t of Mt(r,e,s,i-o,n-o)){if(!a[t.label]){a[t.label]=true;l.push(t)}}}else{Bt(r,s,l,a,n-o)}o+=r.length+1}}else{Bt(t,s,l,a,n)}if(o&&l.length<2e3)e.set(t,l);return l}const zt=t=>{let e=t.state.languageDataAt("wordChars",t.pos).join("");let s=Rt(e);let i=t.matchBefore(Et(s,(t=>t+"$")));if(!i&&!t.explicit)return null;let n=i?i.from:t.pos;let o=Mt(t.state.doc,Lt(e),s,5e4,n);return{from:n,options:o,validFor:Et(s,(t=>"^"+t))}};const Ft={brackets:["(","[","{","'",'"'],before:")]}:;>",stringPrefixes:[]};const $t=i.StateEffect.define({map(t,e){let s=e.mapPos(t,-1,i.MapMode.TrackAfter);return s==null?undefined:s}});const jt=new class extends i.RangeValue{};jt.startSide=1;jt.endSide=-1;const Ut=i.StateField.define({create(){return i.RangeSet.empty},update(t,e){t=t.map(e.changes);if(e.selection){let s=e.state.doc.lineAt(e.selection.main.head);t=t.update({filter:t=>t>=s.from&&t<=s.to})}for(let s of e.effects)if(s.is($t))t=t.update({add:[jt.range(s.value,s.value+1)]});return t}});function Wt(){return[_t,Ut]}const Vt="()[]{}<>«»»«[]{}";function qt(t){for(let e=0;e{if((Gt?t.composing:t.compositionStarted)||t.state.readOnly)return false;let o=t.state.selection.main;if(n.length>2||n.length==2&&(0,i.codePointSize)((0,i.codePointAt)(n,0))==1||e!=o.from||s!=o.to)return false;let r=Xt(t.state,n);if(!r)return false;t.dispatch(r);return true}));const Kt=({state:t,dispatch:e})=>{if(t.readOnly)return false;let s=Ht(t,t.selection.main.head);let n=s.brackets||Ft.brackets;let o=null,r=t.changeByRange((e=>{if(e.empty){let s=Zt(t.doc,e.head);for(let o of n){if(o==s&&Jt(t.doc,e.head)==qt((0,i.codePointAt)(o,0)))return{changes:{from:e.head-o.length,to:e.head+o.length},range:i.EditorSelection.cursor(e.head-o.length)}}}return{range:o=e}}));if(!o)e(t.update(r,{scrollIntoView:true,userEvent:"delete.backward"}));return!o};const Qt=[{key:"Backspace",run:Kt}];function Xt(t,e){let s=Ht(t,t.selection.main.head);let n=s.brackets||Ft.brackets;for(let o of n){let r=qt((0,i.codePointAt)(o,0));if(e==o)return r==o?se(t,o,n.indexOf(o+o+o)>-1,s):te(t,o,r,s.before||Ft.before);if(e==r&&Yt(t,t.selection.main.from))return ee(t,o,r)}return null}function Yt(t,e){let s=false;t.field(Ut).between(0,t.doc.length,(t=>{if(t==e)s=true}));return s}function Jt(t,e){let s=t.sliceString(e,e+2);return s.slice(0,(0,i.codePointSize)((0,i.codePointAt)(s,0)))}function Zt(t,e){let s=t.sliceString(e-2,e);return(0,i.codePointSize)((0,i.codePointAt)(s,0))==s.length?s:s.slice(1)}function te(t,e,s,n){let o=null,r=t.changeByRange((r=>{if(!r.empty)return{changes:[{insert:e,from:r.from},{insert:s,from:r.to}],effects:$t.of(r.to+e.length),range:i.EditorSelection.range(r.anchor+e.length,r.head+e.length)};let l=Jt(t.doc,r.head);if(!l||/\s/.test(l)||n.indexOf(l)>-1)return{changes:{insert:e+s,from:r.head},effects:$t.of(r.head+e.length),range:i.EditorSelection.cursor(r.head+e.length)};return{range:o=r}}));return o?null:t.update(r,{scrollIntoView:true,userEvent:"input.type"})}function ee(t,e,s){let n=null,o=t.changeByRange((e=>{if(e.empty&&Jt(t.doc,e.head)==s)return{changes:{from:e.head,to:e.head+s.length,insert:s},range:i.EditorSelection.cursor(e.head+s.length)};return n={range:e}}));return n?null:t.update(o,{scrollIntoView:true,userEvent:"input.type"})}function se(t,e,s,n){let o=n.stringPrefixes||Ft.stringPrefixes;let r=null,l=t.changeByRange((n=>{if(!n.empty)return{changes:[{insert:e,from:n.from},{insert:e,from:n.to}],effects:$t.of(n.to+e.length),range:i.EditorSelection.range(n.anchor+e.length,n.head+e.length)};let l=n.head,a=Jt(t.doc,l),h;if(a==e){if(ie(t,l)){return{changes:{insert:e+e,from:l},effects:$t.of(l+e.length),range:i.EditorSelection.cursor(l+e.length)}}else if(Yt(t,l)){let n=s&&t.sliceDoc(l,l+e.length*3)==e+e+e;let o=n?e+e+e:e;return{changes:{from:l,to:l+o.length,insert:o},range:i.EditorSelection.cursor(l+o.length)}}}else if(s&&t.sliceDoc(l-2*e.length,l)==e+e&&(h=oe(t,l-2*e.length,o))>-1&&ie(t,h)){return{changes:{insert:e+e+e+e,from:l},effects:$t.of(l+e.length),range:i.EditorSelection.cursor(l+e.length)}}else if(t.charCategorizer(l)(a)!=i.CharCategory.Word){if(oe(t,l,o)>-1&&!ne(t,l,e,o))return{changes:{insert:e+e,from:l},effects:$t.of(l+e.length),range:i.EditorSelection.cursor(l+e.length)}}return{range:r=n}}));return r?null:t.update(l,{scrollIntoView:true,userEvent:"input.type"})}function ie(t,e){let s=(0,l.syntaxTree)(t).resolveInner(e+1);return s.parent&&s.from==e}function ne(t,e,s,i){let n=(0,l.syntaxTree)(t).resolveInner(e,-1);let o=i.reduce(((t,e)=>Math.max(t,e.length)),0);for(let r=0;r<5;r++){let r=t.sliceDoc(n.from,Math.min(n.to,n.from+s.length+o));let l=r.indexOf(s);if(!l||l>-1&&i.indexOf(r.slice(0,l))>-1){let e=n.firstChild;while(e&&e.from==n.from&&e.to-e.from>s.length+l){if(t.sliceDoc(e.to-s.length,e.to)==s)return false;e=e.firstChild}return true}let a=n.to==e&&n.parent;if(!a)break;n=a}return false}function oe(t,e,s){let n=t.charCategorizer(e);if(n(t.sliceDoc(e-1,e))!=i.CharCategory.Word)return e;for(let o of s){let s=e-o.length;if(t.sliceDoc(s,e)==o&&n(t.sliceDoc(s-1,s))!=i.CharCategory.Word)return s}return-1}function re(t={}){return[lt,Q,T.of(t),ot,ae,at]}const le=[{key:"Ctrl-Space",run:tt},{mac:"Alt-`",run:tt},{key:"Escape",run:et},{key:"ArrowDown",run:J(true)},{key:"ArrowUp",run:J(false)},{key:"PageDown",run:J(true,"page")},{key:"PageUp",run:J(false,"page")},{key:"Enter",run:Z}];const ae=i.Prec.highest(o.keymap.computeN([T],(t=>t.facet(T).defaultKeymap?[le]:[])));function he(t){let e=t.field(Q,false);return e&&e.active.some((t=>t.isPending))?"pending":e&&e.active.some((t=>t.state!=0))?"active":null}const ce=new WeakMap;function fe(t){var e;let s=(e=t.field(Q,false))===null||e===void 0?void 0:e.open;if(!s||s.disabled)return[];let i=ce.get(s.options);if(!i)ce.set(s.options,i=s.options.map((t=>t.completion)));return i}function ue(t){var e;let s=(e=t.field(Q,false))===null||e===void 0?void 0:e.open;return s&&!s.disabled&&s.selected>=0?s.options[s.selected].completion:null}function pe(t){var e;let s=(e=t.field(Q,false))===null||e===void 0?void 0:e.open;return s&&!s.disabled&&s.selected>=0?s.selected:null}function de(t){return K.of(t)}},27421:(t,e,s)=>{"use strict";s.d(e,{Aj:()=>O,Lu:()=>g,U1:()=>D,uC:()=>m});var i=s(66575);var n=s.n(i);var o=s(65606);class r{constructor(t,e,s,i,n,o,r,l,a,h=0,c){this.p=t;this.stack=e;this.state=s;this.reducePos=i;this.pos=n;this.score=o;this.buffer=r;this.bufferBase=l;this.curContext=a;this.lookAhead=h;this.parent=c}toString(){return`[${this.stack.filter(((t,e)=>e%3==0)).concat(this.state)}]@${this.pos}${this.score?"!"+this.score:""}`}static start(t,e,s=0){let i=t.parser.context;return new r(t,[],e,s,s,0,[],0,i?new l(i,i.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(t,e){this.stack.push(this.state,e,this.bufferBase+this.buffer.length);this.state=t}reduce(t){var e;let s=t>>19,i=t&65535;let{parser:n}=this.p;let o=n.dynamicPrecedence(i);if(o)this.score+=o;if(s==0){this.pushState(n.getGoto(this.state,i,true),this.reducePos);if(i=2e3&&!((e=this.p.parser.nodeSet.types[i])===null||e===void 0?void 0:e.isAnonymous)){if(l==this.p.lastBigReductionStart){this.p.bigReductionCount++;this.p.lastBigReductionSize=a}else if(this.p.lastBigReductionSizer)this.stack.pop();this.reduceContext(i,l)}storeNode(t,e,s,i=4,n=false){if(t==0&&(!this.stack.length||this.stack[this.stack.length-1]0&&t.buffer[i-4]==0&&t.buffer[i-1]>-1){if(e==s)return;if(t.buffer[i-2]>=e){t.buffer[i-2]=s;return}}}if(!n||this.pos==s){this.buffer.push(t,e,s,i)}else{let n=this.buffer.length;if(n>0&&this.buffer[n-4]!=0)while(n>0&&this.buffer[n-2]>s){this.buffer[n]=this.buffer[n-4];this.buffer[n+1]=this.buffer[n-3];this.buffer[n+2]=this.buffer[n-2];this.buffer[n+3]=this.buffer[n-1];n-=4;if(i>4)i-=4}this.buffer[n]=t;this.buffer[n+1]=e;this.buffer[n+2]=s;this.buffer[n+3]=i}}shift(t,e,s,i){if(t&131072){this.pushState(t&65535,this.pos)}else if((t&262144)==0){let n=t,{parser:o}=this.p;if(i>this.pos||e<=o.maxNode){this.pos=i;if(!o.stateFlag(n,1))this.reducePos=i}this.pushState(n,s);this.shiftContext(e,s);if(e<=o.maxNode)this.buffer.push(e,s,i,4)}else{this.pos=i;this.shiftContext(e,s);if(e<=this.p.parser.maxNode)this.buffer.push(e,s,i,4)}}apply(t,e,s,i){if(t&65536)this.reduce(t);else this.shift(t,e,s,i)}useNode(t,e){let s=this.p.reused.length-1;if(s<0||this.p.reused[s]!=t){this.p.reused.push(t);s++}let i=this.pos;this.reducePos=this.pos=i+t.length;this.pushState(e,i);this.buffer.push(s,i,this.reducePos,-1);if(this.curContext)this.updateContext(this.curContext.tracker.reuse(this.curContext.context,t,this,this.p.stream.reset(this.pos-t.length)))}split(){let t=this;let e=t.buffer.length;while(e>0&&t.buffer[e-2]>t.reducePos)e-=4;let s=t.buffer.slice(e),i=t.bufferBase+e;while(t&&i==t.bufferBase)t=t.parent;return new r(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,s,i,this.curContext,this.lookAhead,t)}recoverByDelete(t,e){let s=t<=this.p.parser.maxNode;if(s)this.storeNode(t,this.pos,e,4);this.storeNode(0,this.pos,e,s?8:4);this.pos=this.reducePos=e;this.score-=190}canShift(t){for(let e=new a(this);;){let s=this.p.parser.stateSlot(e.state,4)||this.p.parser.hasAction(e.state,t);if(s==0)return false;if((s&65536)==0)return true;e.reduce(s)}}recoverByInsert(t){if(this.stack.length>=300)return[];let e=this.p.parser.nextStates(this.state);if(e.length>4<<1||this.stack.length>=120){let s=[];for(let i=0,n;ie&1&&t==i)))s.push(e[t],i)}e=s}let s=[];for(let i=0;i>19,i=e&65535;let n=this.stack.length-s*3;if(n<0||t.getGoto(this.stack[n],i,false)<0){let t=this.findForcedReduction();if(t==null)return false;e=t}this.storeNode(0,this.pos,this.pos,4,true);this.score-=100}this.reducePos=this.pos;this.reduce(e);return true}findForcedReduction(){let{parser:t}=this.p,e=[];let s=(i,n)=>{if(e.includes(i))return;e.push(i);return t.allActions(i,(e=>{if(e&(262144|131072));else if(e&65536){let s=(e>>19)-n;if(s>1){let i=e&65535,n=this.stack.length-s*3;if(n>=0&&t.getGoto(this.stack[n],i,false)>=0)return s<<19|65536|i}}else{let t=s(e,n+1);if(t!=null)return t}}))};return s(this.state,0)}forceAll(){while(!this.p.parser.stateFlag(this.state,2)){if(!this.forceReduce()){this.storeNode(0,this.pos,this.pos,4,true);break}}return this}get deadEnd(){if(this.stack.length!=3)return false;let{parser:t}=this.p;return t.data[t.stateSlot(this.state,1)]==65535&&!t.stateSlot(this.state,4)}restart(){this.storeNode(0,this.pos,this.pos,4,true);this.state=this.stack[0];this.stack.length=0}sameState(t){if(this.state!=t.state||this.stack.length!=t.stack.length)return false;for(let e=0;ethis.lookAhead){this.emitLookAhead();this.lookAhead=t}}close(){if(this.curContext&&this.curContext.tracker.strict)this.emitContext();if(this.lookAhead>0)this.emitLookAhead()}}class l{constructor(t,e){this.tracker=t;this.context=e;this.hash=t.strict?t.hash(e):0}}class a{constructor(t){this.start=t;this.state=t.state;this.stack=t.stack;this.base=this.stack.length}reduce(t){let e=t&65535,s=t>>19;if(s==0){if(this.stack==this.start.stack)this.stack=this.stack.slice();this.stack.push(this.state,0,0);this.base+=3}else{this.base-=(s-1)*3}let i=this.start.p.parser.getGoto(this.stack[this.base-3],e,true);this.state=i}}class h{constructor(t,e,s){this.stack=t;this.pos=e;this.index=s;this.buffer=t.buffer;if(this.index==0)this.maybeNext()}static create(t,e=t.bufferBase+t.buffer.length){return new h(t,e,e-t.bufferBase)}maybeNext(){let t=this.stack.parent;if(t!=null){this.index=this.stack.bufferBase-t.bufferBase;this.stack=t;this.buffer=t.buffer}}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}next(){this.index-=4;this.pos-=4;if(this.index==0)this.maybeNext()}fork(){return new h(this.stack,this.pos,this.index)}}function c(t,e=Uint16Array){if(typeof t!="string")return t;let s=null;for(let i=0,n=0;i=92)e--;if(e>=34)e--;let n=e-32;if(n>=46){n-=46;s=true}o+=n;if(s)break;o*=46}if(s)s[n++]=o;else s=new e(o)}return s}class f{constructor(){this.start=-1;this.value=-1;this.end=-1;this.extended=-1;this.lookAhead=0;this.mask=0;this.context=0}}const u=new f;class p{constructor(t,e){this.input=t;this.ranges=e;this.chunk="";this.chunkOff=0;this.chunk2="";this.chunk2Pos=0;this.next=-1;this.token=u;this.rangeIndex=0;this.pos=this.chunkPos=e[0].from;this.range=e[0];this.end=e[e.length-1].to;this.readNext()}resolveOffset(t,e){let s=this.range,i=this.rangeIndex;let n=this.pos+t;while(ns.to:n>=s.to){if(i==this.ranges.length-1)return null;let t=this.ranges[++i];n+=t.from-s.to;s=t}return n}clipPos(t){if(t>=this.range.from&&tt)return Math.max(t,e.from);return this.end}peek(t){let e=this.chunkOff+t,s,i;if(e>=0&&e=this.chunk2Pos&&se.to)this.chunk2=this.chunk2.slice(0,e.to-s);i=this.chunk2.charCodeAt(0)}}if(s>=this.token.lookAhead)this.token.lookAhead=s+1;return i}acceptToken(t,e=0){let s=e?this.resolveOffset(e,-1):this.pos;if(s==null||s=this.chunk2Pos&&this.posthis.range.to?t.slice(0,this.range.to-this.pos):t;this.chunkPos=this.pos;this.chunkOff=0}}readNext(){if(this.chunkOff>=this.chunk.length){this.getChunk();if(this.chunkOff==this.chunk.length)return this.next=-1}return this.next=this.chunk.charCodeAt(this.chunkOff)}advance(t=1){this.chunkOff+=t;while(this.pos+t>=this.range.to){if(this.rangeIndex==this.ranges.length-1)return this.setDone();t-=this.range.to-this.pos;this.range=this.ranges[++this.rangeIndex];this.pos=this.range.from}this.pos+=t;if(this.pos>=this.token.lookAhead)this.token.lookAhead=this.pos+1;return this.readNext()}setDone(){this.pos=this.chunkPos=this.end;this.range=this.ranges[this.rangeIndex=this.ranges.length-1];this.chunk="";return this.next=-1}reset(t,e){if(e){this.token=e;e.start=t;e.lookAhead=t+1;e.value=e.extended=-1}else{this.token=u}if(this.pos!=t){this.pos=t;if(t==this.end){this.setDone();return this}while(t=this.range.to)this.range=this.ranges[++this.rangeIndex];if(t>=this.chunkPos&&t=this.chunkPos&&e<=this.chunkPos+this.chunk.length)return this.chunk.slice(t-this.chunkPos,e-this.chunkPos);if(t>=this.chunk2Pos&&e<=this.chunk2Pos+this.chunk2.length)return this.chunk2.slice(t-this.chunk2Pos,e-this.chunk2Pos);if(t>=this.range.from&&e<=this.range.to)return this.input.read(t,e);let s="";for(let i of this.ranges){if(i.from>=e)break;if(i.to>t)s+=this.input.read(Math.max(i.from,t),Math.min(i.to,e))}return s}}class d{constructor(t,e){this.data=t;this.id=e}token(t,e){let{parser:s}=e.p;k(this.data,t,e,this.id,s.data,s.tokenPrecTable)}}d.prototype.contextual=d.prototype.fallback=d.prototype.extend=false;class m{constructor(t,e,s){this.precTable=e;this.elseToken=s;this.data=typeof t=="string"?c(t):t}token(t,e){let s=t.pos,i=0;for(;;){let s=t.next<0,n=t.resolveOffset(1,1);k(this.data,t,e,0,this.data,this.precTable);if(t.token.value>-1)break;if(this.elseToken==null)return;if(!s)i++;if(n==null)break;t.reset(n,t.token)}if(i){t.reset(s,t.token);t.acceptToken(this.elseToken,i)}}}m.prototype.contextual=d.prototype.fallback=d.prototype.extend=false;class g{constructor(t,e={}){this.token=t;this.contextual=!!e.contextual;this.fallback=!!e.fallback;this.extend=!!e.extend}}function k(t,e,s,i,n,o){let r=0,l=1<0){let s=t[f];if(a.allows(s)&&(e.token.value==-1||e.token.value==s||x(s,e.token.value,n,o))){e.acceptToken(s);break}}let i=e.next,h=0,c=t[r+2];if(e.next<0&&c>h&&t[s+c*3-3]==65535){r=t[s+c*3-1];continue t}for(;h>1;let o=s+n+(n<<1);let l=t[o],a=t[o+1]||65536;if(i=a)h=n+1;else{r=t[o+2];e.advance();continue t}}break}}function b(t,e,s){for(let i=e,n;(n=t[i])!=65535;i++)if(n==s)return i-e;return-1}function x(t,e,s,i){let n=b(s,i,e);return n<0||b(s,i,t)e)&&!n.type.isError)return s<0?Math.max(0,Math.min(n.to-1,e-25)):Math.min(t.length,Math.max(n.from+1,e+25));if(s<0?n.prevSibling():n.nextSibling())break;if(!n.parent())return s<0?0:t.length}}}class S{constructor(t,e){this.fragments=t;this.nodeSet=e;this.i=0;this.fragment=null;this.safeFrom=-1;this.safeTo=-1;this.trees=[];this.start=[];this.index=[];this.nextFragment()}nextFragment(){let t=this.fragment=this.i==this.fragments.length?null:this.fragments[this.i++];if(t){this.safeFrom=t.openStart?y(t.tree,t.from+t.offset,1)-t.offset:t.from;this.safeTo=t.openEnd?y(t.tree,t.to+t.offset,-1)-t.offset:t.to;while(this.trees.length){this.trees.pop();this.start.pop();this.index.pop()}this.trees.push(t.tree);this.start.push(-t.offset);this.index.push(0);this.nextStart=this.safeFrom}else{this.nextStart=1e9}}nodeAt(t){if(tt){this.nextStart=r;return null}if(o instanceof i.Tree){if(r==t){if(r=Math.max(this.safeFrom,t)){this.trees.push(o);this.start.push(r);this.index.push(0)}}else{this.index[e]++;this.nextStart=r+o.length}}}}class C{constructor(t,e){this.stream=e;this.tokens=[];this.mainToken=null;this.actions=[];this.tokens=t.tokenizers.map((t=>new f))}getActions(t){let e=0;let s=null;let{parser:i}=t.p,{tokenizers:n}=i;let o=i.stateSlot(t.state,3);let r=t.curContext?t.curContext.hash:0;let l=0;for(let a=0;ah.end+25)l=Math.max(h.lookAhead,l);if(h.value!=0){let n=e;if(h.extended>-1)e=this.addActions(t,h.extended,h.end,e);e=this.addActions(t,h.value,h.end,e);if(!i.extend){s=h;if(e>n)break}}}while(this.actions.length>e)this.actions.pop();if(l)t.setLookAhead(l);if(!s&&t.pos==this.stream.end){s=new f;s.value=t.p.parser.eofTerm;s.start=s.end=t.pos;e=this.addActions(t,s.value,s.end,e)}this.mainToken=s;return this.actions}getMainToken(t){if(this.mainToken)return this.mainToken;let e=new f,{pos:s,p:i}=t;e.start=s;e.end=Math.min(s+1,i.stream.end);e.value=s==i.stream.end?i.parser.eofTerm:0;return e}updateCachedToken(t,e,s){let i=this.stream.clipPos(s.pos);e.token(this.stream.reset(i,t),s);if(t.value>-1){let{parser:e}=s.p;for(let i=0;i=0&&s.p.parser.dialect.allows(n>>1)){if((n&1)==0)t.value=n>>1;else t.extended=n>>1;break}}}else{t.value=0;t.end=this.stream.clipPos(i+1)}}putAction(t,e,s,i){for(let n=0;nt.bufferLength*4?new S(s,t.nodeSet):null}get parsedPos(){return this.minStackPos}advance(){let t=this.stacks,e=this.minStackPos;let s=this.stacks=[];let i,n;if(this.bigReductionCount>300&&t.length==1){let[e]=t;while(e.forceReduce()&&e.stack.length&&e.stack[e.stack.length-2]>=this.lastBigReductionStart){}this.bigReductionCount=this.lastBigReductionSize=0}for(let o=0;oe){s.push(r)}else if(this.advanceStack(r,s,t)){continue}else{if(!i){i=[];n=[]}i.push(r);let t=this.tokens.getMainToken(r);n.push(t.value,t.end)}break}}if(!s.length){let t=i&&E(i);if(t){if(v)console.log("Finish with "+this.stackID(t));return this.stackToTree(t)}if(this.parser.strict){if(v&&i)console.log("Stuck with token "+(this.tokens.mainToken?this.parser.getName(this.tokens.mainToken.value):"none"));throw new SyntaxError("No parse at "+e)}if(!this.recovering)this.recovering=5}if(this.recovering&&i){let t=this.stoppedAt!=null&&i[0].pos>this.stoppedAt?i[0]:this.runRecovery(i,n,s);if(t){if(v)console.log("Force-finish "+this.stackID(t));return this.stackToTree(t.forceAll())}}if(this.recovering){let t=this.recovering==1?1:this.recovering*3;if(s.length>t){s.sort(((t,e)=>e.score-t.score));while(s.length>t)s.pop()}if(s.some((t=>t.reducePos>e)))this.recovering--}else if(s.length>1){t:for(let t=0;t500&&n.buffer.length>500){if((e.score-n.score||e.buffer.length-n.buffer.length)>0){s.splice(i--,1)}else{s.splice(t--,1);continue t}}}}if(s.length>12)s.splice(12,s.length-12)}this.minStackPos=s[0].pos;for(let o=1;o ":"";if(this.stoppedAt!=null&&n>this.stoppedAt)return t.forceReduce()?t:null;if(this.fragments){let e=t.curContext&&t.curContext.tracker.strict,s=e?t.curContext.hash:0;for(let l=this.fragments.nodeAt(n);l;){let n=this.parser.nodeSet.types[l.type.id]==l.type?o.getGoto(t.state,l.type.id):-1;if(n>-1&&l.length&&(!e||(l.prop(i.NodeProp.contextHash)||0)==s)){t.useNode(l,n);if(v)console.log(r+this.stackID(t)+` (via reuse of ${o.getName(l.type.id)})`);return true}if(!(l instanceof i.Tree)||l.children.length==0||l.positions[0]>0)break;let a=l.children[0];if(a instanceof i.Tree&&l.positions[0]==0)l=a;else break}}let l=o.stateSlot(t.state,4);if(l>0){t.reduce(l);if(v)console.log(r+this.stackID(t)+` (via always-reduce ${o.getName(l&65535)})`);return true}if(t.stack.length>=8400){while(t.stack.length>6e3&&t.forceReduce()){}}let a=this.tokens.getActions(t);for(let i=0;in)e.push(u);else s.push(u)}return false}advanceFully(t,e){let s=t.pos;for(;;){if(!this.advanceStack(t,null,null))return false;if(t.pos>s){T(t,e);return true}}}runRecovery(t,e,s){let i=null,n=false;for(let o=0;o ":"";if(r.deadEnd){if(n)continue;n=true;r.restart();if(v)console.log(h+this.stackID(r)+" (restarted)");let t=this.advanceFully(r,s);if(t)continue}let c=r.split(),f=h;for(let t=0;c.forceReduce()&&t<10;t++){if(v)console.log(f+this.stackID(c)+" (via force-reduce)");let t=this.advanceFully(c,s);if(t)break;if(v)f=this.stackID(c)+" -> "}for(let t of r.recoverByInsert(l)){if(v)console.log(h+this.stackID(t)+" (via recover-insert)");this.advanceFully(t,s)}if(this.stream.end>r.pos){if(a==r.pos){a++;l=0}r.recoverByDelete(l,a);if(v)console.log(h+this.stackID(r)+` (via recover-delete ${this.parser.getName(l)})`);T(r,s)}else if(!i||i.scoret;class O{constructor(t){this.start=t.start;this.shift=t.shift||I;this.reduce=t.reduce||I;this.reuse=t.reuse||I;this.hash=t.hash||(()=>0);this.strict=t.strict!==false}}class D extends i.Parser{constructor(t){super();this.wrappers=[];if(t.version!=14)throw new RangeError(`Parser version (${t.version}) doesn't match runtime version (${14})`);let e=t.nodeNames.split(" ");this.minRepeatTerm=e.length;for(let i=0;it.topRules[e][1]));let n=[];for(let i=0;i=0){o(s,t,l[e++])}else{let i=l[e+-s];for(let n=-s;n>0;n--)o(l[e++],t,i);e++}}}this.nodeSet=new i.NodeSet(e.map(((e,o)=>i.NodeType.define({name:o>=this.minRepeatTerm?undefined:e,id:o,props:n[o],top:s.indexOf(o)>-1,error:o==0,skipped:t.skippedNodes&&t.skippedNodes.indexOf(o)>-1}))));if(t.propSources)this.nodeSet=this.nodeSet.extend(...t.propSources);this.strict=false;this.bufferLength=i.DefaultBufferLength;let r=c(t.tokenData);this.context=t.context;this.specializerSpecs=t.specialized||[];this.specialized=new Uint16Array(this.specializerSpecs.length);for(let i=0;itypeof t=="number"?new d(r,t):t));this.topRules=t.topRules;this.dialects=t.dialects||{};this.dynamicPrecedences=t.dynamicPrecedences||null;this.tokenPrecTable=t.tokenPrec;this.termNames=t.termNames||null;this.maxNode=this.nodeSet.types.length-1;this.dialect=this.parseDialect();this.top=this.topRules[Object.keys(this.topRules)[0]]}createParse(t,e,s){let i=new P(this,t,e,s);for(let n of this.wrappers)i=n(i,t,e,s);return i}getGoto(t,e,s=false){let i=this.goto;if(e>=i[0])return-1;for(let n=i[e+1];;){let e=i[n++],o=e&1;let r=i[n++];if(o&&s)return r;for(let s=n+(e>>1);n0}validAction(t,e){return!!this.allActions(t,(t=>t==e?true:null))}allActions(t,e){let s=this.stateSlot(t,4);let i=s?e(s):undefined;for(let n=this.stateSlot(t,1);i==null;n+=3){if(this.data[n]==65535){if(this.data[n+1]==1)n=R(this.data,n+2);else break}i=e(R(this.data,n+1))}return i}nextStates(t){let e=[];for(let s=this.stateSlot(t,1);;s+=3){if(this.data[s]==65535){if(this.data[s+1]==1)s=R(this.data,s+2);else break}if((this.data[s+2]&65536>>16)==0){let t=this.data[s+1];if(!e.some(((e,s)=>s&1&&e==t)))e.push(this.data[s],t)}}return e}configure(t){let e=Object.assign(Object.create(D.prototype),this);if(t.props)e.nodeSet=this.nodeSet.extend(...t.props);if(t.top){let s=this.topRules[t.top];if(!s)throw new RangeError(`Invalid top rule name ${t.top}`);e.top=s}if(t.tokenizers)e.tokenizers=this.tokenizers.map((e=>{let s=t.tokenizers.find((t=>t.from==e));return s?s.to:e}));if(t.specializers){e.specializers=this.specializers.slice();e.specializerSpecs=this.specializerSpecs.map(((s,i)=>{let n=t.specializers.find((t=>t.from==s.external));if(!n)return s;let o=Object.assign(Object.assign({},s),{external:n.to});e.specializers[i]=N(o);return o}))}if(t.contextTracker)e.context=t.contextTracker;if(t.dialect)e.dialect=this.parseDialect(t.dialect);if(t.strict!=null)e.strict=t.strict;if(t.wrap)e.wrappers=e.wrappers.concat(t.wrap);if(t.bufferLength!=null)e.bufferLength=t.bufferLength;return e}hasWrappers(){return this.wrappers.length>0}getName(t){return this.termNames?this.termNames[t]:String(t<=this.maxNode&&this.nodeSet.types[t].name||t)}get eofTerm(){return this.maxNode+1}get topNode(){return this.nodeSet.types[this.top[1]]}dynamicPrecedence(t){let e=this.dynamicPrecedences;return e==null?0:e[t]||0}parseDialect(t){let e=Object.keys(this.dialects),s=e.map((()=>false));if(t)for(let n of t.split(" ")){let t=e.indexOf(n);if(t>=0)s[t]=true}let i=null;for(let n=0;nt)&&s.p.parser.stateFlag(s.state,2)&&(!e||e.scoret.external(s,i)<<1|e}return t.get}},65606:t=>{var e=t.exports={};var s;var i;function n(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}(function(){try{if(typeof setTimeout==="function"){s=setTimeout}else{s=n}}catch(t){s=n}try{if(typeof clearTimeout==="function"){i=clearTimeout}else{i=o}}catch(t){i=o}})();function r(t){if(s===setTimeout){return setTimeout(t,0)}if((s===n||!s)&&setTimeout){s=setTimeout;return setTimeout(t,0)}try{return s(t,0)}catch(e){try{return s.call(null,t,0)}catch(e){return s.call(this,t,0)}}}function l(t){if(i===clearTimeout){return clearTimeout(t)}if((i===o||!i)&&clearTimeout){i=clearTimeout;return clearTimeout(t)}try{return i(t)}catch(e){try{return i.call(null,t)}catch(e){return i.call(this,t)}}}var a=[];var h=false;var c;var f=-1;function u(){if(!h||!c){return}h=false;if(c.length){a=c.concat(a)}else{f=-1}if(a.length){p()}}function p(){if(h){return}var t=r(u);h=true;var e=a.length;while(e){c=a;a=[];while(++f1){for(var s=1;s{a.r(t);a.d(t,{asterisk:()=>o});var n=["exten","same","include","ignorepat","switch"],i=["#include","#exec"],r=["addqueuemember","adsiprog","aelsub","agentlogin","agentmonitoroutgoing","agi","alarmreceiver","amd","answer","authenticate","background","backgrounddetect","bridge","busy","callcompletioncancel","callcompletionrequest","celgenuserevent","changemonitor","chanisavail","channelredirect","chanspy","clearhash","confbridge","congestion","continuewhile","controlplayback","dahdiacceptr2call","dahdibarge","dahdiras","dahdiscan","dahdisendcallreroutingfacility","dahdisendkeypadfacility","datetime","dbdel","dbdeltree","deadagi","dial","dictate","directory","disa","dumpchan","eagi","echo","endwhile","exec","execif","execiftime","exitwhile","extenspy","externalivr","festival","flash","followme","forkcdr","getcpeid","gosub","gosubif","goto","gotoif","gotoiftime","hangup","iax2provision","ices","importvar","incomplete","ivrdemo","jabberjoin","jabberleave","jabbersend","jabbersendgroup","jabberstatus","jack","log","macro","macroexclusive","macroexit","macroif","mailboxexists","meetme","meetmeadmin","meetmechanneladmin","meetmecount","milliwatt","minivmaccmess","minivmdelete","minivmgreet","minivmmwi","minivmnotify","minivmrecord","mixmonitor","monitor","morsecode","mp3player","mset","musiconhold","nbscat","nocdr","noop","odbc","odbc","odbcfinish","originate","ospauth","ospfinish","osplookup","ospnext","page","park","parkandannounce","parkedcall","pausemonitor","pausequeuemember","pickup","pickupchan","playback","playtones","privacymanager","proceeding","progress","queue","queuelog","raiseexception","read","readexten","readfile","receivefax","receivefax","receivefax","record","removequeuemember","resetcdr","retrydial","return","ringing","sayalpha","saycountedadj","saycountednoun","saycountpl","saydigits","saynumber","sayphonetic","sayunixtime","senddtmf","sendfax","sendfax","sendfax","sendimage","sendtext","sendurl","set","setamaflags","setcallerpres","setmusiconhold","sipaddheader","sipdtmfmode","sipremoveheader","skel","slastation","slatrunk","sms","softhangup","speechactivategrammar","speechbackground","speechcreate","speechdeactivategrammar","speechdestroy","speechloadgrammar","speechprocessingsound","speechstart","speechunloadgrammar","stackpop","startmusiconhold","stopmixmonitor","stopmonitor","stopmusiconhold","stopplaytones","system","testclient","testserver","transfer","tryexec","trysystem","unpausemonitor","unpausequeuemember","userevent","verbose","vmauthenticate","vmsayname","voicemail","voicemailmain","wait","waitexten","waitfornoise","waitforring","waitforsilence","waitmusiconhold","waituntil","while","zapateller"];function s(e,t){var a="";var r=e.next();if(t.blockComment){if(r=="-"&&e.match("-;",true)){t.blockComment=false}else if(e.skipTo("--;")){e.next();e.next();e.next();t.blockComment=false}else{e.skipToEnd()}return"comment"}if(r==";"){if(e.match("--",true)){if(!e.match("-",false)){t.blockComment=true;return"comment"}}e.skipToEnd();return"comment"}if(r=="["){e.skipTo("]");e.eat("]");return"header"}if(r=='"'){e.skipTo('"');return"string"}if(r=="'"){e.skipTo("'");return"string.special"}if(r=="#"){e.eatWhile(/\w/);a=e.current();if(i.indexOf(a)!==-1){e.skipToEnd();return"strong"}}if(r=="$"){var s=e.peek();if(s=="{"){e.skipTo("}");e.eat("}");return"variableName.special"}}e.eatWhile(/\w/);a=e.current();if(n.indexOf(a)!==-1){t.extenStart=true;switch(a){case"same":t.extenSame=true;break;case"include":case"switch":case"ignorepat":t.extenInclude=true;break;default:break}return"atom"}}const o={name:"asterisk",startState:function(){return{blockComment:false,extenStart:false,extenSame:false,extenInclude:false,extenExten:false,extenPriority:false,extenApplication:false}},token:function(e,t){var a="";if(e.eatSpace())return null;if(t.extenStart){e.eatWhile(/[^\s]/);a=e.current();if(/^=>?$/.test(a)){t.extenExten=true;t.extenStart=false;return"strong"}else{t.extenStart=false;e.skipToEnd();return"error"}}else if(t.extenExten){t.extenExten=false;t.extenPriority=true;e.eatWhile(/[^,]/);if(t.extenInclude){e.skipToEnd();t.extenPriority=false;t.extenInclude=false}if(t.extenSame){t.extenPriority=false;t.extenSame=false;t.extenApplication=true}return"tag"}else if(t.extenPriority){t.extenPriority=false;t.extenApplication=true;e.next();if(t.extenSame)return null;e.eatWhile(/[^,]/);return"number"}else if(t.extenApplication){e.eatWhile(/,/);a=e.current();if(a===",")return null;e.eatWhile(/\w/);a=e.current().toLowerCase();t.extenApplication=false;if(r.indexOf(a)!==-1){return"def"}}else{return s(e,t)}return null},languageData:{commentTokens:{line:";",block:{open:";--",close:"--;"}}}}}}]);
\ No newline at end of file
diff --git a/share/jupyter/lab/static/1445.a0e099c27d073217031a.js b/share/jupyter/lab/static/1445.a0e099c27d073217031a.js
new file mode 100644
index 0000000..7acc25e
--- /dev/null
+++ b/share/jupyter/lab/static/1445.a0e099c27d073217031a.js
@@ -0,0 +1 @@
+(self["webpackChunk_jupyterlab_application_top"]=self["webpackChunk_jupyterlab_application_top"]||[]).push([[1445],{49746:()=>{},19977:()=>{},197:()=>{},21866:()=>{},52739:()=>{}}]);
\ No newline at end of file
diff --git a/share/jupyter/lab/static/1449.7026e8748d2a77e15d5b.js b/share/jupyter/lab/static/1449.7026e8748d2a77e15d5b.js
new file mode 100644
index 0000000..bc96fc6
--- /dev/null
+++ b/share/jupyter/lab/static/1449.7026e8748d2a77e15d5b.js
@@ -0,0 +1 @@
+"use strict";(self["webpackChunk_jupyterlab_application_top"]=self["webpackChunk_jupyterlab_application_top"]||[]).push([[1449],{21449:(e,i,$)=>{$.r(i);$.d(i,{mirc:()=>m});function r(e){var i={},$=e.split(" ");for(var r=0;r<$.length;++r)i[$[r]]=true;return i}var t=r("$! $$ $& $? $+ $abook $abs $active $activecid "+"$activewid $address $addtok $agent $agentname $agentstat $agentver "+"$alias $and $anick $ansi2mirc $aop $appactive $appstate $asc $asctime "+"$asin $atan $avoice $away $awaymsg $awaytime $banmask $base $bfind "+"$binoff $biton $bnick $bvar $bytes $calc $cb $cd $ceil $chan $chanmodes "+"$chantypes $chat $chr $cid $clevel $click $cmdbox $cmdline $cnick $color "+"$com $comcall $comchan $comerr $compact $compress $comval $cos $count "+"$cr $crc $creq $crlf $ctime $ctimer $ctrlenter $date $day $daylight "+"$dbuh $dbuw $dccignore $dccport $dde $ddename $debug $decode $decompress "+"$deltok $devent $dialog $did $didreg $didtok $didwm $disk $dlevel $dll "+"$dllcall $dname $dns $duration $ebeeps $editbox $emailaddr $encode $error "+"$eval $event $exist $feof $ferr $fgetc $file $filename $filtered $finddir "+"$finddirn $findfile $findfilen $findtok $fline $floor $fopen $fread $fserve "+"$fulladdress $fulldate $fullname $fullscreen $get $getdir $getdot $gettok $gmt "+"$group $halted $hash $height $hfind $hget $highlight $hnick $hotline "+"$hotlinepos $ial $ialchan $ibl $idle $iel $ifmatch $ignore $iif $iil "+"$inelipse $ini $inmidi $inpaste $inpoly $input $inrect $inroundrect "+"$insong $instok $int $inwave $ip $isalias $isbit $isdde $isdir $isfile "+"$isid $islower $istok $isupper $keychar $keyrpt $keyval $knick $lactive "+"$lactivecid $lactivewid $left $len $level $lf $line $lines $link $lock "+"$lock $locked $log $logstamp $logstampfmt $longfn $longip $lower $ltimer "+"$maddress $mask $matchkey $matchtok $md5 $me $menu $menubar $menucontext "+"$menutype $mid $middir $mircdir $mircexe $mircini $mklogfn $mnick $mode "+"$modefirst $modelast $modespl $mouse $msfile $network $newnick $nick $nofile "+"$nopath $noqt $not $notags $notify $null $numeric $numok $oline $onpoly "+"$opnick $or $ord $os $passivedcc $pic $play $pnick $port $portable $portfree "+"$pos $prefix $prop $protect $puttok $qt $query $rand $r $rawmsg $read $readomo "+"$readn $regex $regml $regsub $regsubex $remove $remtok $replace $replacex "+"$reptok $result $rgb $right $round $scid $scon $script $scriptdir $scriptline "+"$sdir $send $server $serverip $sfile $sha1 $shortfn $show $signal $sin "+"$site $sline $snick $snicks $snotify $sock $sockbr $sockerr $sockname "+"$sorttok $sound $sqrt $ssl $sreq $sslready $status $strip $str $stripped "+"$syle $submenu $switchbar $tan $target $ticks $time $timer $timestamp "+"$timestampfmt $timezone $tip $titlebar $toolbar $treebar $trust $ulevel "+"$ulist $upper $uptime $url $usermode $v1 $v2 $var $vcmd $vcmdstat $vcmdver "+"$version $vnick $vol $wid $width $wildsite $wildtok $window $wrap $xor");var a=r("abook ajinvite alias aline ame amsg anick aop auser autojoin avoice "+"away background ban bcopy beep bread break breplace bset btrunc bunset bwrite "+"channel clear clearall cline clipboard close cnick color comclose comopen "+"comreg continue copy creq ctcpreply ctcps dcc dccserver dde ddeserver "+"debug dec describe dialog did didtok disable disconnect dlevel dline dll "+"dns dqwindow drawcopy drawdot drawfill drawline drawpic drawrect drawreplace "+"drawrot drawsave drawscroll drawtext ebeeps echo editbox emailaddr enable "+"events exit fclose filter findtext finger firewall flash flist flood flush "+"flushini font fopen fseek fsend fserve fullname fwrite ghide gload gmove "+"gopts goto gplay gpoint gqreq groups gshow gsize gstop gtalk gunload hadd "+"halt haltdef hdec hdel help hfree hinc hload hmake hop hsave ial ialclear "+"ialmark identd if ignore iline inc invite iuser join kick linesep links list "+"load loadbuf localinfo log mdi me menubar mkdir mnick mode msg nick noop notice "+"notify omsg onotice part partall pdcc perform play playctrl pop protect pvoice "+"qme qmsg query queryn quit raw reload remini remote remove rename renwin "+"reseterror resetidle return rlevel rline rmdir run ruser save savebuf saveini "+"say scid scon server set showmirc signam sline sockaccept sockclose socklist "+"socklisten sockmark sockopen sockpause sockread sockrename sockudp sockwrite "+"sound speak splay sreq strip switchbar timer timestamp titlebar tnick tokenize "+"toolbar topic tray treebar ulist unload unset unsetall updatenl url uwho "+"var vcadd vcmd vcrem vol while whois window winhelp write writeint if isalnum "+"isalpha isaop isavoice isban ischan ishop isignore isin isincs isletter islower "+"isnotify isnum ison isop isprotect isreg isupper isvoice iswm iswmcs "+"elseif else goto menu nicklist status title icon size option text edit "+"button check radio box scroll list combo link tab item");var n=r("if elseif else and not or eq ne in ni for foreach while switch");var s=/[+\-*&%=<>!?^\/\|]/;function o(e,i,$){i.tokenize=$;return $(e,i)}function l(e,i){var $=i.beforeParams;i.beforeParams=false;var r=e.next();if(/[\[\]{}\(\),\.]/.test(r)){if(r=="("&&$)i.inParams=true;else if(r==")")i.inParams=false;return null}else if(/\d/.test(r)){e.eatWhile(/[\w\.]/);return"number"}else if(r=="\\"){e.eat("\\");e.eat(/./);return"number"}else if(r=="/"&&e.eat("*")){return o(e,i,c)}else if(r==";"&&e.match(/ *\( *\(/)){return o(e,i,d)}else if(r==";"&&!i.inParams){e.skipToEnd();return"comment"}else if(r=='"'){e.eat(/"/);return"keyword"}else if(r=="$"){e.eatWhile(/[$_a-z0-9A-Z\.:]/);if(t&&t.propertyIsEnumerable(e.current().toLowerCase())){return"keyword"}else{i.beforeParams=true;return"builtin"}}else if(r=="%"){e.eatWhile(/[^,\s()]/);i.beforeParams=true;return"string"}else if(s.test(r)){e.eatWhile(s);return"operator"}else{e.eatWhile(/[\w\$_{}]/);var l=e.current().toLowerCase();if(a&&a.propertyIsEnumerable(l))return"keyword";if(n&&n.propertyIsEnumerable(l)){i.beforeParams=true;return"keyword"}return null}}function c(e,i){var $=false,r;while(r=e.next()){if(r=="/"&&$){i.tokenize=l;break}$=r=="*"}return"comment"}function d(e,i){var $=0,r;while(r=e.next()){if(r==";"&&$==2){i.tokenize=l;break}if(r==")")$++;else if(r!=" ")$=0}return"meta"}const m={name:"mirc",startState:function(){return{tokenize:l,beforeParams:false,inParams:false}},token:function(e,i){if(e.eatSpace())return null;return i.tokenize(e,i)}}}}]);
\ No newline at end of file
diff --git a/share/jupyter/lab/static/1483.c0aab21b263e7ea33653.js b/share/jupyter/lab/static/1483.c0aab21b263e7ea33653.js
new file mode 100644
index 0000000..909938c
--- /dev/null
+++ b/share/jupyter/lab/static/1483.c0aab21b263e7ea33653.js
@@ -0,0 +1 @@
+"use strict";(self["webpackChunk_jupyterlab_application_top"]=self["webpackChunk_jupyterlab_application_top"]||[]).push([[1483],{11483:(t,e,n)=>{n.d(e,{diagram:()=>gt});var i=n(42418);var r=n(70416);var s=n(1218);function o(t,e){let n;if(e===undefined){for(const e of t){if(e!=null&&(n>e||n===undefined&&e>=e)){n=e}}}else{let i=-1;for(let r of t){if((r=e(r,++i,t))!=null&&(n>r||n===undefined&&r>=r)){n=r}}}return n}function a(t){return t.target.depth}function l(t){return t.depth}function c(t,e){return e-1-t.height}function h(t,e){return t.sourceLinks.length?t.depth:e-1}function u(t){return t.targetLinks.length?t.depth:t.sourceLinks.length?o(t.sourceLinks,a)-1:0}function f(t,e){let n=0;if(e===undefined){for(let e of t){if(e=+e){n+=e}}}else{let i=-1;for(let r of t){if(r=+e(r,++i,t)){n+=r}}}return n}function y(t,e){let n;if(e===undefined){for(const e of t){if(e!=null&&(n=e)){n=e}}}else{let i=-1;for(let r of t){if((r=e(r,++i,t))!=null&&(n=r)){n=r}}}return n}function d(t){return function(){return t}}function p(t,e){return _(t.source,e.source)||t.index-e.index}function g(t,e){return _(t.target,e.target)||t.index-e.index}function _(t,e){return t.y0-e.y0}function k(t){return t.value}function x(t){return t.index}function m(t){return t.nodes}function v(t){return t.links}function b(t,e){const n=t.get(e);if(!n)throw new Error("missing: "+e);return n}function w({nodes:t}){for(const e of t){let t=e.y0;let n=t;for(const i of e.sourceLinks){i.y0=t+i.width/2;t+=i.width}for(const i of e.targetLinks){i.y1=n+i.width/2;n+=i.width}}}function S(){let t=0,e=0,n=1,i=1;let r=24;let s=8,a;let l=x;let c=h;let u;let S;let L=m;let E=v;let K=6;function A(){const t={nodes:L.apply(null,arguments),links:E.apply(null,arguments)};M(t);I(t);T(t);C(t);P(t);w(t);return t}A.update=function(t){w(t);return t};A.nodeId=function(t){return arguments.length?(l=typeof t==="function"?t:d(t),A):l};A.nodeAlign=function(t){return arguments.length?(c=typeof t==="function"?t:d(t),A):c};A.nodeSort=function(t){return arguments.length?(u=t,A):u};A.nodeWidth=function(t){return arguments.length?(r=+t,A):r};A.nodePadding=function(t){return arguments.length?(s=a=+t,A):s};A.nodes=function(t){return arguments.length?(L=typeof t==="function"?t:d(t),A):L};A.links=function(t){return arguments.length?(E=typeof t==="function"?t:d(t),A):E};A.linkSort=function(t){return arguments.length?(S=t,A):S};A.size=function(r){return arguments.length?(t=e=0,n=+r[0],i=+r[1],A):[n-t,i-e]};A.extent=function(r){return arguments.length?(t=+r[0][0],n=+r[1][0],e=+r[0][1],i=+r[1][1],A):[[t,e],[n,i]]};A.iterations=function(t){return arguments.length?(K=+t,A):K};function M({nodes:t,links:e}){for(const[i,r]of t.entries()){r.index=i;r.sourceLinks=[];r.targetLinks=[]}const n=new Map(t.map(((e,n)=>[l(e,n,t),e])));for(const[i,r]of e.entries()){r.index=i;let{source:t,target:e}=r;if(typeof t!=="object")t=r.source=b(n,t);if(typeof e!=="object")e=r.target=b(n,e);t.sourceLinks.push(r);e.targetLinks.push(r)}if(S!=null){for(const{sourceLinks:e,targetLinks:n}of t){e.sort(S);n.sort(S)}}}function I({nodes:t}){for(const e of t){e.value=e.fixedValue===undefined?Math.max(f(e.sourceLinks,k),f(e.targetLinks,k)):e.fixedValue}}function T({nodes:t}){const e=t.length;let n=new Set(t);let i=new Set;let r=0;while(n.size){for(const t of n){t.depth=r;for(const{target:e}of t.sourceLinks){i.add(e)}}if(++r>e)throw new Error("circular link");n=i;i=new Set}}function C({nodes:t}){const e=t.length;let n=new Set(t);let i=new Set;let r=0;while(n.size){for(const t of n){t.height=r;for(const{source:e}of t.targetLinks){i.add(e)}}if(++r>e)throw new Error("circular link");n=i;i=new Set}}function D({nodes:e}){const i=y(e,(t=>t.depth))+1;const s=(n-t-r)/(i-1);const o=new Array(i);for(const n of e){const e=Math.max(0,Math.min(i-1,Math.floor(c.call(null,n,i))));n.layer=e;n.x0=t+e*s;n.x1=n.x0+r;if(o[e])o[e].push(n);else o[e]=[n]}if(u)for(const t of o){t.sort(u)}return o}function N(t){const n=o(t,(t=>(i-e-(t.length-1)*a)/f(t,k)));for(const r of t){let t=e;for(const e of r){e.y0=t;e.y1=t+e.value*n;t=e.y1+a;for(const t of e.sourceLinks){t.width=t.value*n}}t=(i-t+a)/(r.length+1);for(let e=0;et.length))-1));N(n);for(let e=0;e0))continue;let r=(n/i-t.y0)*e;t.y0+=r;t.y1+=r;F(t)}if(u===undefined)r.sort(_);j(r,n)}}function $(t,e,n){for(let i=t.length,r=i-2;r>=0;--r){const i=t[r];for(const t of i){let n=0;let i=0;for(const{target:e,value:s}of t.sourceLinks){let r=s*(e.layer-t.layer);n+=G(t,e)*r;i+=r}if(!(i>0))continue;let r=(n/i-t.y0)*e;t.y0+=r;t.y1+=r;F(t)}if(u===undefined)i.sort(_);j(i,n)}}function j(t,n){const r=t.length>>1;const s=t[r];U(t,s.y0-a,r-1,n);z(t,s.y1+a,r+1,n);U(t,i,t.length-1,n);z(t,e,0,n)}function z(t,e,n,i){for(;n1e-6)r.y0+=s,r.y1+=s;e=r.y1+a}}function U(t,e,n,i){for(;n>=0;--n){const r=t[n];const s=(r.y1-e)*i;if(s>1e-6)r.y0-=s,r.y1-=s;e=r.y0-a}}function F({sourceLinks:t,targetLinks:e}){if(S===undefined){for(const{source:{sourceLinks:t}}of e){t.sort(g)}for(const{target:{targetLinks:e}}of t){e.sort(p)}}}function R(t){if(S===undefined){for(const{sourceLinks:e,targetLinks:n}of t){e.sort(g);n.sort(p)}}}function W(t,e){let n=t.y0-(t.sourceLinks.length-1)*a/2;for(const{target:i,width:r}of t.sourceLinks){if(i===e)break;n+=r+a}for(const{source:i,width:r}of e.targetLinks){if(i===t)break;n-=r}return n}function G(t,e){let n=e.y0-(e.targetLinks.length-1)*a/2;for(const{source:i,width:r}of e.targetLinks){if(i===t)break;n+=r+a}for(const{target:i,width:r}of t.sourceLinks){if(i===e)break;n-=r}return n}return A}var L=Math.PI,E=2*L,K=1e-6,A=E-K;function M(){this._x0=this._y0=this._x1=this._y1=null;this._=""}function I(){return new M}M.prototype=I.prototype={constructor:M,moveTo:function(t,e){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)},closePath:function(){if(this._x1!==null){this._x1=this._x0,this._y1=this._y0;this._+="Z"}},lineTo:function(t,e){this._+="L"+(this._x1=+t)+","+(this._y1=+e)},quadraticCurveTo:function(t,e,n,i){this._+="Q"+ +t+","+ +e+","+(this._x1=+n)+","+(this._y1=+i)},bezierCurveTo:function(t,e,n,i,r,s){this._+="C"+ +t+","+ +e+","+ +n+","+ +i+","+(this._x1=+r)+","+(this._y1=+s)},arcTo:function(t,e,n,i,r){t=+t,e=+e,n=+n,i=+i,r=+r;var s=this._x1,o=this._y1,a=n-t,l=i-e,c=s-t,h=o-e,u=c*c+h*h;if(r<0)throw new Error("negative radius: "+r);if(this._x1===null){this._+="M"+(this._x1=t)+","+(this._y1=e)}else if(!(u>K));else if(!(Math.abs(h*a-l*c)>K)||!r){this._+="L"+(this._x1=t)+","+(this._y1=e)}else{var f=n-s,y=i-o,d=a*a+l*l,p=f*f+y*y,g=Math.sqrt(d),_=Math.sqrt(u),k=r*Math.tan((L-Math.acos((d+u-p)/(2*g*_)))/2),x=k/_,m=k/g;if(Math.abs(x-1)>K){this._+="L"+(t+x*c)+","+(e+x*h)}this._+="A"+r+","+r+",0,0,"+ +(h*f>c*y)+","+(this._x1=t+m*a)+","+(this._y1=e+m*l)}},arc:function(t,e,n,i,r,s){t=+t,e=+e,n=+n,s=!!s;var o=n*Math.cos(i),a=n*Math.sin(i),l=t+o,c=e+a,h=1^s,u=s?i-r:r-i;if(n<0)throw new Error("negative radius: "+n);if(this._x1===null){this._+="M"+l+","+c}else if(Math.abs(this._x1-l)>K||Math.abs(this._y1-c)>K){this._+="L"+l+","+c}if(!n)return;if(u<0)u=u%E+E;if(u>A){this._+="A"+n+","+n+",0,1,"+h+","+(t-o)+","+(e-a)+"A"+n+","+n+",0,1,"+h+","+(this._x1=l)+","+(this._y1=c)}else if(u>K){this._+="A"+n+","+n+",0,"+ +(u>=L)+","+h+","+(this._x1=t+n*Math.cos(r))+","+(this._y1=e+n*Math.sin(r))}},rect:function(t,e,n,i){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)+"h"+ +n+"v"+ +i+"h"+-n+"Z"},toString:function(){return this._}};const T=I;var C=Array.prototype.slice;function D(t){return function e(){return t}}function N(t){return t[0]}function P(t){return t[1]}function O(t){return t.source}function $(t){return t.target}function j(t){var e=O,n=$,i=N,r=P,s=null;function o(){var o,a=C.call(arguments),l=e.apply(this,a),c=n.apply(this,a);if(!s)s=o=T();t(s,+i.apply(this,(a[0]=l,a)),+r.apply(this,a),+i.apply(this,(a[0]=c,a)),+r.apply(this,a));if(o)return s=null,o+""||null}o.source=function(t){return arguments.length?(e=t,o):e};o.target=function(t){return arguments.length?(n=t,o):n};o.x=function(t){return arguments.length?(i=typeof t==="function"?t:D(+t),o):i};o.y=function(t){return arguments.length?(r=typeof t==="function"?t:D(+t),o):r};o.context=function(t){return arguments.length?(s=t==null?null:t,o):s};return o}function z(t,e,n,i,r){t.moveTo(e,n);t.bezierCurveTo(e=(e+i)/2,n,e,r,i,r)}function U(t,e,n,i,r){t.moveTo(e,n);t.bezierCurveTo(e,n=(n+r)/2,i,n,i,r)}function F(t,e,n,i,r){var s=pointRadial(e,n),o=pointRadial(e,n=(n+r)/2),a=pointRadial(i,n),l=pointRadial(i,r);t.moveTo(s[0],s[1]);t.bezierCurveTo(o[0],o[1],a[0],a[1],l[0],l[1])}function R(){return j(z)}function W(){return j(U)}function G(){var t=j(F);t.angle=t.x,delete t.x;t.radius=t.y,delete t.y;return t}function V(t){return[t.source.x1,t.y0]}function X(t){return[t.target.x0,t.y1]}function Y(){return R().source(V).target(X)}var q=function(){var t=(0,r.K2)((function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n}),"o"),e=[1,9],n=[1,10],i=[1,5,10,12];var s={trace:(0,r.K2)((function t(){}),"trace"),yy:{},symbols_:{error:2,start:3,SANKEY:4,NEWLINE:5,csv:6,opt_eof:7,record:8,csv_tail:9,EOF:10,"field[source]":11,COMMA:12,"field[target]":13,"field[value]":14,field:15,escaped:16,non_escaped:17,DQUOTE:18,ESCAPED_TEXT:19,NON_ESCAPED_TEXT:20,$accept:0,$end:1},terminals_:{2:"error",4:"SANKEY",5:"NEWLINE",10:"EOF",11:"field[source]",12:"COMMA",13:"field[target]",14:"field[value]",18:"DQUOTE",19:"ESCAPED_TEXT",20:"NON_ESCAPED_TEXT"},productions_:[0,[3,4],[6,2],[9,2],[9,0],[7,1],[7,0],[8,5],[15,1],[15,1],[16,3],[17,1]],performAction:(0,r.K2)((function t(e,n,i,r,s,o,a){var l=o.length-1;switch(s){case 7:const t=r.findOrCreateNode(o[l-4].trim().replaceAll('""','"'));const e=r.findOrCreateNode(o[l-2].trim().replaceAll('""','"'));const n=parseFloat(o[l].trim());r.addLink(t,e,n);break;case 8:case 9:case 11:this.$=o[l];break;case 10:this.$=o[l-1];break}}),"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},{5:[1,3]},{6:4,8:5,15:6,16:7,17:8,18:e,20:n},{1:[2,6],7:11,10:[1,12]},t(n,[2,4],{9:13,5:[1,14]}),{12:[1,15]},t(i,[2,8]),t(i,[2,9]),{19:[1,16]},t(i,[2,11]),{1:[2,1]},{1:[2,5]},t(n,[2,2]),{6:17,8:5,15:6,16:7,17:8,18:e,20:n},{15:18,16:7,17:8,18:e,20:n},{18:[1,19]},t(n,[2,3]),{12:[1,20]},t(i,[2,10]),{15:21,16:7,17:8,18:e,20:n},t([1,5,10],[2,7])],defaultActions:{11:[2,1],12:[2,5]},parseError:(0,r.K2)((function t(e,n){if(n.recoverable){this.trace(e)}else{var i=new Error(e);i.hash=n;throw i}}),"parseError"),parse:(0,r.K2)((function t(e){var n=this,i=[0],s=[],o=[null],a=[],l=this.table,c="",h=0,u=0,f=0,y=2,d=1;var p=a.slice.call(arguments,1);var g=Object.create(this.lexer);var _={yy:{}};for(var k in this.yy){if(Object.prototype.hasOwnProperty.call(this.yy,k)){_.yy[k]=this.yy[k]}}g.setInput(e,_.yy);_.yy.lexer=g;_.yy.parser=this;if(typeof g.yylloc=="undefined"){g.yylloc={}}var x=g.yylloc;a.push(x);var m=g.options&&g.options.ranges;if(typeof _.yy.parseError==="function"){this.parseError=_.yy.parseError}else{this.parseError=Object.getPrototypeOf(this).parseError}function v(t){i.length=i.length-2*t;o.length=o.length-t;a.length=a.length-t}(0,r.K2)(v,"popStack");function b(){var t;t=s.pop()||g.lex()||d;if(typeof t!=="number"){if(t instanceof Array){s=t;t=s.pop()}t=n.symbols_[t]||t}return t}(0,r.K2)(b,"lex");var w,S,L,E,K,A,M={},I,T,C,D;while(true){L=i[i.length-1];if(this.defaultActions[L]){E=this.defaultActions[L]}else{if(w===null||typeof w=="undefined"){w=b()}E=l[L]&&l[L][w]}if(typeof E==="undefined"||!E.length||!E[0]){var N="";D=[];for(I in l[L]){if(this.terminals_[I]&&I>y){D.push("'"+this.terminals_[I]+"'")}}if(g.showPosition){N="Parse error on line "+(h+1)+":\n"+g.showPosition()+"\nExpecting "+D.join(", ")+", got '"+(this.terminals_[w]||w)+"'"}else{N="Parse error on line "+(h+1)+": Unexpected "+(w==d?"end of input":"'"+(this.terminals_[w]||w)+"'")}this.parseError(N,{text:g.match,token:this.terminals_[w]||w,line:g.yylineno,loc:x,expected:D})}if(E[0]instanceof Array&&E.length>1){throw new Error("Parse Error: multiple actions possible at state: "+L+", token: "+w)}switch(E[0]){case 1:i.push(w);o.push(g.yytext);a.push(g.yylloc);i.push(E[1]);w=null;if(!S){u=g.yyleng;c=g.yytext;h=g.yylineno;x=g.yylloc;if(f>0){f--}}else{w=S;S=null}break;case 2:T=this.productions_[E[1]][1];M.$=o[o.length-T];M._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column};if(m){M._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]}A=this.performAction.apply(M,[c,u,h,_.yy,E[1],o,a].concat(p));if(typeof A!=="undefined"){return A}if(T){i=i.slice(0,-1*T*2);o=o.slice(0,-1*T);a=a.slice(0,-1*T)}i.push(this.productions_[E[1]][0]);o.push(M.$);a.push(M._$);C=l[i[i.length-2]][i[i.length-1]];i.push(C);break;case 3:return true}}return true}),"parse")};var o=function(){var t={EOF:1,parseError:(0,r.K2)((function t(e,n){if(this.yy.parser){this.yy.parser.parseError(e,n)}else{throw new Error(e)}}),"parseError"),setInput:(0,r.K2)((function(t,e){this.yy=e||this.yy||{};this._input=t;this._more=this._backtrack=this.done=false;this.yylineno=this.yyleng=0;this.yytext=this.matched=this.match="";this.conditionStack=["INITIAL"];this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0};if(this.options.ranges){this.yylloc.range=[0,0]}this.offset=0;return this}),"setInput"),input:(0,r.K2)((function(){var t=this._input[0];this.yytext+=t;this.yyleng++;this.offset++;this.match+=t;this.matched+=t;var e=t.match(/(?:\r\n?|\n).*/g);if(e){this.yylineno++;this.yylloc.last_line++}else{this.yylloc.last_column++}if(this.options.ranges){this.yylloc.range[1]++}this._input=this._input.slice(1);return t}),"input"),unput:(0,r.K2)((function(t){var e=t.length;var n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input;this.yytext=this.yytext.substr(0,this.yytext.length-e);this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1);this.matched=this.matched.substr(0,this.matched.length-1);if(n.length-1){this.yylineno-=n.length-1}var r=this.yylloc.range;this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e};if(this.options.ranges){this.yylloc.range=[r[0],r[0]+this.yyleng-e]}this.yyleng=this.yytext.length;return this}),"unput"),more:(0,r.K2)((function(){this._more=true;return this}),"more"),reject:(0,r.K2)((function(){if(this.options.backtrack_lexer){this._backtrack=true}else{return this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}return this}),"reject"),less:(0,r.K2)((function(t){this.unput(this.match.slice(t))}),"less"),pastInput:(0,r.K2)((function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")}),"pastInput"),upcomingInput:(0,r.K2)((function(){var t=this.match;if(t.length<20){t+=this._input.substr(0,20-t.length)}return(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")}),"upcomingInput"),showPosition:(0,r.K2)((function(){var t=this.pastInput();var e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"}),"showPosition"),test_match:(0,r.K2)((function(t,e){var n,i,r;if(this.options.backtrack_lexer){r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done};if(this.options.ranges){r.yylloc.range=this.yylloc.range.slice(0)}}i=t[0].match(/(?:\r\n?|\n).*/g);if(i){this.yylineno+=i.length}this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length};this.yytext+=t[0];this.match+=t[0];this.matches=t;this.yyleng=this.yytext.length;if(this.options.ranges){this.yylloc.range=[this.offset,this.offset+=this.yyleng]}this._more=false;this._backtrack=false;this._input=this._input.slice(t[0].length);this.matched+=t[0];n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]);if(this.done&&this._input){this.done=false}if(n){return n}else if(this._backtrack){for(var s in r){this[s]=r[s]}return false}return false}),"test_match"),next:(0,r.K2)((function(){if(this.done){return this.EOF}if(!this._input){this.done=true}var t,e,n,i;if(!this._more){this.yytext="";this.match=""}var r=this._currentRules();for(var s=0;se[0].length)){e=n;i=s;if(this.options.backtrack_lexer){t=this.test_match(n,r[s]);if(t!==false){return t}else if(this._backtrack){e=false;continue}else{return false}}else if(!this.options.flex){break}}}if(e){t=this.test_match(e,r[i]);if(t!==false){return t}return false}if(this._input===""){return this.EOF}else{return this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}}),"next"),lex:(0,r.K2)((function t(){var e=this.next();if(e){return e}else{return this.lex()}}),"lex"),begin:(0,r.K2)((function t(e){this.conditionStack.push(e)}),"begin"),popState:(0,r.K2)((function t(){var e=this.conditionStack.length-1;if(e>0){return this.conditionStack.pop()}else{return this.conditionStack[0]}}),"popState"),_currentRules:(0,r.K2)((function t(){if(this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules}else{return this.conditions["INITIAL"].rules}}),"_currentRules"),topState:(0,r.K2)((function t(e){e=this.conditionStack.length-1-Math.abs(e||0);if(e>=0){return this.conditionStack[e]}else{return"INITIAL"}}),"topState"),pushState:(0,r.K2)((function t(e){this.begin(e)}),"pushState"),stateStackSize:(0,r.K2)((function t(){return this.conditionStack.length}),"stateStackSize"),options:{"case-insensitive":true},performAction:(0,r.K2)((function t(e,n,i,r){var s=r;switch(i){case 0:this.pushState("csv");return 4;break;case 1:this.pushState("csv");return 4;break;case 2:return 10;break;case 3:return 5;break;case 4:return 12;break;case 5:this.pushState("escaped_text");return 18;break;case 6:return 20;break;case 7:this.popState("escaped_text");return 18;break;case 8:return 19;break}}),"anonymous"),rules:[/^(?:sankey-beta\b)/i,/^(?:sankey\b)/i,/^(?:$)/i,/^(?:((\u000D\u000A)|(\u000A)))/i,/^(?:(\u002C))/i,/^(?:(\u0022))/i,/^(?:([\u0020-\u0021\u0023-\u002B\u002D-\u007E])*)/i,/^(?:(\u0022)(?!(\u0022)))/i,/^(?:(([\u0020-\u0021\u0023-\u002B\u002D-\u007E])|(\u002C)|(\u000D)|(\u000A)|(\u0022)(\u0022))*)/i],conditions:{csv:{rules:[2,3,4,5,6,7,8],inclusive:false},escaped_text:{rules:[7,8],inclusive:false},INITIAL:{rules:[0,1,2,3,4,5,6,7,8],inclusive:true}}};return t}();s.lexer=o;function a(){this.yy={}}(0,r.K2)(a,"Parser");a.prototype=s;s.Parser=a;return new a}();q.parser=q;var Q=q;var B=[];var Z=[];var H=new Map;var J=(0,r.K2)((()=>{B=[];Z=[];H=new Map;(0,i.IU)()}),"clear");var tt=class{constructor(t,e,n=0){this.source=t;this.target=e;this.value=n}static{(0,r.K2)(this,"SankeyLink")}};var et=(0,r.K2)(((t,e,n)=>{B.push(new tt(t,e,n))}),"addLink");var nt=class{constructor(t){this.ID=t}static{(0,r.K2)(this,"SankeyNode")}};var it=(0,r.K2)((t=>{t=i.Y2.sanitizeText(t,(0,i.D7)());let e=H.get(t);if(e===void 0){e=new nt(t);H.set(t,e);Z.push(e)}return e}),"findOrCreateNode");var rt=(0,r.K2)((()=>Z),"getNodes");var st=(0,r.K2)((()=>B),"getLinks");var ot=(0,r.K2)((()=>({nodes:Z.map((t=>({id:t.ID}))),links:B.map((t=>({source:t.source.ID,target:t.target.ID,value:t.value})))})),"getGraph");var at={nodesMap:H,getConfig:(0,r.K2)((()=>(0,i.D7)().sankey),"getConfig"),getNodes:rt,getLinks:st,getGraph:ot,addLink:et,findOrCreateNode:it,getAccTitle:i.iN,setAccTitle:i.SV,getAccDescription:i.m7,setAccDescription:i.EI,getDiagramTitle:i.ab,setDiagramTitle:i.ke,clear:J};var lt=class t{static{(0,r.K2)(this,"Uid")}static{this.count=0}static next(e){return new t(e+ ++t.count)}constructor(t){this.id=t;this.href=`#${t}`}toString(){return"url("+this.href+")"}};var ct={left:l,right:c,center:u,justify:h};var ht=(0,r.K2)((function(t,e,n,o){const{securityLevel:a,sankey:l}=(0,i.D7)();const c=i.ME.sankey;let h;if(a==="sandbox"){h=(0,s.Ltv)("#i"+e)}const u=a==="sandbox"?(0,s.Ltv)(h.nodes()[0].contentDocument.body):(0,s.Ltv)("body");const f=a==="sandbox"?u.select(`[id="${e}"]`):(0,s.Ltv)(`[id="${e}"]`);const y=l?.width??c.width;const d=l?.height??c.width;const p=l?.useMaxWidth??c.useMaxWidth;const g=l?.nodeAlignment??c.nodeAlignment;const _=l?.prefix??c.prefix;const k=l?.suffix??c.suffix;const x=l?.showValues??c.showValues;const m=o.db.getGraph();const v=ct[g];const b=10;const w=S().nodeId((t=>t.id)).nodeWidth(b).nodePadding(10+(x?15:0)).nodeAlign(v).extent([[0,0],[y,d]]);w(m);const L=(0,s.UMr)(s.zt);f.append("g").attr("class","nodes").selectAll(".node").data(m.nodes).join("g").attr("class","node").attr("id",(t=>(t.uid=lt.next("node-")).id)).attr("transform",(function(t){return"translate("+t.x0+","+t.y0+")"})).attr("x",(t=>t.x0)).attr("y",(t=>t.y0)).append("rect").attr("height",(t=>t.y1-t.y0)).attr("width",(t=>t.x1-t.x0)).attr("fill",(t=>L(t.id)));const E=(0,r.K2)((({id:t,value:e})=>{if(!x){return t}return`${t}\n${_}${Math.round(e*100)/100}${k}`}),"getText");f.append("g").attr("class","node-labels").attr("font-size",14).selectAll("text").data(m.nodes).join("text").attr("x",(t=>t.x0(t.y1+t.y0)/2)).attr("dy",`${x?"0":"0.35"}em`).attr("text-anchor",(t=>t.x0(t.uid=lt.next("linearGradient-")).id)).attr("gradientUnits","userSpaceOnUse").attr("x1",(t=>t.source.x1)).attr("x2",(t=>t.target.x0));t.append("stop").attr("offset","0%").attr("stop-color",(t=>L(t.source.id)));t.append("stop").attr("offset","100%").attr("stop-color",(t=>L(t.target.id)))}let M;switch(A){case"gradient":M=(0,r.K2)((t=>t.uid),"coloring");break;case"source":M=(0,r.K2)((t=>L(t.source.id)),"coloring");break;case"target":M=(0,r.K2)((t=>L(t.target.id)),"coloring");break;default:M=A}K.append("path").attr("d",Y()).attr("stroke",M).attr("stroke-width",(t=>Math.max(1,t.width)));(0,i.ot)(void 0,f,0,p)}),"draw");var ut={draw:ht};var ft=(0,r.K2)((t=>{const e=t.replaceAll(/^[^\S\n\r]+|[^\S\n\r]+$/g,"").replaceAll(/([\n\r])+/g,"\n").trim();return e}),"prepareTextForParsing");var yt=(0,r.K2)((t=>`.label {\n font-family: ${t.fontFamily};\n }`),"getStyles");var dt=yt;var pt=Q.parse.bind(Q);Q.parse=t=>pt(ft(t));var gt={styles:dt,parser:Q,db:at,renderer:ut}}}]);
\ No newline at end of file
diff --git a/share/jupyter/lab/static/1491.2ba7986aa8d599fec5d0.js b/share/jupyter/lab/static/1491.2ba7986aa8d599fec5d0.js
new file mode 100644
index 0000000..08bd2b4
--- /dev/null
+++ b/share/jupyter/lab/static/1491.2ba7986aa8d599fec5d0.js
@@ -0,0 +1 @@
+"use strict";(self["webpackChunk_jupyterlab_application_top"]=self["webpackChunk_jupyterlab_application_top"]||[]).push([[1491],{21491:(e,t,i)=>{i.r(t);i.d(t,{AsyncCellRenderer:()=>k,BasicKeyHandler:()=>y,BasicMouseHandler:()=>b,BasicSelectionModel:()=>O,BooleanCellEditor:()=>V,CellEditor:()=>D,CellEditorController:()=>K,CellGroup:()=>S,CellRenderer:()=>x,DataGrid:()=>ee,DataModel:()=>q,DateCellEditor:()=>X,DynamicOptionCellEditor:()=>Y,GraphicsContext:()=>$,HyperlinkRenderer:()=>M,ImageRenderer:()=>ne,InputCellEditor:()=>G,IntegerCellEditor:()=>P,IntegerInputValidator:()=>T,JSONModel:()=>ie,MutableDataModel:()=>j,NumberCellEditor:()=>A,NumberInputValidator:()=>B,OptionCellEditor:()=>N,PassInputValidator:()=>L,RendererMap:()=>J,SectionList:()=>Z,SelectionModel:()=>R,TextCellEditor:()=>I,TextInputValidator:()=>W,TextRenderer:()=>v,resolveOption:()=>F});var s=i(76326);var o=i.n(s);var r=i(77162);var n=i.n(r);var l=i(10970);var a=i.n(l);var h=i(34236);var c=i.n(h);var d=i(2336);var u=i.n(d);var f=i(27518);var _=i.n(f);var m=i(42856);var g=i.n(m);var p=i(5592);var w=i.n(p);class y{constructor(){this._disposed=false}get isDisposed(){return this._disposed}dispose(){this._disposed=true}onKeyDown(e,t){if(e.editable&&e.selectionModel.cursorRow!==-1&&e.selectionModel.cursorColumn!==-1){const i=String.fromCharCode(t.keyCode);if(/[a-zA-Z0-9-_ ]/.test(i)){const i=e.selectionModel.cursorRow;const s=e.selectionModel.cursorColumn;const o={grid:e,row:i,column:s};e.editorController.edit(o);if((0,r.getKeyboardLayout)().keyForKeydownEvent(t)==="Space"){t.stopPropagation();t.preventDefault()}return}}switch((0,r.getKeyboardLayout)().keyForKeydownEvent(t)){case"ArrowLeft":this.onArrowLeft(e,t);break;case"ArrowRight":this.onArrowRight(e,t);break;case"ArrowUp":this.onArrowUp(e,t);break;case"ArrowDown":this.onArrowDown(e,t);break;case"PageUp":this.onPageUp(e,t);break;case"PageDown":this.onPageDown(e,t);break;case"Escape":this.onEscape(e,t);break;case"Delete":this.onDelete(e,t);break;case"C":this.onKeyC(e,t);break;case"Enter":if(e.selectionModel){e.moveCursor(t.shiftKey?"up":"down");e.scrollToCursor()}break;case"Tab":if(e.selectionModel){e.moveCursor(t.shiftKey?"left":"right");e.scrollToCursor();t.stopPropagation();t.preventDefault()}break}}onArrowLeft(e,t){t.preventDefault();t.stopPropagation();let i=e.selectionModel;let o=t.shiftKey;let r=s.Platform.accelKey(t);if(!i&&r){e.scrollTo(0,e.scrollY);return}if(!i){e.scrollByStep("left");return}let n=i.selectionMode;if(n==="row"&&r){e.scrollTo(0,e.scrollY);return}if(n==="row"){e.scrollByStep("left");return}let l=i.cursorRow;let a=i.cursorColumn;let h=i.currentSelection();let c;let d;let u;let f;let _;let m;let g;if(r&&o){c=h?h.r1:0;d=h?h.r2:0;u=h?h.c1:0;f=0;_=l;m=a;g="current"}else if(o){c=h?h.r1:0;d=h?h.r2:0;u=h?h.c1:0;f=h?h.c2-1:0;_=l;m=a;g="current"}else if(r){c=l;d=l;u=0;f=0;_=c;m=u;g="all"}else{c=l;d=l;u=a-1;f=a-1;_=c;m=u;g="all"}i.select({r1:c,c1:u,r2:d,c2:f,cursorRow:_,cursorColumn:m,clear:g});h=i.currentSelection();if(!h){return}if(o||n==="column"){e.scrollToColumn(h.c2)}else{e.scrollToCursor()}}onArrowRight(e,t){t.preventDefault();t.stopPropagation();let i=e.selectionModel;let o=t.shiftKey;let r=s.Platform.accelKey(t);if(!i&&r){e.scrollTo(e.maxScrollX,e.scrollY);return}if(!i){e.scrollByStep("right");return}let n=i.selectionMode;if(n==="row"&&r){e.scrollTo(e.maxScrollX,e.scrollY);return}if(n==="row"){e.scrollByStep("right");return}let l=i.cursorRow;let a=i.cursorColumn;let h=i.currentSelection();let c;let d;let u;let f;let _;let m;let g;if(r&&o){c=h?h.r1:0;d=h?h.r2:0;u=h?h.c1:0;f=Infinity;_=l;m=a;g="current"}else if(o){c=h?h.r1:0;d=h?h.r2:0;u=h?h.c1:0;f=h?h.c2+1:0;_=l;m=a;g="current"}else if(r){c=l;d=l;u=Infinity;f=Infinity;_=c;m=u;g="all"}else{c=l;d=l;u=a+1;f=a+1;_=c;m=u;g="all"}i.select({r1:c,c1:u,r2:d,c2:f,cursorRow:_,cursorColumn:m,clear:g});h=i.currentSelection();if(!h){return}if(o||n==="column"){e.scrollToColumn(h.c2)}else{e.scrollToCursor()}}onArrowUp(e,t){t.preventDefault();t.stopPropagation();let i=e.selectionModel;let o=t.shiftKey;let r=s.Platform.accelKey(t);if(!i&&r){e.scrollTo(e.scrollX,0);return}if(!i){e.scrollByStep("up");return}let n=i.selectionMode;if(n==="column"&&r){e.scrollTo(e.scrollX,0);return}if(n==="column"){e.scrollByStep("up");return}let l=i.cursorRow;let a=i.cursorColumn;let h=i.currentSelection();let c;let d;let u;let f;let _;let m;let g;if(r&&o){c=h?h.r1:0;d=0;u=h?h.c1:0;f=h?h.c2:0;_=l;m=a;g="current"}else if(o){c=h?h.r1:0;d=h?h.r2-1:0;u=h?h.c1:0;f=h?h.c2:0;_=l;m=a;g="current"}else if(r){c=0;d=0;u=a;f=a;_=c;m=u;g="all"}else{c=l-1;d=l-1;u=a;f=a;_=c;m=u;g="all"}i.select({r1:c,c1:u,r2:d,c2:f,cursorRow:_,cursorColumn:m,clear:g});h=i.currentSelection();if(!h){return}if(o||n==="row"){e.scrollToRow(h.r2)}else{e.scrollToCursor()}}onArrowDown(e,t){t.preventDefault();t.stopPropagation();let i=e.selectionModel;let o=t.shiftKey;let r=s.Platform.accelKey(t);if(!i&&r){e.scrollTo(e.scrollX,e.maxScrollY);return}if(!i){e.scrollByStep("down");return}let n=i.selectionMode;if(n==="column"&&r){e.scrollTo(e.scrollX,e.maxScrollY);return}if(n==="column"){e.scrollByStep("down");return}let l=i.cursorRow;let a=i.cursorColumn;let h=i.currentSelection();let c;let d;let u;let f;let _;let m;let g;if(r&&o){c=h?h.r1:0;d=Infinity;u=h?h.c1:0;f=h?h.c2:0;_=l;m=a;g="current"}else if(o){c=h?h.r1:0;d=h?h.r2+1:0;u=h?h.c1:0;f=h?h.c2:0;_=l;m=a;g="current"}else if(r){c=Infinity;d=Infinity;u=a;f=a;_=c;m=u;g="all"}else{c=l+1;d=l+1;u=a;f=a;_=c;m=u;g="all"}i.select({r1:c,c1:u,r2:d,c2:f,cursorRow:_,cursorColumn:m,clear:g});h=i.currentSelection();if(!h){return}if(o||n==="row"){e.scrollToRow(h.r2)}else{e.scrollToCursor()}}onPageUp(e,t){if(s.Platform.accelKey(t)){return}t.preventDefault();t.stopPropagation();let i=e.selectionModel;if(!i||i.selectionMode==="column"){e.scrollByPage("up");return}let o=Math.floor(e.pageHeight/e.defaultSizes.rowHeight);let r=i.cursorRow;let n=i.cursorColumn;let l=i.currentSelection();let a;let h;let c;let d;let u;let f;let _;if(t.shiftKey){a=l?l.r1:0;h=l?l.r2-o:0;c=l?l.c1:0;d=l?l.c2:0;u=r;f=n;_="current"}else{a=l?l.r1-o:0;h=a;c=n;d=n;u=a;f=n;_="all"}i.select({r1:a,c1:c,r2:h,c2:d,cursorRow:u,cursorColumn:f,clear:_});l=i.currentSelection();if(!l){return}e.scrollToRow(l.r2)}onPageDown(e,t){if(s.Platform.accelKey(t)){return}t.preventDefault();t.stopPropagation();let i=e.selectionModel;if(!i||i.selectionMode==="column"){e.scrollByPage("down");return}let o=Math.floor(e.pageHeight/e.defaultSizes.rowHeight);let r=i.cursorRow;let n=i.cursorColumn;let l=i.currentSelection();let a;let h;let c;let d;let u;let f;let _;if(t.shiftKey){a=l?l.r1:0;h=l?l.r2+o:0;c=l?l.c1:0;d=l?l.c2:0;u=r;f=n;_="current"}else{a=l?l.r1+o:0;h=a;c=n;d=n;u=a;f=n;_="all"}i.select({r1:a,c1:c,r2:h,c2:d,cursorRow:u,cursorColumn:f,clear:_});l=i.currentSelection();if(!l){return}e.scrollToRow(l.r2)}onEscape(e,t){if(e.selectionModel){e.selectionModel.clear()}}onDelete(e,t){if(e.editable&&!e.selectionModel.isEmpty){const t=e.dataModel;let i=t.rowCount("body")-1;let s=t.columnCount("body")-1;for(let o of e.selectionModel.selections()){let e=Math.max(0,Math.min(o.r1,i));let r=Math.max(0,Math.min(o.c1,s));let n=Math.max(0,Math.min(o.r2,i));let l=Math.max(0,Math.min(o.c2,s));for(let i=e;i<=n;++i){for(let e=r;e<=l;++e){t.setData("body",i,e,null)}}}}}onKeyC(e,t){if(t.shiftKey||!s.Platform.accelKey(t)){return}t.preventDefault();t.stopPropagation();e.copyToClipboard()}}class x{}(function(e){function t(e,t){return typeof e==="function"?e(t):e}e.resolveOption=t})(x||(x={}));class v extends x{constructor(e={}){super();this.font=e.font||"12px sans-serif";this.textColor=e.textColor||"#000000";this.backgroundColor=e.backgroundColor||"";this.verticalAlignment=e.verticalAlignment||"center";this.horizontalAlignment=e.horizontalAlignment||"left";this.horizontalPadding=e.horizontalPadding||8;this.format=e.format||v.formatGeneric();this.elideDirection=e.elideDirection||"none";this.wrapText=e.wrapText||false}paint(e,t){this.drawBackground(e,t);this.drawText(e,t)}drawBackground(e,t){let i=x.resolveOption(this.backgroundColor,t);if(!i){return}e.fillStyle=i;e.fillRect(t.x,t.y,t.width,t.height)}getText(e){return this.format(e)}drawText(e,t){let i=x.resolveOption(this.font,t);if(!i){return}let s=x.resolveOption(this.textColor,t);if(!s){return}let o=this.getText(t);if(!o){return}let r=x.resolveOption(this.verticalAlignment,t);let n=x.resolveOption(this.horizontalAlignment,t);let l=x.resolveOption(this.elideDirection,t);let a=x.resolveOption(this.wrapText,t);let h=t.height-(r==="center"?1:2);if(h<=0){return}let c=v.measureFontHeight(i);let d;let u;let f;switch(r){case"top":u=t.y+2+c;break;case"center":u=t.y+t.height/2+c/2;break;case"bottom":u=t.y+t.height-2;break;default:throw"unreachable"}switch(n){case"left":d=t.x+this.horizontalPadding;f=t.width-14;break;case"center":d=t.x+t.width/2;f=t.width;break;case"right":d=t.x+t.width-this.horizontalPadding;f=t.width-14;break;default:throw"unreachable"}if(c>h){e.beginPath();e.rect(t.x,t.y,t.width,t.height-1);e.clip()}e.font=i;e.fillStyle=s;e.textAlign=n;e.textBaseline="bottom";if(l==="none"&&!a){e.fillText(o,d,u);return}let _=e.measureText(o).width;if(a&&_>f){e.beginPath();e.rect(t.x,t.y,t.width,t.height-1);e.clip();const i=o.split(/\s(?=\b)/);let s=u;let r=i.shift();if(i.length===0){let t=e.measureText(r).width;while(t>f&&r!==""){for(let i=r.length;i>0;i--){const o=r.substring(0,i);const n=e.measureText(o).width;if(nf){e.fillText(r,d,s);s+=c;r=t}else{r=o}}}e.fillText(r,d,s);return}const m="…";while(_>f&&o.length>1){const t=[...o];if(l==="right"){if(t.length>4&&_>=2*f){o=t.slice(0,Math.floor(t.length/2+1)).join("")+m}else{o=t.slice(0,t.length-2).join("")+m}}else{if(t.length>4&&_>=2*f){o=m+t.slice(Math.floor(t.length/2)).join("")}else{o=m+t.slice(2).join("")}}_=e.measureText(o).width}e.fillText(o,d,u)}}(function(e){function t(e={}){let t=e.missing||"";return({value:e})=>{if(e===null||e===undefined){return t}return String(e)}}e.formatGeneric=t;function i(e={}){let t=e.digits;let i=e.missing||"";return({value:e})=>{if(e===null||e===undefined){return i}return Number(e).toFixed(t)}}e.formatFixed=i;function s(e={}){let t=e.digits;let i=e.missing||"";return({value:e})=>{if(e===null||e===undefined){return i}return Number(e).toPrecision(t)}}e.formatPrecision=s;function o(e={}){let t=e.digits;let i=e.missing||"";return({value:e})=>{if(e===null||e===undefined){return i}return Number(e).toExponential(t)}}e.formatExponential=o;function r(e={}){let t=e.missing||"";let i=new Intl.NumberFormat(e.locales,e.options);return({value:e})=>{if(e===null||e===undefined){return t}return i.format(e)}}e.formatIntlNumber=r;function n(e={}){let t=e.missing||"";return({value:e})=>{if(e===null||e===undefined){return t}if(e instanceof Date){return e.toDateString()}return new Date(e).toDateString()}}e.formatDate=n;function l(e={}){let t=e.missing||"";return({value:e})=>{if(e===null||e===undefined){return t}if(e instanceof Date){return e.toTimeString()}return new Date(e).toTimeString()}}e.formatTime=l;function a(e={}){let t=e.missing||"";return({value:e})=>{if(e===null||e===undefined){return t}if(e instanceof Date){return e.toISOString()}return new Date(e).toISOString()}}e.formatISODateTime=a;function h(e={}){let t=e.missing||"";return({value:e})=>{if(e===null||e===undefined){return t}if(e instanceof Date){return e.toUTCString()}return new Date(e).toUTCString()}}e.formatUTCDateTime=h;function c(e={}){let t=e.missing||"";let i=new Intl.DateTimeFormat(e.locales,e.options);return({value:e})=>{if(e===null||e===undefined){return t}return i.format(e)}}e.formatIntlDateTime=c;function d(e){let t=C.fontHeightCache[e];if(t!==undefined){return t}C.fontMeasurementGC.font=e;let i=C.fontMeasurementGC.font;C.fontMeasurementNode.style.font=i;document.body.appendChild(C.fontMeasurementNode);t=C.fontMeasurementNode.offsetHeight;document.body.removeChild(C.fontMeasurementNode);C.fontHeightCache[e]=t;C.fontHeightCache[i]=t;return t}e.measureFontHeight=d})(v||(v={}));var C;(function(e){e.fontHeightCache=Object.create(null);e.fontMeasurementNode=(()=>{let e=document.createElement("div");e.style.position="absolute";e.style.top="-99999px";e.style.left="-99999px";e.style.visibility="hidden";e.textContent="M";return e})();e.fontMeasurementGC=(()=>{let e=document.createElement("canvas");e.width=0;e.height=0;return e.getContext("2d")})()})(C||(C={}));class M extends v{constructor(e={}){e.textColor=e.textColor||"navy";e.font=e.font||"bold 12px sans-serif";super(e);this.url=e.url;this.urlName=e.urlName}getText(e){let t=x.resolveOption(this.urlName,e);if(t){return this.format({...e,value:t})}return this.format(e)}drawText(e,t){let i=x.resolveOption(this.font,t);if(!i){return}let s=x.resolveOption(this.textColor,t);if(!s){return}let o=this.getText(t);if(!o){return}let r=x.resolveOption(this.verticalAlignment,t);let n=x.resolveOption(this.horizontalAlignment,t);let l=x.resolveOption(this.elideDirection,t);let a=x.resolveOption(this.wrapText,t);let h=t.height-(r==="center"?1:2);if(h<=0){return}let c=M.measureFontHeight(i);let d;let u;let f;switch(r){case"top":u=t.y+2+c;break;case"center":u=t.y+t.height/2+c/2;break;case"bottom":u=t.y+t.height-2;break;default:throw"unreachable"}switch(n){case"left":d=t.x+8;f=t.width-14;break;case"center":d=t.x+t.width/2;f=t.width;break;case"right":d=t.x+t.width-8;f=t.width-14;break;default:throw"unreachable"}if(c>h){e.beginPath();e.rect(t.x,t.y,t.width,t.height-1);e.clip()}e.font=i;e.fillStyle=s;e.textAlign=n;e.textBaseline="bottom";if(l==="none"&&!a){e.fillText(o,d,u);return}let _=e.measureText(o).width;if(a&&_>f){e.beginPath();e.rect(t.x,t.y,t.width,t.height-1);e.clip();const i=o.split(/\s(?=\b)/);let s=u;let r=i.shift();if(i.length===0){let t=e.measureText(r).width;while(t>f&&r!==""){for(let i=r.length;i>0;i--){const o=r.substring(0,i);const n=e.measureText(o).width;if(nf){e.fillText(r,d,s);s+=c;r=t}else{r=o}}}e.fillText(r,d,s);return}let m="…";if(l==="right"){while(_>f&&o.length>1){if(o.length>4&&_>=2*f){o=o.substring(0,o.length/2+1)+m}else{o=o.substring(0,o.length-2)+m}_=e.measureText(o).width}}else{while(_>f&&o.length>1){if(o.length>4&&_>=2*f){o=m+o.substring(o.length/2)}else{o=m+o.substring(2)}_=e.measureText(o).width}}e.fillText(o,d,u)}}var S;(function(e){function t(e,t,i){if(i==="row"){return e.r1>=t.r1&&e.r1<=t.r2||e.r2>=t.r1&&e.r2<=t.r2||t.r1>=e.r1&&t.r1<=e.r2||t.r2>=e.r1&&t.r2<=e.r2}return e.c1>=t.c1&&e.c1<=t.c2||e.c2>=t.c1&&e.c2<=t.c2||t.c1>=e.c1&&t.c1<=e.c2||t.c2>=e.c1&&t.c2<=e.c2}e.areCellGroupsIntersectingAtAxis=t;function i(e,t){return(e.r1>=t.r1&&e.r1<=t.r2||e.r2>=t.r1&&e.r2<=t.r2||t.r1>=e.r1&&t.r1<=e.r2||t.r2>=e.r1&&t.r2<=e.r2)&&(e.c1>=t.c1&&e.c1<=t.c2||e.c2>=t.c1&&e.c2<=t.c2||t.c1>=e.c1&&t.c1<=e.c2||t.c2>=e.c1&&t.c2<=e.c2)}e.areCellGroupsIntersecting=i;function s(e,t,i,s){const o=e.groupCount(t);for(let r=0;r=o.r1&&i<=o.r2&&s>=o.c1&&s<=o.c2){return r}}return-1}e.getGroupIndex=s;function o(e,t,i,o){const r=s(e,t,i,o);if(r===-1){return null}return e.group(t,r)}e.getGroup=o;function r(e,t){let i=[];const s=e.groupCount(t);for(let o=0;o=o.r1&&i<=o.r2){s.push(o)}}return s}e.getCellGroupsAtRow=a;function h(e,t,i){let s=[];const o=e.groupCount(t);for(let r=0;r=o.c1&&i<=o.c2){s.push(o)}}return s}e.getCellGroupsAtColumn=h;function c(t,i,s,o){let r=[];if(s==="row"){for(const s of i){for(let i=o.r1;i<=o.r2;i++){r=r.concat(e.getCellGroupsAtRow(t,s,i))}}}else{for(const s of i){for(let i=o.c1;i<=o.c2;i++){r=r.concat(e.getCellGroupsAtColumn(t,s,i))}}}let n=e.joinCellGroups(r);if(r.length>0){let o=[];for(const s of i){o=o.concat(e.getCellGroupsAtRegion(t,s))}for(let t=0;t0){m=H.computeTimeout(l-r)}else if(r>=h&&d0){m=H.computeTimeout(n-o)}else if(o>=a&&c0){m=H.computeTimeout(n-o)}else if(o>=a&&c0){m=H.computeTimeout(l-r)}else if(r>=h&&d=0){if(i.timeout<0){i.timeout=m;setTimeout((()=>{H.autoselect(e,i)}),m)}else{i.timeout=m}return}i.timeout=-1;let{vx:g,vy:p}=e.mapToVirtual(t.clientX,t.clientY);g=Math.max(0,Math.min(g,e.bodyWidth-1));p=Math.max(0,Math.min(p,e.bodyHeight-1));let w;let y;let x;let v;let C=s.cursorRow;let M=s.cursorColumn;let b="current";if(i.region==="row-header"||_==="row"){w=i.row;x=e.rowAt("body",p);const t={r1:w,c1:0,r2:x,c2:0};const s=S.joinCellGroupsIntersectingAtAxis(e.dataModel,["row-header","body"],"row",t);if(s.r1!=Number.MAX_VALUE){w=Math.min(w,s.r1);x=Math.max(x,s.r2)}y=0;v=Infinity}else if(i.region==="column-header"||_==="column"){w=0;x=Infinity;y=i.column;v=e.columnAt("body",g);const t={r1:0,c1:y,r2:0,c2:v};const s=S.joinCellGroupsIntersectingAtAxis(e.dataModel,["column-header","body"],"column",t);if(s.c1!=Number.MAX_VALUE){y=s.c1;v=s.c2}}else{w=C;x=e.rowAt("body",p);y=M;v=e.columnAt("body",g)}s.select({r1:w,c1:y,r2:x,c2:v,cursorRow:C,cursorColumn:M,clear:b})}onMouseUp(e,t){this.release()}onMouseDoubleClick(e,t){var i,s,o;if(!e.dataModel){this.release();return}let{clientX:r,clientY:n}=t;let l=e.hitTest(r,n);let{region:a,row:h,column:c}=l;if(a==="void"){this.release();return}if(a==="column-header"||a==="corner-header"){const t=H.resizeHandleForHitTest(l);if(t==="left"||t==="right"){let r=t==="left"?c-1:c;let n=a==="column-header"?"body":"row-header";if(r<0){if(a==="column-header"){r=e.dataModel.columnCount("row-header")-1;n="row-header"}else{return}}const l=(i=e.selectionModel)===null||i===void 0?void 0:i.currentSelection();const h=e.currentViewport;const d=(o=(s=e.selectionModel)===null||s===void 0?void 0:s.dataModel.rowCount("body"))!==null&&o!==void 0?o:0;if(n=="body"&&l!=null&&h!=null&&l.r1==0&&l.r2==d-1){let t=Math.max(Math.min(l.c1,l.c2),h.firstColumn);let i=Math.min(Math.max(l.c1,l.c2),h.lastColumn);if(t<=r&&r<=i){for(let s=t;s<=i;s++){e.resizeColumn(n,s,null)}}else{e.resizeColumn(n,r,null)}}else{e.resizeColumn(n,r,null)}}}if(a==="body"){if(e.editable){const t={grid:e,row:h,column:c};e.editorController.edit(t)}}this.release()}onContextMenu(e,t){}onWheel(e,t){if(this._pressData){return}let i=t.deltaX;let s=t.deltaY;switch(t.deltaMode){case 0:break;case 1:{let t=e.defaultSizes;i*=t.columnWidth;s*=t.rowHeight;break}case 2:i*=e.pageWidth;s*=e.pageHeight;break;default:throw"unreachable"}if(i<0&&e.scrollX!==0||i>0&&e.scrollX!==e.maxScrollX||s<0&&e.scrollY!==0||s>0&&e.scrollY!==e.maxScrollY){t.preventDefault();t.stopPropagation();e.scrollBy(i,s)}}cursorForHandle(e){return H.cursorMap[e]}get pressData(){return this._pressData}}var H;(function(e){function t(e,t){const{region:i,row:s,column:o}=t;if(i==="void"){return undefined}const r=e.dataModel.data(i,s,o);const n=e.dataModel.metadata(i,s,o);const l={...t,value:r,metadata:n};return l}e.createCellConfigObject=t;function i(e){let t=e.row;let i=e.column;let s=e.x;let o=e.y;let r=e.width-e.x;let n=e.height-e.y;let l;switch(e.region){case"corner-header":if(i>0&&s<=5){l="left"}else if(r<=6){l="right"}else if(t>0&&o<=5){l="top"}else if(n<=6){l="bottom"}else{l="none"}break;case"column-header":if(i>0&&s<=5){l="left"}else if(r<=6){l="right"}else if(t>0&&o<=5){l="top"}else if(n<=6){l="bottom"}else{l="none"}break;case"row-header":if(i>0&&s<=5){l="left"}else if(r<=6){l="right"}else if(t>0&&o<=5){l="top"}else if(n<=6){l="bottom"}else{l="none"}break;case"body":l="none";break;case"void":l="none";break;default:throw"unreachable"}return l}e.resizeHandleForHitTest=i;function s(e,t){if(t.timeout<0){return}let i=e.selectionModel;if(!i){return}let o=i.currentSelection();if(!o){return}let r=t.localX;let n=t.localY;let l=o.r1;let a=o.c1;let h=o.r2;let c=o.c2;let d=i.cursorRow;let u=i.cursorColumn;let f="current";let _=e.headerWidth;let m=e.headerHeight;let g=e.viewportWidth;let p=e.viewportHeight;let w=i.selectionMode;if(t.region==="row-header"||w==="row"){h+=n<=m?-1:n>=p?1:0}else if(t.region==="column-header"||w==="column"){c+=r<=_?-1:r>=g?1:0}else{h+=n<=m?-1:n>=p?1:0;c+=r<=_?-1:r>=g?1:0}i.select({r1:l,c1:a,r2:h,c2:c,cursorRow:d,cursorColumn:u,clear:f});o=i.currentSelection();if(!o){return}if(t.region==="row-header"||w==="row"){e.scrollToRow(o.r2)}else if(t.region==="column-header"||w=="column"){e.scrollToColumn(o.c2)}else if(w==="cell"){e.scrollToCell(o.r2,o.c2)}setTimeout((()=>{s(e,t)}),t.timeout)}e.autoselect=s;function o(e){return 5+120*(1-Math.min(128,Math.abs(e))/128)}e.computeTimeout=o;e.cursorMap={top:"ns-resize",left:"ew-resize",right:"ew-resize",bottom:"ns-resize",hyperlink:"pointer",none:"default"}})(H||(H={}));class R{constructor(e){this._changed=new d.Signal(this);this._selectionMode="cell";this.dataModel=e.dataModel;this._selectionMode=e.selectionMode||"cell";this.dataModel.changed.connect(this.onDataModelChanged,this)}get changed(){return this._changed}get selectionMode(){return this._selectionMode}set selectionMode(e){if(this._selectionMode===e){return}this._selectionMode=e;this.clear()}isRowSelected(e){return(0,h.some)(this.selections(),(t=>z.containsRow(t,e)))}isColumnSelected(e){return(0,h.some)(this.selections(),(t=>z.containsColumn(t,e)))}isCellSelected(e,t){return(0,h.some)(this.selections(),(i=>z.containsCell(i,e,t)))}onDataModelChanged(e,t){}emitChanged(){this._changed.emit(undefined)}}var z;(function(e){function t(e,t){let{r1:i,r2:s}=e;return t>=i&&t<=s||t>=s&&t<=i}e.containsRow=t;function i(e,t){let{c1:i,c2:s}=e;return t>=i&&t<=s||t>=s&&t<=i}e.containsColumn=i;function s(e,s,o){return t(e,s)&&i(e,o)}e.containsCell=s})(z||(z={}));class O extends R{constructor(){super(...arguments);this._cursorRow=-1;this._cursorColumn=-1;this._cursorRectIndex=-1;this._selections=[]}get isEmpty(){return this._selections.length===0}get cursorRow(){return this._cursorRow}get cursorColumn(){return this._cursorColumn}moveCursorWithinSelections(e){if(this.isEmpty||this.cursorRow===-1||this._cursorColumn===-1){return}const t=this._selections[0];if(this._selections.length===1&&t.r1===t.r2&&t.c1===t.c2){return}if(this._cursorRectIndex===-1){this._cursorRectIndex=this._selections.length-1}let i=this._selections[this._cursorRectIndex];const s=e==="down"?1:e==="up"?-1:0;const o=e==="right"?1:e==="left"?-1:0;let r=this._cursorRow+s;let n=this._cursorColumn+o;const l=Math.min(i.r1,i.r2);const a=Math.max(i.r1,i.r2);const h=Math.min(i.c1,i.c2);const c=Math.max(i.c1,i.c2);const d=()=>{this._cursorRectIndex=(this._cursorRectIndex+1)%this._selections.length;i=this._selections[this._cursorRectIndex];r=Math.min(i.r1,i.r2);n=Math.min(i.c1,i.c2)};const u=()=>{this._cursorRectIndex=this._cursorRectIndex===0?this._selections.length-1:this._cursorRectIndex-1;i=this._selections[this._cursorRectIndex];r=Math.max(i.r1,i.r2);n=Math.max(i.c1,i.c2)};if(r>a){r=l;n+=1;if(n>c){d()}}else if(rc){n=h;r+=1;if(r>a){d()}}else if(ne.r1===s)).length!==0;this._selections=c?this._selections.filter((e=>e.r1!==s)):this._selections}else if(this.selectionMode==="column"){s=0;r=t-1;c=this._selections.filter((e=>e.c1===o)).length!==0;this._selections=c?this._selections.filter((e=>e.c1!==o)):this._selections}let d=l;let u=a;if(d<0||ds&&d>r){d=s}if(u<0||uo&&u>n){u=o}this._cursorRow=d;this._cursorColumn=u;this._cursorRectIndex=this._selections.length;if(!c){this._selections.push({r1:s,c1:o,r2:r,c2:n})}this.emitChanged()}clear(){if(this._selections.length===0){return}this._cursorRow=-1;this._cursorColumn=-1;this._cursorRectIndex=-1;this._selections.length=0;this.emitChanged()}onDataModelChanged(e,t){if(this._selections.length===0){return}if(t.type==="cells-changed"){return}if(t.type==="rows-moved"||t.type==="columns-moved"){return}let i=e.rowCount("body")-1;let s=e.columnCount("body")-1;if(i<0||s<0){this._selections.length=0;this.emitChanged();return}let o=this.selectionMode;let r=0;for(let n=0,l=this._selections.length;nthis.maxLength){return{valid:false,message:`Text length must be less than ${this.maxLength}`}}if(this.pattern&&!this.pattern.test(t)){return{valid:false,message:`Text doesn't match the required pattern`}}return{valid:true}}}class T{constructor(){this.min=Number.NaN;this.max=Number.NaN}validate(e,t){if(t===null){return{valid:true}}if(isNaN(t)||t%1!==0){return{valid:false,message:"Input must be valid integer"}}if(!isNaN(this.min)&&tthis.max){return{valid:false,message:`Input must be less than ${this.max}`}}return{valid:true}}}class B{constructor(){this.min=Number.NaN;this.max=Number.NaN}validate(e,t){if(t===null){return{valid:true}}if(isNaN(t)){return{valid:false,message:"Input must be valid number"}}if(!isNaN(this.min)&&tthis.max){return{valid:false,message:`Input must be less than ${this.max}`}}return{valid:true}}}class D{constructor(){this.inputChanged=new d.Signal(this);this.validityNotification=null;this._disposed=false;this._validInput=true;this._gridWheelEventHandler=null;this.inputChanged.connect((()=>{this.validate()}))}get isDisposed(){return this._disposed}dispose(){if(this._disposed){return}if(this._gridWheelEventHandler){this.cell.grid.node.removeEventListener("wheel",this._gridWheelEventHandler);this._gridWheelEventHandler=null}this._closeValidityNotification();this._disposed=true;this.cell.grid.node.removeChild(this.viewportOccluder)}edit(e,t){this.cell=e;this.onCommit=t&&t.onCommit;this.onCancel=t&&t.onCancel;this.validator=t&&t.validator?t.validator:this.createValidatorBasedOnType();this._gridWheelEventHandler=()=>{this._closeValidityNotification();this.updatePosition()};e.grid.node.addEventListener("wheel",this._gridWheelEventHandler);this._addContainer();this.updatePosition();this.startEditing()}cancel(){if(this._disposed){return}this.dispose();if(this.onCancel){this.onCancel()}}get validInput(){return this._validInput}validate(){let e;try{e=this.getInput()}catch(t){console.log(`Input error: ${t.message}`);this.setValidity(false,t.message||E);return}if(this.validator){const t=this.validator.validate(this.cell,e);if(t.valid){this.setValidity(true)}else{this.setValidity(false,t.message||E)}}else{this.setValidity(true)}}setValidity(e,t=""){this._validInput=e;this._closeValidityNotification();if(e){this.editorContainer.classList.remove("lm-mod-invalid")}else{this.editorContainer.classList.add("lm-mod-invalid");if(t!==""){this.validityNotification=new D.Notification({target:this.editorContainer,message:t,placement:"bottom",timeout:5e3});this.validityNotification.show()}}}createValidatorBasedOnType(){const e=this.cell;const t=e.grid.dataModel.metadata("body",e.row,e.column);switch(t&&t.type){case"string":{const e=new W;if(typeof t.format==="string"){const i=t.format;switch(i){case"email":e.pattern=new RegExp("^([a-z0-9_.-]+)@([da-z.-]+).([a-z.]{2,6})$");break;case"uuid":e.pattern=new RegExp("[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}");break}}if(t.constraint){if(t.constraint.minLength!==undefined){e.minLength=t.constraint.minLength}if(t.constraint.maxLength!==undefined){e.maxLength=t.constraint.maxLength}if(typeof t.constraint.pattern==="string"){e.pattern=new RegExp(t.constraint.pattern)}}return e}case"number":{const e=new B;if(t.constraint){if(t.constraint.minimum!==undefined){e.min=t.constraint.minimum}if(t.constraint.maximum!==undefined){e.max=t.constraint.maximum}}return e}case"integer":{const e=new T;if(t.constraint){if(t.constraint.minimum!==undefined){e.min=t.constraint.minimum}if(t.constraint.maximum!==undefined){e.max=t.constraint.maximum}}return e}}return undefined}getCellInfo(e){const{grid:t,row:i,column:s}=e;let o,r,n,l,a;const h=S.getGroup(t.dataModel,"body",i,s);if(h){r=t.headerWidth-t.scrollX+t.columnOffset("body",h.c1);n=t.headerHeight-t.scrollY+t.rowOffset("body",h.r1);l=0;a=0;for(let e=h.r1;e<=h.r2;e++){a+=t.rowSize("body",e)}for(let e=h.c1;e<=h.c2;e++){l+=t.columnSize("body",e)}o=t.dataModel.data("body",h.r1,h.c1)}else{r=t.headerWidth-t.scrollX+t.columnOffset("body",s);n=t.headerHeight-t.scrollY+t.rowOffset("body",i);l=t.columnSize("body",s);a=t.rowSize("body",i);o=t.dataModel.data("body",i,s)}return{grid:t,row:i,column:s,data:o,x:r,y:n,width:l,height:a}}updatePosition(){const e=this.cell.grid;const t=this.getCellInfo(this.cell);const i=e.headerHeight;const s=e.headerWidth;this.viewportOccluder.style.top=i+"px";this.viewportOccluder.style.left=s+"px";this.viewportOccluder.style.width=e.viewportWidth-s+"px";this.viewportOccluder.style.height=e.viewportHeight-i+"px";this.viewportOccluder.style.position="absolute";this.editorContainer.style.left=t.x-1-s+"px";this.editorContainer.style.top=t.y-1-i+"px";this.editorContainer.style.width=t.width+1+"px";this.editorContainer.style.height=t.height+1+"px";this.editorContainer.style.visibility="visible";this.editorContainer.style.position="absolute"}commit(e="none"){this.validate();if(!this._validInput){return false}let t;try{t=this.getInput()}catch(i){console.log(`Input error: ${i.message}`);return false}this.dispose();if(this.onCommit){this.onCommit({cell:this.cell,value:t,cursorMovement:e})}return true}_addContainer(){this.viewportOccluder=document.createElement("div");this.viewportOccluder.className="lm-DataGrid-cellEditorOccluder";this.cell.grid.node.appendChild(this.viewportOccluder);this.editorContainer=document.createElement("div");this.editorContainer.className="lm-DataGrid-cellEditorContainer";this.viewportOccluder.appendChild(this.editorContainer);this.editorContainer.addEventListener("mouseleave",(e=>{this.viewportOccluder.style.pointerEvents=this._validInput?"none":"auto"}));this.editorContainer.addEventListener("mouseenter",(e=>{this.viewportOccluder.style.pointerEvents="none"}))}_closeValidityNotification(){if(this.validityNotification){this.validityNotification.close();this.validityNotification=null}}}class G extends D{handleEvent(e){switch(e.type){case"keydown":this._onKeyDown(e);break;case"blur":this._onBlur(e);break;case"input":this._onInput(e);break}}dispose(){if(this.isDisposed){return}this._unbindEvents();super.dispose()}startEditing(){this.createWidget();const e=this.cell;const t=this.getCellInfo(e);this.input.value=this.deserialize(t.data);this.editorContainer.appendChild(this.input);this.input.focus();this.input.select();this.bindEvents()}deserialize(e){if(e===null||e===undefined){return""}return e.toString()}createWidget(){const e=document.createElement("input");e.classList.add("lm-DataGrid-cellEditorWidget");e.classList.add("lm-DataGrid-cellEditorInput");e.spellcheck=false;e.type=this.inputType;this.input=e}bindEvents(){this.input.addEventListener("keydown",this);this.input.addEventListener("blur",this);this.input.addEventListener("input",this)}_unbindEvents(){this.input.removeEventListener("keydown",this);this.input.removeEventListener("blur",this);this.input.removeEventListener("input",this)}_onKeyDown(e){switch((0,r.getKeyboardLayout)().keyForKeydownEvent(e)){case"Enter":this.commit(e.shiftKey?"up":"down");break;case"Tab":this.commit(e.shiftKey?"left":"right");e.stopPropagation();e.preventDefault();break;case"Escape":this.cancel();break}}_onBlur(e){if(this.isDisposed){return}if(!this.commit()){e.preventDefault();e.stopPropagation();this.input.focus()}}_onInput(e){this.inputChanged.emit(void 0)}}class I extends G{constructor(){super(...arguments);this.inputType="text"}getInput(){return this.input.value}}class A extends G{constructor(){super(...arguments);this.inputType="number"}startEditing(){super.startEditing();this.input.step="any";const e=this.cell;const t=e.grid.dataModel.metadata("body",e.row,e.column);const i=t.constraint;if(i){if(i.minimum){this.input.min=i.minimum}if(i.maximum){this.input.max=i.maximum}}}getInput(){let e=this.input.value;if(e.trim()===""){return null}const t=parseFloat(e);if(isNaN(t)){throw new Error("Invalid input")}return t}}class P extends G{constructor(){super(...arguments);this.inputType="number"}startEditing(){super.startEditing();this.input.step="1";const e=this.cell;const t=e.grid.dataModel.metadata("body",e.row,e.column);const i=t.constraint;if(i){if(i.minimum){this.input.min=i.minimum}if(i.maximum){this.input.max=i.maximum}}}getInput(){let e=this.input.value;if(e.trim()===""){return null}let t=parseInt(e);if(isNaN(t)){throw new Error("Invalid input")}return t}}class X extends D{handleEvent(e){switch(e.type){case"keydown":this._onKeyDown(e);break;case"blur":this._onBlur(e);break}}dispose(){if(this.isDisposed){return}this._unbindEvents();super.dispose()}startEditing(){this._createWidget();const e=this.cell;const t=this.getCellInfo(e);this._input.value=this._deserialize(t.data);this.editorContainer.appendChild(this._input);this._input.focus();this._bindEvents()}getInput(){return this._input.value}_deserialize(e){if(e===null||e===undefined){return""}return e.toString()}_createWidget(){const e=document.createElement("input");e.type="date";e.pattern="d{4}-d{2}-d{2}";e.classList.add("lm-DataGrid-cellEditorWidget");e.classList.add("lm-DataGrid-cellEditorInput");this._input=e}_bindEvents(){this._input.addEventListener("keydown",this);this._input.addEventListener("blur",this)}_unbindEvents(){this._input.removeEventListener("keydown",this);this._input.removeEventListener("blur",this)}_onKeyDown(e){switch((0,r.getKeyboardLayout)().keyForKeydownEvent(e)){case"Enter":this.commit(e.shiftKey?"up":"down");break;case"Tab":this.commit(e.shiftKey?"left":"right");e.stopPropagation();e.preventDefault();break;case"Escape":this.cancel();break}}_onBlur(e){if(this.isDisposed){return}if(!this.commit()){e.preventDefault();e.stopPropagation();this._input.focus()}}}class V extends D{handleEvent(e){switch(e.type){case"keydown":this._onKeyDown(e);break;case"mousedown":this._input.focus();e.stopPropagation();e.preventDefault();break;case"blur":this._onBlur(e);break}}dispose(){if(this.isDisposed){return}this._unbindEvents();super.dispose()}startEditing(){this._createWidget();const e=this.cell;const t=this.getCellInfo(e);this._input.checked=this._deserialize(t.data);this.editorContainer.appendChild(this._input);this._input.focus();this._bindEvents()}getInput(){return this._input.checked}_deserialize(e){if(e===null||e===undefined){return false}return e==true}_createWidget(){const e=document.createElement("input");e.classList.add("lm-DataGrid-cellEditorWidget");e.classList.add("lm-DataGrid-cellEditorCheckbox");e.type="checkbox";e.spellcheck=false;this._input=e}_bindEvents(){this._input.addEventListener("keydown",this);this._input.addEventListener("mousedown",this);this._input.addEventListener("blur",this)}_unbindEvents(){this._input.removeEventListener("keydown",this);this._input.removeEventListener("mousedown",this);this._input.removeEventListener("blur",this)}_onKeyDown(e){switch((0,r.getKeyboardLayout)().keyForKeydownEvent(e)){case"Enter":this.commit(e.shiftKey?"up":"down");break;case"Tab":this.commit(e.shiftKey?"left":"right");e.stopPropagation();e.preventDefault();break;case"Escape":this.cancel();break}}_onBlur(e){if(this.isDisposed){return}if(!this.commit()){e.preventDefault();e.stopPropagation();this._input.focus()}}}class N extends D{constructor(){super(...arguments);this._isMultiSelect=false}dispose(){if(this.isDisposed){return}super.dispose();if(this._isMultiSelect){document.body.removeChild(this._select)}}startEditing(){const e=this.cell;const t=this.getCellInfo(e);const i=e.grid.dataModel.metadata("body",e.row,e.column);this._isMultiSelect=i.type==="array";this._createWidget();if(this._isMultiSelect){this._select.multiple=true;const e=this._deserialize(t.data);for(let t=0;t{const t=document.createElement("option");t.value=e;t.text=e;r.appendChild(t)}));this.editorContainer.appendChild(r);n.setAttribute("list",o);this._input=n}_bindEvents(){this._input.addEventListener("keydown",this);this._input.addEventListener("blur",this)}_unbindEvents(){this._input.removeEventListener("keydown",this);this._input.removeEventListener("blur",this)}_onKeyDown(e){switch((0,r.getKeyboardLayout)().keyForKeydownEvent(e)){case"Enter":this.commit(e.shiftKey?"up":"down");break;case"Tab":this.commit(e.shiftKey?"left":"right");e.stopPropagation();e.preventDefault();break;case"Escape":this.cancel();break}}_onBlur(e){if(this.isDisposed){return}if(!this.commit()){e.preventDefault();e.stopPropagation();this._input.focus()}}}(function(e){class t extends f.Widget{constructor(e){super({node:t.createNode()});this._message="";this.addClass("lm-DataGrid-notification");this.setFlag(f.Widget.Flag.DisallowLayout);this._target=e.target;this._message=e.message||"";this._placement=e.placement||"bottom";f.Widget.attach(this,document.body);if(e.timeout&&e.timeout>0){setTimeout((()=>{this.close()}),e.timeout)}}handleEvent(e){switch(e.type){case"mousedown":this._evtMouseDown(e);break;case"contextmenu":e.preventDefault();e.stopPropagation();break}}get placement(){return this._placement}set placement(e){if(this._placement===e){return}this._placement=e;this.update()}get message(){return this._message}set message(e){if(this._message===e){return}this._message=e;this.update()}get messageNode(){return this.node.getElementsByClassName("lm-DataGrid-notificationMessage")[0]}onBeforeAttach(e){this.node.addEventListener("mousedown",this);this.update()}onAfterDetach(e){this.node.removeEventListener("mousedown",this)}onUpdateRequest(e){const t=this._target.getBoundingClientRect();const i=this.node.style;switch(this._placement){case"bottom":i.left=t.left+"px";i.top=t.bottom+"px";break;case"top":i.left=t.left+"px";i.height=t.top+"px";i.top="0";i.alignItems="flex-end";i.justifyContent="flex-end";break;case"left":i.left="0";i.width=t.left+"px";i.top=t.top+"px";i.alignItems="flex-end";i.justifyContent="flex-end";break;case"right":i.left=t.right+"px";i.top=t.top+"px";break}this.messageNode.innerHTML=this._message}_evtMouseDown(e){if(e.button!==0){return}e.preventDefault();e.stopPropagation();this.close()}}e.Notification=t;(function(e){function t(){const e=document.createElement("div");const t=document.createElement("div");t.className="lm-DataGrid-notificationContainer";const i=document.createElement("span");i.className="lm-DataGrid-notificationMessage";t.appendChild(i);e.appendChild(t);return e}e.createNode=t})(t=e.Notification||(e.Notification={}))})(D||(D={}));function F(e,t){return typeof e==="function"?e(t):e}class K{constructor(){this._editor=null;this._cell=null;this._typeBasedOverrides=new Map;this._metadataBasedOverrides=new Map}setEditor(e,t){if(typeof e==="string"){this._typeBasedOverrides.set(e,t)}else{const i=this._metadataIdentifierToKey(e);this._metadataBasedOverrides.set(i,[e,t])}}edit(e,t){const i=e.grid;if(!i.editable){console.error("Grid cannot be edited!");return false}this.cancel();this._cell=e;t=t||{};t.onCommit=t.onCommit||this._onCommit.bind(this);t.onCancel=t.onCancel||this._onCancel.bind(this);if(t.editor){this._editor=t.editor;t.editor.edit(e,t);return true}const s=this._getEditor(e);if(s){this._editor=s;s.edit(e,t);return true}return false}cancel(){if(this._editor){this._editor.cancel();this._editor=null}this._cell=null}_onCommit(e){const t=this._cell;if(!t){return}const i=t.grid;const s=i.dataModel;let o=t.row;let r=t.column;const n=S.getGroup(i.dataModel,"body",o,r);if(n){o=n.r1;r=n.c1}s.setData("body",o,r,e.value);i.viewport.node.focus();if(e.cursorMovement!=="none"){i.moveCursor(e.cursorMovement);i.scrollToCursor()}}_onCancel(){if(!this._cell){return}this._cell.grid.viewport.node.focus()}_getDataTypeKey(e){const t=e.grid.dataModel?e.grid.dataModel.metadata("body",e.row,e.column):null;if(!t){return"default"}let i="";if(t){i=t.type}if(t.constraint&&t.constraint.enum){if(t.constraint.enum==="dynamic"){i+=":dynamic-option"}else{i+=":option"}}return i}_objectToKey(e){let t="";for(let i in e){const s=e[i];if(typeof s==="object"){t+=`${i}:${this._objectToKey(s)}`}else{t+=`[${i}:${s}]`}}return t}_metadataIdentifierToKey(e){return this._objectToKey(e)}_metadataMatchesIdentifier(e,t){for(let i in t){if(!e.hasOwnProperty(i)){return false}const s=t[i];const o=e[i];if(typeof s==="object"){if(!this._metadataMatchesIdentifier(o,s)){return false}}else if(o!==s){return false}}return true}_getMetadataBasedEditor(e){let t;const i=e.grid.dataModel.metadata("body",e.row,e.column);if(i){this._metadataBasedOverrides.forEach((s=>{if(!t){let[o,r]=s;if(this._metadataMatchesIdentifier(i,o)){t=F(r,e)}}}))}return t}_getEditor(e){const t=this._getDataTypeKey(e);if(this._typeBasedOverrides.has(t)){const i=this._typeBasedOverrides.get(t);return F(i,e)}else if(this._metadataBasedOverrides.size>0){const t=this._getMetadataBasedEditor(e);if(t){return t}}switch(t){case"string":return new I;case"number":return new A;case"integer":return new P;case"boolean":return new V;case"date":return new X;case"string:option":case"number:option":case"integer:option":case"date:option":case"array:option":return new N;case"string:dynamic-option":case"number:dynamic-option":case"integer:dynamic-option":case"date:dynamic-option":return new Y}if(this._typeBasedOverrides.has("default")){const t=this._typeBasedOverrides.get("default");return F(t,e)}const i=e.grid.dataModel.data("body",e.row,e.column);if(!i||typeof i!=="object"){return new I}return undefined}}class q{constructor(){this._changed=new d.Signal(this)}get changed(){return this._changed}groupCount(e){return 0}metadata(e,t,i){return q.emptyMetadata}group(e,t){return null}emitChanged(e){this._changed.emit(e)}}class j extends q{}(function(e){e.emptyMetadata=Object.freeze({})})(q||(q={}));class ${constructor(e){this._disposed=false;this._context=e;this._state=U.State.create(e)}dispose(){if(this._disposed){return}this._disposed=true;while(this._state.next){this._state=this._state.next;this._context.restore()}}get isDisposed(){return this._disposed}get fillStyle(){return this._context.fillStyle}set fillStyle(e){if(this._state.fillStyle!==e){this._state.fillStyle=e;this._context.fillStyle=e}}get strokeStyle(){return this._context.strokeStyle}set strokeStyle(e){if(this._state.strokeStyle!==e){this._state.strokeStyle=e;this._context.strokeStyle=e}}get font(){return this._context.font}set font(e){if(this._state.font!==e){this._state.font=e;this._context.font=e}}get textAlign(){return this._context.textAlign}set textAlign(e){if(this._state.textAlign!==e){this._state.textAlign=e;this._context.textAlign=e}}get textBaseline(){return this._context.textBaseline}set textBaseline(e){if(this._state.textBaseline!==e){this._state.textBaseline=e;this._context.textBaseline=e}}get lineCap(){return this._context.lineCap}set lineCap(e){if(this._state.lineCap!==e){this._state.lineCap=e;this._context.lineCap=e}}get lineDashOffset(){return this._context.lineDashOffset}set lineDashOffset(e){if(this._state.lineDashOffset!==e){this._state.lineDashOffset=e;this._context.lineDashOffset=e}}get lineJoin(){return this._context.lineJoin}set lineJoin(e){if(this._state.lineJoin!==e){this._state.lineJoin=e;this._context.lineJoin=e}}get lineWidth(){return this._context.lineWidth}set lineWidth(e){if(this._state.lineWidth!==e){this._state.lineWidth=e;this._context.lineWidth=e}}get miterLimit(){return this._context.miterLimit}set miterLimit(e){if(this._state.miterLimit!==e){this._state.miterLimit=e;this._context.miterLimit=e}}get shadowBlur(){return this._context.shadowBlur}set shadowBlur(e){if(this._state.shadowBlur!==e){this._state.shadowBlur=e;this._context.shadowBlur=e}}get shadowColor(){return this._context.shadowColor}set shadowColor(e){if(this._state.shadowColor!==e){this._state.shadowColor=e;this._context.shadowColor=e}}get shadowOffsetX(){return this._context.shadowOffsetX}set shadowOffsetX(e){if(this._state.shadowOffsetX!==e){this._state.shadowOffsetX=e;this._context.shadowOffsetX=e}}get shadowOffsetY(){return this._context.shadowOffsetY}set shadowOffsetY(e){if(this._state.shadowOffsetY!==e){this._state.shadowOffsetY=e;this._context.shadowOffsetY=e}}get imageSmoothingEnabled(){return this._context.imageSmoothingEnabled}set imageSmoothingEnabled(e){if(this._state.imageSmoothingEnabled!==e){this._state.imageSmoothingEnabled=e;this._context.imageSmoothingEnabled=e}}get globalAlpha(){return this._context.globalAlpha}set globalAlpha(e){if(this._state.globalAlpha!==e){this._state.globalAlpha=e;this._context.globalAlpha=e}}get globalCompositeOperation(){return this._context.globalCompositeOperation}set globalCompositeOperation(e){if(this._state.globalCompositeOperation!==e){this._state.globalCompositeOperation=e;this._context.globalCompositeOperation=e}}getLineDash(){return this._context.getLineDash()}setLineDash(e){this._context.setLineDash(e)}rotate(e){this._context.rotate(e)}scale(e,t){this._context.scale(e,t)}transform(e,t,i,s,o,r){this._context.transform(e,t,i,s,o,r)}translate(e,t){this._context.translate(e,t)}setTransform(e,t,i,s,o,r){this._context.setTransform(e,t,i,s,o,r)}save(){this._state=U.State.push(this._state);this._context.save()}restore(){if(!this._state.next){return}this._state=U.State.pop(this._state);this._context.restore()}beginPath(){return this._context.beginPath()}closePath(){this._context.closePath()}isPointInPath(e,t,i){let s;if(arguments.length===2){s=this._context.isPointInPath(e,t)}else{s=this._context.isPointInPath(e,t,i)}return s}arc(e,t,i,s,o,r){if(arguments.length===5){this._context.arc(e,t,i,s,o)}else{this._context.arc(e,t,i,s,o,r)}}arcTo(e,t,i,s,o){this._context.arcTo(e,t,i,s,o)}bezierCurveTo(e,t,i,s,o,r){this._context.bezierCurveTo(e,t,i,s,o,r)}ellipse(e,t,i,s,o,r,n,l){if(arguments.length===7){this._context.ellipse(e,t,i,s,o,r,n)}else{this._context.ellipse(e,t,i,s,o,r,n,l)}}lineTo(e,t){this._context.lineTo(e,t)}moveTo(e,t){this._context.moveTo(e,t)}quadraticCurveTo(e,t,i,s){this._context.quadraticCurveTo(e,t,i,s)}rect(e,t,i,s){this._context.rect(e,t,i,s)}clip(e){if(arguments.length===0){this._context.clip()}else{this._context.clip(e)}}fill(e){if(arguments.length===0){this._context.fill()}else{this._context.fill(e)}}stroke(){this._context.stroke()}clearRect(e,t,i,s){return this._context.clearRect(e,t,i,s)}fillRect(e,t,i,s){this._context.fillRect(e,t,i,s)}fillText(e,t,i,s){if(arguments.length===3){this._context.fillText(e,t,i)}else{this._context.fillText(e,t,i,s)}}strokeRect(e,t,i,s){this._context.strokeRect(e,t,i,s)}strokeText(e,t,i,s){if(arguments.length===3){this._context.strokeText(e,t,i)}else{this._context.strokeText(e,t,i,s)}}measureText(e){return this._context.measureText(e)}createLinearGradient(e,t,i,s){return this._context.createLinearGradient(e,t,i,s)}createRadialGradient(e,t,i,s,o,r){return this._context.createRadialGradient(e,t,i,s,o,r)}createPattern(e,t){return this._context.createPattern(e,t)}createImageData(){return this._context.createImageData.apply(this._context,arguments)}getImageData(e,t,i,s){return this._context.getImageData(e,t,i,s)}putImageData(){this._context.putImageData.apply(this._context,arguments)}drawImage(){this._context.drawImage.apply(this._context,arguments)}drawFocusIfNeeded(e){this._context.drawFocusIfNeeded(e)}}var U;(function(e){let t=-1;const i=[];class s{static create(e){let o=t<0?new s:i[t--];o.next=null;o.fillStyle=e.fillStyle;o.font=e.font;o.globalAlpha=e.globalAlpha;o.globalCompositeOperation=e.globalCompositeOperation;o.imageSmoothingEnabled=e.imageSmoothingEnabled;o.lineCap=e.lineCap;o.lineDashOffset=e.lineDashOffset;o.lineJoin=e.lineJoin;o.lineWidth=e.lineWidth;o.miterLimit=e.miterLimit;o.shadowBlur=e.shadowBlur;o.shadowColor=e.shadowColor;o.shadowOffsetX=e.shadowOffsetX;o.shadowOffsetY=e.shadowOffsetY;o.strokeStyle=e.strokeStyle;o.textAlign=e.textAlign;o.textBaseline=e.textBaseline;return o}static push(e){let o=t<0?new s:i[t--];o.next=e;o.fillStyle=e.fillStyle;o.font=e.font;o.globalAlpha=e.globalAlpha;o.globalCompositeOperation=e.globalCompositeOperation;o.imageSmoothingEnabled=e.imageSmoothingEnabled;o.lineCap=e.lineCap;o.lineDashOffset=e.lineDashOffset;o.lineJoin=e.lineJoin;o.lineWidth=e.lineWidth;o.miterLimit=e.miterLimit;o.shadowBlur=e.shadowBlur;o.shadowColor=e.shadowColor;o.shadowOffsetX=e.shadowOffsetX;o.shadowOffsetY=e.shadowOffsetY;o.strokeStyle=e.strokeStyle;o.textAlign=e.textAlign;o.textBaseline=e.textBaseline;return o}static pop(e){e.fillStyle="";e.strokeStyle="";i[++t]=e;return e.next}}e.State=s})(U||(U={}));class J{constructor(e={},t){this._changed=new d.Signal(this);this._values={...e};this._fallback=t||new v}get changed(){return this._changed}get(e){let t=this._values[e.region];if(typeof t==="function"){try{t=t(e)}catch(i){t=undefined;console.error(i)}}return t||this._fallback}update(e={},t){this._values={...this._values,...e};this._fallback=t||this._fallback;this._changed.emit(undefined)}}class Z{constructor(e){this._count=0;this._length=0;this._sections=[];this._minimumSize=e.minimumSize||2;this._defaultSize=Math.max(this._minimumSize,Math.floor(e.defaultSize))}get length(){return this._length}get count(){return this._count}get minimumSize(){return this._minimumSize}set minimumSize(e){e=Math.max(2,Math.floor(e));if(this._minimumSize===e){return}this._minimumSize=e;if(e>this._defaultSize){this.defaultSize=e}}get defaultSize(){return this._defaultSize}set defaultSize(e){e=Math.max(this._minimumSize,Math.floor(e));if(this._defaultSize===e){return}let t=e-this._defaultSize;this._defaultSize=e;this._length+=t*(this._count-this._sections.length);if(this._sections.length===0){return}for(let i=0,s=this._sections.length;i=this._length||this._count===0){return-1}if(this._sections.length===0){return Math.floor(e/this._defaultSize)}let t=h.ArrayExt.lowerBound(this._sections,e,Q.offsetCmp);if(t=this._count){return-1}if(this._sections.length===0){return e*this._defaultSize}let t=h.ArrayExt.lowerBound(this._sections,e,Q.indexCmp);if(t=this._count){return-1}if(this._sections.length===0){return(e+1)*this._defaultSize-1}let t=h.ArrayExt.lowerBound(this._sections,e,Q.indexCmp);if(t=this._count){return-1}if(this._sections.length===0){return this._defaultSize}let t=h.ArrayExt.lowerBound(this._sections,e,Q.indexCmp);if(t=this._count){return}t=Math.max(this._minimumSize,Math.floor(t));let i=h.ArrayExt.lowerBound(this._sections,e,Q.indexCmp);let s;if(i=this._count||t<=0){return}t=Math.min(this._count-e,t);if(this._sections.length===0){this._count-=t;this._length-=t*this._defaultSize;return}if(t===this._count){this._length=0;this._count=0;this._sections.length=0;return}let i=h.ArrayExt.lowerBound(this._sections,e,Q.indexCmp);let s=h.ArrayExt.lowerBound(this._sections,e+t,Q.indexCmp);let o=this._sections.splice(i,s-i);let r=(t-o.length)*this._defaultSize;for(let n=0,l=o.length;n=this._count||t<=0){return}if(this._sections.length===0){return}t=Math.min(t,this._count-e);i=Math.min(Math.max(0,i),this._count-t);if(e===i){return}let s=Math.min(e,i);let o=h.ArrayExt.lowerBound(this._sections,s,Q.indexCmp);if(o===this._sections.length){return}let r=Math.max(e+t-1,i+t-1);let n=h.ArrayExt.upperBound(this._sections,r,Q.indexCmp)-1;if(nr){n=s-r+10}if(n===0){return}this.scrollBy(0,n)}scrollToColumn(e){let t=this._columnSections.count;if(t===0){return}e=Math.floor(e);e=Math.max(0,Math.min(e,t-1));let i=this._columnSections.offsetOf(e);let s=this._columnSections.extentOf(e);let o=this._scrollX;let r=this._scrollX+this.pageWidth-1;let n=0;if(ir){n=s-r+10}if(n===0){return}this.scrollBy(n,0)}scrollToCell(e,t){let i=this._rowSections.count;let s=this._columnSections.count;if(i===0||s===0){return}e=Math.floor(e);t=Math.floor(t);e=Math.max(0,Math.min(e,i-1));t=Math.max(0,Math.min(t,s-1));let o=this._columnSections.offsetOf(t);let r=this._columnSections.extentOf(t);let n=this._rowSections.offsetOf(e);let l=this._rowSections.extentOf(e);let a=this._scrollX;let h=this._scrollX+this.pageWidth-1;let c=this._scrollY;let d=this._scrollY+this.pageHeight-1;let u=0;let f=0;if(oh){u=r-h+10}if(nd){f=l-d+10}if(u===0&&f===0){return}this.scrollBy(u,f)}moveCursor(e){if(!this.dataModel||!this._selectionModel||this._selectionModel.isEmpty){return}const t=this._selectionModel.selections();const i=t.next()&&!t.next();if(i){const t=this._selectionModel.currentSelection();if(t.r1===t.r2&&t.c1===t.c2){const i=e==="down"?1:e==="up"?-1:0;const s=e==="right"?1:e==="left"?-1:0;let o=t.r1+i;let r=t.c1+s;const n=this.dataModel.rowCount("body");const l=this.dataModel.columnCount("body");if(o>=n){o=0;r+=1}else if(o===-1){o=n-1;r-=1}if(r>=l){r=0;o+=1;if(o>=n){o=0}}else if(r===-1){r=l-1;o-=1;if(o===-1){o=n-1}}this._selectionModel.select({r1:o,c1:r,r2:o,c2:r,cursorRow:o,cursorColumn:r,clear:"all"});return}}this._selectionModel.moveCursorWithinSelections(e)}scrollToCursor(){if(!this._selectionModel){return}let e=this._selectionModel.cursorRow;let t=this._selectionModel.cursorColumn;this.scrollToCell(e,t)}scrollBy(e,t){this.scrollTo(this.scrollX+e,this.scrollY+t)}scrollByPage(e){let t=0;let i=0;switch(e){case"up":i=-this.pageHeight;break;case"down":i=this.pageHeight;break;case"left":t=-this.pageWidth;break;case"right":t=this.pageWidth;break;default:throw"unreachable"}this.scrollTo(this.scrollX+t,this.scrollY+i)}scrollByStep(e){let t;let i;let s=this.scrollX;let o=this.scrollY;let r=this._rowSections;let n=this._columnSections;switch(e){case"up":t=r.indexOf(o-1);o=t<0?o:r.offsetOf(t);break;case"down":t=r.indexOf(o);o=t<0?o:r.offsetOf(t)+r.sizeOf(t);break;case"left":i=n.indexOf(s-1);s=i<0?s:n.offsetOf(i);break;case"right":i=n.indexOf(s);s=i<0?s:n.offsetOf(i)+n.sizeOf(i);break;default:throw"unreachable"}this.scrollTo(s,o)}scrollTo(e,t){e=Math.max(0,Math.min(Math.floor(e),this.maxScrollX));t=Math.max(0,Math.min(Math.floor(t),this.maxScrollY));this._hScrollBar.value=e;this._vScrollBar.value=t;m.MessageLoop.postMessage(this._viewport,te.ScrollRequest)}rowCount(e){let t;if(e==="body"){t=this._rowSections.count}else{t=this._columnHeaderSections.count}return t}columnCount(e){let t;if(e==="body"){t=this._columnSections.count}else{t=this._rowHeaderSections.count}return t}rowAt(e,t){if(t<0){return-1}if(e==="column-header"){return this._columnHeaderSections.indexOf(t)}let i=this._rowSections.indexOf(t);if(i>=0){return i}if(!this._stretchLastRow){return-1}let s=this.bodyHeight;let o=this.pageHeight;if(o<=s){return-1}if(t>=o){return-1}return this._rowSections.count-1}columnAt(e,t){if(t<0){return-1}if(e==="row-header"){return this._rowHeaderSections.indexOf(t)}let i=this._columnSections.indexOf(t);if(i>=0){return i}if(!this._stretchLastColumn){return-1}let s=this.bodyWidth;let o=this.pageWidth;if(o<=s){return-1}if(t>=o){return-1}return this._columnSections.count-1}rowOffset(e,t){let i;if(e==="body"){i=this._rowSections.offsetOf(t)}else{i=this._columnHeaderSections.offsetOf(t)}return i}columnOffset(e,t){let i;if(e==="body"){i=this._columnSections.offsetOf(t)}else{i=this._rowHeaderSections.offsetOf(t)}return i}rowSize(e,t){if(e==="column-header"){return this._columnHeaderSections.sizeOf(t)}let i=this._rowSections.sizeOf(t);if(i<0){return i}if(!this._stretchLastRow){return i}if(tn){n=h}if(this._stretchLastRow&&a>l){l=a}if(i>=0&&i=0&&s=0&&s=0&&i=0&&i=0&&s=o&&i=r&&s1){alert("Cannot copy multiple grid selections.");return}let o=e.rowCount("body");let r=e.columnCount("body");if(o===0||r===0){return}let{r1:n,c1:l,r2:a,c2:h}=i[0];n=Math.max(0,Math.min(n,o-1));l=Math.max(0,Math.min(l,r-1));a=Math.max(0,Math.min(a,o-1));h=Math.max(0,Math.min(h,r-1));if(am){let e=`Copying ${w} cells may take a while. Continue?`;if(!window.confirm(e)){return}}let y={region:"body",row:0,column:0,value:null,metadata:{}};let x=new Array(g);for(let s=0;se.join(u)));let C=v.join("\n");s.ClipboardExt.copyText(C)}processMessage(e){if(e.type==="child-shown"||e.type==="child-hidden"){return}if(e.type==="fit-request"){let e=s.ElementExt.sizeLimits(this._vScrollBar.node);let t=s.ElementExt.sizeLimits(this._hScrollBar.node);this._vScrollBarMinWidth=e.minWidth;this._hScrollBarMinHeight=t.minHeight}super.processMessage(e)}messageHook(e,t){if(e===this._viewport){this._processViewportMessage(t);return true}if(e===this._hScrollBar&&t.type==="activate-request"){this.activate();return false}if(e===this._vScrollBar&&t.type==="activate-request"){this.activate();return false}return true}handleEvent(e){switch(e.type){case"keydown":this._evtKeyDown(e);break;case"mousedown":this._evtMouseDown(e);break;case"mousemove":this._evtMouseMove(e);break;case"mouseup":this._evtMouseUp(e);break;case"dblclick":this._evtMouseDoubleClick(e);break;case"mouseleave":this._evtMouseLeave(e);break;case"contextmenu":this._evtContextMenu(e);break;case"wheel":this._evtWheel(e);break;case"resize":this._refreshDPI();break}}get currentViewport(){let e=this.viewport.node.offsetWidth;let t=this.viewport.node.offsetHeight;e=Math.round(e);t=Math.round(t);if(e<=0||t<=0){return}const i=this._columnSections.length-this.scrollX;const s=this._rowSections.length-this.scrollY;const o=this.headerWidth;const r=this.headerHeight;const n=o;const l=r;const a=Math.min(e-1,o+i-1);const h=Math.min(t-1,r+s-1);const c=this._rowSections.indexOf(l-r+this.scrollY);const d=this._columnSections.indexOf(n-o+this.scrollX);const u=this._rowSections.indexOf(h-r+this.scrollY);const f=this._columnSections.indexOf(a-o+this.scrollX);return{firstRow:c,firstColumn:d,lastRow:u,lastColumn:f}}onActivateRequest(e){this.viewport.node.focus({preventScroll:true})}onBeforeAttach(e){window.addEventListener("resize",this);this.node.addEventListener("wheel",this);this._viewport.node.addEventListener("keydown",this);this._viewport.node.addEventListener("mousedown",this);this._viewport.node.addEventListener("mousemove",this);this._viewport.node.addEventListener("dblclick",this);this._viewport.node.addEventListener("mouseleave",this);this._viewport.node.addEventListener("contextmenu",this);this.repaintContent();this.repaintOverlay()}onAfterDetach(e){window.removeEventListener("resize",this);this.node.removeEventListener("wheel",this);this._viewport.node.removeEventListener("keydown",this);this._viewport.node.removeEventListener("mousedown",this);this._viewport.node.removeEventListener("mousemove",this);this._viewport.node.removeEventListener("mouseleave",this);this._viewport.node.removeEventListener("dblclick",this);this._viewport.node.removeEventListener("contextmenu",this);this._releaseMouse()}onBeforeShow(e){this.repaintContent();this.repaintOverlay()}onResize(e){if(this._editorController){this._editorController.cancel()}this._syncScrollState()}repaintContent(){let e=new te.PaintRequest("all",0,0,0,0);m.MessageLoop.postMessage(this._viewport,e)}repaintRegion(e,t,i,s,o){let r=new te.PaintRequest(e,t,i,s,o);m.MessageLoop.postMessage(this._viewport,r)}repaintOverlay(){m.MessageLoop.postMessage(this._viewport,te.OverlayPaintRequest)}_getMaxWidthInColumn(e,t){const i=this.dataModel;if(!i){return null}const s=t=="row-header"?"corner-header":"column-header";return Math.max(this._getMaxWidthInArea(i,e,s,"column-header"),this._getMaxWidthInArea(i,e,t,"body"))}_getMaxWidthInArea(e,t,i,s){const o=e.rowCount(s);const r=Array.from({length:Math.min(o,1e6)},((s,o)=>ee._getConfig(e,o,t,i)));if(o>1e5){r.sort((e=>-this._getTextToRender(e).length))}let n=0;for(let l=0;l=e&&r>=t&&o<=i&&r<=s){return}let n=i-512;let l=s-512;this._canvasGC.setTransform(1,0,0,1,0,0);this._bufferGC.setTransform(1,0,0,1,0,0);this._overlayGC.setTransform(1,0,0,1,0,0);if(oi){this._buffer.width=i}if(rs){this._buffer.height=s}let a=o>0&&r>0&&e>0&&t>0;if(a){this._bufferGC.drawImage(this._canvas,0,0)}if(oi){this._canvas.width=i;this._canvas.style.width=`${i/this._dpiRatio}px`}if(rs){this._canvas.height=s;this._canvas.style.height=`${s/this._dpiRatio}px`}if(a){this._canvasGC.drawImage(this._buffer,0,0)}if(a){this._bufferGC.drawImage(this._overlay,0,0)}if(oi){this._overlay.width=i;this._overlay.style.width=`${i/this._dpiRatio}px`}if(rs){this._overlay.height=s;this._overlay.style.height=`${s/this._dpiRatio}px`}if(a){this._overlayGC.drawImage(this._buffer,0,0)}}_syncScrollState(){let e=this.bodyWidth;let t=this.bodyHeight;let i=this.pageWidth;let s=this.pageHeight;let o=!this._vScrollBar.isHidden;let r=!this._hScrollBar.isHidden;let n=this._vScrollBarMinWidth;let l=this._hScrollBarMinHeight;let a=i+(o?n:0);let h=s+(r?l:0);let c=hthis.bodyWidth){let e=this._columnSections.offsetOf(this._columnSections.count-1);let o=Math.min(this.headerWidth+e,s);this.paintContent(o,0,t-o,i)}else if(t>s){this.paintContent(s,0,t-s+1,i)}if(this._stretchLastRow&&this.pageHeight>this.bodyHeight){let e=this._rowSections.offsetOf(this._rowSections.count-1);let s=Math.min(this.headerHeight+e,o);this.paintContent(0,s,t,i-s)}else if(i>o){this.paintContent(0,o,t,i-o+1)}this._paintOverlay()}_onViewportScrollRequest(e){this._scrollTo(this._hScrollBar.value,this._vScrollBar.value)}_onViewportPaintRequest(e){if(!this._viewport.isVisible){return}if(this._viewportWidth===0||this._viewportHeight===0){return}let t=0;let i=0;let s=this._viewportWidth-1;let o=this._viewportHeight-1;let r=this._scrollX;let n=this._scrollY;let l=this.headerWidth;let a=this.headerHeight;let h=this._rowSections;let c=this._columnSections;let d=this._rowHeaderSections;let u=this._columnHeaderSections;let{region:f,r1:_,c1:m,r2:g,c2:p}=e;let w;let y;let x;let v;switch(f){case"all":w=t;y=i;x=s;v=o;break;case"body":_=Math.max(0,Math.min(_,h.count));m=Math.max(0,Math.min(m,c.count));g=Math.max(0,Math.min(g,h.count));p=Math.max(0,Math.min(p,c.count));w=c.offsetOf(m)-r+l;y=h.offsetOf(_)-n+a;x=c.extentOf(p)-r+l;v=h.extentOf(g)-n+a;break;case"row-header":_=Math.max(0,Math.min(_,h.count));m=Math.max(0,Math.min(m,d.count));g=Math.max(0,Math.min(g,h.count));p=Math.max(0,Math.min(p,d.count));w=d.offsetOf(m);y=h.offsetOf(_)-n+a;x=d.extentOf(p);v=h.extentOf(g)-n+a;break;case"column-header":_=Math.max(0,Math.min(_,u.count));m=Math.max(0,Math.min(m,c.count));g=Math.max(0,Math.min(g,u.count));p=Math.max(0,Math.min(p,c.count));w=c.offsetOf(m)-r+l;y=u.offsetOf(_);x=c.extentOf(p)-r+l;v=u.extentOf(g);break;case"corner-header":_=Math.max(0,Math.min(_,u.count));m=Math.max(0,Math.min(m,d.count));g=Math.max(0,Math.min(g,u.count));p=Math.max(0,Math.min(p,d.count));w=d.offsetOf(m);y=u.offsetOf(_);x=d.extentOf(p);v=u.extentOf(g);break;default:throw"unreachable"}if(xs||y>o){return}w=Math.max(t,Math.min(w,s));y=Math.max(i,Math.min(y,o));x=Math.max(t,Math.min(x,s));v=Math.max(i,Math.min(v,o));this.paintContent(w,y,x-w+1,v-y+1)}_onViewportOverlayPaintRequest(e){if(!this._viewport.isVisible){return}if(this._viewportWidth===0||this._viewportHeight===0){return}this._paintOverlay()}_onViewportRowResizeRequest(e){if(e.region==="body"){this._resizeRow(e.index,e.size)}else{this._resizeColumnHeader(e.index,e.size)}}_onViewportColumnResizeRequest(e){if(e.region==="body"){this._resizeColumn(e.index,e.size)}else{this._resizeRowHeader(e.index,e.size)}}_onThumbMoved(e){m.MessageLoop.postMessage(this._viewport,te.ScrollRequest)}_onPageRequested(e,t){if(e===this._vScrollBar){this.scrollByPage(t==="decrement"?"up":"down")}else{this.scrollByPage(t==="decrement"?"left":"right")}}_onStepRequested(e,t){if(e===this._vScrollBar){this.scrollByStep(t==="decrement"?"up":"down")}else{this.scrollByStep(t==="decrement"?"left":"right")}}_onDataModelChanged(e,t){switch(t.type){case"rows-inserted":this._onRowsInserted(t);break;case"columns-inserted":this._onColumnsInserted(t);break;case"rows-removed":this._onRowsRemoved(t);break;case"columns-removed":this._onColumnsRemoved(t);break;case"rows-moved":this._onRowsMoved(t);break;case"columns-moved":this._onColumnsMoved(t);break;case"cells-changed":this._onCellsChanged(t);break;case"model-reset":this._onModelReset(t);break;default:throw"unreachable"}}_onSelectionsChanged(e){this.repaintOverlay()}_onRowsInserted(e){let{region:t,index:i,span:s}=e;if(s<=0){return}let o;if(t==="body"){o=this._rowSections}else{o=this._columnHeaderSections}if(this._scrollY===this.maxScrollY&&this.maxScrollY>0){o.insert(i,s);this._scrollY=this.maxScrollY}else{o.insert(i,s)}this._syncViewport()}_onColumnsInserted(e){let{region:t,index:i,span:s}=e;if(s<=0){return}let o;if(t==="body"){o=this._columnSections}else{o=this._rowHeaderSections}if(this._scrollX===this.maxScrollX&&this.maxScrollX>0){o.insert(i,s);this._scrollX=this.maxScrollX}else{o.insert(i,s)}this._syncViewport()}_onRowsRemoved(e){let{region:t,index:i,span:s}=e;if(s<=0){return}let o;if(t==="body"){o=this._rowSections}else{o=this._columnHeaderSections}if(i<0||i>=o.count){return}if(this._scrollY===this.maxScrollY&&this.maxScrollY>0){o.remove(i,s);this._scrollY=this.maxScrollY}else{o.remove(i,s)}this._syncViewport()}_onColumnsRemoved(e){let{region:t,index:i,span:s}=e;if(s<=0){return}let o;if(t==="body"){o=this._columnSections}else{o=this._rowHeaderSections}if(i<0||i>=o.count){return}if(this._scrollX===this.maxScrollX&&this.maxScrollX>0){o.remove(i,s);this._scrollX=this.maxScrollX}else{o.remove(i,s)}this._syncViewport()}_onRowsMoved(e){let{region:t,index:i,span:s,destination:o}=e;if(s<=0){return}let r;if(t==="body"){r=this._rowSections}else{r=this._columnHeaderSections}if(i<0||i>=r.count){return}s=Math.min(s,r.count-i);o=Math.min(Math.max(0,o),r.count-s);if(i===o){return}let n=Math.min(i,o);let l=Math.max(i+s-1,o+s-1);r.move(i,s,o);if(t==="body"){this.repaintRegion("body",n,0,l,Infinity);this.repaintRegion("row-header",n,0,l,Infinity)}else{this.repaintRegion("column-header",n,0,l,Infinity);this.repaintRegion("corner-header",n,0,l,Infinity)}this._syncViewport()}_onColumnsMoved(e){let{region:t,index:i,span:s,destination:o}=e;if(s<=0){return}let r;if(t==="body"){r=this._columnSections}else{r=this._rowHeaderSections}if(i<0||i>=r.count){return}s=Math.min(s,r.count-i);o=Math.min(Math.max(0,o),r.count-s);if(i===o){return}r.move(i,s,o);let n=Math.min(i,o);let l=Math.max(i+s-1,o+s-1);if(t==="body"){this.repaintRegion("body",0,n,Infinity,l);this.repaintRegion("column-header",0,n,Infinity,l)}else{this.repaintRegion("row-header",0,n,Infinity,l);this.repaintRegion("corner-header",0,n,Infinity,l)}this._syncViewport()}_onCellsChanged(e){let{region:t,row:i,column:s,rowSpan:o,columnSpan:r}=e;if(o<=0&&r<=0){return}let n=i;let l=s;let a=n+o-1;let h=l+r-1;this.repaintRegion(t,n,l,a,h)}_onModelReset(e){let t=this._rowSections.count;let i=this._columnSections.count;let s=this._rowHeaderSections.count;let o=this._columnHeaderSections.count;let r=this._dataModel.rowCount("body")-t;let n=this._dataModel.columnCount("body")-i;let l=this._dataModel.columnCount("row-header")-s;let a=this._dataModel.rowCount("column-header")-o;if(r>0){this._rowSections.insert(t,r)}else if(r<0){this._rowSections.remove(t+r,-r)}if(n>0){this._columnSections.insert(i,n)}else if(n<0){this._columnSections.remove(i+n,-n)}if(l>0){this._rowHeaderSections.insert(s,l)}else if(l<0){this._rowHeaderSections.remove(s+l,-l)}if(a>0){this._columnHeaderSections.insert(o,a)}else if(a<0){this._columnHeaderSections.remove(o+a,-a)}this._syncViewport()}_onRenderersChanged(){this.repaintContent()}_evtKeyDown(e){if(this._mousedown){e.preventDefault();e.stopPropagation()}else if(this._keyHandler){this._keyHandler.onKeyDown(this,e)}}_evtMouseDown(e){if(e.button!==0){return}this.activate();e.preventDefault();e.stopPropagation();document.addEventListener("keydown",this,true);document.addEventListener("mouseup",this,true);document.addEventListener("mousedown",this,true);document.addEventListener("mousemove",this,true);document.addEventListener("contextmenu",this,true);this._mousedown=true;if(this._mouseHandler){this._mouseHandler.onMouseDown(this,e)}}_evtMouseMove(e){if(this._mousedown){e.preventDefault();e.stopPropagation()}if(!this._mouseHandler){return}if(this._mousedown){this._mouseHandler.onMouseMove(this,e)}else{this._mouseHandler.onMouseHover(this,e)}}_evtMouseUp(e){if(e.button!==0){return}e.preventDefault();e.stopPropagation();if(this._mouseHandler){this._mouseHandler.onMouseUp(this,e)}this._releaseMouse()}_evtMouseDoubleClick(e){if(e.button!==0){return}e.preventDefault();e.stopPropagation();if(this._mouseHandler){this._mouseHandler.onMouseDoubleClick(this,e)}this._releaseMouse()}_evtMouseLeave(e){if(this._mousedown){e.preventDefault();e.stopPropagation()}else if(this._mouseHandler){this._mouseHandler.onMouseLeave(this,e)}}_evtContextMenu(e){if(this._mousedown){e.preventDefault();e.stopPropagation()}else if(this._mouseHandler){this._mouseHandler.onContextMenu(this,e)}}_evtWheel(e){if(s.Platform.accelKey(e)){return}if(!this._mouseHandler){return}this._mouseHandler.onWheel(this,e)}_releaseMouse(){this._mousedown=false;if(this._mouseHandler){this._mouseHandler.release()}document.removeEventListener("keydown",this,true);document.removeEventListener("mouseup",this,true);document.removeEventListener("mousedown",this,true);document.removeEventListener("mousemove",this,true);document.removeEventListener("contextmenu",this,true)}_refreshDPI(){let e=Math.ceil(window.devicePixelRatio);if(this._dpiRatio===e){return}this._dpiRatio=e;this.repaintContent();this.repaintOverlay();this._resizeCanvasIfNeeded(this._viewportWidth,this._viewportHeight);this._canvas.style.width=`${this._canvas.width/this._dpiRatio}px`;this._canvas.style.height=`${this._canvas.height/this._dpiRatio}px`;this._overlay.style.width=`${this._overlay.width/this._dpiRatio}px`;this._overlay.style.height=`${this._overlay.height/this._dpiRatio}px`}_resizeRow(e,t){let i=this._rowSections;if(e<0||e>=i.count){return}let s=i.sizeOf(e);let o=i.clampSize(t);if(s===o){return}i.resize(e,o);let r=this._viewportWidth;let n=this._viewportHeight;if(!this._viewport.isVisible||r===0||n===0){this._syncScrollState();return}let l=o-s;let a=this.headerHeight;let h=i.offsetOf(e)+a-this._scrollY;if(a>=n||h>=n){this._syncScrollState();return}if(h+s<=a){this._scrollY+=l;this._syncScrollState();return}let c=Math.max(a,h);if(h+s>=n||h+o>=n){this.paintContent(0,c,r,n-c);this._paintOverlay();this._syncScrollState();return}let d=0;let u=r;let f=0;let _;let m;let g;if(h+o<=a){_=a-l;m=n-_;g=a}else{_=h+s;m=n-_;g=_+l}this._blitContent(this._canvas,d,_,u,m,f,g);if(o>0&&h+o>a){this.paintContent(0,c,r,h+o-c)}if(this._stretchLastRow&&this.pageHeight>this.bodyHeight){let e=this._rowSections.count-1;let t=a+this._rowSections.offsetOf(e);this.paintContent(0,t,r,n-t)}else if(l<0){this.paintContent(0,n+l,r,-l)}for(const p of["body","row-header"]){const t=S.getCellGroupsAtRow(this.dataModel,p,e);let i={region:p,xMin:0,xMax:0,yMin:0,yMax:0};let s=undefined;switch(p){case"body":i.xMin=this.headerWidth;i.xMax=this.headerWidth+this.bodyWidth;i.yMin=this.headerHeight;i.yMax=this.headerHeight+this.bodyHeight;s=this._style.backgroundColor;break;case"row-header":i.xMin=0;i.xMax=this.headerWidth;i.yMin=this.headerHeight;i.yMax=this.headerHeight+this.bodyHeight;s=this._style.headerBackgroundColor;break}this._paintMergedCells(t,i,s)}this._paintOverlay();this._syncScrollState()}_resizeColumn(e,t){let i=this._columnSections;if(e<0||e>=i.count){return}const s=t!==null&&t!==void 0?t:this._getMaxWidthInColumn(e,"body");if(!s||s==0){return}let o=i.sizeOf(e);let r=i.clampSize(s);if(o===r){return}i.resize(e,r);let n=this._viewportWidth;let l=this._viewportHeight;if(!this._viewport.isVisible||n===0||l===0){this._syncScrollState();return}let a=r-o;let h=this.headerWidth;let c=i.offsetOf(e)+h-this._scrollX;if(h>=n||c>=n){this._syncScrollState();return}if(c+o<=h){this._scrollX+=a;this._syncScrollState();return}let d=Math.max(h,c);if(c+o>=n||c+r>=n){this.paintContent(d,0,n-d,l);this._paintOverlay();this._syncScrollState();return}let u=0;let f=l;let _=0;let m;let g;let p;if(c+r<=h){m=h-a;g=n-m;p=h}else{m=c+o;g=n-m;p=m+a}this._blitContent(this._canvas,m,u,g,f,p,_);if(r>0&&c+r>h){this.paintContent(d,0,c+r-d,l)}if(this._stretchLastColumn&&this.pageWidth>this.bodyWidth){let e=this._columnSections.count-1;let t=h+this._columnSections.offsetOf(e);this.paintContent(t,0,n-t,l)}else if(a<0){this.paintContent(n+a,0,-a,l)}for(const w of["body","column-header"]){const t=S.getCellGroupsAtColumn(this.dataModel,w,e);let i={region:w,xMin:0,xMax:0,yMin:0,yMax:0};let s=undefined;switch(w){case"body":i.xMin=this.headerWidth;i.xMax=this.headerWidth+this.bodyWidth;i.yMin=this.headerHeight;i.yMax=this.headerHeight+this.bodyHeight;s=this._style.backgroundColor;break;case"column-header":i.xMin=this.headerWidth;i.xMax=this.headerWidth+this.bodyWidth;i.yMin=0;i.yMax=this.headerHeight;s=this._style.headerBackgroundColor;break}this._paintMergedCells(t,i,s)}this._paintOverlay();this._syncScrollState()}_resizeRowHeader(e,t){let i=this._rowHeaderSections;if(e<0||e>=i.count){return}const s=t!==null&&t!==void 0?t:this._getMaxWidthInColumn(e,"row-header");if(!s||s==0){return}let o=i.sizeOf(e);let r=i.clampSize(s);if(o===r){return}i.resize(e,r);let n=this._viewportWidth;let l=this._viewportHeight;if(!this._viewport.isVisible||n===0||l===0){this._syncScrollState();return}let a=r-o;let h=i.offsetOf(e);if(h>=n){this._syncScrollState();return}if(h+o>=n||h+r>=n){this.paintContent(h,0,n-h,l);this._paintOverlay();this._syncScrollState();return}let c=h+o;let d=0;let u=n-c;let f=l;let _=c+a;let m=0;this._blitContent(this._canvas,c,d,u,f,_,m);if(r>0){this.paintContent(h,0,r,l)}if(this._stretchLastColumn&&this.pageWidth>this.bodyWidth){let e=this._columnSections.count-1;let t=this.headerWidth+this._columnSections.offsetOf(e);this.paintContent(t,0,n-t,l)}else if(a<0){this.paintContent(n+a,0,-a,l)}for(const g of["corner-header","row-header"]){const t=S.getCellGroupsAtColumn(this.dataModel,g,e);let i={region:g,xMin:0,xMax:0,yMin:0,yMax:0};switch(g){case"corner-header":i.xMin=0;i.xMax=this.headerWidth;i.yMin=0;i.yMax=this.headerHeight;break;case"row-header":i.xMin=0;i.xMax=this.headerWidth;i.yMin=this.headerHeight;i.yMax=this.headerHeight+this.bodyHeight;break}this._paintMergedCells(t,i,this._style.headerBackgroundColor)}this._paintOverlay();this._syncScrollState()}_resizeColumnHeader(e,t){let i=this._columnHeaderSections;if(e<0||e>=i.count){return}let s=i.sizeOf(e);let o=i.clampSize(t);if(s===o){return}i.resize(e,o);let r=this._viewportWidth;let n=this._viewportHeight;if(!this._viewport.isVisible||r===0||n===0){this._syncScrollState();return}this._paintOverlay();let l=o-s;let a=i.offsetOf(e);if(a>=n){this._syncScrollState();return}if(a+s>=n||a+o>=n){this.paintContent(0,a,r,n-a);this._paintOverlay();this._syncScrollState();return}let h=0;let c=a+s;let d=r;let u=n-c;let f=0;let _=c+l;this._blitContent(this._canvas,h,c,d,u,f,_);if(o>0){this.paintContent(0,a,r,o)}if(this._stretchLastRow&&this.pageHeight>this.bodyHeight){let e=this._rowSections.count-1;let t=this.headerHeight+this._rowSections.offsetOf(e);this.paintContent(0,t,r,n-t)}else if(l<0){this.paintContent(0,n+l,r,-l)}for(const m of["corner-header","column-header"]){const t=S.getCellGroupsAtRow(this.dataModel,m,e);let i={region:m,xMin:0,xMax:0,yMin:0,yMax:0};switch(m){case"corner-header":i.xMin=0;i.xMax=this.headerWidth;i.yMin=0;i.yMax=this.headerHeight;break;case"column-header":i.xMin=this.headerWidth;i.xMax=this.headerWidth+this.bodyWidth;i.yMin=0;i.yMax=this.headerHeight;break}this._paintMergedCells(t,i,this._style.headerBackgroundColor)}this._paintOverlay();this._syncScrollState()}_scrollTo(e,t){if(!this.dataModel){return}e=Math.max(0,Math.min(Math.floor(e),this.maxScrollX));t=Math.max(0,Math.min(Math.floor(t),this.maxScrollY));this._hScrollBar.value=e;this._vScrollBar.value=t;let i=e-this._scrollX;let s=t-this._scrollY;if(i===0&&s===0){return}if(!this._viewport.isVisible){this._scrollX=e;this._scrollY=t;return}let o=this._viewportWidth;let r=this._viewportHeight;if(o===0||r===0){this._scrollX=e;this._scrollY=t;return}let n=this.headerWidth;let l=this.headerHeight;let a=o-n;let h=r-l;if(a<=0&&h<=0){this._scrollX=e;this._scrollY=t;return}let c=0;if(i!==0&&a>0){if(Math.abs(i)>=a){c=a*r}else{c=Math.abs(i)*r}}let d=0;if(s!==0&&h>0){if(Math.abs(s)>=h){d=o*h}else{d=o*Math.abs(s)}}if(c+d>=o*r){this._scrollX=e;this._scrollY=t;this.paintContent(0,0,o,r);this._paintOverlay();return}this._scrollY=t;if(s!==0&&h>0){if(Math.abs(s)>=h){this.paintContent(0,l,o,h)}else{const e=0;const t=s<0?l:l+s;const i=o;const n=h-Math.abs(s);this._blitContent(this._canvas,e,t,i,n,e,t-s);this.paintContent(0,s<0?l:r-s,o,Math.abs(s));for(const s of["body","row-header"]){const e=S.getCellGroupsAtRegion(this.dataModel,s);let t={region:s,xMin:0,xMax:0,yMin:0,yMax:0};let i=undefined;switch(s){case"body":t.xMin=this.headerWidth;t.xMax=this.headerWidth+this.bodyWidth;t.yMin=this.headerHeight;t.yMax=this.headerHeight+this.bodyHeight;i=this._style.backgroundColor;break;case"row-header":t.xMin=0;t.xMax=this.headerWidth;t.yMin=this.headerHeight;t.yMax=this.headerHeight+this.bodyHeight;i=this._style.headerBackgroundColor;break}this._paintMergedCells(e,t,i)}}}this._scrollX=e;if(i!==0&&a>0){if(Math.abs(i)>=a){this.paintContent(n,0,a,r)}else{const e=i<0?n:n+i;const t=0;const s=a-Math.abs(i);const l=r;this._blitContent(this._canvas,e,t,s,l,e-i,t);this.paintContent(i<0?n:o-i,0,Math.abs(i),r);for(const i of["body","column-header"]){const e=S.getCellGroupsAtRegion(this.dataModel,i);let t={region:i,xMin:0,xMax:0,yMin:0,yMax:0};let s=undefined;switch(i){case"body":t.xMin=this.headerWidth;t.xMax=this.headerWidth+this.bodyWidth;t.yMin=this.headerHeight;t.yMax=this.headerHeight+this.bodyHeight;s=this._style.backgroundColor;break;case"column-header":t.xMin=this.headerWidth;t.xMax=this.headerWidth+this.bodyWidth;t.yMin=0;t.yMax=this.headerHeight;s=this._style.headerBackgroundColor;break}this._paintMergedCells(e,t,s)}}}this._paintOverlay()}_blitContent(e,t,i,s,o,r,n){t*=this._dpiRatio;i*=this._dpiRatio;s*=this._dpiRatio;o*=this._dpiRatio;r*=this._dpiRatio;n*=this._dpiRatio;this._canvasGC.save();this._canvasGC.setTransform(1,0,0,1,0,0);this._canvasGC.drawImage(e,t,i,s,o,r,n,s,o);this._canvasGC.restore()}paintContent(e,t,i,s){this._canvasGC.setTransform(this._dpiRatio,0,0,this._dpiRatio,0,0);this._bufferGC.setTransform(this._dpiRatio,0,0,this._dpiRatio,0,0);this._canvasGC.clearRect(e,t,i,s);this._drawVoidRegion(e,t,i,s);this._drawBodyRegion(e,t,i,s);this._drawRowHeaderRegion(e,t,i,s);this._drawColumnHeaderRegion(e,t,i,s);this.drawCornerHeaderRegion(e,t,i,s)}_fitBodyColumnHeaders(e,t,i){const s=i===undefined?e.columnCount("body"):i;for(let o=0;o=n+o){return}if(t>=l+r){return}let a=this.bodyHeight;let h=this.bodyWidth;let c=this.pageHeight;let d=this.pageWidth;let u=Math.max(e,n);let f=Math.max(t,l);let _=Math.min(e+i-1,n+o-1);let m=Math.min(t+s-1,l+r-1);let g=this._rowSections.indexOf(f-l+this._scrollY);let p=this._columnSections.indexOf(u-n+this._scrollX);let w=this._rowSections.indexOf(m-l+this._scrollY);let y=this._columnSections.indexOf(_-n+this._scrollX);let x=this._rowSections.count-1;let v=this._columnSections.count-1;if(w<0){w=x}if(y<0){y=v}let C=this._columnSections.offsetOf(p)+n-this._scrollX;let M=this._rowSections.offsetOf(g)+l-this._scrollY;let b=0;let H=0;let R=new Array(w-g+1);let z=new Array(y-p+1);for(let S=g;S<=w;++S){let e=this._rowSections.sizeOf(S);R[S-g]=e;H+=e}for(let S=p;S<=y;++S){let e=this._columnSections.sizeOf(S);z[S-p]=e;b+=e}if(this._stretchLastRow&&c>a&&w===x){let e=this.pageHeight-this.bodyHeight;R[R.length-1]+=e;H+=e;m+=e}if(this._stretchLastColumn&&d>h&&y===v){let e=this.pageWidth-this.bodyWidth;z[z.length-1]+=e;b+=e;_+=e}let O={region:"body",xMin:u,yMin:f,xMax:_,yMax:m,x:C,y:M,width:b,height:H,row:g,column:p,rowSizes:R,columnSizes:z};this._drawBackground(O,this._style.backgroundColor);this._drawRowBackground(O,this._style.rowBackgroundColor);this._drawColumnBackground(O,this._style.columnBackgroundColor);this._drawCells(O);this._drawHorizontalGridLines(O,this._style.horizontalGridLineColor||this._style.gridLineColor);this._drawVerticalGridLines(O,this._style.verticalGridLineColor||this._style.gridLineColor);const k=S.getCellGroupsAtRegion(this.dataModel,O.region).filter((e=>this.cellGroupInteresectsRegion(e,O)));this._paintMergedCells(k,O,this._style.backgroundColor)}_drawRowHeaderRegion(e,t,i,s){let o=this.headerWidth;let r=this.bodyHeight-this._scrollY;if(o<=0||r<=0){return}let n=0;let l=this.headerHeight;if(e+i<=n){return}if(t+s<=l){return}if(e>=n+o){return}if(t>=l+r){return}let a=this.bodyHeight;let h=this.pageHeight;let c=e;let d=Math.max(t,l);let u=Math.min(e+i-1,n+o-1);let f=Math.min(t+s-1,l+r-1);let _=this._rowSections.indexOf(d-l+this._scrollY);let m=this._rowHeaderSections.indexOf(c);let g=this._rowSections.indexOf(f-l+this._scrollY);let p=this._rowHeaderSections.indexOf(u);let w=this._rowSections.count-1;let y=this._rowHeaderSections.count-1;if(g<0){g=w}if(p<0){p=y}let x=this._rowHeaderSections.offsetOf(m);let v=this._rowSections.offsetOf(_)+l-this._scrollY;let C=0;let M=0;let b=new Array(g-_+1);let H=new Array(p-m+1);for(let S=_;S<=g;++S){let e=this._rowSections.sizeOf(S);b[S-_]=e;M+=e}for(let S=m;S<=p;++S){let e=this._rowHeaderSections.sizeOf(S);H[S-m]=e;C+=e}if(this._stretchLastRow&&h>a&&g===w){let e=this.pageHeight-this.bodyHeight;b[b.length-1]+=e;M+=e;f+=e}let R={region:"row-header",xMin:c,yMin:d,xMax:u,yMax:f,x,y:v,width:C,height:M,row:_,column:m,rowSizes:b,columnSizes:H};this._drawBackground(R,this._style.headerBackgroundColor);this._drawCells(R);this._drawHorizontalGridLines(R,this._style.headerHorizontalGridLineColor||this._style.headerGridLineColor);this._drawVerticalGridLines(R,this._style.headerVerticalGridLineColor||this._style.headerGridLineColor);const z=S.getCellGroupsAtRegion(this.dataModel,R.region).filter((e=>this.cellGroupInteresectsRegion(e,R)));this._paintMergedCells(z,R,this._style.headerBackgroundColor)}_drawColumnHeaderRegion(e,t,i,s){let o=this.bodyWidth-this._scrollX;let r=this.headerHeight;if(o<=0||r<=0){return}let n=this.headerWidth;let l=0;if(e+i<=n){return}if(t+s<=l){return}if(e>=n+o){return}if(t>=l+r){return}let a=this.bodyWidth;let h=this.pageWidth;let c=Math.max(e,n);let d=t;let u=Math.min(e+i-1,n+o-1);let f=Math.min(t+s-1,l+r-1);let _=this._columnHeaderSections.indexOf(d);let m=this._columnSections.indexOf(c-n+this._scrollX);let g=this._columnHeaderSections.indexOf(f);let p=this._columnSections.indexOf(u-n+this._scrollX);let w=this._columnHeaderSections.count-1;let y=this._columnSections.count-1;if(g<0){g=w}if(p<0){p=y}let x=this._columnSections.offsetOf(m)+n-this._scrollX;let v=this._columnHeaderSections.offsetOf(_);let C=0;let M=0;let b=new Array(g-_+1);let H=new Array(p-m+1);for(let S=_;S<=g;++S){let e=this._columnHeaderSections.sizeOf(S);b[S-_]=e;M+=e}for(let S=m;S<=p;++S){let e=this._columnSections.sizeOf(S);H[S-m]=e;C+=e}if(this._stretchLastColumn&&h>a&&p===y){let e=this.pageWidth-this.bodyWidth;H[H.length-1]+=e;C+=e;u+=e}let R={region:"column-header",xMin:c,yMin:d,xMax:u,yMax:f,x,y:v,width:C,height:M,row:_,column:m,rowSizes:b,columnSizes:H};this._drawBackground(R,this._style.headerBackgroundColor);this._drawCells(R);this._drawHorizontalGridLines(R,this._style.headerHorizontalGridLineColor||this._style.headerGridLineColor);this._drawVerticalGridLines(R,this._style.headerVerticalGridLineColor||this._style.headerGridLineColor);const z=S.getCellGroupsAtRegion(this.dataModel,R.region).filter((e=>this.cellGroupInteresectsRegion(e,R)));this._paintMergedCells(z,R,this._style.headerBackgroundColor)}drawCornerHeaderRegion(e,t,i,s){let o=this.headerWidth;let r=this.headerHeight;if(o<=0||r<=0){return}let n=0;let l=0;if(e+i<=n){return}if(t+s<=l){return}if(e>=n+o){return}if(t>=l+r){return}let a=e;let h=t;let c=Math.min(e+i-1,n+o-1);let d=Math.min(t+s-1,l+r-1);let u=this._columnHeaderSections.indexOf(h);let f=this._rowHeaderSections.indexOf(a);let _=this._columnHeaderSections.indexOf(d);let m=this._rowHeaderSections.indexOf(c);if(_<0){_=this._columnHeaderSections.count-1}if(m<0){m=this._rowHeaderSections.count-1}let g=this._rowHeaderSections.offsetOf(f);let p=this._columnHeaderSections.offsetOf(u);let w=0;let y=0;let x=new Array(_-u+1);let v=new Array(m-f+1);for(let S=u;S<=_;++S){let e=this._columnHeaderSections.sizeOf(S);x[S-u]=e;y+=e}for(let S=f;S<=m;++S){let e=this._rowHeaderSections.sizeOf(S);v[S-f]=e;w+=e}let C={region:"corner-header",xMin:a,yMin:h,xMax:c,yMax:d,x:g,y:p,width:w,height:y,row:u,column:f,rowSizes:x,columnSizes:v};this._drawBackground(C,this._style.headerBackgroundColor);this._drawCells(C);this._drawHorizontalGridLines(C,this._style.headerHorizontalGridLineColor||this._style.headerGridLineColor);this._drawVerticalGridLines(C,this._style.headerVerticalGridLineColor||this._style.headerGridLineColor);const M=S.getCellGroupsAtRegion(this.dataModel,C.region).filter((e=>this.cellGroupInteresectsRegion(e,C)));this._paintMergedCells(M,C,this._style.headerBackgroundColor)}_drawBackground(e,t){if(!t){return}let{xMin:i,yMin:s,xMax:o,yMax:r}=e;this._canvasGC.fillStyle=t;this._canvasGC.fillRect(i,s,o-i+1,r-s+1)}_drawRowBackground(e,t){if(!t){return}let i=Math.max(e.xMin,e.x);let s=Math.min(e.x+e.width-1,e.xMax);for(let o=e.y,r=0,n=e.rowSizes.length;r{const t=d;const i=d+1;const s=h;const o=h+1;this.repaintRegion(e.region,t,s,i,o)}))}}else{_.paint(s,t)}}catch(r){console.error(r)}s.restore();let m=Math.max(e.xMin,t.x);let g=Math.min(t.x+t.width-1,e.xMax);let p=Math.max(e.yMin,t.y);let w=Math.min(t.y+t.height-1,e.yMax);this._blitContent(this._buffer,m,p,g-m+1,w-p+1,m,p);l+=o}s.restore();n+=a}s.dispose();this._bufferGC.restore()}cellGroupInteresectsRegion(e,t){const i=t.row;const s=t.row+t.rowSizes.length;const o=t.column;const r=t.column+t.columnSizes.length;const n=Math.min(e.r2,s)-Math.max(e.r1,i);const l=Math.min(e.c2,r)-Math.max(e.c1,o);return n>=0&&l>=0}static _getCellValue(e,t,i,s){try{return e.data(t,i,s)}catch(o){console.error(o);return null}}static _getCellMetadata(e,t,i,s){try{return e.metadata(t,i,s)}catch(o){console.error(o);return q.emptyMetadata}}_paintMergedCells(e,t,i){if(!this._dataModel){return}let s={x:0,y:0,width:0,height:0,region:t.region,row:0,column:0,value:null,metadata:q.emptyMetadata};if(i){this._canvasGC.fillStyle=i}this._canvasGC.lineWidth=1;this._bufferGC.save();let o=new $(this._bufferGC);for(const n of e){let e=0;for(let i=n.c1;i<=n.c2;i++){e+=this._getColumnSize(t.region,i)}let l=0;for(let i=n.r1;i<=n.r2;i++){l+=this._getRowSize(t.region,i)}let a=ee._getCellValue(this.dataModel,t.region,n.r1,n.c1);let h=ee._getCellMetadata(this.dataModel,t.region,n.r1,n.c2);let c=0;let d=0;switch(t.region){case"body":c=this._columnSections.offsetOf(n.c1)+this.headerWidth-this._scrollX;d=this._rowSections.offsetOf(n.r1)+this.headerHeight-this._scrollY;break;case"column-header":c=this._columnSections.offsetOf(n.c1)+this.headerWidth-this._scrollX;d=this._rowSections.offsetOf(n.r1);break;case"row-header":c=this._columnSections.offsetOf(n.c1);d=this._rowSections.offsetOf(n.r1)+this.headerHeight-this._scrollY;break;case"corner-header":c=this._columnSections.offsetOf(n.c1);d=this._rowSections.offsetOf(n.r1);break}s.x=c;s.y=d;s.width=e;s.height=l;s.region=t.region;s.row=n.r1;s.column=n.c1;s.value=a;s.metadata=h;const u=Math.max(t.xMin,c);const f=Math.min(c+e-2,t.xMax);const _=Math.max(t.yMin,d);const m=Math.min(d+l-2,t.yMax);if(f<=u||m<=_){continue}if(i){this._canvasGC.fillRect(u,_,f-u+1,m-_+1)}let g=this._cellRenderers.get(s);o.clearRect(s.x,s.y,e,l);o.save();try{if(g instanceof k){if(g.isReady(s)){g.paint(o,s)}else{g.paintPlaceholder(o,s);const e=n.r1;const i=n.r2;const r=n.c1;const l=n.c2;g.load(s).then((()=>{this.repaintRegion(t.region,e,r,i,l)}))}}else{g.paint(o,s)}}catch(r){console.error(r)}o.restore();this._blitContent(this._buffer,u,_,f-u+1,m-_+1,u,_)}o.dispose();this._bufferGC.restore()}_drawHorizontalGridLines(e,t){if(!t){return}const i=Math.max(e.xMin,e.x);const s=Math.min(e.x+e.width,e.xMax+1);this._canvasGC.beginPath();this._canvasGC.lineWidth=1;const o=this.bodyHeight;const r=this.pageHeight;let n=e.rowSizes.length;if(this._stretchLastRow&&r>o){if(e.row+n===this._rowSections.count){n-=1}}for(let l=e.y,a=0;a=e.yMin&&o<=e.yMax){this._canvasGC.moveTo(i,o+.5);this._canvasGC.lineTo(s,o+.5)}l+=t}this._canvasGC.strokeStyle=t;this._canvasGC.stroke()}_drawVerticalGridLines(e,t){if(!t){return}const i=Math.max(e.yMin,e.y);const s=Math.min(e.y+e.height,e.yMax+1);this._canvasGC.beginPath();this._canvasGC.lineWidth=1;const o=this.bodyWidth;const r=this.pageWidth;let n=e.columnSizes.length;if(this._stretchLastColumn&&r>o){if(e.column+n===this._columnSections.count){n-=1}}for(let l=e.x,a=0;a=e.xMin&&o<=e.xMax){this._canvasGC.moveTo(o+.5,i);this._canvasGC.lineTo(o+.5,s)}l+=t}this._canvasGC.strokeStyle=t;this._canvasGC.stroke()}_drawBodySelections(){let e=this._selectionModel;if(!e||e.isEmpty){return}let t=this._style.selectionFillColor;let i=this._style.selectionBorderColor;if(!t&&!i){return}let s=this._scrollX;let o=this._scrollY;let r=this._rowSections.indexOf(o);let n=this._columnSections.indexOf(s);if(r<0||n<0){return}let l=this.bodyWidth;let a=this.bodyHeight;let h=this.pageWidth;let c=this.pageHeight;let d=this.headerWidth;let u=this.headerHeight;let f=this._rowSections.indexOf(o+c);let _=this._columnSections.indexOf(s+h);let m=this._rowSections.count-1;let g=this._columnSections.count-1;f=f<0?m:f;_=_<0?g:_;let p=this._overlayGC;p.save();p.beginPath();p.rect(d,u,h,c);p.clip();if(t){p.fillStyle=t}if(i){p.strokeStyle=i;p.lineWidth=1}for(let w of e.selections()){if(w.r1f&&w.r2>f){continue}if(w.c1_&&w.c2>_){continue}let e=Math.max(0,Math.min(w.r1,m));let y=Math.max(0,Math.min(w.c1,g));let x=Math.max(0,Math.min(w.r2,m));let v=Math.max(0,Math.min(w.c2,g));let C;if(e>x){C=e;e=x;x=C}if(y>v){C=y;y=v;v=C}const M=S.joinCellGroupWithMergedCellGroups(this.dataModel,{r1:e,r2:x,c1:y,c2:v},"body");e=M.r1;x=M.r2;y=M.c1;v=M.c2;let b=this._columnSections.offsetOf(y)-s+d;let H=this._rowSections.offsetOf(e)-o+u;let R=this._columnSections.extentOf(v)-s+d;let z=this._rowSections.extentOf(x)-o+u;if(this._stretchLastColumn&&h>l&&v===g){R=d+h-1}if(this._stretchLastRow&&c>a&&x===m){z=u+c-1}b=Math.max(d-1,b);H=Math.max(u-1,H);R=Math.min(d+h+1,R);z=Math.min(u+c+1,z);if(Ro&&f===c){u=l+r-d}if(u===0){continue}if(t){h.fillRect(0,d,n,u)}if(i){h.beginPath();h.moveTo(n-.5,d-1);h.lineTo(n-.5,d+u);h.stroke()}}h.restore()}_drawColumnHeaderSelections(){let e=this._selectionModel;if(!e||e.isEmpty||e.selectionMode=="row"){return}if(this.headerHeight===0||this.pageWidth===0){return}let t=this._style.headerSelectionFillColor;let i=this._style.headerSelectionBorderColor;if(!t&&!i){return}let s=this._scrollX;let o=this.bodyWidth;let r=this.pageWidth;let n=this.headerWidth;let l=this.headerHeight;let a=this._columnSections;let h=this._overlayGC;h.save();h.beginPath();h.rect(n,0,r,l);h.clip();if(t){h.fillStyle=t}if(i){h.strokeStyle=i;h.lineWidth=1}let c=a.count-1;let d=a.indexOf(s);let u=a.indexOf(s+r-1);u=u<0?c:u;for(let f=d;f<=u;++f){if(!e.isColumnSelected(f)){continue}let d=a.offsetOf(f)-s+n;let u=a.sizeOf(f);if(this._stretchLastColumn&&r>o&&f===c){u=n+r-d}if(u===0){continue}if(t){h.fillRect(d,0,u,l)}if(i){h.beginPath();h.moveTo(d-1,l-.5);h.lineTo(d+u,l-.5);h.stroke()}}h.restore()}_drawCursor(){let e=this._selectionModel;if(!e||e.isEmpty||e.selectionMode!=="cell"){return}let t=this._style.cursorFillColor;let i=this._style.cursorBorderColor;if(!t&&!i){return}let s=e.cursorRow;let o=e.cursorColumn;let r=this._rowSections.count-1;let n=this._columnSections.count-1;if(s<0||s>r){return}if(o<0||o>n){return}let l=s;let a=o;const h=S.joinCellGroupWithMergedCellGroups(this.dataModel,{r1:s,r2:l,c1:o,c2:a},"body");s=h.r1;l=h.r2;o=h.c1;a=h.c2;let c=this._scrollX;let d=this._scrollY;let u=this.bodyWidth;let f=this.bodyHeight;let _=this.pageWidth;let m=this.pageHeight;let g=this.headerWidth;let p=this.headerHeight;let w=this._viewportWidth;let y=this._viewportHeight;let x=this._columnSections.offsetOf(o)-c+g;let v=this._columnSections.extentOf(a)-c+g;let C=this._rowSections.offsetOf(s)-d+p;let M=this._rowSections.extentOf(l)-d+p;if(this._stretchLastColumn&&_>u&&o===n){v=w-1}if(this._stretchLastRow&&m>f&&s===r){M=y-1}if(v=w||C-1>=y||v+1u){u=a}if(this._stretchLastColumn&&l>d){d=l}let f=this._overlayGC;f.save();if(i>0){let i=0;let s=n;let o=0;let a=s+e.size;let h=f.createLinearGradient(i,s,o,a);h.addColorStop(0,e.color1);h.addColorStop(.5,e.color2);h.addColorStop(1,e.color3);let c=0;let u=n;let _=r+Math.min(l,d-t);let m=e.size;f.fillStyle=h;f.fillRect(c,u,_,m)}if(t>0){let t=r;let s=0;let o=t+e.size;let l=0;let h=f.createLinearGradient(t,s,o,l);h.addColorStop(0,e.color1);h.addColorStop(.5,e.color2);h.addColorStop(1,e.color3);let c=r;let d=0;let _=e.size;let m=n+Math.min(a,u-i);f.fillStyle=h;f.fillRect(c,d,_,m)}if(i0}e.regionHasMergedCells=i;class s extends m.ConflatableMessage{constructor(e,t,i,s,o){super("paint-request");this._region=e;this._r1=t;this._c1=i;this._r2=s;this._c2=o}get region(){return this._region}get r1(){return this._r1}get c1(){return this._c1}get r2(){return this._r2}get c2(){return this._c2}conflate(e){if(this._region==="all"){return true}if(e._region==="all"){this._region="all";return true}if(this._region!==e._region){return false}this._r1=Math.min(this._r1,e._r1);this._c1=Math.min(this._c1,e._c1);this._r2=Math.max(this._r2,e._r2);this._c2=Math.max(this._c2,e._c2);return true}}e.PaintRequest=s;class o extends m.ConflatableMessage{constructor(e,t,i){super("row-resize-request");this._region=e;this._index=t;this._size=i}get region(){return this._region}get index(){return this._index}get size(){return this._size}conflate(e){if(this._region!==e._region||this._index!==e._index){return false}this._size=e._size;return true}}e.RowResizeRequest=o;class r extends m.ConflatableMessage{constructor(e,t,i){super("column-resize-request");this._region=e;this._index=t;this._size=i}get region(){return this._region}get index(){return this._index}get size(){return this._size}conflate(e){if(this._region!==e._region||this._index!==e._index){return false}this._size=e._size;return true}}e.ColumnResizeRequest=r})(te||(te={}));class ie extends q{constructor(e){super();let t=se.splitFields(e.schema);this._data=e.data;this._bodyFields=t.bodyFields;this._headerFields=t.headerFields;this._missingValues=se.createMissingMap(e.schema)}rowCount(e){if(e==="body"){return this._data.length}return 1}columnCount(e){if(e==="body"){return this._bodyFields.length}return this._headerFields.length}data(e,t,i){let s;let o;switch(e){case"body":s=this._bodyFields[i];o=this._data[t][s.name];break;case"column-header":s=this._bodyFields[i];o=s.title||s.name;break;case"row-header":s=this._headerFields[i];o=this._data[t][s.name];break;case"corner-header":s=this._headerFields[i];o=s.title||s.name;break;default:throw"unreachable"}let r=this._missingValues!==null&&typeof o==="string"&&this._missingValues[o]===true;return r?null:o}metadata(e,t,i){if(e==="body"||e==="column-header"){return this._bodyFields[i]}return this._headerFields[i]}}var se;(function(e){function t(e){let t;if(e.primaryKey===undefined){t=[]}else if(typeof e.primaryKey==="string"){t=[e.primaryKey]}else{t=e.primaryKey}let i=[];let s=[];for(let o of e.fields){if(t.indexOf(o.name)===-1){i.push(o)}else{s.push(o)}}return{bodyFields:i,headerFields:s}}e.splitFields=t;function i(e){if(!e.missingValues||e.missingValues.length===0){return null}let t=Object.create(null);for(let i of e.missingValues){t[i]=true}return t}e.createMissingMap=i})(se||(se={}));const oe=/^(\d+(\.\d+)?)%$/;const re=/^(\d+(\.\d+)?)px$/;class ne extends k{constructor(e={}){super();this.backgroundColor=e.backgroundColor||"";this.textColor=e.textColor||"#000000";this.placeholder=e.placeholder||"...";this.width=e.width||"";this.height=e.height===undefined?"100%":e.height}isReady(e){return!e.value||ne.dataCache.get(e.value)!==undefined}async load(e){if(!e.value){return}const t=e.value;const i=new p.PromiseDelegate;ne.dataCache.set(t,undefined);const s=new Image;s.onload=()=>{ne.dataCache.set(t,s);i.resolve()};s.src=t;return i.promise}paintPlaceholder(e,t){this.drawBackground(e,t);this.drawPlaceholder(e,t)}paint(e,t){this.drawBackground(e,t);this.drawImage(e,t)}drawBackground(e,t){const i=x.resolveOption(this.backgroundColor,t);if(!i){return}e.fillStyle=i;e.fillRect(t.x,t.y,t.width,t.height)}drawPlaceholder(e,t){const i=x.resolveOption(this.placeholder,t);const s=x.resolveOption(this.textColor,t);const o=t.x+t.width/2;const r=t.y+t.height/2;e.fillStyle=s;e.fillText(i,o,r)}drawImage(e,t){if(!t.value){return}const i=ne.dataCache.get(t.value);if(!i){return this.drawPlaceholder(e,t)}const s=x.resolveOption(this.width,t);const o=x.resolveOption(this.height,t);if(!s&&!o){e.drawImage(i,t.x,t.y);return}let r=i.width;let n=i.height;let l;let a;let h;let c;if(l=s.match(oe)){r=parseFloat(l[1])/100*t.width}else if(a=s.match(re)){r=parseFloat(a[1])}if(h=o.match(oe)){n=parseFloat(h[1])/100*t.height}else if(c=o.match(re)){n=parseFloat(c[1])}if(!s){r=i.width/i.height*n}if(!o){n=i.height/i.width*r}e.drawImage(i,t.x,t.y,r,n)}}ne.dataCache=new Map}}]);
\ No newline at end of file
diff --git a/share/jupyter/lab/static/1495.13603dd823bbf5eb08b3.js b/share/jupyter/lab/static/1495.13603dd823bbf5eb08b3.js
new file mode 100644
index 0000000..62f2202
--- /dev/null
+++ b/share/jupyter/lab/static/1495.13603dd823bbf5eb08b3.js
@@ -0,0 +1 @@
+"use strict";(self["webpackChunk_jupyterlab_application_top"]=self["webpackChunk_jupyterlab_application_top"]||[]).push([[1495],{21495:(e,t,O)=>{O.r(t);O.d(t,{autoCloseTags:()=>D,completeFromSchema:()=>Z,xml:()=>I,xmlLanguage:()=>q});var n=O(27421);var r=O(45145);const a=1,l=2,s=3,o=4,i=5,y=35,c=36,p=37,u=11,$=13;function f(e){return e==45||e==46||e==58||e>=65&&e<=90||e==95||e>=97&&e<=122||e>=161}function g(e){return e==9||e==10||e==13||e==32}let S=null,m=null,d=0;function h(e,t){let O=e.pos+t;if(m==e&&d==O)return S;while(g(e.peek(t)))t++;let n="";for(;;){let O=e.peek(t);if(!f(O))break;n+=String.fromCharCode(O);t++}m=e;d=O;return S=n||null}function v(e,t){this.name=e;this.parent=t;this.hash=t?t.hash:0;for(let O=0;O{if(e.next!=60)return;e.advance();if(e.next==47){e.advance();let O=h(e,0);if(!O)return e.acceptToken(i);if(t.context&&O==t.context.name)return e.acceptToken(l);for(let n=t.context;n;n=n.parent)if(n.name==O)return e.acceptToken(s,-2);e.acceptToken(o)}else if(e.next!=33&&e.next!=63){return e.acceptToken(a)}}),{contextual:true});function _(e,t){return new n.Lu((O=>{for(let n=0,r=0;;r++){if(O.next<0){if(r)O.acceptToken(e);break}if(O.next==t.charCodeAt(n)){n++;if(n==t.length){if(r>=t.length)O.acceptToken(e,1-t.length);break}}else{n=O.next==t.charCodeAt(0)?1:0}O.advance()}}))}const C=_(y,"--\x3e");const b=_(c,"?>");const w=_(p,"]]>");const W=(0,r.styleTags)({Text:r.tags.content,"StartTag StartCloseTag EndTag SelfCloseEndTag":r.tags.angleBracket,TagName:r.tags.tagName,"MismatchedCloseTag/Tagname":[r.tags.tagName,r.tags.invalid],AttributeName:r.tags.attributeName,AttributeValue:r.tags.attributeValue,Is:r.tags.definitionOperator,"EntityReference CharacterReference":r.tags.character,Comment:r.tags.blockComment,ProcessingInst:r.tags.processingInstruction,DoctypeDecl:r.tags.documentMeta,Cdata:r.tags.special(r.tags.string)});const V=n.U1.deserialize({version:14,states:",SOQOaOOOrOxO'#CfOzOpO'#CiO!tOaO'#CgOOOP'#Cg'#CgO!{OrO'#CrO#TOtO'#CsO#]OpO'#CtOOOP'#DS'#DSOOOP'#Cv'#CvQQOaOOOOOW'#Cw'#CwO#eOxO,59QOOOP,59Q,59QOOOO'#Cx'#CxO#mOpO,59TO#uO!bO,59TOOOP'#C{'#C{O$TOaO,59RO$[OpO'#CoOOOP,59R,59ROOOQ'#C|'#C|O$dOrO,59^OOOP,59^,59^OOOS'#C}'#C}O$lOtO,59_OOOP,59_,59_O$tOpO,59`O$|OpO,59`OOOP-E6t-E6tOOOW-E6u-E6uOOOP1G.l1G.lOOOO-E6v-E6vO%UO!bO1G.oO%UO!bO1G.oO%dOpO'#CkO%lO!bO'#CyO%zO!bO1G.oOOOP1G.o1G.oOOOP1G.w1G.wOOOP-E6y-E6yOOOP1G.m1G.mO&VOpO,59ZO&_OpO,59ZOOOQ-E6z-E6zOOOP1G.x1G.xOOOS-E6{-E6{OOOP1G.y1G.yO&gOpO1G.zO&gOpO1G.zOOOP1G.z1G.zO&oO!bO7+$ZO&}O!bO7+$ZOOOP7+$Z7+$ZOOOP7+$c7+$cO'YOpO,59VO'bOpO,59VO'jO!bO,59eOOOO-E6w-E6wO'xOpO1G.uO'xOpO1G.uOOOP1G.u1G.uO(QOpO7+$fOOOP7+$f7+$fO(YO!bO<`#X;'S%y;'S;=`&_<%lO%yX>eV{WOr%ysv%yw#T%y#T#U>z#U;'S%y;'S;=`&_<%lO%yX?PV{WOr%ysv%yw#h%y#h#i?f#i;'S%y;'S;=`&_<%lO%yX?kV{WOr%ysv%yw#T%y#T#Ue.from<=O&&e.to>=O));let r=n&&n.getChild("AttributeName");return r?e.sliceString(r.from,r.to):""}function R(e){for(let t=e&&e.parent;t;t=t.parent)if(t.name=="Element")return t;return null}function Y(e,t){var O;let n=(0,x.syntaxTree)(e).resolveInner(t,-1),r=null;for(let a=n;!r&&a.parent;a=a.parent)if(a.name=="OpenTag"||a.name=="CloseTag"||a.name=="SelfClosingTag"||a.name=="MismatchedCloseTag")r=a;if(r&&(r.to>t||r.lastChild.type.isError)){let e=r.parent;if(n.name=="TagName")return r.name=="CloseTag"||r.name=="MismatchedCloseTag"?{type:"closeTag",from:n.from,context:e}:{type:"openTag",from:n.from,context:R(e)};if(n.name=="AttributeName")return{type:"attrName",from:n.from,context:r};if(n.name=="AttributeValue")return{type:"attrValue",from:n.from,context:r};let O=n==r||n.name=="Attribute"?n.childBefore(t):n;if((O===null||O===void 0?void 0:O.name)=="StartTag")return{type:"openTag",from:t,context:R(e)};if((O===null||O===void 0?void 0:O.name)=="StartCloseTag"&&O.to<=t)return{type:"closeTag",from:t,context:e};if((O===null||O===void 0?void 0:O.name)=="Is")return{type:"attrValue",from:t,context:r};if(O)return{type:"attrName",from:t,context:r};return null}else if(n.name=="StartCloseTag"){return{type:"closeTag",from:t,context:n.parent}}while(n.parent&&n.to==t&&!((O=n.lastChild)===null||O===void 0?void 0:O.type.isError))n=n.parent;if(n.name=="Element"||n.name=="Text"||n.name=="Document")return{type:"tag",from:t,context:n.name=="Element"?n:R(n)};return null}class j{constructor(e,t,O){this.attrs=t;this.attrValues=O;this.children=[];this.name=e.name;this.completion=Object.assign(Object.assign({type:"type"},e.completion||{}),{label:this.name});this.openCompletion=Object.assign(Object.assign({},this.completion),{label:"<"+this.name});this.closeCompletion=Object.assign(Object.assign({},this.completion),{label:""+this.name+">",boost:2});this.closeNameCompletion=Object.assign(Object.assign({},this.completion),{label:this.name+">"});this.text=e.textContent?e.textContent.map((e=>({label:e,type:"text"}))):[]}}const z=/^[:\-\.\w\u00b7-\uffff]*$/;function A(e){return Object.assign(Object.assign({type:"property"},e.completion||{}),{label:e.name})}function N(e){return typeof e=="string"?{label:`"${e}"`,type:"constant"}:/^"/.test(e.label)?e:Object.assign(Object.assign({},e),{label:`"${e.label}"`})}function Z(e,t){let O=[],n=[];let r=Object.create(null);for(let o of t){let e=A(o);O.push(e);if(o.global)n.push(e);if(o.values)r[o.name]=o.values.map(N)}let a=[],l=[];let s=Object.create(null);for(let o of e){let e=n,t=r;if(o.attributes)e=e.concat(o.attributes.map((e=>{if(typeof e=="string")return O.find((t=>t.label==e))||{label:e,type:"property"};if(e.values){if(t==r)t=Object.create(t);t[e.name]=e.values.map(N)}return A(e)})));let i=new j(o,e,t);s[i.name]=i;a.push(i);if(o.top)l.push(i)}if(!l.length)l=a;for(let o=0;o{var t;let{doc:O}=e.state,o=Y(e.state,e.pos);if(!o||o.type=="tag"&&!e.explicit)return null;let{type:i,from:y,context:c}=o;if(i=="openTag"){let e=l;let t=E(O,c);if(t){let O=s[t];e=(O===null||O===void 0?void 0:O.children)||a}return{from:y,options:e.map((e=>e.completion)),validFor:z}}else if(i=="closeTag"){let n=E(O,c);return n?{from:y,to:e.pos+(O.sliceString(e.pos,e.pos+1)==">"?1:0),options:[((t=s[n])===null||t===void 0?void 0:t.closeNameCompletion)||{label:n+">",type:"type"}],validFor:z}:null}else if(i=="attrName"){let e=s[k(O,c)];return{from:y,options:(e===null||e===void 0?void 0:e.attrs)||n,validFor:z}}else if(i=="attrValue"){let t=G(O,c,y);if(!t)return null;let n=s[k(O,c)];let a=((n===null||n===void 0?void 0:n.attrValues)||r)[t];if(!a||!a.length)return null;return{from:y,to:e.pos+(O.sliceString(e.pos,e.pos+1)=='"'?1:0),options:a,validFor:/^"[^"]*"?$/}}else if(i=="tag"){let t=E(O,c),n=s[t];let r=[],o=c&&c.lastChild;if(t&&(!o||o.name!="CloseTag"||k(O,o)!=t))r.push(n?n.closeCompletion:{label:""+t+">",type:"type",boost:2});let i=r.concat(((n===null||n===void 0?void 0:n.children)||(c?a:l)).map((e=>e.openCompletion)));if(c&&(n===null||n===void 0?void 0:n.text.length)){let t=c.firstChild;if(t.to>e.pos-20&&!/\S/.test(e.state.sliceDoc(t.to,e.pos)))i=i.concat(n.text)}return{from:y,options:i,validFor:/^<\/?[:\-\.\w\u00b7-\uffff]*$/}}else{return null}}}const q=x.LRLanguage.define({name:"xml",parser:V.configure({props:[x.indentNodeProp.add({Element(e){let t=/^\s*<\//.test(e.textAfter);return e.lineIndent(e.node.from)+(t?0:e.unit)},"OpenTag CloseTag SelfClosingTag"(e){return e.column(e.node.from)+e.unit}}),x.foldNodeProp.add({Element(e){let t=e.firstChild,O=e.lastChild;if(!t||t.name!="OpenTag")return null;return{from:t.to,to:O.name=="CloseTag"?O.from:e.to}}}),x.bracketMatchingHandle.add({"OpenTag CloseTag":e=>e.getChild("TagName")})]}),languageData:{commentTokens:{block:{open:"\x3c!--",close:"--\x3e"}},indentOnInput:/^\s*<\/$/}});function I(e={}){let t=[q.data.of({autocomplete:Z(e.elements||[],e.attributes||[])})];if(e.autoCloseTags!==false)t.push(D);return new x.LanguageSupport(q,t)}function U(e,t,O=e.length){if(!t)return"";let n=t.firstChild;let r=n&&n.getChild("TagName");return r?e.sliceString(r.from,Math.min(r.to,O)):""}const D=Q.EditorView.inputHandler.of(((e,t,O,n,r)=>{if(e.composing||e.state.readOnly||t!=O||n!=">"&&n!="/"||!q.isActiveAt(e.state,t,-1))return false;let a=r(),{state:l}=a;let s=l.changeByRange((e=>{var t,O,r;let{head:a}=e;let s=l.doc.sliceString(a-1,a)==n;let o=(0,x.syntaxTree)(l).resolveInner(a,-1),i;if(s&&n==">"&&o.name=="EndTag"){let n=o.parent;if(((O=(t=n.parent)===null||t===void 0?void 0:t.lastChild)===null||O===void 0?void 0:O.name)!="CloseTag"&&(i=U(l.doc,n.parent,a))){let t=a+(l.doc.sliceString(a,a+1)===">"?1:0);let O=`${i}>`;return{range:e,changes:{from:a,to:t,insert:O}}}}else if(s&&n=="/"&&o.name=="StartCloseTag"){let e=o.parent;if(o.from==a-2&&((r=e.lastChild)===null||r===void 0?void 0:r.name)!="CloseTag"&&(i=U(l.doc,e,a))){let e=a+(l.doc.sliceString(a,a+1)===">"?1:0);let t=`${i}>`;return{range:X.EditorSelection.cursor(a+t.length,-1),changes:{from:a,to:e,insert:t}}}}return{range:e}}));if(s.changes.empty)return false;e.dispatch([a,l.update(s,{userEvent:"input.complete",scrollIntoView:true})]);return true}))}}]);
\ No newline at end of file
diff --git a/share/jupyter/lab/static/1561.dae72f9e395f056aada7.js b/share/jupyter/lab/static/1561.dae72f9e395f056aada7.js
new file mode 100644
index 0000000..5256bee
--- /dev/null
+++ b/share/jupyter/lab/static/1561.dae72f9e395f056aada7.js
@@ -0,0 +1 @@
+"use strict";(self["webpackChunk_jupyterlab_application_top"]=self["webpackChunk_jupyterlab_application_top"]||[]).push([[1561],{85054:(t,e,a)=>{a.d(e,{S:()=>n});var r=a(70416);function n(t,e){if(t.accDescr){e.setAccDescription?.(t.accDescr)}if(t.accTitle){e.setAccTitle?.(t.accTitle)}if(t.title){e.setDiagramTitle?.(t.title)}}(0,r.K2)(n,"populateCommonDb")},41561:(t,e,a)=>{a.d(e,{diagram:()=>F});var r=a(29479);var n=a(85054);var s=a(29131);var i=a(42418);var o=a(70416);var c=a(24010);var l={showLegend:true,ticks:5,max:null,min:0,graticule:"circle"};var d={axes:[],curves:[],options:l};var p=structuredClone(d);var g=i.UI.radar;var u=(0,o.K2)((()=>{const t=(0,s.$t)({...g,...(0,i.zj)().radar});return t}),"getConfig");var h=(0,o.K2)((()=>p.axes),"getAxes");var x=(0,o.K2)((()=>p.curves),"getCurves");var m=(0,o.K2)((()=>p.options),"getOptions");var v=(0,o.K2)((t=>{p.axes=t.map((t=>({name:t.name,label:t.label??t.name})))}),"setAxes");var $=(0,o.K2)((t=>{p.curves=t.map((t=>({name:t.name,label:t.label??t.name,entries:f(t.entries)})))}),"setCurves");var f=(0,o.K2)((t=>{if(t[0].axis==void 0){return t.map((t=>t.value))}const e=h();if(e.length===0){throw new Error("Axes must be populated before curves for reference entries")}return e.map((e=>{const a=t.find((t=>t.axis?.$refText===e.name));if(a===void 0){throw new Error("Missing entry for axis "+e.label)}return a.value}))}),"computeCurveEntries");var y=(0,o.K2)((t=>{const e=t.reduce(((t,e)=>{t[e.name]=e;return t}),{});p.options={showLegend:e.showLegend?.value??l.showLegend,ticks:e.ticks?.value??l.ticks,max:e.max?.value??l.max,min:e.min?.value??l.min,graticule:e.graticule?.value??l.graticule}}),"setOptions");var b=(0,o.K2)((()=>{(0,i.IU)();p=structuredClone(d)}),"clear");var w={getAxes:h,getCurves:x,getOptions:m,setAxes:v,setCurves:$,setOptions:y,getConfig:u,clear:b,setAccTitle:i.SV,getAccTitle:i.iN,setDiagramTitle:i.ke,getDiagramTitle:i.ab,getAccDescription:i.m7,setAccDescription:i.EI};var C=(0,o.K2)((t=>{(0,n.S)(t,w);const{axes:e,curves:a,options:r}=t;w.setAxes(e);w.setCurves(a);w.setOptions(r)}),"populate");var M={parse:(0,o.K2)((async t=>{const e=await(0,c.qg)("radar",t);o.Rm.debug(e);C(e)}),"parse")};var K=(0,o.K2)(((t,e,a,n)=>{const s=n.db;const i=s.getAxes();const o=s.getCurves();const c=s.getOptions();const l=s.getConfig();const d=s.getDiagramTitle();const p=(0,r.D)(e);const g=L(p,l);const u=c.max??Math.max(...o.map((t=>Math.max(...t.entries))));const h=c.min;const x=Math.min(l.width,l.height)/2;T(g,i,x,c.ticks,c.graticule);k(g,i,x,l);A(g,i,o,h,u,c.graticule,l);I(g,o,c.showLegend,l);g.append("text").attr("class","radarTitle").text(d).attr("x",0).attr("y",-l.height/2-l.marginTop)}),"draw");var L=(0,o.K2)(((t,e)=>{const a=e.width+e.marginLeft+e.marginRight;const r=e.height+e.marginTop+e.marginBottom;const n={x:e.marginLeft+e.width/2,y:e.marginTop+e.height/2};t.attr("viewbox",`0 0 ${a} ${r}`).attr("width",a).attr("height",r);return t.append("g").attr("transform",`translate(${n.x}, ${n.y})`)}),"drawFrame");var T=(0,o.K2)(((t,e,a,r,n)=>{if(n==="circle"){for(let e=0;e{const a=2*e*Math.PI/n-Math.PI/2;const r=i*Math.cos(a);const s=i*Math.sin(a);return`${r},${s}`})).join(" ");t.append("polygon").attr("points",o).attr("class","radarGraticule")}}}),"drawGraticule");var k=(0,o.K2)(((t,e,a,r)=>{const n=e.length;for(let s=0;s{if(e.entries.length!==o){return}const l=e.entries.map(((t,e)=>{const a=2*Math.PI*e/o-Math.PI/2;const s=O(t,r,n,c);const i=s*Math.cos(a);const l=s*Math.sin(a);return{x:i,y:l}}));if(s==="circle"){t.append("path").attr("d",S(l,i.curveTension)).attr("class",`radarCurve-${a}`)}else if(s==="polygon"){t.append("polygon").attr("points",l.map((t=>`${t.x},${t.y}`)).join(" ")).attr("class",`radarCurve-${a}`)}}))}(0,o.K2)(A,"drawCurves");function O(t,e,a,r){const n=Math.min(Math.max(t,e),a);return r*(n-e)/(a-e)}(0,o.K2)(O,"relativeRadius");function S(t,e){const a=t.length;let r=`M${t[0].x},${t[0].y}`;for(let n=0;n{const r=t.append("g").attr("transform",`translate(${n}, ${s+a*i})`);r.append("rect").attr("width",12).attr("height",12).attr("class",`radarLegendBox-${a}`);r.append("text").attr("x",16).attr("y",0).attr("class","radarLegendText").text(e.label)}))}(0,o.K2)(I,"drawLegend");var D={draw:K};var z=(0,o.K2)(((t,e)=>{let a="";for(let r=0;r{const e=(0,i.P$)();const a=(0,i.zj)();const r=(0,s.$t)(e,a.themeVariables);const n=(0,s.$t)(r.radar,t);return{themeVariables:r,radarOptions:n}}),"buildRadarStyleOptions");var _=(0,o.K2)((({radar:t}={})=>{const{themeVariables:e,radarOptions:a}=E(t);return`\n\t.radarTitle {\n\t\tfont-size: ${e.fontSize};\n\t\tcolor: ${e.titleColor};\n\t\tdominant-baseline: hanging;\n\t\ttext-anchor: middle;\n\t}\n\t.radarAxisLine {\n\t\tstroke: ${a.axisColor};\n\t\tstroke-width: ${a.axisStrokeWidth};\n\t}\n\t.radarAxisLabel {\n\t\tdominant-baseline: middle;\n\t\ttext-anchor: middle;\n\t\tfont-size: ${a.axisLabelFontSize}px;\n\t\tcolor: ${a.axisColor};\n\t}\n\t.radarGraticule {\n\t\tfill: ${a.graticuleColor};\n\t\tfill-opacity: ${a.graticuleOpacity};\n\t\tstroke: ${a.graticuleColor};\n\t\tstroke-width: ${a.graticuleStrokeWidth};\n\t}\n\t.radarLegendText {\n\t\ttext-anchor: start;\n\t\tfont-size: ${a.legendFontSize}px;\n\t\tdominant-baseline: hanging;\n\t}\n\t${z(e,a)}\n\t`}),"styles");var F={parser:M,db:w,renderer:D,styles:_}}}]);
\ No newline at end of file
diff --git a/share/jupyter/lab/static/1599.11abc92e77fd73c17788.js b/share/jupyter/lab/static/1599.11abc92e77fd73c17788.js
new file mode 100644
index 0000000..702fc3a
--- /dev/null
+++ b/share/jupyter/lab/static/1599.11abc92e77fd73c17788.js
@@ -0,0 +1 @@
+"use strict";(self["webpackChunk_jupyterlab_application_top"]=self["webpackChunk_jupyterlab_application_top"]||[]).push([[1599],{81599:(a,r,e)=>{e.d(r,{diagram:()=>l});var t=e(87756);var n=e(29479);var s=e(42418);var i=e(70416);var p=e(24010);var o={parse:(0,i.K2)((async a=>{const r=await(0,p.qg)("info",a);i.Rm.debug(r)}),"parse")};var v={version:t.n.version+(true?"":0)};var d=(0,i.K2)((()=>v.version),"getVersion");var c={getVersion:d};var u=(0,i.K2)(((a,r,e)=>{i.Rm.debug("rendering info diagram\n"+a);const t=(0,n.D)(r);(0,s.a$)(t,100,400,true);const p=t.append("g");p.append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size",32).style("text-anchor","middle").text(`v${e}`)}),"draw");var g={draw:u};var l={parser:o,db:c,renderer:g}}}]);
\ No newline at end of file
diff --git a/share/jupyter/lab/static/161.fffb4847807ab2a6d16f.js b/share/jupyter/lab/static/161.fffb4847807ab2a6d16f.js
new file mode 100644
index 0000000..153a9a9
--- /dev/null
+++ b/share/jupyter/lab/static/161.fffb4847807ab2a6d16f.js
@@ -0,0 +1 @@
+(self["webpackChunk_jupyterlab_application_top"]=self["webpackChunk_jupyterlab_application_top"]||[]).push([[161],{60161:(n,e,t)=>{"use strict";t.r(e);t.d(e,{render:()=>f});var r=t(21148);var i=t(1218);var a=t(62954);var c=t.n(a);var u=(0,r.K)(((n,e,{parentById:t})=>{const r=new Set;let i=n;if(n===e){return t[n]||"root"}while(i){r.add(i);if(i===e){return i}i=t[i]}i=e;while(i){if(r.has(i)){return i}i=t[i]}return"root"}),"findCommonAncestor");var s=1e-4;function o(n,e){if(!n||!e){return 0}return Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2))}(0,r.K)(o,"distance");var f=(0,r.K)((async(n,e,{common:t,getConfig:a,insertCluster:f,insertEdge:h,insertEdgeLabel:l,insertMarkers:b,insertNode:w,interpolateToCurve:d,labelHelper:g,log:v,positionEdgeLabel:p},{algorithm:m})=>{const k={};const y={};const M=(0,r.K)((async(n,e,t,r)=>{const i={width:0,height:0};const c=a();if(!r.isGroup){const t={id:r.id,width:r.width,height:r.height,label:r.label,isGroup:r.isGroup,shape:r.shape,padding:r.padding,cssClasses:r.cssClasses,cssStyles:r.cssStyles,look:r.look,parentId:r.parentId};e.children.push(t);k[r.id]=t;const i=await w(n,r,{config:c,dir:r.dir});const a=i.node().getBBox();t.domId=i;t.calcIntersect=r.calcIntersect;t.width=a.width;t.height=a.height}else{const a={...r,children:[]};e.children.push(a);k[r.id]=a;await T(n,t,a,r.id);if(r.label){const{shapeSvg:e,bbox:t}=await g(n,r,void 0,true);i.width=t.width;i.wrappingWidth=c.flowchart.wrappingWidth;i.height=t.height-2;i.labelNode=e.node();e.remove()}else{i.width=0;i.height=0}a.labelData=i;a.domId=n}}),"addVertex");const T=(0,r.K)((async function(n,e,t,r){const i=e.filter((n=>n?.parentId===r));v.info("addVertices APA12",i,r);await Promise.all(i.map((async r=>{await M(n,t,e,r)})));return t}),"addVertices");const j=(0,r.K)((async(n,e,t,r,i,a)=>{await Promise.all(t.map((async function(t){if(t){k[t.id]=t;k[t.id].offset={posX:t.x+n,posY:t.y+e,x:n,y:e,depth:a,width:Math.max(t.width,t.labels?t.labels[0]?.width||0:0),height:t.height};if(t.isGroup){v.debug("id abc88 subgraph = ",t.id,t.x,t.y,t.labelData);const n=i.insert("g").attr("class","subgraph");const e=JSON.parse(JSON.stringify(t));e.x=t.offset.posX+t.width/2;e.y=t.offset.posY+t.height/2;e.width=Math.max(e.width,t.labelData.width);await f(n,e);v.debug("id (UIO)= ",t.id,t.width,t.shape,t.labels)}else{v.info("id NODE = ",t.id,t.x,t.y,n,e,t.domId.node(),`translate(${t.x+n+t.width/2}, ${t.y+e+t.height/2})`);t.domId.attr("transform",`translate(${t.x+n+t.width/2}, ${t.y+e+t.height/2})`)}}})));await Promise.all(t.map((async function(t){if(t?.isGroup){await j(n+t.x,e+t.y,t.children,r,i,a+1)}})))}),"drawNodes");const E=(0,r.K)((n=>{const e={parentById:{},childrenById:{}};const t=n.filter((n=>n.isGroup));v.info("Subgraphs - ",t);t.forEach((t=>{const r=n.filter((n=>n.parentId===t.id));r.forEach((n=>{e.parentById[n.id]=t.id;if(e.childrenById[t.id]===void 0){e.childrenById[t.id]=[]}e.childrenById[t.id].push(n)}))}));t.forEach((function(n){const t={id:n.id};if(e.parentById[n.id]!==void 0){t.parent=e.parentById[n.id]}}));return e}),"addSubGraphs");const S=(0,r.K)((n=>{const e=n.start;const t=n.end;const r=e;const i=t;const a=k[n.start.id];const c=k[n.end.id];if(!a||!c){return{source:e,target:t}}return{source:e,target:t,sourceId:r,targetId:i}}),"getEdgeStartEndPoint");const P=(0,r.K)((function(n,e,t){const r=u(n,e,t);if(r===void 0||r==="root"){return{x:0,y:0}}const i=k[r].offset;return{x:i.posX,y:i.posY}}),"calcOffset");const C=(0,r.K)((async function(n,e,r){v.info("abc78 DAGA edges = ",n);const c=n.edges;const u=r.insert("g").attr("class","edgeLabels");const s={};const o=n.direction||"DOWN";let f;let h;await Promise.all(c.map((async function(n){const r=n.id;if(s[r]===void 0){s[r]=0;v.info("abc78 new entry",r,s[r])}else{s[r]++;v.info("abc78 new entry",r,s[r])}const b=r+"_"+s[r];n.id=b;v.info("abc78 new link id to be used is",r,b,s[r]);const w="LS_"+n.start;const g="LE_"+n.end;const p={style:"",labelStyle:""};p.minlen=n.length||1;n.text=n.label;if(n.type==="arrow_open"){p.arrowhead="none"}else{p.arrowhead="normal"}p.arrowTypeStart="arrow_open";p.arrowTypeEnd="arrow_open";switch(n.type){case"double_arrow_cross":p.arrowTypeStart="arrow_cross";case"arrow_cross":p.arrowTypeEnd="arrow_cross";break;case"double_arrow_point":p.arrowTypeStart="arrow_point";case"arrow_point":p.arrowTypeEnd="arrow_point";break;case"double_arrow_circle":p.arrowTypeStart="arrow_circle";case"arrow_circle":p.arrowTypeEnd="arrow_circle";break}let m="";let k="";p.startLabelRight=n.startLabelRight;p.endLabelLeft=n.endLabelLeft;switch(n.stroke){case"normal":m="fill:none;";if(f!==void 0){m=f}if(h!==void 0){k=h}p.thickness="normal";p.pattern="solid";break;case"dotted":p.thickness="normal";p.pattern="dotted";p.style="fill:none;stroke-width:2px;stroke-dasharray:3;";break;case"thick":p.thickness="thick";p.pattern="solid";p.style="stroke-width: 3.5px;fill:none;";break}p.style=p.style+=m;p.labelStyle=p.labelStyle+=k;const y=a();if(n.interpolate!==void 0){p.curve=d(n.interpolate,i.lUB)}else if(c.defaultInterpolate!==void 0){p.curve=d(c.defaultInterpolate,i.lUB)}else{p.curve=d(y.curve,i.lUB)}if(n.text===void 0){if(n.style!==void 0){p.arrowheadStyle="fill: #333"}}else{p.arrowheadStyle="fill: #333";p.labelpos="c"}p.labelType=n.labelType;p.label=(n?.text||"").replace(t.lineBreakRegex,"\n");if(n.style===void 0){p.style=p.style||"stroke: #333; stroke-width: 1.5px;fill:none;"}p.labelStyle=p.labelStyle.replace("color:","fill:");p.id=b;p.classes="flowchart-link "+w+" "+g;const M=await l(u,p);const{source:T,target:j,sourceId:E,targetId:P}=S(n,o);v.debug("abc78 source and target",T,j);e.edges.push({id:"e"+n.start+n.end,...n,sources:[T],targets:[j],sourceId:E,targetId:P,labelEl:M,labels:[{width:p.width,height:p.height,orgWidth:p.width,orgHeight:p.height,text:p.label,layoutOptions:{"edgeLabels.inline":"true","edgeLabels.placement":"CENTER"}}],edgeData:p})})));return e}),"addEdges");function I(n){switch(n){case"LR":return"RIGHT";case"RL":return"LEFT";case"TB":return"DOWN";case"BT":return"UP";default:return"DOWN"}}(0,r.K)(I,"dir2ElkDirection");function O(n,e){const t=k[n];if(!t){return}if(t?.layoutOptions===void 0){t.layoutOptions={}}t.layoutOptions["elk.hierarchyHandling"]="INCLUDE_CHILDREN";if(t.id!==e){O(t.parentId,e)}}(0,r.K)(O,"setIncludeChildrenPolicy");const A=new(c());const L=e.select("g");b(L,n.markers,n.type,n.diagramId);let N={id:"root",layoutOptions:{"elk.hierarchyHandling":"INCLUDE_CHILDREN","elk.layered.crossingMinimization.forceNodeModelOrder":n.config.elk?.forceNodeModelOrder,"elk.layered.considerModelOrder.strategy":n.config.elk?.considerModelOrder,"elk.algorithm":m,"nodePlacement.strategy":n.config.elk?.nodePlacementStrategy,"elk.layered.mergeEdges":n.config.elk?.mergeEdges,"elk.direction":"DOWN","spacing.baseValue":35,"elk.layered.unnecessaryBendpoints":true,"elk.layered.cycleBreaking.strategy":n.config.elk?.cycleBreakingStrategy},children:[],edges:[]};v.info("Drawing flowchart using v4 renderer",A);const $=n.direction||"DOWN";N.layoutOptions["elk.direction"]=I($);const D=E(n.nodes);const x=e.insert("g").attr("class","subgraphs");const R=e.insert("g").attr("class","nodes");N=await T(R,n.nodes,N);const K=e.insert("g").attr("class","edges edgePaths");N=await C(n,N,e);const F=n.nodes;F.forEach((e=>{const t=k[e.id];if(D.childrenById[t.id]!==void 0){t.labels=[{text:t.label,width:t?.labelData?.width||50,height:t?.labelData?.height||50},t.width=t.width+2*t.padding,v.debug("UIO node label",t?.labelData?.width,t.padding)];t.layoutOptions={"spacing.baseValue":30,"nodeLabels.placement":"[H_CENTER V_TOP, INSIDE]"};if(t.dir){t.layoutOptions={...t.layoutOptions,"elk.algorithm":m,"elk.direction":I(t.dir),"nodePlacement.strategy":n.config.elk?.nodePlacementStrategy,"elk.layered.mergeEdges":n.config.elk?.mergeEdges,"elk.hierarchyHandling":"SEPARATE_CHILDREN"}}delete t.x;delete t.y;delete t.width;delete t.height}}));v.debug("APA01 processing edges, count:",N.edges.length);N.edges.forEach(((n,e)=>{v.debug("APA01 processing edge",e,":",n);const t=n.sources[0];const r=n.targets[0];v.debug("APA01 source:",t,"target:",r);v.debug("APA01 nodeDb[source]:",k[t]);v.debug("APA01 nodeDb[target]:",k[r]);if(k[t]&&k[r]&&k[t].parentId!==k[r].parentId){const n=u(t,r,D);O(t,n);O(r,n)}}));v.debug("APA01 before");v.debug("APA01 elkGraph structure:",JSON.stringify(N,null,2));v.debug("APA01 elkGraph.children length:",N.children?.length);v.debug("APA01 elkGraph.edges length:",N.edges?.length);N.edges?.forEach(((n,e)=>{v.debug(`APA01 validating edge ${e}:`,n);if(n.sources){n.sources.forEach((n=>{const e=N.children?.some((e=>e.id===n));v.debug(`APA01 source ${n} exists:`,e)}))}if(n.targets){n.targets.forEach((n=>{const e=N.children?.some((e=>e.id===n));v.debug(`APA01 target ${n} exists:`,e)}))}}));let _;try{_=await A.layout(N);v.debug("APA01 after - success");v.debug("APA01 layout result:",JSON.stringify(_,null,2))}catch(B){v.error("APA01 ELK layout error:",B);throw B}await j(0,0,_.children,e,x,0);_.edges?.map((e=>{const t=k[e.sources[0]];const r=D[e.sources[0]];const i=k[e.targets[0]];const a=e.start;const c=e.end;const u=P(a,c,D);v.debug("APA18 offset",u,a," ==> ",c,"edge:",e,"cluster:",r,t);if(e.sections){const r=e.sections[0].startPoint;const a=e.sections[0].endPoint;const c=e.sections[0].bendPoints?e.sections[0].bendPoints:[];const f=c.map((n=>({x:n.x+u.x,y:n.y+u.y})));e.points=[{x:r.x+u.x,y:r.y+u.y},...f,{x:a.x+u.x,y:a.y+u.y}];let l=t.width;let b=i.width;if(t.isGroup){const n=t.domId.node().getBBox();l=Math.max(t.width,t.labels[0].width+t.padding);v.debug("UIO width",t.id,t.with,"bbox.width=",n.width,"lw=",t.labels[0].width,"node:",t.width,"SW = ",l)}if(i.isGroup){const n=i.domId.node().getBBox();b=Math.max(i.width,i.labels[0].width+i.padding);v.debug("UIO width",t.id,t.with,n.width,"EW = ",b,"HTML:",t.innerHTML)}if(t.calcIntersect){const n=t.calcIntersect({x:t.offset.posX+t.width/2,y:t.offset.posY+t.height/2,width:t.width,height:t.height},e.points[0]);if(o(n,e.points[0])>s){e.points.unshift(n)}}if(i.calcIntersect){const n=i.calcIntersect({x:i.offset.posX+i.width/2,y:i.offset.posY+i.height/2,width:i.width,height:i.height},e.points[e.points.length-1]);if(o(n,e.points[e.points.length-1])>s){e.points.push(n)}}const w=h(K,e,y,n.type,t,i,n.diagramId);e.x=e.labels[0].x+u.x+e.labels[0].width/2;e.y=e.labels[0].y+u.y+e.labels[0].height/2;p(e,w)}}))}),"render")},62954:(n,e,t)=>{(function(e){if(true){n.exports=e()}else{var t}})((function(){var n,e,r;return function(){function n(e,t,r){function i(c,u){if(!t[c]){if(!e[c]){var s=undefined;if(!u&&s)return require(c,!0);if(a)return a(c,!0);var o=new Error("Cannot find module '"+c+"'");throw o.code="MODULE_NOT_FOUND",o}var f=t[c]={exports:{}};e[c][0].call(f.exports,(function(n){var t=e[c][1][n];return i(t||n)}),f,f.exports,n,e,t,r)}return t[c].exports}for(var a=undefined,c=0;c0&&arguments[0]!==undefined?arguments[0]:{},r=t.defaultLayoutOptions,a=r===undefined?{}:r,u=t.algorithms,s=u===undefined?["layered","stress","mrtree","radial","force","disco","sporeOverlap","sporeCompaction","rectpacking"]:u,o=t.workerFactory,f=t.workerUrl;i(this,n);this.defaultLayoutOptions=a;this.initialized=false;if(typeof f==="undefined"&&typeof o==="undefined"){throw new Error("Cannot construct an ELK without both 'workerUrl' and 'workerFactory'.")}var h=o;if(typeof f!=="undefined"&&typeof o==="undefined"){h=function n(e){return new Worker(e)}}var l=h(f);if(typeof l.postMessage!=="function"){throw new TypeError("Created worker does not provide"+" the required 'postMessage' function.")}this.worker=new c(l);this.worker.postMessage({cmd:"register",algorithms:s}).then((function(n){return e.initialized=true})).catch(console.err)}r(n,[{key:"layout",value:function n(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},r=t.layoutOptions,i=r===undefined?this.defaultLayoutOptions:r,a=t.logging,c=a===undefined?false:a,u=t.measureExecutionTime,s=u===undefined?false:u;if(!e){return Promise.reject(new Error("Missing mandatory parameter 'graph'."))}return this.worker.postMessage({cmd:"layout",graph:e,layoutOptions:i,options:{logging:c,measureExecutionTime:s}})}},{key:"knownLayoutAlgorithms",value:function n(){return this.worker.postMessage({cmd:"algorithms"})}},{key:"knownLayoutOptions",value:function n(){return this.worker.postMessage({cmd:"options"})}},{key:"knownLayoutCategories",value:function n(){return this.worker.postMessage({cmd:"categories"})}},{key:"terminateWorker",value:function n(){if(this.worker)this.worker.terminate()}}]);return n}();t.default=a;var c=function(){function n(e){var t=this;i(this,n);if(e===undefined){throw new Error("Missing mandatory parameter 'worker'.")}this.resolvers={};this.worker=e;this.worker.onmessage=function(n){setTimeout((function(){t.receive(t,n)}),0)}}r(n,[{key:"postMessage",value:function n(e){var t=this.id||0;this.id=t+1;e.id=t;var r=this;return new Promise((function(n,i){r.resolvers[t]=function(e,t){if(e){r.convertGwtStyleError(e);i(e)}else{n(t)}};r.worker.postMessage(e)}))}},{key:"receive",value:function n(e,t){var r=t.data;var i=e.resolvers[r.id];if(i){delete e.resolvers[r.id];if(r.error){i(r.error)}else{i(null,r.data)}}}},{key:"terminate",value:function n(){if(this.worker){this.worker.terminate()}}},{key:"convertGwtStyleError",value:function n(e){if(!e){return}var t=e["__java$exception"];if(t){if(t.cause&&t.cause.backingJsObject){e.cause=t.cause.backingJsObject;this.convertGwtStyleError(e.cause)}delete e["__java$exception"]}}}]);return n}()},{}],2:[function(n,e,r){(function(n){(function(){"use strict";var t;if(typeof window!=="undefined")t=window;else if(typeof n!=="undefined")t=n;else if(typeof self!=="undefined")t=self;var i,a;var c,u,s;function o(){}function f(){}function h(){}function l(){}function b(){}function w(){}function d(){}function g(){}function v(){}function p(){}function m(){}function k(){}function y(){}function M(){}function T(){}function j(){}function E(){}function S(){}function P(){}function C(){}function I(){}function O(){}function A(){}function L(){}function N(){}function $(){}function D(){}function x(){}function R(){}function K(){}function F(){}function _(){}function B(){}function H(){}function U(){}function G(){}function q(){}function X(){}function V(){}function z(){}function W(){}function Q(){}function J(){}function Y(){}function Z(){}function nn(){}function en(){}function tn(){}function rn(){}function an(){}function cn(){}function un(){}function sn(){}function on(){}function fn(){}function hn(){}function ln(){}function bn(){}function wn(){}function dn(){}function gn(){}function vn(){}function pn(){}function mn(){}function kn(){}function yn(){}function Mn(){}function Tn(){}function jn(){}function En(){}function Sn(){}function Pn(){}function Cn(){}function In(){}function On(){}function An(){}function Ln(){}function Nn(){}function $n(){}function Dn(){}function xn(){}function Rn(){}function Kn(){}function Fn(){}function _n(){}function Bn(){}function Hn(){}function Un(){}function Gn(){}function qn(){}function Xn(){}function Vn(){}function zn(){}function Wn(){}function Qn(){}function Jn(){}function Yn(){}function Zn(){}function ne(){}function ee(){}function te(){}function re(){}function ie(){}function ae(){}function ce(){}function ue(){}function se(){}function oe(){}function fe(){}function he(){}function le(){}function be(){}function we(){}function de(){}function ge(){}function ve(){}function pe(){}function me(){}function ke(){}function ye(){}function Me(){}function Te(){}function je(){}function Ee(){}function Se(){}function Pe(){}function Ce(){}function Ie(){}function Oe(){}function Ae(){}function Le(){}function Ne(){}function $e(){}function De(){}function xe(){}function Re(){}function Ke(){}function Fe(){}function _e(){}function Be(){}function He(){}function Ue(){}function Ge(){}function qe(){}function Xe(){}function Ve(){}function ze(){}function We(){}function Qe(){}function Je(){}function Ye(){}function Ze(){}function nt(){}function et(){}function tt(){}function rt(){}function it(){}function at(){}function ct(){}function ut(){}function st(){}function ot(){}function ft(){}function ht(){}function lt(){}function bt(){}function wt(){}function dt(){}function gt(){}function vt(){}function pt(){}function mt(){}function kt(){}function yt(){}function Mt(){}function Tt(){}function jt(){}function Et(){}function St(){}function Pt(){}function Ct(){}function It(){}function Ot(){}function At(){}function Lt(){}function Nt(){}function $t(){}function Dt(){}function xt(){}function Rt(){}function Kt(){}function Ft(){}function _t(){}function Bt(){}function Ht(){}function Ut(){}function Gt(){}function qt(){}function Xt(){}function Vt(){}function zt(){}function Wt(){}function Qt(){}function Jt(){}function Yt(){}function Zt(){}function nr(){}function er(){}function tr(){}function rr(){}function ir(){}function ar(){}function cr(){}function ur(){}function sr(){}function or(){}function fr(){}function hr(){}function lr(){}function br(){}function wr(){}function dr(){}function gr(){}function vr(){}function pr(){}function mr(){}function kr(){}function yr(){}function Mr(){}function Tr(){}function jr(){}function Er(){}function Sr(){}function Pr(){}function Cr(){}function Ir(){}function Or(){}function Ar(){}function Lr(){}function Nr(){}function $r(){}function Dr(){}function xr(){}function Rr(){}function Kr(){}function Fr(){}function _r(){}function Br(){}function Hr(){}function Ur(){}function Gr(){}function qr(){}function Xr(){}function Vr(){}function zr(){}function Wr(){}function Qr(){}function Jr(){}function Yr(){}function Zr(){}function ni(){}function ei(){}function ti(){}function ri(){}function ii(){}function ai(){}function ci(){}function ui(){}function si(){}function oi(){}function fi(){}function hi(){}function li(){}function bi(){}function wi(){}function di(){}function gi(){}function vi(){}function pi(){}function mi(){}function ki(){}function yi(){}function Mi(){}function Ti(){}function ji(){}function Ei(){}function Si(){}function Pi(){}function Ci(){}function Ii(){}function Oi(){}function Ai(){}function Li(){}function Ni(){}function $i(){}function Di(){}function xi(){}function Ri(){}function Ki(){}function Fi(){}function _i(){}function Bi(){}function Hi(){}function Ui(){}function Gi(){}function qi(){}function Xi(){}function Vi(){}function zi(){}function Wi(){}function Qi(){}function Ji(){}function Yi(){}function Zi(){}function na(){}function ea(){}function ta(){}function ra(){}function ia(){}function aa(){}function ca(){}function ua(){}function sa(){}function oa(){}function fa(){}function ha(){}function la(){}function ba(){}function wa(){}function da(){}function ga(){}function va(){}function pa(){}function ma(){}function ka(){}function ya(){}function Ma(){}function Ta(){}function ja(){}function Ea(){}function Sa(){}function Pa(){}function Ca(){}function Ia(){}function Oa(){}function Aa(){}function La(){}function Na(){}function $a(){}function Da(){}function xa(){}function Ra(){}function Ka(){}function Fa(){}function _a(){}function Ba(){}function Ha(){}function Ua(){}function Ga(){}function qa(){}function Xa(){}function Va(){}function za(){}function Wa(){}function Qa(){}function Ja(){}function Ya(){}function Za(){}function nc(){}function ec(){}function tc(){}function rc(){}function ic(){}function ac(){}function cc(){}function uc(){}function sc(){}function oc(){}function fc(){}function hc(){}function lc(){}function bc(){}function wc(){}function dc(){}function gc(){}function vc(){}function pc(){}function mc(){}function kc(){}function yc(){}function Mc(){}function Tc(){}function jc(){}function Ec(){}function Sc(){}function Pc(){}function Cc(){}function Ic(){}function Oc(){}function Ac(){}function Lc(){}function Nc(){}function $c(){}function Dc(){}function xc(){}function Rc(){}function Kc(){}function Fc(){}function _c(){}function Bc(){}function Hc(){}function Uc(){}function Gc(){}function qc(){}function Xc(){}function Vc(){}function zc(){}function Wc(){}function Qc(){}function Jc(){}function Yc(){}function Zc(){}function nu(){}function eu(){}function tu(){}function ru(){}function iu(){}function au(){}function cu(){}function uu(){}function su(){}function ou(){}function fu(){}function hu(){}function lu(){}function bu(){}function wu(){}function du(){}function gu(){}function vu(){}function pu(){}function mu(){}function ku(){}function yu(){}function Mu(){}function Tu(){}function ju(){}function Eu(){}function Su(){}function Pu(){}function Cu(){}function Iu(){}function Ou(){}function Au(){}function Lu(){}function Nu(){}function $u(){}function Du(){}function xu(){}function Ru(){}function Ku(){}function Fu(){}function _u(){}function Bu(){}function Hu(){}function Uu(){}function Gu(){}function qu(){}function Xu(){}function Vu(){}function zu(){}function Wu(){}function Qu(){}function Ju(){}function Yu(){}function Zu(){}function ns(){}function es(){}function ts(){}function rs(){}function is(){}function as(){}function cs(){}function us(){}function ss(){}function os(){}function fs(){}function hs(){}function ls(){}function bs(){}function ws(){}function ds(){}function gs(){}function vs(){}function ps(){}function ms(){}function ks(){}function ys(){}function Ms(){}function Ts(){}function js(){}function Es(){}function Ss(){}function Ps(){}function Cs(){}function Is(){}function Os(){}function As(){}function Ls(){}function Ns(){}function $s(){}function Ds(){}function xs(){}function Rs(){}function Ks(){}function Fs(){}function _s(){}function Bs(){}function Hs(){}function Us(){}function Gs(){}function qs(){}function Xs(){}function Vs(){}function zs(){}function Ws(){}function Qs(){}function Js(){}function Ys(){}function Zs(){}function no(){}function eo(){}function to(){}function ro(){}function io(){}function ao(){}function co(){}function uo(){}function so(){}function oo(){}function fo(){}function ho(){}function lo(){}function bo(){}function wo(){}function go(){}function vo(){}function po(){}function mo(){}function ko(){}function yo(){}function Mo(){}function To(){}function jo(){}function Eo(){}function So(){}function Po(){}function Co(){}function Io(){}function Oo(){}function Ao(){}function Lo(){}function No(){}function $o(){}function Do(){}function xo(){}function Ro(){}function Ko(){}function Fo(){}function _o(){}function Bo(){}function Ho(){}function Uo(){}function Go(){}function qo(){}function Xo(){}function Vo(){}function zo(){}function Wo(){}function Qo(){}function Jo(){}function Yo(){}function Zo(){}function nf(){}function ef(){}function tf(){}function rf(){}function af(){}function cf(){}function uf(){}function sf(){}function of(){}function ff(){}function hf(){}function lf(){}function bf(){}function wf(){}function df(){}function gf(){}function vf(){}function pf(){}function mf(){}function kf(){}function yf(){}function Mf(){}function Tf(){}function jf(){}function Ef(){}function Sf(){}function Pf(){}function Cf(){}function If(){}function Of(){}function Af(){}function Lf(){}function Nf(){}function $f(){}function Df(){}function xf(){}function Rf(){}function Kf(){}function Ff(){}function _f(){}function Bf(){}function Hf(){}function Uf(){}function Gf(){}function qf(){}function Xf(){}function Vf(){}function zf(){}function Wf(){}function Qf(){}function Jf(){}function Yf(){}function Zf(){}function nh(){}function eh(){}function th(){}function rh(){}function ih(){}function ah(){}function ch(){}function uh(){}function sh(){}function oh(){}function fh(){}function hh(){}function lh(){}function bh(){}function wh(){}function dh(){}function gh(){}function vh(){}function ph(){}function mh(){}function kh(){}function yh(){}function Mh(){}function Th(){}function jh(){}function Eh(){}function Sh(){}function Ph(){}function Ch(){}function Ih(){}function Oh(){}function Ah(){}function Lh(){}function Nh(){}function $h(){}function Dh(){}function xh(){}function Rh(){}function Kh(){}function Fh(){}function _h(){}function Bh(){}function Hh(n){}function Uh(n){}function Gh(){yy()}function qh(){ZS()}function Xh(){PEn()}function Vh(){Mbn()}function zh(){oyn()}function Wh(){lOn()}function Qh(){oGn()}function Jh(){Sjn()}function Yh(){Xjn()}function Zh(){nP()}function nl(){VB()}function el(){eP()}function tl(){Lsn()}function rl(){G7()}function il(){Ocn()}function al(){r2()}function cl(){Lcn()}function ul(){znn()}function sl(){e2()}function ol(){Nln()}function fl(){$cn()}function hl(){Ncn()}function ll(){f6()}function bl(){Dcn()}function wl(){IIn()}function dl(){rP()}function gl(){ZYn()}function vl(){IYn()}function pl(){xcn()}function ml(){$sn()}function kl(){i2()}function yl(){Ljn()}function Ml(){c2()}function Tl(){kUn()}function jl(){uDn()}function El(){can()}function Sl(){Udn()}function Pl(){eqn()}function Cl(){u3()}function Il(){aan()}function Ol(){OHn()}function Al(){IOn()}function Ll(){$Hn()}function Nl(){A_n()}function $l(){gIn()}function Dl(){bBn()}function xl(){IMn()}function Rl(){lB()}function Kl(){Aen()}function Fl(){vIn()}function _l(){JYn()}function Bl(){$ln()}function Hl(){nmn()}function Ul(){Dsn()}function Gl(){cXn()}function ql(){jGn()}function Xl(n){cJ(n)}function Vl(n){this.a=n}function zl(n){this.a=n}function Wl(n){this.a=n}function Ql(n){this.a=n}function Jl(n){this.a=n}function Yl(n){this.a=n}function Zl(n){this.a=n}function nb(n){this.a=n}function eb(n){this.a=n}function tb(n){this.a=n}function rb(n){this.a=n}function ib(n){this.a=n}function ab(n){this.a=n}function cb(n){this.a=n}function ub(n){this.a=n}function sb(n){this.a=n}function ob(n){this.a=n}function fb(n){this.a=n}function hb(n){this.a=n}function lb(n){this.a=n}function bb(n){this.a=n}function wb(n){this.a=n}function db(n){this.b=n}function gb(n){this.c=n}function vb(n){this.a=n}function pb(n){this.a=n}function mb(n){this.a=n}function kb(n){this.a=n}function yb(n){this.a=n}function Mb(n){this.a=n}function Tb(n){this.a=n}function jb(n){this.a=n}function Eb(n){this.a=n}function Sb(n){this.a=n}function Pb(n){this.a=n}function Cb(n){this.a=n}function Ib(n){this.a=n}function Ob(n){this.a=n}function Ab(n){this.a=n}function Lb(n){this.a=n}function Nb(n){this.a=n}function $b(){this.a=[]}function Db(n,e){n.a=e}function xb(n,e){n.a=e}function Rb(n,e){n.b=e}function Kb(n,e){n.b=e}function Fb(n,e){n.b=e}function _b(n,e){n.j=e}function Bb(n,e){n.g=e}function Hb(n,e){n.i=e}function Ub(n,e){n.c=e}function Gb(n,e){n.c=e}function qb(n,e){n.d=e}function Xb(n,e){n.d=e}function Vb(n,e){n.k=e}function zb(n,e){n.c=e}function Wb(n,e){n.c=e}function Qb(n,e){n.a=e}function Jb(n,e){n.a=e}function Yb(n,e){n.f=e}function Zb(n,e){n.a=e}function nw(n,e){n.b=e}function ew(n,e){n.d=e}function tw(n,e){n.i=e}function rw(n,e){n.o=e}function iw(n,e){n.r=e}function aw(n,e){n.a=e}function cw(n,e){n.b=e}function uw(n,e){n.e=e}function sw(n,e){n.f=e}function ow(n,e){n.g=e}function fw(n,e){n.e=e}function hw(n,e){n.f=e}function lw(n,e){n.f=e}function bw(n,e){n.a=e}function ww(n,e){n.b=e}function dw(n,e){n.n=e}function gw(n,e){n.a=e}function vw(n,e){n.c=e}function pw(n,e){n.c=e}function mw(n,e){n.c=e}function kw(n,e){n.a=e}function yw(n,e){n.a=e}function Mw(n,e){n.d=e}function Tw(n,e){n.d=e}function jw(n,e){n.e=e}function Ew(n,e){n.e=e}function Sw(n,e){n.g=e}function Pw(n,e){n.f=e}function Cw(n,e){n.j=e}function Iw(n,e){n.a=e}function Ow(n,e){n.a=e}function Aw(n,e){n.b=e}function Lw(n){n.b=n.a}function Nw(n){n.c=n.d.d}function $w(n){this.a=n}function Dw(n){this.a=n}function xw(n){this.a=n}function Rw(n){this.a=n}function Kw(n){this.a=n}function Fw(n){this.a=n}function _w(n){this.a=n}function Bw(n){this.a=n}function Hw(n){this.a=n}function Uw(n){this.a=n}function Gw(n){this.a=n}function qw(n){this.a=n}function Xw(n){this.a=n}function Vw(n){this.a=n}function zw(n){this.b=n}function Ww(n){this.b=n}function Qw(n){this.b=n}function Jw(n){this.a=n}function Yw(n){this.a=n}function Zw(n){this.c=n}function nd(n){this.c=n}function ed(n){this.c=n}function td(n){this.d=n}function rd(n){this.a=n}function id(n){this.a=n}function ad(n){this.a=n}function cd(n){this.a=n}function ud(n){this.a=n}function sd(n){this.a=n}function od(n){this.a=n}function fd(n){this.a=n}function hd(n){this.a=n}function ld(n){this.a=n}function bd(n){this.a=n}function wd(n){this.a=n}function dd(n){this.a=n}function gd(n){this.a=n}function vd(n){this.a=n}function pd(n){this.a=n}function md(n){this.a=n}function kd(n){this.a=n}function yd(n){this.a=n}function Md(n){this.a=n}function Td(n){this.a=n}function jd(n){this.a=n}function Ed(n){this.a=n}function Sd(n){this.a=n}function Pd(n){this.a=n}function Cd(n){this.a=n}function Id(n){this.a=n}function Od(n){this.a=n}function Ad(n){this.a=n}function Ld(n){this.a=n}function Nd(n){this.a=n}function $d(n){this.a=n}function Dd(n){this.a=n}function xd(n){this.a=n}function Rd(n){this.a=n}function Kd(n){this.a=n}function Fd(n){this.a=n}function _d(n){this.a=n}function Bd(n){this.a=n}function Hd(n){this.a=n}function Ud(n){this.a=n}function Gd(n){this.a=n}function qd(n){this.a=n}function Xd(n){this.a=n}function Vd(n){this.a=n}function zd(n){this.a=n}function Wd(n){this.a=n}function Qd(n){this.a=n}function Jd(n){this.e=n}function Yd(n){this.a=n}function Zd(n){this.a=n}function ng(n){this.a=n}function eg(n){this.a=n}function tg(n){this.a=n}function rg(n){this.a=n}function ig(n){this.a=n}function ag(n){this.a=n}function cg(n){this.a=n}function ug(n){this.a=n}function sg(n){this.a=n}function og(n){this.a=n}function fg(n){this.a=n}function hg(n){this.a=n}function lg(n){this.a=n}function bg(n){this.a=n}function wg(n){this.a=n}function dg(n){this.a=n}function gg(n){this.a=n}function vg(n){this.a=n}function pg(n){this.a=n}function mg(n){this.a=n}function kg(n){this.a=n}function yg(n){this.a=n}function Mg(n){this.a=n}function Tg(n){this.a=n}function jg(n){this.a=n}function Eg(n){this.a=n}function Sg(n){this.a=n}function Pg(n){this.a=n}function Cg(n){this.a=n}function Ig(n){this.a=n}function Og(n){this.a=n}function Ag(n){this.a=n}function Lg(n){this.a=n}function Ng(n){this.a=n}function $g(n){this.a=n}function Dg(n){this.a=n}function xg(n){this.a=n}function Rg(n){this.a=n}function Kg(n){this.a=n}function Fg(n){this.a=n}function _g(n){this.a=n}function Bg(n){this.a=n}function Hg(n){this.a=n}function Ug(n){this.a=n}function Gg(n){this.a=n}function qg(n){this.a=n}function Xg(n){this.a=n}function Vg(n){this.a=n}function zg(n){this.a=n}function Wg(n){this.a=n}function Qg(n){this.a=n}function Jg(n){this.a=n}function Yg(n){this.c=n}function Zg(n){this.b=n}function nv(n){this.a=n}function ev(n){this.a=n}function tv(n){this.a=n}function rv(n){this.a=n}function iv(n){this.a=n}function av(n){this.a=n}function cv(n){this.a=n}function uv(n){this.a=n}function sv(n){this.a=n}function ov(n){this.a=n}function fv(n){this.a=n}function hv(n){this.a=n}function lv(n){this.a=n}function bv(n){this.a=n}function wv(n){this.a=n}function dv(n){this.a=n}function gv(n){this.a=n}function vv(n){this.a=n}function pv(n){this.a=n}function mv(n){this.a=n}function kv(n){this.a=n}function yv(n){this.a=n}function Mv(n){this.a=n}function Tv(n){this.a=n}function jv(n){this.a=n}function Ev(n){this.a=n}function Sv(n){this.a=n}function Pv(n){this.a=n}function Cv(n){this.a=n}function Iv(n){this.a=n}function Ov(n){this.a=n}function Av(n){this.a=n}function Lv(n){this.a=n}function Nv(n){this.a=n}function $v(n){this.a=n}function Dv(n){this.a=n}function xv(n){this.a=n}function Rv(n){this.a=n}function Kv(n){this.a=n}function Fv(n){this.a=n}function _v(n){this.a=n}function Bv(n){this.a=n}function Hv(n){this.a=n}function Uv(n){this.a=n}function Gv(n){this.a=n}function qv(n){this.a=n}function Xv(n){this.a=n}function Vv(n){this.a=n}function zv(n){this.a=n}function Wv(n){this.a=n}function Qv(n){this.a=n}function Jv(n){this.a=n}function Yv(n){this.a=n}function Zv(n){this.a=n}function np(n){this.a=n}function ep(n){this.a=n}function tp(n){this.f=n}function rp(n){this.a=n}function ip(n){this.a=n}function ap(n){this.a=n}function cp(n){this.a=n}function up(n){this.a=n}function sp(n){this.a=n}function op(n){this.a=n}function fp(n){this.a=n}function hp(n){this.a=n}function lp(n){this.a=n}function bp(n){this.a=n}function wp(n){this.a=n}function dp(n){this.a=n}function gp(n){this.a=n}function vp(n){this.a=n}function pp(n){this.a=n}function mp(n){this.a=n}function kp(n){this.a=n}function yp(n){this.a=n}function Mp(n){this.a=n}function Tp(n){this.a=n}function jp(n){this.a=n}function Ep(n){this.a=n}function Sp(n){this.a=n}function Pp(n){this.a=n}function Cp(n){this.a=n}function Ip(n){this.a=n}function Op(n){this.a=n}function Ap(n){this.a=n}function Lp(n){this.a=n}function Np(n){this.b=n}function $p(n){this.a=n}function Dp(n){this.a=n}function xp(n){this.a=n}function Rp(n){this.a=n}function Kp(n){this.a=n}function Fp(n){this.a=n}function _p(n){this.a=n}function Bp(n){this.b=n}function Hp(n){this.a=n}function Up(n){this.a=n}function Gp(n){this.a=n}function qp(n){this.a=n}function Xp(n){this.c=n}function Vp(n){this.e=n}function zp(n){this.a=n}function Wp(n){this.a=n}function Qp(n){this.a=n}function Jp(n){this.d=n}function Yp(n){this.a=n}function Zp(n){this.a=n}function nm(n){this.a=n}function em(n){this.e=n}function tm(){this.a=0}function rm(){Fz(this)}function im(){$N(this)}function am(){JQ(this)}function cm(){Hh(this)}function um(){this.c=oat}function sm(n,e){n.b+=e}function om(n,e){e.Wb(n)}function fm(n){return n.a}function hm(n){return n.a}function lm(n){return n.a}function bm(n){return n.a}function wm(n){return n.a}function dm(n){return n.e}function gm(){return null}function vm(){return null}function pm(){Tj();BJn()}function mm(n){n.b.Of(n.e)}function km(n){n.b=new oT}function ym(n,e){n.b=e-n.b}function Mm(n,e){n.a=e-n.a}function Tm(n,e){n.push(e)}function jm(n,e){n.sort(e)}function Em(n,e){e.jd(n.a)}function Sm(n,e){KLn(e,n)}function Pm(n,e,t){n.Yd(t,e)}function Cm(n,e){n.e=e;e.b=n}function Im(n){wB();this.a=n}function Om(n){wB();this.a=n}function Am(n){wB();this.a=n}function Lm(n){iQ();this.a=n}function Nm(n){OZ();Qfe.le(n)}function $m(){$m=O;new rm}function Dm(){jx.call(this)}function xm(){jx.call(this)}function Rm(){Dm.call(this)}function Km(){Dm.call(this)}function Fm(){Dm.call(this)}function _m(){Dm.call(this)}function Bm(){Dm.call(this)}function Hm(){Dm.call(this)}function Um(){Dm.call(this)}function Gm(){Dm.call(this)}function qm(){Dm.call(this)}function Xm(){Dm.call(this)}function Vm(){Dm.call(this)}function zm(){this.a=this}function Wm(){this.Bb|=256}function Qm(){this.b=new dL}function Jm(n,e){n.length=e}function Ym(n,e){ED(n.a,e)}function Zm(n,e){ROn(n.c,e)}function nk(n,e){Gz(n.b,e)}function ek(n,e){pMn(n.a,e)}function tk(n,e){Zdn(n.a,e)}function rk(n,e){Pon(n.e,e)}function ik(n){N$n(n.c,n.b)}function ak(n,e){n.kc().Nb(e)}function ck(n){this.a=xgn(n)}function uk(){this.a=new rm}function sk(){this.a=new rm}function ok(){this.a=new dS}function fk(){this.a=new im}function hk(){this.a=new im}function lk(){this.a=new im}function bk(){this.a=new En}function wk(){this.a=new y7}function dk(){this.a=new ve}function gk(){this.a=new Z0}function vk(){this.a=new KF}function pk(){this.a=new im}function mk(){this.a=new im}function kk(){this.a=new im}function yk(){this.a=new im}function Mk(){this.d=new im}function Tk(){this.a=new s4}function jk(){this.a=new uk}function Ek(){this.a=new rm}function Sk(){this.b=new rm}function Pk(){this.b=new im}function Ck(){this.e=new im}function Ik(){this.a=new wl}function Ok(){this.d=new im}function Ak(){XZ.call(this)}function Lk(){XZ.call(this)}function Nk(){im.call(this)}function $k(){Rm.call(this)}function Dk(){fk.call(this)}function xk(){VF.call(this)}function Rk(){yk.call(this)}function Kk(){cm.call(this)}function Fk(){Kk.call(this)}function _k(){cm.call(this)}function Bk(){_k.call(this)}function Hk(){ly.call(this)}function Uk(){ly.call(this)}function Gk(){ly.call(this)}function qk(){dy.call(this)}function Xk(){ao.call(this)}function Vk(){ao.call(this)}function zk(){vS.call(this)}function Wk(){my.call(this)}function Qk(){my.call(this)}function Jk(){rm.call(this)}function Yk(){rm.call(this)}function Zk(){rm.call(this)}function ny(){Ucn.call(this)}function ey(){uk.call(this)}function ty(){Wm.call(this)}function ry(){FD.call(this)}function iy(){rm.call(this)}function ay(){FD.call(this)}function cy(){rm.call(this)}function uy(){rm.call(this)}function sy(){Mo.call(this)}function oy(){sy.call(this)}function fy(){Mo.call(this)}function hy(){Fh.call(this)}function ly(){this.a=new uk}function by(){this.a=new rm}function wy(){this.a=new im}function dy(){this.a=new rm}function gy(){this.a=new vS}function vy(){this.j=new im}function py(){this.a=new Yj}function my(){this.a=new yo}function ky(){this.a=new Fu}function yy(){yy=O;Tce=new f}function My(){My=O;ase=new Ey}function Ty(){Ty=O;sse=new jy}function jy(){sb.call(this,"")}function Ey(){sb.call(this,"")}function Sy(n){xin.call(this,n)}function Py(n){xin.call(this,n)}function Cy(n){eb.call(this,n)}function Iy(n){VE.call(this,n)}function Oy(n){VE.call(this,n)}function Ay(n){Iy.call(this,n)}function Ly(n){Iy.call(this,n)}function Ny(n){Iy.call(this,n)}function $y(n){f8.call(this,n)}function Dy(n){f8.call(this,n)}function xy(n){U_.call(this,n)}function Ry(n){JE.call(this,n)}function Ky(n){nS.call(this,n)}function Fy(n){nS.call(this,n)}function _y(n){nS.call(this,n)}function By(n){fOn.call(this,n)}function Hy(n){By.call(this,n)}function Uy(n){zV.call(this,n)}function Gy(n){Uy.call(this,n)}function qy(){Nb.call(this,{})}function Xy(){Xy=O;mhe=new C}function Vy(){Vy=O;Eoe=new J$}function zy(){zy=O;_fe=new o}function Wy(){Wy=O;zfe=new M}function Qy(){Qy=O;che=new E}function Jy(n){zD();this.a=n}function Yy(n){Nsn();this.a=n}function Zy(n){oV();this.f=n}function nM(n){oV();this.f=n}function eM(n){hB();this.a=n}function tM(n){n.b=null;n.c=0}function rM(n,e){n.e=e;SFn(n,e)}function iM(n,e){n.a=e;nLn(n)}function aM(n,e,t){n.a[e.g]=t}function cM(n,e,t){aSn(t,n,e)}function uM(n,e){G_(e.i,n.n)}function sM(n,e){Sln(n).Cd(e)}function oM(n,e){n.a.ec().Mc(e)}function fM(n,e){return n.g-e.g}function hM(n,e){return n*n/e}function lM(n){return cJ(n),n}function bM(n){return cJ(n),n}function wM(n){return cJ(n),n}function dM(n){return new Lb(n)}function gM(n){return new eQ(n)}function vM(n){return cJ(n),n}function pM(n){return cJ(n),n}function mM(n){Uy.call(this,n)}function kM(n){Uy.call(this,n)}function yM(n){Uy.call(this,n)}function MM(n){zV.call(this,n)}function TM(n){Uy.call(this,n)}function jM(n){Uy.call(this,n)}function EM(n){Uy.call(this,n)}function SM(n){Uy.call(this,n)}function PM(n){Uy.call(this,n)}function CM(n){Uy.call(this,n)}function IM(n){Uy.call(this,n)}function OM(n){Uy.call(this,n)}function AM(n){Uy.call(this,n)}function LM(n){Uy.call(this,n)}function NM(n){Uy.call(this,n)}function $M(n){cJ(n);this.a=n}function DM(n){dln(n);return n}function xM(n){Yz(n,n.length)}function RM(n){return n.b==n.c}function KM(n){return!!n&&n.b}function FM(n){return!!n&&n.k}function _M(n){return!!n&&n.j}function BM(n,e,t){n.c.Ef(e,t)}function HM(n,e){n.be(e);e.ae(n)}function UM(n){wB();this.a=nQ(n)}function GM(){this.a=TK(nQ(MZn))}function qM(){throw dm(new Um)}function XM(){throw dm(new Um)}function VM(){throw dm(new Um)}function zM(){throw dm(new Um)}function WM(){throw dm(new Um)}function QM(){throw dm(new Um)}function JM(){JM=O;!!(OZ(),Qfe)}function YM(){Fw.call(this,"")}function ZM(){Fw.call(this,"")}function nT(){Fw.call(this,"")}function eT(){Fw.call(this,"")}function tT(n){kM.call(this,n)}function rT(n){kM.call(this,n)}function iT(n){jM.call(this,n)}function aT(n){Qw.call(this,n)}function cT(n){aT.call(this,n)}function uT(n){yx.call(this,n)}function sT(n){eR.call(this,n,0)}function oT(){R2.call(this,12,3)}function fT(n,e){return X0(n,e)}function hT(n,e){return Ren(n,e)}function lT(n,e){return n.a-e.a}function bT(n,e){return n.a-e.a}function wT(n,e){return n.a-e.a}function dT(n,e){return e in n.a}function gT(n){return n.a?n.b:0}function vT(n){return n.a?n.b:0}function pT(n,e,t){e.Cd(n.a[t])}function mT(n,e,t){e.Pe(n.a[t])}function kT(n,e){n.b=new uN(e)}function yT(n,e){n.b=e;return n}function MT(n,e){n.c=e;return n}function TT(n,e){n.f=e;return n}function jT(n,e){n.g=e;return n}function ET(n,e){n.a=e;return n}function ST(n,e){n.f=e;return n}function PT(n,e){n.k=e;return n}function CT(n,e){n.a=e;return n}function IT(n,e){n.e=e;return n}function OT(n,e){n.e=e;return n}function AT(n,e){n.f=e;return n}function LT(n,e){n.b=true;n.d=e}function NT(n,e){return n.b-e.b}function $T(n,e){return n.g-e.g}function DT(n,e){return n?0:e-1}function xT(n,e){return n?0:e-1}function RT(n,e){return n?e-1:0}function KT(n,e){return n.s-e.s}function FT(n,e){return e.rg(n)}function _T(n,e){n.b=e;return n}function BT(n,e){n.a=e;return n}function HT(n,e){n.c=e;return n}function UT(n,e){n.d=e;return n}function GT(n,e){n.e=e;return n}function qT(n,e){n.f=e;return n}function XT(n,e){n.a=e;return n}function VT(n,e){n.b=e;return n}function zT(n,e){n.c=e;return n}function WT(n,e){n.c=e;return n}function QT(n,e){n.b=e;return n}function JT(n,e){n.d=e;return n}function YT(n,e){n.e=e;return n}function ZT(n,e){n.f=e;return n}function nj(n,e){n.g=e;return n}function ej(n,e){n.a=e;return n}function tj(n,e){n.i=e;return n}function rj(n,e){n.j=e;return n}function ij(n,e){IIn();l2(e,n)}function aj(n,e,t){hV(n.a,e,t)}function cj(n){rB.call(this,n)}function uj(n){kvn.call(this,n)}function sj(n){CY.call(this,n)}function oj(n){CY.call(this,n)}function fj(n){_in.call(this,n)}function hj(n){VY.call(this,n)}function lj(n){VY.call(this,n)}function bj(){A$.call(this,"")}function wj(){this.a=0;this.b=0}function dj(){this.b=0;this.a=0}function gj(n,e){n.b=0;Nan(n,e)}function vj(n,e){n.k=e;return n}function pj(n,e){n.j=e;return n}function mj(n,e){n.c=e;n.b=true}function kj(){kj=O;twe=uPn()}function yj(){yj=O;X7e=xEn()}function Mj(){Mj=O;W7e=ZPn()}function Tj(){Tj=O;rtt=hcn()}function jj(){jj=O;Frt=REn()}function Ej(){Ej=O;uot=KEn()}function Sj(){Sj=O;sot=QAn()}function Pj(n){return n.e&&n.e()}function Cj(n){return n.l|n.m<<22}function Ij(n,e){return n.c._b(e)}function Oj(n,e){return zwn(n.b,e)}function Aj(n){return!n?null:n.d}function Lj(n){return!n?null:n.g}function Nj(n){return!n?null:n.i}function $j(n){jK(n);return n.o}function Dj(n,e){n.a+=e;return n}function xj(n,e){n.a+=e;return n}function Rj(n,e){n.a+=e;return n}function Kj(n,e){n.a+=e;return n}function Fj(n,e){while(n.Bd(e));}function _j(n){this.a=new wS(n)}function Bj(){throw dm(new Um)}function Hj(){throw dm(new Um)}function Uj(){throw dm(new Um)}function Gj(){throw dm(new Um)}function qj(){throw dm(new Um)}function Xj(){throw dm(new Um)}function Vj(n){this.a=new VV(n)}function zj(){this.a=new TKn(HQe)}function Wj(){this.b=new TKn(hVe)}function Qj(){this.a=new TKn(EYe)}function Jj(){this.b=new TKn(K1e)}function Yj(){this.b=new TKn(K1e)}function Zj(n){this.a=0;this.b=n}function nE(n){NQn();bYn(this,n)}function eE(n){WQ(n);return n.a}function tE(n){return n.b!=n.d.c}function rE(n,e){return n.d[e.p]}function iE(n,e){return jFn(n,e)}function aE(n,e,t){n.splice(e,t)}function cE(n,e){while(n.Re(e));}function uE(n){n.c?L_n(n):N_n(n)}function sE(){throw dm(new Um)}function oE(){throw dm(new Um)}function fE(){throw dm(new Um)}function hE(){throw dm(new Um)}function lE(){throw dm(new Um)}function bE(){throw dm(new Um)}function wE(){throw dm(new Um)}function dE(){throw dm(new Um)}function gE(){throw dm(new Um)}function vE(){throw dm(new Um)}function pE(){throw dm(new Xm)}function mE(){throw dm(new Xm)}function kE(n){this.a=new yE(n)}function yE(n){iun(this,n,gOn())}function ME(n){return!n||GQ(n)}function TE(n){return Hft[n]!=-1}function jE(){qfe!=0&&(qfe=0);Vfe=-1}function EE(){wce==null&&(wce=[])}function SE(n,e){HD.call(this,n,e)}function PE(n,e){SE.call(this,n,e)}function CE(n,e){this.a=n;this.b=e}function IE(n,e){this.a=n;this.b=e}function OE(n,e){this.a=n;this.b=e}function AE(n,e){this.a=n;this.b=e}function LE(n,e){this.a=n;this.b=e}function NE(n,e){this.a=n;this.b=e}function $E(n,e){this.a=n;this.b=e}function DE(n,e){this.e=n;this.d=e}function xE(n,e){this.b=n;this.c=e}function RE(n,e){this.b=n;this.a=e}function KE(n,e){this.b=n;this.a=e}function FE(n,e){this.b=n;this.a=e}function _E(n,e){this.b=n;this.a=e}function BE(n,e){this.a=n;this.b=e}function HE(n,e){this.a=n;this.b=e}function UE(n,e){this.a=n;this.f=e}function GE(n,e){this.g=n;this.i=e}function qE(n,e){this.f=n;this.g=e}function XE(n,e){this.b=n;this.c=e}function VE(n){GD(n.dc());this.c=n}function zE(n,e){this.a=n;this.b=e}function WE(n,e){this.a=n;this.b=e}function QE(n){this.a=bG(nQ(n),15)}function JE(n){this.a=bG(nQ(n),15)}function YE(n){this.a=bG(nQ(n),85)}function ZE(n){this.b=bG(nQ(n),85)}function nS(n){this.b=bG(nQ(n),51)}function eS(){this.q=new t.Date}function tS(n,e){this.a=n;this.b=e}function rS(n,e){return Lz(n.b,e)}function iS(n,e){return n.b.Hc(e)}function aS(n,e){return n.b.Ic(e)}function cS(n,e){return n.b.Qc(e)}function uS(n,e){return n.b.Hc(e)}function sS(n,e){return n.c.uc(e)}function oS(n,e){return bdn(n.c,e)}function fS(n,e){return n.a._b(e)}function hS(n,e){return n>e&&e0}function FP(n,e){return kwn(n,e)<0}function _P(n,e){return HX(n.a,e)}function BP(n,e){z0.call(this,n,e)}function HP(n){aQ();U_.call(this,n)}function UP(n,e){YX(n,n.length,e)}function GP(n,e){kW(n,n.length,e)}function qP(n,e){return n.a.get(e)}function XP(n,e){return Lz(n.e,e)}function VP(n){return cJ(n),false}function zP(n){this.a=bG(nQ(n),229)}function WP(n){d3.call(this,n,21)}function QP(n,e){qE.call(this,n,e)}function JP(n,e){qE.call(this,n,e)}function YP(n,e){this.b=n;this.a=e}function ZP(n,e){this.d=n;this.e=e}function nC(n,e){this.a=n;this.b=e}function eC(n,e){this.a=n;this.b=e}function tC(n,e){this.a=n;this.b=e}function rC(n,e){this.a=n;this.b=e}function iC(n,e){this.a=n;this.b=e}function aC(n,e){this.b=n;this.a=e}function cC(n,e){this.b=n;this.a=e}function uC(n,e){qE.call(this,n,e)}function sC(n,e){qE.call(this,n,e)}function oC(n,e){qE.call(this,n,e)}function fC(n,e){qE.call(this,n,e)}function hC(n,e){qE.call(this,n,e)}function lC(n,e){qE.call(this,n,e)}function bC(n,e){qE.call(this,n,e)}function wC(n,e){this.b=n;this.a=e}function dC(n,e){qE.call(this,n,e)}function gC(n,e){this.b=n;this.a=e}function vC(n,e){qE.call(this,n,e)}function pC(n,e){this.b=n;this.a=e}function mC(n,e){qE.call(this,n,e)}function kC(n,e){qE.call(this,n,e)}function yC(n,e){qE.call(this,n,e)}function MC(n,e,t){n.splice(e,0,t)}function TC(n,e,t){n.Mb(t)&&e.Cd(t)}function jC(n,e,t){e.Pe(n.a.Ye(t))}function EC(n,e,t){e.Dd(n.a.Ze(t))}function SC(n,e,t){e.Cd(n.a.Kb(t))}function PC(n,e){return Fx(n.c,e)}function CC(n,e){return Fx(n.e,e)}function IC(n,e){qE.call(this,n,e)}function OC(n,e){qE.call(this,n,e)}function AC(n,e){qE.call(this,n,e)}function LC(n,e){qE.call(this,n,e)}function NC(n,e){qE.call(this,n,e)}function $C(n,e){qE.call(this,n,e)}function DC(n,e){this.a=n;this.b=e}function xC(n,e){this.a=n;this.b=e}function RC(n,e){this.a=n;this.b=e}function KC(n,e){this.a=n;this.b=e}function FC(n,e){this.a=n;this.b=e}function _C(n,e){this.a=n;this.b=e}function BC(n,e){this.b=n;this.a=e}function HC(n,e){this.b=n;this.a=e}function UC(n,e){this.b=n;this.a=e}function GC(n,e){this.c=n;this.d=e}function qC(n,e){this.e=n;this.d=e}function XC(n,e){this.a=n;this.b=e}function VC(n,e){this.a=n;this.b=e}function zC(n,e){this.a=n;this.b=e}function WC(n,e){this.b=n;this.a=e}function QC(n,e){this.b=e;this.c=n}function JC(n,e){qE.call(this,n,e)}function YC(n,e){qE.call(this,n,e)}function ZC(n,e){qE.call(this,n,e)}function nI(n,e){qE.call(this,n,e)}function eI(n,e){qE.call(this,n,e)}function tI(n,e){qE.call(this,n,e)}function rI(n,e){qE.call(this,n,e)}function iI(n,e){qE.call(this,n,e)}function aI(n,e){qE.call(this,n,e)}function cI(n,e){qE.call(this,n,e)}function uI(n,e){qE.call(this,n,e)}function sI(n,e){qE.call(this,n,e)}function oI(n,e){qE.call(this,n,e)}function fI(n,e){qE.call(this,n,e)}function hI(n,e){qE.call(this,n,e)}function lI(n,e){qE.call(this,n,e)}function bI(n,e){qE.call(this,n,e)}function wI(n,e){qE.call(this,n,e)}function dI(n,e){qE.call(this,n,e)}function gI(n,e){qE.call(this,n,e)}function vI(n,e){qE.call(this,n,e)}function pI(n,e){qE.call(this,n,e)}function mI(n,e){qE.call(this,n,e)}function kI(n,e){qE.call(this,n,e)}function yI(n,e){qE.call(this,n,e)}function MI(n,e){qE.call(this,n,e)}function TI(n,e){qE.call(this,n,e)}function jI(n,e){qE.call(this,n,e)}function EI(n,e){qE.call(this,n,e)}function SI(n,e){qE.call(this,n,e)}function PI(n,e){qE.call(this,n,e)}function CI(n,e){qE.call(this,n,e)}function II(n,e){qE.call(this,n,e)}function OI(n,e){this.b=n;this.a=e}function AI(n,e){qE.call(this,n,e)}function LI(n,e){this.a=n;this.b=e}function NI(n,e){this.a=n;this.b=e}function $I(n,e){this.a=n;this.b=e}function DI(n,e){qE.call(this,n,e)}function xI(n,e){qE.call(this,n,e)}function RI(n,e){this.a=n;this.b=e}function KI(n,e){LU();return e!=n}function FI(n){PK(n.a);return n.b}function _I(n){U$n(n,n.c);return n}function BI(){kj();return new twe}function HI(){zB();this.a=new BF}function UI(){lFn();this.a=new uk}function GI(){u2();this.b=new uk}function qI(n,e){this.b=n;this.d=e}function XI(n,e){this.a=n;this.b=e}function VI(n,e){this.a=n;this.b=e}function zI(n,e){this.a=n;this.b=e}function WI(n,e){this.b=n;this.a=e}function QI(n,e){qE.call(this,n,e)}function JI(n,e){qE.call(this,n,e)}function YI(n,e){qE.call(this,n,e)}function ZI(n,e){qE.call(this,n,e)}function nO(n,e){qE.call(this,n,e)}function eO(n,e){qE.call(this,n,e)}function tO(n,e){qE.call(this,n,e)}function rO(n,e){qE.call(this,n,e)}function iO(n,e){qE.call(this,n,e)}function aO(n,e){qE.call(this,n,e)}function cO(n,e){qE.call(this,n,e)}function uO(n,e){qE.call(this,n,e)}function sO(n,e){qE.call(this,n,e)}function oO(n,e){qE.call(this,n,e)}function fO(n,e){qE.call(this,n,e)}function hO(n,e){qE.call(this,n,e)}function lO(n,e){qE.call(this,n,e)}function bO(n,e){qE.call(this,n,e)}function wO(n,e){qE.call(this,n,e)}function dO(n,e){qE.call(this,n,e)}function gO(n,e){qE.call(this,n,e)}function vO(n,e){qE.call(this,n,e)}function pO(n,e){qE.call(this,n,e)}function mO(n,e){qE.call(this,n,e)}function kO(n,e){this.b=n;this.a=e}function yO(n,e){this.b=n;this.a=e}function MO(n,e){this.b=n;this.a=e}function TO(n,e){this.b=n;this.a=e}function jO(n,e){this.a=n;this.b=e}function EO(n,e){this.a=n;this.b=e}function SO(n,e){this.a=n;this.b=e}function PO(n,e){this.a=n;this.b=e}function CO(n,e){qE.call(this,n,e)}function IO(n,e){qE.call(this,n,e)}function OO(n,e){qE.call(this,n,e)}function AO(n,e){qE.call(this,n,e)}function LO(n,e){qE.call(this,n,e)}function NO(n,e){qE.call(this,n,e)}function $O(n,e){qE.call(this,n,e)}function DO(n,e){qE.call(this,n,e)}function xO(n,e){qE.call(this,n,e)}function RO(n,e){qE.call(this,n,e)}function KO(n,e){qE.call(this,n,e)}function FO(n,e){qE.call(this,n,e)}function _O(n,e){qE.call(this,n,e)}function BO(n,e){qE.call(this,n,e)}function HO(n,e){qE.call(this,n,e)}function UO(n,e){qE.call(this,n,e)}function GO(n,e){qE.call(this,n,e)}function qO(n,e){qE.call(this,n,e)}function XO(n,e){qE.call(this,n,e)}function VO(n,e){qE.call(this,n,e)}function zO(n,e){this.a=n;this.b=e}function WO(n,e){this.a=n;this.b=e}function QO(n,e){this.a=n;this.b=e}function JO(n,e){this.a=n;this.b=e}function YO(n,e){this.a=n;this.b=e}function ZO(n,e){this.a=n;this.b=e}function nA(n,e){this.a=n;this.b=e}function eA(n,e){this.a=n;this.b=e}function tA(n,e){this.a=n;this.b=e}function rA(n,e){this.a=n;this.b=e}function iA(n,e){this.a=n;this.b=e}function aA(n,e){this.a=n;this.b=e}function cA(n,e){this.a=n;this.b=e}function uA(n,e){this.b=n;this.a=e}function sA(n,e){this.b=n;this.a=e}function oA(n,e){this.b=n;this.a=e}function fA(n,e){this.b=n;this.a=e}function hA(n,e){this.a=n;this.b=e}function lA(n,e){this.a=n;this.b=e}function bA(n,e){qE.call(this,n,e)}function wA(n,e){this.a=n;this.b=e}function dA(n,e){this.a=n;this.b=e}function gA(n,e){qE.call(this,n,e)}function vA(n,e){this.f=n;this.c=e}function pA(n,e){return Fx(n.g,e)}function mA(n,e){return Fx(e.b,n)}function kA(n,e){return Spn(n.a,e)}function yA(n,e){return-n.b.af(e)}function MA(n,e){!!n&&jJ(Zet,n,e)}function TA(n,e){n.i=null;vun(n,e)}function jA(n,e,t){PSn(e,IAn(n,t))}function EA(n,e,t){PSn(e,IAn(n,t))}function SA(n,e){XRn(n.a,bG(e,58))}function PA(n,e){htn(n.a,bG(e,12))}function CA(n,e){this.a=n;this.b=e}function IA(n,e){this.a=n;this.b=e}function OA(n,e){this.a=n;this.b=e}function AA(n,e){this.a=n;this.b=e}function LA(n,e){this.a=n;this.b=e}function NA(n,e){this.d=n;this.b=e}function $A(n,e){this.e=n;this.a=e}function DA(n,e){this.b=n;this.c=e}function xA(n,e){this.i=n;this.g=e}function RA(n,e){this.d=n;this.e=e}function KA(n,e){$rn(new _D(n),e)}function FA(n){return Epn(n.c,n.b)}function _A(n){return!n?null:n.md()}function BA(n){return n==null?null:n}function HA(n){return typeof n===gZn}function UA(n){return typeof n===wZn}function GA(n){return typeof n===dZn}function qA(n,e){return kwn(n,e)==0}function XA(n,e){return kwn(n,e)>=0}function VA(n,e){return kwn(n,e)!=0}function zA(n,e){return ion(n.Kc(),e)}function WA(n,e){return n.Rd().Xb(e)}function QA(n){pvn(n);return n.d.gc()}function JA(n){Gq(n==null);return n}function YA(n,e){n.a+=""+e;return n}function ZA(n,e){n.a+=""+e;return n}function nL(n,e){n.a+=""+e;return n}function eL(n,e){n.a+=""+e;return n}function tL(n,e){n.a+=""+e;return n}function rL(n,e){return n.a+=""+e,n}function iL(n){return""+(cJ(n),n)}function aL(n){Fz(this);Bsn(this,n)}function cL(){t2();uV.call(this)}function uL(n,e){XV.call(this,n,e)}function sL(n,e){XV.call(this,n,e)}function oL(n,e){XV.call(this,n,e)}function fL(n,e){w8(n,e,n.c.b,n.c)}function hL(n,e){w8(n,e,n.a,n.a.a)}function lL(n){b3(n,0);return null}function bL(){this.b=0;this.a=false}function wL(){this.b=0;this.a=false}function dL(){this.b=new wS(lin(12))}function gL(){gL=O;nme=xbn(Kkn())}function vL(){vL=O;hCe=xbn(pKn())}function pL(){pL=O;hze=xbn(bon())}function mL(){mL=O;$m();the=new rm}function kL(n){n.a=0;n.b=0;return n}function yL(n,e){n.a=e.g+1;return n}function ML(n,e){m_.call(this,n,e)}function TL(n,e){bF.call(this,n,e)}function jL(n,e){xA.call(this,n,e)}function EL(n,e){Yx.call(this,n,e)}function SL(n,e){ifn.call(this,n,e)}function PL(n,e){CP();jJ(Qtt,n,e)}function CL(n,e){n.q.setTime(n6(e))}function IL(n){t.clearTimeout(n)}function OL(n){return nQ(n),new sN(n)}function AL(n,e){return BA(n)===BA(e)}function LL(n,e){return n.a.a.a.cc(e)}function NL(n,e){return o1(n.a,0,e)}function $L(n){return IW(bG(n,74))}function DL(n){return c0((cJ(n),n))}function xL(n){return c0((cJ(n),n))}function RL(n){return M$(n.l,n.m,n.h)}function KL(n,e){return k$(n.a,e.a)}function FL(n,e){return oW(n.a,e.a)}function _L(n,e){return bgn(n.a,e.a)}function BL(n,e){return n.indexOf(e)}function HL(n,e){return n.j[e.p]==2}function UL(n,e){return n==e?0:n?1:-1}function GL(n){return n<10?"0"+n:""+n}function qL(n){return typeof n===dZn}function XL(n){return n==DTe||n==KTe}function VL(n){return n==DTe||n==xTe}function zL(n,e){return k$(n.g,e.g)}function WL(n){return Ctn(n.b.b,n,0)}function QL(){vX.call(this,0,0,0,0)}function JL(){cd.call(this,new b8)}function YL(n,e){Ken(n,0,n.length,e)}function ZL(n,e){ED(n.a,e);return e}function nN(n,e){WB();return e.a+=n}function eN(n,e){WB();return e.a+=n}function tN(n,e){WB();return e.c+=n}function rN(n,e){ED(n.c,e);return n}function iN(n,e){yon(n.a,e);return n}function aN(n){this.a=BI();this.b=n}function cN(n){this.a=BI();this.b=n}function uN(n){this.a=n.a;this.b=n.b}function sN(n){this.a=n;Gh.call(this)}function oN(n){this.a=n;Gh.call(this)}function fN(){yY.call(this,0,0,0,0)}function hN(n){return yon(new mJ,n)}function lN(n){return BJ(bG(n,123))}function bN(n){return n.vh()&&n.wh()}function wN(n){return n!=M8e&&n!=T8e}function dN(n){return n==o5e||n==f5e}function gN(n){return n==l5e||n==s5e}function vN(n){return n==_Be||n==FBe}function pN(n,e){return k$(n.g,e.g)}function mN(n,e){return new ifn(e,n)}function kN(n,e){return new ifn(e,n)}function yN(n){return aG(n.b.Kc(),n.a)}function MN(n,e){wbn(n,e);Dan(n,n.D)}function TN(n,e,t){Aan(n,e);Man(n,t)}function jN(n,e,t){Ean(n,e);jan(n,t)}function EN(n,e,t){San(n,e);Pan(n,t)}function SN(n,e,t){Tan(n,e);Ian(n,t)}function PN(n,e,t){Can(n,e);Oan(n,t)}function CN(n,e,t){xK.call(this,n,e,t)}function IN(n){vA.call(this,n,true)}function ON(){QP.call(this,"Tail",3)}function AN(){QP.call(this,"Head",1)}function LN(n){fHn();Xsn.call(this,n)}function NN(n){vX.call(this,n,n,n,n)}function $N(n){n.c=$nn(kce,jZn,1,0,5,1)}function DN(n){n.b&&wXn(n);return n.a}function xN(n){n.b&&wXn(n);return n.c}function RN(n,e){if(Sde){return}n.b=e}function KN(n,e){return n[n.length]=e}function FN(n,e){return n[n.length]=e}function _N(n,e){return Oin(e,d0(n))}function BN(n,e){return Oin(e,d0(n))}function HN(n,e){return Ecn(zW(n.d),e)}function UN(n,e){return Ecn(zW(n.g),e)}function GN(n,e){return Ecn(zW(n.j),e)}function qN(n,e){bF.call(this,n.b,e)}function XN(n,e){cen(Y5(n.a),j2(e))}function VN(n,e){cen(xtn(n.a),E2(e))}function zN(n,e,t){EN(t,t.i+n,t.j+e)}function WN(n,e,t){bQ(n.c[e.g],e.g,t)}function QN(n,e,t){bG(n.c,71).Gi(e,t)}function JN(n,e,t){bQ(n,e,t);return t}function YN(n){Lin(n.Sf(),new Dd(n))}function ZN(n){return n!=null?Vun(n):0}function n$(n){return n==null?0:Vun(n)}function e$(n){eZn();em.call(this,n)}function t$(n){this.a=n;nG.call(this,n)}function r$(){r$=O;t.Math.log(2)}function i$(){i$=O;Fat=(EP(),lnt)}function a$(){a$=O;Vqe=new ovn(j5e)}function c$(){c$=O;new u$;new im}function u$(){new rm;new rm;new rm}function s$(){throw dm(new CM(sce))}function o$(){throw dm(new CM(sce))}function f$(){throw dm(new CM(oce))}function h$(){throw dm(new CM(oce))}function l$(n){this.a=n;ZE.call(this,n)}function b$(n){this.a=n;ZE.call(this,n)}function w$(n,e){iQ();this.a=n;this.b=e}function d$(n,e){nQ(e);bY(n).Jc(new p)}function g$(n,e){zX(n.c,n.c.length,e)}function v$(n){return n.ae?1:0}function y$(n,e){return kwn(n,e)>0?n:e}function M$(n,e,t){return{l:n,m:e,h:t}}function T$(n,e){n.a!=null&&PA(e,n.a)}function j$(n){f2(n,null);b2(n,null)}function E$(n,e,t){return jJ(n.g,t,e)}function S$(n,e,t){return hmn(e,t,n.c)}function P$(n,e,t){return jJ(n.k,t,e)}function C$(n,e,t){yWn(n,e,t);return t}function I$(n,e){a2();return e.n.b+=n}function O$(n){VZ.call(this);this.b=n}function A$(n){RF.call(this);this.a=n}function L$(){QP.call(this,"Range",2)}function N$(n){this.b=n;this.a=new im}function $$(n){this.b=new ce;this.a=n}function D$(n){n.a=new H;n.c=new H}function x$(n){n.a=new rm;n.d=new rm}function R$(n){w2(n,null);d2(n,null)}function K$(n,e){return EWn(n.a,e,null)}function F$(n,e){return jJ(n.a,e.a,e)}function _$(n){return new PO(n.a,n.b)}function B$(n){return new PO(n.c,n.d)}function H$(n){return new PO(n.c,n.d)}function U$(n,e){return ozn(n.c,n.b,e)}function G$(n,e){return n!=null&&Oyn(n,e)}function q$(n,e){return rhn(n.Kc(),e)!=-1}function X$(n){return n.Ob()?n.Pb():null}function V$(n){this.b=(dZ(),new Zw(n))}function z$(n){this.a=n;rm.call(this)}function W$(){Yx.call(this,null,null)}function Q$(){Zx.call(this,null,null)}function J$(){qE.call(this,"INSTANCE",0)}function Y$(){GEn();this.a=new TKn(sTe)}function Z$(n){return Tmn(n,0,n.length)}function nD(n,e){return new ux(n.Kc(),e)}function eD(n,e){return n.a.Bc(e)!=null}function tD(n,e){NVn(n);n.Gc(bG(e,15))}function rD(n,e,t){n.c.bd(e,bG(t,136))}function iD(n,e,t){n.c.Ui(e,bG(t,136))}function aD(n,e){if(n.c){fq(e);X1(e)}}function cD(n,e){n.q.setHours(e);$qn(n,e)}function uD(n,e){UR(e,n.a.a.a,n.a.a.b)}function sD(n,e,t,r){bQ(n.a[e.g],t.g,r)}function oD(n,e,t){return n.a[e.g][t.g]}function fD(n,e){return n.e[e.c.p][e.p]}function hD(n,e){return n.c[e.c.p][e.p]}function lD(n,e){return n.a[e.c.p][e.p]}function bD(n,e){return n.j[e.p]=lRn(e)}function wD(n,e){return n.a.Bc(e)!=null}function dD(n,e){return bM(MK(e.a))<=n}function gD(n,e){return bM(MK(e.a))>=n}function vD(n,e){return o7(n.f,e.Pg())}function pD(n,e){return n.a*e.a+n.b*e.b}function mD(n,e){return n.a0?e/(n*n):e*100}function IR(n,e){return n>0?e*e/n:e*e*100}function OR(n,e){return bG(hrn(n.a,e),34)}function AR(n,e){IIn();return zNn(n,e.e,e)}function LR(n,e,t){iP();return t.Mg(n,e)}function NR(n){can();return n.e.a+n.f.a/2}function $R(n,e,t){can();return t.e.a-n*e}function DR(n){can();return n.e.b+n.f.b/2}function xR(n,e,t){can();return t.e.b-n*e}function RR(n){n.d=new pR(n);n.e=new rm}function KR(){this.a=new U1;this.b=new U1}function FR(n){this.c=n;this.a=1;this.b=1}function _R(n){hYn();km(this);this.Ff(n)}function BR(n,e,t){Aen();n.pf(e)&&t.Cd(n)}function HR(n,e,t){return ED(e,Bvn(n,t))}function UR(n,e,t){n.a+=e;n.b+=t;return n}function GR(n,e,t){n.a*=e;n.b*=t;return n}function qR(n,e){n.a=e.a;n.b=e.b;return n}function XR(n){n.a=-n.a;n.b=-n.b;return n}function VR(n,e,t){n.a-=e;n.b-=t;return n}function zR(n){vS.call(this);kcn(this,n)}function WR(){qE.call(this,"GROW_TREE",0)}function QR(){qE.call(this,"POLYOMINO",0)}function JR(n,e,t){ven.call(this,n,e,t,2)}function YR(n,e,t){Fdn(Y5(n.a),e,j2(t))}function ZR(n,e){IP();Yx.call(this,n,e)}function nK(n,e){OP();Zx.call(this,n,e)}function eK(n,e){OP();nK.call(this,n,e)}function tK(n,e){OP();Zx.call(this,n,e)}function rK(n,e){return n.c.Fc(bG(e,136))}function iK(n,e,t){Fdn(xtn(n.a),e,E2(t))}function aK(n){this.c=n;San(n,0);Pan(n,0)}function cK(n,e){i$();DX.call(this,n,e)}function uK(n,e){i$();cK.call(this,n,e)}function sK(n,e){i$();cK.call(this,n,e)}function oK(n,e){i$();DX.call(this,n,e)}function fK(n,e){i$();sK.call(this,n,e)}function hK(n,e){i$();oK.call(this,n,e)}function lK(n,e){i$();DX.call(this,n,e)}function bK(n,e,t){return e.zl(n.e,n.c,t)}function wK(n,e,t){return e.Al(n.e,n.c,t)}function dK(n,e,t){return eVn(Rtn(n,e),t)}function gK(n,e){return Twn(n.e,bG(e,54))}function vK(n){return n==null?null:xQn(n)}function pK(n){return n==null?null:TOn(n)}function mK(n){return n==null?null:fvn(n)}function kK(n){return n==null?null:fvn(n)}function yK(n){Gq(n==null||UA(n));return n}function MK(n){Gq(n==null||GA(n));return n}function TK(n){Gq(n==null||HA(n));return n}function jK(n){if(n.o!=null){return}hxn(n)}function EK(n){if(!n){throw dm(new _m)}}function SK(n){if(!n){throw dm(new Km)}}function PK(n){if(!n){throw dm(new Xm)}}function CK(n){if(!n){throw dm(new Bm)}}function IK(n){if(!n){throw dm(new Gm)}}function OK(){OK=O;Gtt=new Wk;new Qk}function AK(){AK=O;FQe=new Np("root")}function LK(){Ucn.call(this);this.Bb|=S0n}function NK(n,e){this.d=n;Nw(this);this.b=e}function $K(n,e){Gnn.call(this,n);this.a=e}function DK(n,e){Gnn.call(this,n);this.a=e}function xK(n,e,t){x7.call(this,n,e,t,null)}function RK(n,e,t){x7.call(this,n,e,t,null)}function KK(n,e){this.c=n;DE.call(this,n,e)}function FK(n,e){this.a=n;KK.call(this,n,e)}function _K(n){this.q=new t.Date(n6(n))}function BK(n){if(n>8){return 0}return n+1}function HK(n,e){if(Sde){return}ED(n.a,e)}function UK(n,e){nP();return Ion(e.d.i,n)}function GK(n,e){Lsn();return new lHn(e,n)}function qK(n,e,t){return n.Ne(e,t)<=0?t:e}function XK(n,e,t){return n.Ne(e,t)<=0?e:t}function VK(n,e){return bG(hrn(n.b,e),143)}function zK(n,e){return bG(hrn(n.c,e),233)}function WK(n){return bG(Yq(n.a,n.b),294)}function QK(n){return new PO(n.c,n.d+n.a)}function JK(n){return(cJ(n),n)?1231:1237}function YK(n){return a2(),vN(bG(n,203))}function ZK(){ZK=O;ame=ygn((emn(),b9e))}function nF(n,e){e.a?nDn(n,e):wD(n.a,e.b)}function eF(n,e,t){++n.j;n.tj();xnn(n,e,t)}function tF(n,e,t){++n.j;n.qj(e,n.Zi(e,t))}function rF(n,e,t){var r;r=n.fd(e);r.Rb(t)}function iF(n,e,t){t=FUn(n,e,6,t);return t}function aF(n,e,t){t=FUn(n,e,3,t);return t}function cF(n,e,t){t=FUn(n,e,9,t);return t}function uF(n,e){i1(e,z2n);n.f=e;return n}function sF(n,e){return(e&pZn)%n.d.length}function oF(n,e,t){return gXn(n.c,n.b,e,t)}function fF(n,e){this.c=n;_in.call(this,e)}function hF(n,e){this.a=n;Bp.call(this,e)}function lF(n,e){this.a=n;Bp.call(this,e)}function bF(n,e){Np.call(this,n);this.a=e}function wF(n,e){Xp.call(this,n);this.a=e}function dF(n,e){Xp.call(this,n);this.a=e}function gF(n){wpn.call(this,0,0);this.f=n}function vF(n,e,t){n.a+=Tmn(e,0,t);return n}function pF(n){!n.a&&(n.a=new P);return n.a}function mF(n,e){var t;t=n.e;n.e=e;return t}function kF(n,e){var t;t=e;return!!n.Fe(t)}function yF(n,e){Qx();return n==e?0:n?1:-1}function MF(n,e){n.a.bd(n.b,e);++n.b;n.c=-1}function TF(n){n.b?TF(n.b):n.f.c.zc(n.e,n.d)}function jF(n){Fz(n.e);n.d.b=n.d;n.d.a=n.d}function EF(n,e,t){jS();Db(n,e.Ve(n.a,t))}function SF(n,e,t){return zz(n,bG(e,22),t)}function PF(n,e){return hT(new Array(e),n)}function CF(n){return MV(_V(n,32))^MV(n)}function IF(n){return String.fromCharCode(n)}function OF(n){return n==null?null:n.message}function AF(n,e,t){return n.apply(e,t);var r}function LF(n,e){var t;t=n[H0n];t.call(n,e)}function NF(n,e){var t;t=n[H0n];t.call(n,e)}function $F(n,e){nP();return!Ion(e.d.i,n)}function DF(n,e,t,r){vX.call(this,n,e,t,r)}function xF(){VF.call(this);this.a=new wj}function RF(){this.n=new wj;this.o=new wj}function KF(){this.b=new wj;this.c=new im}function FF(){this.a=new im;this.b=new im}function _F(){this.a=new ve;this.b=new Qm}function BF(){this.b=new b8;this.a=new b8}function HF(){this.b=new uk;this.a=new uk}function UF(){this.b=new rm;this.a=new rm}function GF(){this.b=new Wj;this.a=new Pc}function qF(){this.a=new dl;this.b=new la}function XF(){this.a=new im;this.d=new im}function VF(){this.n=new _k;this.i=new fN}function zF(n){this.a=(Tcn(n,d1n),new H7(n))}function WF(n){this.a=(Tcn(n,d1n),new H7(n))}function QF(n){return n<100?null:new fj(n)}function JF(n,e){return n.n.a=(cJ(e),e)+10}function YF(n,e){return n.n.a=(cJ(e),e)+10}function ZF(n,e){return e==n||wSn(TRn(e),n)}function n_(n,e){return jJ(n.a,e,"")==null}function e_(n,e){var t;t=e.qi(n.a);return t}function t_(n,e){n.a+=e.a;n.b+=e.b;return n}function r_(n,e){n.a-=e.a;n.b-=e.b;return n}function i_(n){Jm(n.j.c,0);n.a=-1;return n}function a_(n,e,t){t=FUn(n,e,11,t);return t}function c_(n,e,t){t!=null&&Jcn(e,yTn(n,t))}function u_(n,e,t){t!=null&&Ycn(e,yTn(n,t))}function s_(n,e,t,r){gz.call(this,n,e,t,r)}function o_(n,e,t,r){gz.call(this,n,e,t,r)}function f_(n,e,t,r){o_.call(this,n,e,t,r)}function h_(n,e,t,r){mz.call(this,n,e,t,r)}function l_(n,e,t,r){mz.call(this,n,e,t,r)}function b_(n,e,t,r){mz.call(this,n,e,t,r)}function w_(n,e,t,r){l_.call(this,n,e,t,r)}function d_(n,e,t,r){l_.call(this,n,e,t,r)}function g_(n,e,t,r){b_.call(this,n,e,t,r)}function v_(n,e,t,r){d_.call(this,n,e,t,r)}function p_(n,e,t,r){Ez.call(this,n,e,t,r)}function m_(n,e){kM.call(this,_re+n+Xte+e)}function k_(n,e){return n.jk().wi().ri(n,e)}function y_(n,e){return n.jk().wi().ti(n,e)}function M_(n,e){return cJ(n),BA(n)===BA(e)}function T_(n,e){return cJ(n),BA(n)===BA(e)}function j_(n,e){return n.b.Bd(new eC(n,e))}function E_(n,e){return n.b.Bd(new tC(n,e))}function S_(n,e){return n.b.Bd(new rC(n,e))}function P_(n,e){return n.e=bG(n.d.Kb(e),159)}function C_(n,e,t){return n.lastIndexOf(e,t)}function I_(n,e,t){return bgn(n[e.a],n[t.a])}function O_(n,e){return Ehn(e,(IYn(),YKe),n)}function A_(n,e){return k$(e.a.d.p,n.a.d.p)}function L_(n,e){return k$(n.a.d.p,e.a.d.p)}function N_(n,e){return bgn(n.c-n.s,e.c-e.s)}function $_(n,e){return bgn(n.b.e.a,e.b.e.a)}function D_(n,e){return bgn(n.c.e.a,e.c.e.a)}function x_(n){return!n.c?-1:Ctn(n.c.a,n,0)}function R_(n){return n==p8e||n==k8e||n==m8e}function K_(n,e){this.c=n;eW.call(this,n,e)}function F_(n,e,t){this.a=n;eR.call(this,e,t)}function __(n){this.c=n;oL.call(this,JZn,0)}function B_(n,e,t){this.c=e;this.b=t;this.a=n}function H_(n){LU();this.d=n;this.a=new KD}function U_(n){wB();this.a=(dZ(),new aT(n))}function G_(n,e){dN(n.f)?txn(n,e):mCn(n,e)}function q_(n,e){wG.call(this,n,n.length,e)}function X_(n,e){if(Sde){return}!!e&&(n.d=e)}function V_(n,e){return G$(e,15)&&W_n(n.c,e)}function z_(n,e,t){return bG(n.c,71).Wk(e,t)}function W_(n,e,t){return bG(n.c,71).Xk(e,t)}function Q_(n,e,t){return bK(n,bG(e,343),t)}function J_(n,e,t){return wK(n,bG(e,343),t)}function Y_(n,e,t){return SPn(n,bG(e,343),t)}function Z_(n,e,t){return GCn(n,bG(e,343),t)}function nB(n,e){return e==null?null:Jwn(n.b,e)}function eB(n){return GA(n)?(cJ(n),n):n.ue()}function tB(n){return!isNaN(n)&&!isFinite(n)}function rB(n){D$(this);XY(this);esn(this,n)}function iB(n){$N(this);kG(this.c,0,n.Pc())}function aB(n,e,t){this.a=n;this.b=e;this.c=t}function cB(n,e,t){this.a=n;this.b=e;this.c=t}function uB(n,e,t){this.d=n;this.b=t;this.a=e}function sB(n){this.a=n;pS();Xon(Date.now())}function oB(n){RQ(n.a);Rnn(n.c,n.b);n.b=null}function fB(){fB=O;wwe=new U;dwe=new G}function hB(){hB=O;jtt=$nn(kce,jZn,1,0,5,1)}function lB(){lB=O;bit=$nn(kce,jZn,1,0,5,1)}function bB(){bB=O;vit=$nn(kce,jZn,1,0,5,1)}function wB(){wB=O;new Im((dZ(),dZ(),lbe))}function dB(n){Hen();return Gan((Ben(),hde),n)}function gB(n){Sbn();return Gan((pnn(),Dde),n)}function vB(n){qkn();return Gan((E8(),yve),n)}function pB(n){Jrn();return Gan((S8(),Eve),n)}function mB(n){nBn();return Gan((bfn(),qve),n)}function kB(n){ran();return Gan((gnn(),upe),n)}function yB(n){Uen();return Gan((dnn(),gpe),n)}function MB(n){rrn();return Gan((vnn(),Ppe),n)}function TB(n){tZn();return Gan((gL(),nme),n)}function jB(n){ufn();return Gan((qen(),kme),n)}function EB(n){jyn();return Gan((Ven(),Xme),n)}function SB(n){Tyn();return Gan((Xen(),jke),n)}function PB(n){XS();return Gan((o6(),Oke),n)}function CB(n){Yrn();return Gan((P8(),xye),n)}function IB(n){trn();return Gan((mnn(),GMe),n)}function OB(n){bIn();return Gan((Frn(),oTe),n)}function AB(n){Jfn();return Gan((Wen(),_Te),n)}function LB(n){zmn();return Gan((zen(),bje),n)}function NB(n,e){if(!n){throw dm(new jM(e))}}function $B(n){if(!n){throw dm(new EM(SZn))}}function DB(n,e){if(n!=e){throw dm(new Gm)}}function xB(n,e,t){this.a=n;this.b=e;this.c=t}function RB(n,e,t){this.a=n;this.b=e;this.c=t}function KB(n,e,t){this.a=n;this.b=e;this.c=t}function FB(n,e,t){this.b=n;this.a=e;this.c=t}function _B(n,e,t){this.b=n;this.c=e;this.a=t}function BB(n,e,t){this.a=n;this.b=e;this.c=t}function HB(n,e,t){this.e=e;this.b=n;this.d=t}function UB(n,e,t){this.b=n;this.a=e;this.c=t}function GB(n,e,t){jS();n.a.Yd(e,t);return e}function qB(n){var e;e=new Sn;e.e=n;return e}function XB(n){var e;e=new Mk;e.b=n;return e}function VB(){VB=O;_Se=new Ft;BSe=new _t}function zB(){zB=O;qCe=new br;GCe=new wr}function WB(){WB=O;$Oe=new Ti;DOe=new ji}function QB(n){yun();return Gan((Q7(),VAe),n)}function JB(n){YYn();return Gan((vL(),hCe),n)}function YB(n){Wfn();return Gan((Jen(),_Ce),n)}function ZB(n){Qfn();return Gan((Qen(),EAe),n)}function nH(n){yPn();return Gan((_rn(),RAe),n)}function eH(n){d_n();return Gan((lon(),gLe),n)}function tH(n){jAn();return Gan((uan(),wNe),n)}function rH(n){V7();return Gan(($8(),pNe),n)}function iH(n){Icn();return Gan((z7(),TNe),n)}function aH(n){ocn();return Gan((W7(),CNe),n)}function cH(n){Emn();return Gan((Brn(),DNe),n)}function uH(n){Zrn();return Gan((O8(),FNe),n)}function sH(n){HIn();return Gan((fan(),p$e),n)}function oH(n){o_n();return Gan((Ohn(),O$e),n)}function fH(n){sfn();return Gan((Y7(),D$e),n)}function hH(n){irn();return Gan((Z7(),_$e),n)}function lH(n){r5();return Gan((I8(),G$e),n)}function bH(n){OSn();return Gan((oan(),f$e),n)}function wH(n){Lhn();return Gan((J7(),GNe),n)}function dH(n){cOn();return Gan((san(),YNe),n)}function gH(n){ntn();return Gan((A8(),t$e),n)}function vH(n){Wvn();return Gan((Urn(),exe),n)}function pH(n){PKn();return Gan((ffn(),NBe),n)}function mH(n){Nwn();return Gan((nnn(),KBe),n)}function kH(n){rMn();return Gan((Yen(),GBe),n)}function yH(n){Myn();return Gan((Hrn(),JBe),n)}function MH(n){CHn();return Gan((Ahn(),oHe),n)}function TH(n){Smn();return Gan((Zen(),dHe),n)}function jH(n){arn();return Gan((L8(),mHe),n)}function EH(n){fcn();return Gan((rnn(),jHe),n)}function SH(n){son();return Gan((enn(),IHe),n)}function PH(n){Aln();return Gan((tnn(),$He),n)}function CH(n){Ebn();return Gan((inn(),_He),n)}function IH(n){scn();return Gan((ann(),qHe),n)}function OH(n){Yfn();return Gan((cnn(),QHe),n)}function AH(n){ucn();return Gan((wnn(),YUe),n)}function LH(n){i5();return Gan((N8(),AGe),n)}function NH(n){p0();return Gan((R8(),Oqe),n)}function $H(n){m0();return Gan((K8(),$qe),n)}function DH(n){q7();return Gan((F8(),TXe),n)}function xH(n){v0();return Gan((_8(),JXe),n)}function RH(n){Njn();return Gan((wtn(),lVe),n)}function KH(n){DHn();return Gan((pL(),hze),n)}function FH(n){Lln();return Gan((unn(),Sze),n)}function _H(n){Tbn();return Gan((btn(),WWe),n)}function BH(n){s3();return Gan((D8(),ZWe),n)}function HH(n){Mun();return Gan((x8(),UQe),n)}function UH(n){YPn();return Gan((Grn(),nJe),n)}function GH(n){jbn();return Gan((snn(),pJe),n)}function qH(n){Len();return Gan((B8(),bJe),n)}function XH(n){kTn();return Gan((ltn(),oYe),n)}function VH(n){uon();return Gan((onn(),wYe),n)}function zH(n){tmn();return Gan((fnn(),SYe),n)}function WH(n){iMn();return Gan((hnn(),$Ye),n)}function QH(n){Xgn();return Gan((lnn(),YYe),n)}function JH(n){h9();return Gan((H8(),ZZe),n)}function YH(n){xsn();return Gan((C8(),ASe),n)}function ZH(n){YIn();return Gan((han(),cEe),n)}function nU(n){ktn();return Gan((bnn(),c1e),n)}function eU(n){ofn();return Gan((U8(),w1e),n)}function tU(n){qRn();return Gan((qrn(),E1e),n)}function rU(n){aP();return Gan((F6(),q1e),n)}function iU(n){Hdn();return Gan((ynn(),F1e),n)}function aU(n){cP();return Gan((_6(),z1e),n)}function cU(n){X7();return Gan((G8(),Y1e),n)}function uU(n){MOn();return Gan((Xrn(),a0e),n)}function sU(n){uP();return Gan((B6(),V0e),n)}function oU(n){Zfn();return Gan((q8(),J0e),n)}function fU(n){Hkn();return Gan((zrn(),y3e),n)}function hU(n){vAn();return Gan((fon(),A3e),n)}function lU(n){aMn();return Gan((lan(),G3e),n)}function bU(n){iPn();return Gan((ban(),l4e),n)}function wU(n){Bdn();return Gan((Vrn(),w5e),n)}function dU(n){ian();return Gan((Mnn(),m5e),n)}function gU(n){qgn();return Gan((dtn(),E5e),n)}function vU(n){HCn();return Gan((wan(),N5e),n)}function pU(n){Dwn();return Gan((knn(),V5e),n)}function mU(n){xjn();return Gan((gtn(),Z5e),n)}function kU(n){ZDn();return Gan((lfn(),f8e),n)}function yU(n){Zkn();return Gan((Wrn(),v8e),n)}function MU(n){FPn();return Gan((dan(),E8e),n)}function TU(n){uNn();return Gan((gan(),N8e),n)}function jU(n){UQn();return Gan((Qrn(),t9e),n)}function EU(n){emn();return Gan((vtn(),d9e),n)}function SU(n){hUn();return Gan((hfn(),S9e),n)}function PU(n){$wn();return Gan((Tnn(),A9e),n)}function CU(n,e){return(cJ(n),n)+(cJ(e),e)}function IU(n){NU();return Gan((X8(),R9e),n)}function OU(n){Qvn();return Gan((ptn(),V9e),n)}function AU(n){Oln();return Gan((mtn(),k7e),n)}function LU(){LU=O;bGe=(UQn(),n9e);wGe=$8e}function NU(){NU=O;L9e=new Lq;N9e=new yz}function $U(n){!n.e&&(n.e=new im);return n.e}function DU(n,e){this.c=n;this.a=e;this.b=e-n}function xU(n,e,t){this.a=n;this.b=e;this.c=t}function RU(n,e,t){this.a=n;this.b=e;this.c=t}function KU(n,e,t){this.a=n;this.b=e;this.c=t}function FU(n,e,t){this.a=n;this.b=e;this.c=t}function _U(n,e,t){this.a=n;this.b=e;this.c=t}function BU(n,e,t){this.a=n;this.b=e;this.c=t}function HU(n,e,t){this.e=n;this.a=e;this.c=t}function UU(n,e,t){i$();q1.call(this,n,e,t)}function GU(n,e,t){i$();NQ.call(this,n,e,t)}function qU(n,e,t){i$();NQ.call(this,n,e,t)}function XU(n,e,t){i$();NQ.call(this,n,e,t)}function VU(n,e,t){i$();GU.call(this,n,e,t)}function zU(n,e,t){i$();GU.call(this,n,e,t)}function WU(n,e,t){i$();zU.call(this,n,e,t)}function QU(n,e,t){i$();qU.call(this,n,e,t)}function JU(n,e,t){i$();XU.call(this,n,e,t)}function YU(n){vX.call(this,n.d,n.c,n.a,n.b)}function ZU(n){vX.call(this,n.d,n.c,n.a,n.b)}function nG(n){this.d=n;Nw(this);this.b=OV(n.d)}function eG(n){oDn();return Gan((hon(),Het),n)}function tG(n,e){nQ(n);nQ(e);return new IE(n,e)}function rG(n,e){nQ(n);nQ(e);return new nq(n,e)}function iG(n,e){nQ(n);nQ(e);return new eq(n,e)}function aG(n,e){nQ(n);nQ(e);return new _E(n,e)}function cG(n){PK(n.b!=0);return Rin(n,n.a.a)}function uG(n){PK(n.b!=0);return Rin(n,n.c.b)}function sG(n){!n.c&&(n.c=new Uo);return n.c}function oG(n){var e;e=new im;frn(e,n);return e}function fG(n){var e;e=new uk;frn(e,n);return e}function hG(n){var e;e=new ok;Gun(e,n);return e}function lG(n){var e;e=new vS;Gun(e,n);return e}function bG(n,e){Gq(n==null||Oyn(n,e));return n}function wG(n,e,t){qV.call(this,e,t);this.a=n}function dG(n,e){this.c=n;this.b=e;this.a=false}function gG(){this.a=";,;";this.b="";this.c=""}function vG(n,e,t){this.b=n;uL.call(this,e,t)}function pG(n,e,t){this.c=n;ZP.call(this,e,t)}function mG(n,e,t){GC.call(this,n,e);this.b=t}function kG(n,e,t){p$n(t,0,n,e,t.length,false)}function yG(n,e,t,r,i){n.b=e;n.c=t;n.d=r;n.a=i}function MG(n,e,t,r,i){n.d=e;n.c=t;n.a=r;n.b=i}function TG(n,e){if(e){n.b=e;n.a=(WQ(e),e.a)}}function jG(n,e){if(!n){throw dm(new jM(e))}}function EG(n,e){if(!n){throw dm(new EM(e))}}function SG(n,e){if(!n){throw dm(new yM(e))}}function PG(n,e){rP();return k$(n.d.p,e.d.p)}function CG(n,e){can();return bgn(n.e.b,e.e.b)}function IG(n,e){can();return bgn(n.e.a,e.e.a)}function OG(n,e){return k$(mq(n.d),mq(e.d))}function AG(n,e){return!!e&&FQ(n,e.d)?e:null}function LG(n,e){return e==(UQn(),n9e)?n.c:n.d}function NG(n){return Oon(Rz(qL(n)?Won(n):n))}function $G(n){return new PO(n.c+n.b,n.d+n.a)}function DG(n){return n!=null&&!Tvn(n,urt,srt)}function xG(n,e){return(vdn(n)<<4|vdn(e))&$1n}function RG(n,e,t,r,i){n.c=e;n.d=t;n.b=r;n.a=i}function KG(n){var e,t;e=n.b;t=n.c;n.b=t;n.c=e}function FG(n){var e,t;t=n.d;e=n.a;n.d=e;n.a=t}function _G(n,e){var t;t=n.c;tun(n,e);return t}function BG(n,e){e<0?n.g=-1:n.g=e;return n}function HG(n,e){Xin(n);n.a*=e;n.b*=e;return n}function UG(n,e,t){Din.call(this,e,t);this.d=n}function GG(n,e,t){RA.call(this,n,e);this.c=t}function qG(n,e,t){RA.call(this,n,e);this.c=t}function XG(n){bB();Mo.call(this);this.ci(n)}function VG(){K7();DQ.call(this,(PP(),Ort))}function zG(n){eZn();++Tht;return new $X(0,n)}function WG(){WG=O;Gst=(dZ(),new Jw(hae))}function QG(){QG=O;new Wyn((Ty(),sse),(My(),ase))}function JG(){JG=O;rle=$nn(tle,XZn,17,256,0,1)}function YG(){this.b=bM(MK(tyn((oGn(),iMe))))}function ZG(n){this.b=n;this.a=PV(this.b.a).Od()}function nq(n,e){this.b=n;this.a=e;Gh.call(this)}function eq(n,e){this.a=n;this.b=e;Gh.call(this)}function tq(n,e,t){this.a=n;jL.call(this,e,t)}function rq(n,e,t){this.a=n;jL.call(this,e,t)}function iq(n,e,t){var r;r=new eQ(t);ain(n,e,r)}function aq(n,e,t){var r;r=n[e];n[e]=t;return r}function cq(n){var e;e=n.slice();return Ren(e,n)}function uq(n){var e;e=n.n;return n.a.b+e.d+e.a}function sq(n){var e;e=n.n;return n.e.b+e.d+e.a}function oq(n){var e;e=n.n;return n.e.a+e.b+e.c}function fq(n){n.a.b=n.b;n.b.a=n.a;n.a=n.b=null}function hq(n,e){w8(n,e,n.c.b,n.c);return true}function lq(n){if(n.a){return n.a}return wY(n)}function bq(n){vZ();return pIn(n)==H0(yIn(n))}function wq(n){vZ();return yIn(n)==H0(pIn(n))}function dq(n,e){return NEn(n,new GC(e.a,e.b))}function gq(n,e){return CJ(),$Mn(n,e),new pJ(n,e)}function vq(n,e){return n.c=e){throw dm(new $k)}}function nz(n,e){return fdn(n,(cJ(e),new bd(e)))}function ez(n,e){return fdn(n,(cJ(e),new wd(e)))}function tz(n,e,t){return XYn(n,bG(e,12),bG(t,12))}function rz(n){return Rsn(),bG(n,12).g.c.length!=0}function iz(n){return Rsn(),bG(n,12).e.c.length!=0}function az(n,e){Lsn();return bgn(e.a.o.a,n.a.o.a)}function cz(n,e){(e.Bb&Wee)!=0&&!n.a.o&&(n.a.o=e)}function uz(n,e){e.Ug("General 'Rotator",1);vQn(n)}function sz(n,e,t){e.qf(t,bM(MK(fQ(n.b,t)))*n.a)}function oz(n,e,t){v_n();return Qsn(n,e)&&Qsn(n,t)}function fz(n){uNn();return!n.Hc(C8e)&&!n.Hc(O8e)}function hz(n){if(n.e){return C7(n.e)}return null}function lz(n){if(qL(n)){return""+n}return U_n(n)}function bz(n){var e;e=n;while(e.f){e=e.f}return e}function wz(n,e,t){bQ(e,0,aX(e[0],t[0]));return e}function dz(n,e,t,r){var i;i=n.i;i.i=e;i.a=t;i.b=r}function gz(n,e,t,r){PD.call(this,n,e,t);this.b=r}function vz(n,e,t,r,i){pen.call(this,n,e,t,r,i,-1)}function pz(n,e,t,r,i){men.call(this,n,e,t,r,i,-1)}function mz(n,e,t,r){GG.call(this,n,e,t);this.b=r}function kz(n){vA.call(this,n,false);this.a=false}function yz(){XO.call(this,"LOOKAHEAD_LAYOUT",1)}function Mz(n){this.b=n;iR.call(this,n);QD(this)}function Tz(n){this.b=n;cR.call(this,n);JD(this)}function jz(n,e,t){this.a=n;s_.call(this,e,t,5,6)}function Ez(n,e,t,r){this.b=n;PD.call(this,e,t,r)}function Sz(n,e){this.b=n;gb.call(this,n.b);this.a=e}function Pz(n){this.a=Gyn(n.a);this.b=new iB(n.b)}function Cz(n,e){iQ();zE.call(this,n,_wn(new $M(e)))}function Iz(n,e){eZn();++Tht;return new LQ(n,e,0)}function Oz(n,e){eZn();++Tht;return new LQ(6,n,e)}function Az(n,e){cJ(e);while(n.Ob()){e.Cd(n.Pb())}}function Lz(n,e){return HA(e)?xZ(n,e):!!GX(n.f,e)}function Nz(n,e){return e.Vh()?Twn(n.b,bG(e,54)):e}function $z(n,e){return T_(n.substr(0,e.length),e)}function Dz(n){return new GV(new rx(n.a.length,n.a))}function xz(n){return new PO(n.c+n.b/2,n.d+n.a/2)}function Rz(n){return M$(~n.l&f0n,~n.m&f0n,~n.h&h0n)}function Kz(n){return typeof n===bZn||typeof n===vZn}function Fz(n){n.f=new aN(n);n.i=new cN(n);++n.g}function _z(n){if(!n){throw dm(new Xm)}return n.d}function Bz(n){var e;e=Hhn(n);PK(e!=null);return e}function Hz(n){var e;e=wgn(n);PK(e!=null);return e}function Uz(n,e){var t;t=n.a.gc();u7(e,t);return t-e}function Gz(n,e){var t;t=n.a.zc(e,n);return t==null}function qz(n,e){return n.a.zc(e,(Qx(),Bhe))==null}function Xz(n){return new gX(null,lW(n,n.length))}function Vz(n,e,t){return VXn(n,bG(e,42),bG(t,176))}function zz(n,e,t){Pun(n.a,e);return aq(n.b,e.g,t)}function Wz(n,e,t){ZV(t,n.a.c.length);r9(n.a,t,e)}function Qz(n,e,t,r){bbn(e,t,n.length);Jz(n,e,t,r)}function Jz(n,e,t,r){var i;for(i=e;i0?t.Math.log(n/e):-100}function oW(n,e){return kwn(n,e)<0?-1:kwn(n,e)>0?1:0}function fW(n,e){tD(n,G$(e,160)?e:bG(e,2036).Rl())}function hW(n,e){if(n==null){throw dm(new PM(e))}}function lW(n,e){return Fin(e,n.length),new Aq(n,e)}function bW(n,e){if(!e){return false}return esn(n,e)}function wW(){Vy();return zfn(fT(Soe,1),g1n,549,0,[Eoe])}function dW(n){return n.e==0?n:new Zz(-n.e,n.d,n.a)}function gW(n,e){return bgn(n.c.c+n.c.b,e.c.c+e.c.b)}function vW(n,e){w8(n.d,e,n.b.b,n.b);++n.a;n.c=null}function pW(n,e){!n.c?ED(n.b,e):pW(n.c,e);return n}function mW(n,e,t){var r;r=brn(n,e);n8(n,e,t);return r}function kW(n,e,t){var r;for(r=0;r=n.g}function bQ(n,e,t){SK(t==null||fGn(n,t));return n[e]=t}function wQ(n,e){w3(e,n.length+1);return n.substr(e)}function dQ(n,e){cJ(e);while(n.c