From 0921817b11998aaec781dae82bd630110f24b35c Mon Sep 17 00:00:00 2001 From: brauliorivas Date: Wed, 29 May 2024 23:18:10 +0000 Subject: [PATCH] =?UTF-8?q?Deploy=20preview=20for=20PR=2025=20=F0=9F=9B=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pr-preview/pr-25/.eslintrc.js | 11 + pr-preview/pr-25/.gitignore | 1 + pr-preview/pr-25/.nojekyll | 0 pr-preview/pr-25/LICENSE | 24 + pr-preview/pr-25/README.md | 36 + pr-preview/pr-25/bare_pr_preview/HEAD | 1 + pr-preview/pr-25/bare_pr_preview/config | 6 + pr-preview/pr-25/bare_pr_preview/description | 1 + .../hooks/applypatch-msg.sample | 15 + .../bare_pr_preview/hooks/commit-msg.sample | 24 + .../hooks/fsmonitor-watchman.sample | 174 + .../bare_pr_preview/hooks/post-update.sample | 8 + .../hooks/pre-applypatch.sample | 14 + .../bare_pr_preview/hooks/pre-commit.sample | 49 + .../hooks/pre-merge-commit.sample | 13 + .../bare_pr_preview/hooks/pre-push.sample | 53 + .../bare_pr_preview/hooks/pre-rebase.sample | 169 + .../bare_pr_preview/hooks/pre-receive.sample | 24 + .../hooks/prepare-commit-msg.sample | 42 + .../hooks/push-to-checkout.sample | 78 + .../hooks/sendemail-validate.sample | 77 + .../pr-25/bare_pr_preview/hooks/update.sample | 128 + pr-preview/pr-25/bare_pr_preview/info/exclude | 6 + ...8923358f7fe31a0e073b92765141e67fcb5579.idx | Bin 0 -> 12216 bytes ...923358f7fe31a0e073b92765141e67fcb5579.pack | Bin 0 -> 151611 bytes ...8923358f7fe31a0e073b92765141e67fcb5579.rev | Bin 0 -> 1644 bytes pr-preview/pr-25/bare_pr_preview/packed-refs | 30 + pr-preview/pr-25/css/canvas.css | 4 + pr-preview/pr-25/css/main.css | 9 + pr-preview/pr-25/css/modal.css | 106 + pr-preview/pr-25/css/toggle.css | 74 + pr-preview/pr-25/data/particles.js | 521 +++ pr-preview/pr-25/favicon.ico | Bin 0 -> 41656 bytes pr-preview/pr-25/img/dmx_logo.png | Bin 0 -> 3826 bytes pr-preview/pr-25/index.html | 61 + pr-preview/pr-25/input/.gitignore | 2 + pr-preview/pr-25/jest.config.js | 4 + pr-preview/pr-25/js/graphic-primitives.js | 59 + pr-preview/pr-25/js/main.js | 342 ++ pr-preview/pr-25/js/menu/toggle.js | 30 + pr-preview/pr-25/js/objects.js | 247 + pr-preview/pr-25/js/tools.js | 141 + pr-preview/pr-25/package-lock.json | 4069 +++++++++++++++++ pr-preview/pr-25/package.json | 23 + pr-preview/pr-25/pnpm-lock.yaml | 2614 +++++++++++ pr-preview/pr-25/test/objects.test.js | 154 + pr-preview/pr-25/test/primitives.test.js | 72 + pr-preview/pr-25/test/tools.test.js | 28 + 48 files changed, 9544 insertions(+) create mode 100644 pr-preview/pr-25/.eslintrc.js create mode 100644 pr-preview/pr-25/.gitignore create mode 100644 pr-preview/pr-25/.nojekyll create mode 100644 pr-preview/pr-25/LICENSE create mode 100644 pr-preview/pr-25/README.md create mode 100644 pr-preview/pr-25/bare_pr_preview/HEAD create mode 100644 pr-preview/pr-25/bare_pr_preview/config create mode 100755 pr-preview/pr-25/bare_pr_preview/description create mode 100755 pr-preview/pr-25/bare_pr_preview/hooks/applypatch-msg.sample create mode 100755 pr-preview/pr-25/bare_pr_preview/hooks/commit-msg.sample create mode 100755 pr-preview/pr-25/bare_pr_preview/hooks/fsmonitor-watchman.sample create mode 100755 pr-preview/pr-25/bare_pr_preview/hooks/post-update.sample create mode 100755 pr-preview/pr-25/bare_pr_preview/hooks/pre-applypatch.sample create mode 100755 pr-preview/pr-25/bare_pr_preview/hooks/pre-commit.sample create mode 100755 pr-preview/pr-25/bare_pr_preview/hooks/pre-merge-commit.sample create mode 100755 pr-preview/pr-25/bare_pr_preview/hooks/pre-push.sample create mode 100755 pr-preview/pr-25/bare_pr_preview/hooks/pre-rebase.sample create mode 100755 pr-preview/pr-25/bare_pr_preview/hooks/pre-receive.sample create mode 100755 pr-preview/pr-25/bare_pr_preview/hooks/prepare-commit-msg.sample create mode 100755 pr-preview/pr-25/bare_pr_preview/hooks/push-to-checkout.sample create mode 100755 pr-preview/pr-25/bare_pr_preview/hooks/sendemail-validate.sample create mode 100755 pr-preview/pr-25/bare_pr_preview/hooks/update.sample create mode 100755 pr-preview/pr-25/bare_pr_preview/info/exclude create mode 100644 pr-preview/pr-25/bare_pr_preview/objects/pack/pack-378923358f7fe31a0e073b92765141e67fcb5579.idx create mode 100644 pr-preview/pr-25/bare_pr_preview/objects/pack/pack-378923358f7fe31a0e073b92765141e67fcb5579.pack create mode 100644 pr-preview/pr-25/bare_pr_preview/objects/pack/pack-378923358f7fe31a0e073b92765141e67fcb5579.rev create mode 100644 pr-preview/pr-25/bare_pr_preview/packed-refs create mode 100644 pr-preview/pr-25/css/canvas.css create mode 100644 pr-preview/pr-25/css/main.css create mode 100644 pr-preview/pr-25/css/modal.css create mode 100644 pr-preview/pr-25/css/toggle.css create mode 100644 pr-preview/pr-25/data/particles.js create mode 100644 pr-preview/pr-25/favicon.ico create mode 100644 pr-preview/pr-25/img/dmx_logo.png create mode 100644 pr-preview/pr-25/index.html create mode 100644 pr-preview/pr-25/input/.gitignore create mode 100644 pr-preview/pr-25/jest.config.js create mode 100644 pr-preview/pr-25/js/graphic-primitives.js create mode 100644 pr-preview/pr-25/js/main.js create mode 100644 pr-preview/pr-25/js/menu/toggle.js create mode 100644 pr-preview/pr-25/js/objects.js create mode 100644 pr-preview/pr-25/js/tools.js create mode 100644 pr-preview/pr-25/package-lock.json create mode 100644 pr-preview/pr-25/package.json create mode 100644 pr-preview/pr-25/pnpm-lock.yaml create mode 100644 pr-preview/pr-25/test/objects.test.js create mode 100644 pr-preview/pr-25/test/primitives.test.js create mode 100644 pr-preview/pr-25/test/tools.test.js diff --git a/pr-preview/pr-25/.eslintrc.js b/pr-preview/pr-25/.eslintrc.js new file mode 100644 index 00000000..6b52cf23 --- /dev/null +++ b/pr-preview/pr-25/.eslintrc.js @@ -0,0 +1,11 @@ +module.exports = { + "env": { + "browser": true, + "es2021": true + }, + "extends": "eslint:recommended", + "parserOptions": { + "ecmaVersion": "latest", + "sourceType": "module" + }, +} diff --git a/pr-preview/pr-25/.gitignore b/pr-preview/pr-25/.gitignore new file mode 100644 index 00000000..40b878db --- /dev/null +++ b/pr-preview/pr-25/.gitignore @@ -0,0 +1 @@ +node_modules/ \ No newline at end of file diff --git a/pr-preview/pr-25/.nojekyll b/pr-preview/pr-25/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/pr-preview/pr-25/LICENSE b/pr-preview/pr-25/LICENSE new file mode 100644 index 00000000..17e1e5cd --- /dev/null +++ b/pr-preview/pr-25/LICENSE @@ -0,0 +1,24 @@ +BSD 2-Clause License + +Copyright (c) 2023, CERN + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/pr-preview/pr-25/README.md b/pr-preview/pr-25/README.md new file mode 100644 index 00000000..61aa432b --- /dev/null +++ b/pr-preview/pr-25/README.md @@ -0,0 +1,36 @@ +# dmX +*data model eXplorer* + +Warning: **Experimental** + +Explore your events at [dmX](https://key4hep.github.io/dmx/). + +To generate your `.json` file use `edm4hep2json` available in the Key4hep stack. +Example usage for the events from FCC `winter2023` campaign: +``` +source /cvmfs/sw.hsf.org/key4hep/setup.sh +edm4hep2json -l Particle \ + -n 10 \ + -o p8_ee_WW_ecm240.json \ + /eos/experiment/fcc/ee/generation/DelphesEvents/winter2023/IDEA/p8_ee_WW_ecm240/events_059793334.root +``` + + +## Development + +The tool is written in pure JS and draws on HTML Cavas. +To run a local version, clone the repo and create simple web server: +```bash +python -m http.server +``` +after that visit localhost (`http://0.0.0.0:8000/`) in your browser. + +## ToDo + +* Filters: + * generator status + * generation + * ancestor +* Event switcher +* Status box +* Details box diff --git a/pr-preview/pr-25/bare_pr_preview/HEAD b/pr-preview/pr-25/bare_pr_preview/HEAD new file mode 100644 index 00000000..b870d826 --- /dev/null +++ b/pr-preview/pr-25/bare_pr_preview/HEAD @@ -0,0 +1 @@ +ref: refs/heads/main diff --git a/pr-preview/pr-25/bare_pr_preview/config b/pr-preview/pr-25/bare_pr_preview/config new file mode 100644 index 00000000..d14c1379 --- /dev/null +++ b/pr-preview/pr-25/bare_pr_preview/config @@ -0,0 +1,6 @@ +[core] + repositoryformatversion = 0 + filemode = true + bare = true +[remote "origin"] + url = https://github.com/rossjrw/pr-preview-action diff --git a/pr-preview/pr-25/bare_pr_preview/description b/pr-preview/pr-25/bare_pr_preview/description new file mode 100755 index 00000000..498b267a --- /dev/null +++ b/pr-preview/pr-25/bare_pr_preview/description @@ -0,0 +1 @@ +Unnamed repository; edit this file 'description' to name the repository. diff --git a/pr-preview/pr-25/bare_pr_preview/hooks/applypatch-msg.sample b/pr-preview/pr-25/bare_pr_preview/hooks/applypatch-msg.sample new file mode 100755 index 00000000..a5d7b84a --- /dev/null +++ b/pr-preview/pr-25/bare_pr_preview/hooks/applypatch-msg.sample @@ -0,0 +1,15 @@ +#!/bin/sh +# +# An example hook script to check the commit log message taken by +# applypatch from an e-mail message. +# +# The hook should exit with non-zero status after issuing an +# appropriate message if it wants to stop the commit. The hook is +# allowed to edit the commit message file. +# +# To enable this hook, rename this file to "applypatch-msg". + +. git-sh-setup +commitmsg="$(git rev-parse --git-path hooks/commit-msg)" +test -x "$commitmsg" && exec "$commitmsg" ${1+"$@"} +: diff --git a/pr-preview/pr-25/bare_pr_preview/hooks/commit-msg.sample b/pr-preview/pr-25/bare_pr_preview/hooks/commit-msg.sample new file mode 100755 index 00000000..b58d1184 --- /dev/null +++ b/pr-preview/pr-25/bare_pr_preview/hooks/commit-msg.sample @@ -0,0 +1,24 @@ +#!/bin/sh +# +# An example hook script to check the commit log message. +# Called by "git commit" with one argument, the name of the file +# that has the commit message. The hook should exit with non-zero +# status after issuing an appropriate message if it wants to stop the +# commit. The hook is allowed to edit the commit message file. +# +# To enable this hook, rename this file to "commit-msg". + +# Uncomment the below to add a Signed-off-by line to the message. +# Doing this in a hook is a bad idea in general, but the prepare-commit-msg +# hook is more suited to it. +# +# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') +# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" + +# This example catches duplicate Signed-off-by lines. + +test "" = "$(grep '^Signed-off-by: ' "$1" | + sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || { + echo >&2 Duplicate Signed-off-by lines. + exit 1 +} diff --git a/pr-preview/pr-25/bare_pr_preview/hooks/fsmonitor-watchman.sample b/pr-preview/pr-25/bare_pr_preview/hooks/fsmonitor-watchman.sample new file mode 100755 index 00000000..23e856f5 --- /dev/null +++ b/pr-preview/pr-25/bare_pr_preview/hooks/fsmonitor-watchman.sample @@ -0,0 +1,174 @@ +#!/usr/bin/perl + +use strict; +use warnings; +use IPC::Open2; + +# An example hook script to integrate Watchman +# (https://facebook.github.io/watchman/) with git to speed up detecting +# new and modified files. +# +# The hook is passed a version (currently 2) and last update token +# formatted as a string and outputs to stdout a new update token and +# all files that have been modified since the update token. Paths must +# be relative to the root of the working tree and separated by a single NUL. +# +# To enable this hook, rename this file to "query-watchman" and set +# 'git config core.fsmonitor .git/hooks/query-watchman' +# +my ($version, $last_update_token) = @ARGV; + +# Uncomment for debugging +# print STDERR "$0 $version $last_update_token\n"; + +# Check the hook interface version +if ($version ne 2) { + die "Unsupported query-fsmonitor hook version '$version'.\n" . + "Falling back to scanning...\n"; +} + +my $git_work_tree = get_working_dir(); + +my $retry = 1; + +my $json_pkg; +eval { + require JSON::XS; + $json_pkg = "JSON::XS"; + 1; +} or do { + require JSON::PP; + $json_pkg = "JSON::PP"; +}; + +launch_watchman(); + +sub launch_watchman { + my $o = watchman_query(); + if (is_work_tree_watched($o)) { + output_result($o->{clock}, @{$o->{files}}); + } +} + +sub output_result { + my ($clockid, @files) = @_; + + # Uncomment for debugging watchman output + # open (my $fh, ">", ".git/watchman-output.out"); + # binmode $fh, ":utf8"; + # print $fh "$clockid\n@files\n"; + # close $fh; + + binmode STDOUT, ":utf8"; + print $clockid; + print "\0"; + local $, = "\0"; + print @files; +} + +sub watchman_clock { + my $response = qx/watchman clock "$git_work_tree"/; + die "Failed to get clock id on '$git_work_tree'.\n" . + "Falling back to scanning...\n" if $? != 0; + + return $json_pkg->new->utf8->decode($response); +} + +sub watchman_query { + my $pid = open2(\*CHLD_OUT, \*CHLD_IN, 'watchman -j --no-pretty') + or die "open2() failed: $!\n" . + "Falling back to scanning...\n"; + + # In the query expression below we're asking for names of files that + # changed since $last_update_token but not from the .git folder. + # + # To accomplish this, we're using the "since" generator to use the + # recency index to select candidate nodes and "fields" to limit the + # output to file names only. Then we're using the "expression" term to + # further constrain the results. + my $last_update_line = ""; + if (substr($last_update_token, 0, 1) eq "c") { + $last_update_token = "\"$last_update_token\""; + $last_update_line = qq[\n"since": $last_update_token,]; + } + my $query = <<" END"; + ["query", "$git_work_tree", {$last_update_line + "fields": ["name"], + "expression": ["not", ["dirname", ".git"]] + }] + END + + # Uncomment for debugging the watchman query + # open (my $fh, ">", ".git/watchman-query.json"); + # print $fh $query; + # close $fh; + + print CHLD_IN $query; + close CHLD_IN; + my $response = do {local $/; }; + + # Uncomment for debugging the watch response + # open ($fh, ">", ".git/watchman-response.json"); + # print $fh $response; + # close $fh; + + die "Watchman: command returned no output.\n" . + "Falling back to scanning...\n" if $response eq ""; + die "Watchman: command returned invalid output: $response\n" . + "Falling back to scanning...\n" unless $response =~ /^\{/; + + return $json_pkg->new->utf8->decode($response); +} + +sub is_work_tree_watched { + my ($output) = @_; + my $error = $output->{error}; + if ($retry > 0 and $error and $error =~ m/unable to resolve root .* directory (.*) is not watched/) { + $retry--; + my $response = qx/watchman watch "$git_work_tree"/; + die "Failed to make watchman watch '$git_work_tree'.\n" . + "Falling back to scanning...\n" if $? != 0; + $output = $json_pkg->new->utf8->decode($response); + $error = $output->{error}; + die "Watchman: $error.\n" . + "Falling back to scanning...\n" if $error; + + # Uncomment for debugging watchman output + # open (my $fh, ">", ".git/watchman-output.out"); + # close $fh; + + # Watchman will always return all files on the first query so + # return the fast "everything is dirty" flag to git and do the + # Watchman query just to get it over with now so we won't pay + # the cost in git to look up each individual file. + my $o = watchman_clock(); + $error = $output->{error}; + + die "Watchman: $error.\n" . + "Falling back to scanning...\n" if $error; + + output_result($o->{clock}, ("/")); + $last_update_token = $o->{clock}; + + eval { launch_watchman() }; + return 0; + } + + die "Watchman: $error.\n" . + "Falling back to scanning...\n" if $error; + + return 1; +} + +sub get_working_dir { + my $working_dir; + if ($^O =~ 'msys' || $^O =~ 'cygwin') { + $working_dir = Win32::GetCwd(); + $working_dir =~ tr/\\/\//; + } else { + require Cwd; + $working_dir = Cwd::cwd(); + } + + return $working_dir; +} diff --git a/pr-preview/pr-25/bare_pr_preview/hooks/post-update.sample b/pr-preview/pr-25/bare_pr_preview/hooks/post-update.sample new file mode 100755 index 00000000..ec17ec19 --- /dev/null +++ b/pr-preview/pr-25/bare_pr_preview/hooks/post-update.sample @@ -0,0 +1,8 @@ +#!/bin/sh +# +# An example hook script to prepare a packed repository for use over +# dumb transports. +# +# To enable this hook, rename this file to "post-update". + +exec git update-server-info diff --git a/pr-preview/pr-25/bare_pr_preview/hooks/pre-applypatch.sample b/pr-preview/pr-25/bare_pr_preview/hooks/pre-applypatch.sample new file mode 100755 index 00000000..4142082b --- /dev/null +++ b/pr-preview/pr-25/bare_pr_preview/hooks/pre-applypatch.sample @@ -0,0 +1,14 @@ +#!/bin/sh +# +# An example hook script to verify what is about to be committed +# by applypatch from an e-mail message. +# +# The hook should exit with non-zero status after issuing an +# appropriate message if it wants to stop the commit. +# +# To enable this hook, rename this file to "pre-applypatch". + +. git-sh-setup +precommit="$(git rev-parse --git-path hooks/pre-commit)" +test -x "$precommit" && exec "$precommit" ${1+"$@"} +: diff --git a/pr-preview/pr-25/bare_pr_preview/hooks/pre-commit.sample b/pr-preview/pr-25/bare_pr_preview/hooks/pre-commit.sample new file mode 100755 index 00000000..29ed5ee4 --- /dev/null +++ b/pr-preview/pr-25/bare_pr_preview/hooks/pre-commit.sample @@ -0,0 +1,49 @@ +#!/bin/sh +# +# An example hook script to verify what is about to be committed. +# Called by "git commit" with no arguments. The hook should +# exit with non-zero status after issuing an appropriate message if +# it wants to stop the commit. +# +# To enable this hook, rename this file to "pre-commit". + +if git rev-parse --verify HEAD >/dev/null 2>&1 +then + against=HEAD +else + # Initial commit: diff against an empty tree object + against=$(git hash-object -t tree /dev/null) +fi + +# If you want to allow non-ASCII filenames set this variable to true. +allownonascii=$(git config --type=bool hooks.allownonascii) + +# Redirect output to stderr. +exec 1>&2 + +# Cross platform projects tend to avoid non-ASCII filenames; prevent +# them from being added to the repository. We exploit the fact that the +# printable range starts at the space character and ends with tilde. +if [ "$allownonascii" != "true" ] && + # Note that the use of brackets around a tr range is ok here, (it's + # even required, for portability to Solaris 10's /usr/bin/tr), since + # the square bracket bytes happen to fall in the designated range. + test $(git diff-index --cached --name-only --diff-filter=A -z $against | + LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0 +then + cat <<\EOF +Error: Attempt to add a non-ASCII file name. + +This can cause problems if you want to work with people on other platforms. + +To be portable it is advisable to rename the file. + +If you know what you are doing you can disable this check using: + + git config hooks.allownonascii true +EOF + exit 1 +fi + +# If there are whitespace errors, print the offending file names and fail. +exec git diff-index --check --cached $against -- diff --git a/pr-preview/pr-25/bare_pr_preview/hooks/pre-merge-commit.sample b/pr-preview/pr-25/bare_pr_preview/hooks/pre-merge-commit.sample new file mode 100755 index 00000000..399eab19 --- /dev/null +++ b/pr-preview/pr-25/bare_pr_preview/hooks/pre-merge-commit.sample @@ -0,0 +1,13 @@ +#!/bin/sh +# +# An example hook script to verify what is about to be committed. +# Called by "git merge" with no arguments. The hook should +# exit with non-zero status after issuing an appropriate message to +# stderr if it wants to stop the merge commit. +# +# To enable this hook, rename this file to "pre-merge-commit". + +. git-sh-setup +test -x "$GIT_DIR/hooks/pre-commit" && + exec "$GIT_DIR/hooks/pre-commit" +: diff --git a/pr-preview/pr-25/bare_pr_preview/hooks/pre-push.sample b/pr-preview/pr-25/bare_pr_preview/hooks/pre-push.sample new file mode 100755 index 00000000..4ce688d3 --- /dev/null +++ b/pr-preview/pr-25/bare_pr_preview/hooks/pre-push.sample @@ -0,0 +1,53 @@ +#!/bin/sh + +# An example hook script to verify what is about to be pushed. Called by "git +# push" after it has checked the remote status, but before anything has been +# pushed. If this script exits with a non-zero status nothing will be pushed. +# +# This hook is called with the following parameters: +# +# $1 -- Name of the remote to which the push is being done +# $2 -- URL to which the push is being done +# +# If pushing without using a named remote those arguments will be equal. +# +# Information about the commits which are being pushed is supplied as lines to +# the standard input in the form: +# +# +# +# This sample shows how to prevent push of commits where the log message starts +# with "WIP" (work in progress). + +remote="$1" +url="$2" + +zero=$(git hash-object --stdin &2 "Found WIP commit in $local_ref, not pushing" + exit 1 + fi + fi +done + +exit 0 diff --git a/pr-preview/pr-25/bare_pr_preview/hooks/pre-rebase.sample b/pr-preview/pr-25/bare_pr_preview/hooks/pre-rebase.sample new file mode 100755 index 00000000..6cbef5c3 --- /dev/null +++ b/pr-preview/pr-25/bare_pr_preview/hooks/pre-rebase.sample @@ -0,0 +1,169 @@ +#!/bin/sh +# +# Copyright (c) 2006, 2008 Junio C Hamano +# +# The "pre-rebase" hook is run just before "git rebase" starts doing +# its job, and can prevent the command from running by exiting with +# non-zero status. +# +# The hook is called with the following parameters: +# +# $1 -- the upstream the series was forked from. +# $2 -- the branch being rebased (or empty when rebasing the current branch). +# +# This sample shows how to prevent topic branches that are already +# merged to 'next' branch from getting rebased, because allowing it +# would result in rebasing already published history. + +publish=next +basebranch="$1" +if test "$#" = 2 +then + topic="refs/heads/$2" +else + topic=`git symbolic-ref HEAD` || + exit 0 ;# we do not interrupt rebasing detached HEAD +fi + +case "$topic" in +refs/heads/??/*) + ;; +*) + exit 0 ;# we do not interrupt others. + ;; +esac + +# Now we are dealing with a topic branch being rebased +# on top of master. Is it OK to rebase it? + +# Does the topic really exist? +git show-ref -q "$topic" || { + echo >&2 "No such branch $topic" + exit 1 +} + +# Is topic fully merged to master? +not_in_master=`git rev-list --pretty=oneline ^master "$topic"` +if test -z "$not_in_master" +then + echo >&2 "$topic is fully merged to master; better remove it." + exit 1 ;# we could allow it, but there is no point. +fi + +# Is topic ever merged to next? If so you should not be rebasing it. +only_next_1=`git rev-list ^master "^$topic" ${publish} | sort` +only_next_2=`git rev-list ^master ${publish} | sort` +if test "$only_next_1" = "$only_next_2" +then + not_in_topic=`git rev-list "^$topic" master` + if test -z "$not_in_topic" + then + echo >&2 "$topic is already up to date with master" + exit 1 ;# we could allow it, but there is no point. + else + exit 0 + fi +else + not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"` + /usr/bin/perl -e ' + my $topic = $ARGV[0]; + my $msg = "* $topic has commits already merged to public branch:\n"; + my (%not_in_next) = map { + /^([0-9a-f]+) /; + ($1 => 1); + } split(/\n/, $ARGV[1]); + for my $elem (map { + /^([0-9a-f]+) (.*)$/; + [$1 => $2]; + } split(/\n/, $ARGV[2])) { + if (!exists $not_in_next{$elem->[0]}) { + if ($msg) { + print STDERR $msg; + undef $msg; + } + print STDERR " $elem->[1]\n"; + } + } + ' "$topic" "$not_in_next" "$not_in_master" + exit 1 +fi + +<<\DOC_END + +This sample hook safeguards topic branches that have been +published from being rewound. + +The workflow assumed here is: + + * Once a topic branch forks from "master", "master" is never + merged into it again (either directly or indirectly). + + * Once a topic branch is fully cooked and merged into "master", + it is deleted. If you need to build on top of it to correct + earlier mistakes, a new topic branch is created by forking at + the tip of the "master". This is not strictly necessary, but + it makes it easier to keep your history simple. + + * Whenever you need to test or publish your changes to topic + branches, merge them into "next" branch. + +The script, being an example, hardcodes the publish branch name +to be "next", but it is trivial to make it configurable via +$GIT_DIR/config mechanism. + +With this workflow, you would want to know: + +(1) ... if a topic branch has ever been merged to "next". Young + topic branches can have stupid mistakes you would rather + clean up before publishing, and things that have not been + merged into other branches can be easily rebased without + affecting other people. But once it is published, you would + not want to rewind it. + +(2) ... if a topic branch has been fully merged to "master". + Then you can delete it. More importantly, you should not + build on top of it -- other people may already want to + change things related to the topic as patches against your + "master", so if you need further changes, it is better to + fork the topic (perhaps with the same name) afresh from the + tip of "master". + +Let's look at this example: + + o---o---o---o---o---o---o---o---o---o "next" + / / / / + / a---a---b A / / + / / / / + / / c---c---c---c B / + / / / \ / + / / / b---b C \ / + / / / / \ / + ---o---o---o---o---o---o---o---o---o---o---o "master" + + +A, B and C are topic branches. + + * A has one fix since it was merged up to "next". + + * B has finished. It has been fully merged up to "master" and "next", + and is ready to be deleted. + + * C has not merged to "next" at all. + +We would want to allow C to be rebased, refuse A, and encourage +B to be deleted. + +To compute (1): + + git rev-list ^master ^topic next + git rev-list ^master next + + if these match, topic has not merged in next at all. + +To compute (2): + + git rev-list master..topic + + if this is empty, it is fully merged to "master". + +DOC_END diff --git a/pr-preview/pr-25/bare_pr_preview/hooks/pre-receive.sample b/pr-preview/pr-25/bare_pr_preview/hooks/pre-receive.sample new file mode 100755 index 00000000..a1fd29ec --- /dev/null +++ b/pr-preview/pr-25/bare_pr_preview/hooks/pre-receive.sample @@ -0,0 +1,24 @@ +#!/bin/sh +# +# An example hook script to make use of push options. +# The example simply echoes all push options that start with 'echoback=' +# and rejects all pushes when the "reject" push option is used. +# +# To enable this hook, rename this file to "pre-receive". + +if test -n "$GIT_PUSH_OPTION_COUNT" +then + i=0 + while test "$i" -lt "$GIT_PUSH_OPTION_COUNT" + do + eval "value=\$GIT_PUSH_OPTION_$i" + case "$value" in + echoback=*) + echo "echo from the pre-receive-hook: ${value#*=}" >&2 + ;; + reject) + exit 1 + esac + i=$((i + 1)) + done +fi diff --git a/pr-preview/pr-25/bare_pr_preview/hooks/prepare-commit-msg.sample b/pr-preview/pr-25/bare_pr_preview/hooks/prepare-commit-msg.sample new file mode 100755 index 00000000..10fa14c5 --- /dev/null +++ b/pr-preview/pr-25/bare_pr_preview/hooks/prepare-commit-msg.sample @@ -0,0 +1,42 @@ +#!/bin/sh +# +# An example hook script to prepare the commit log message. +# Called by "git commit" with the name of the file that has the +# commit message, followed by the description of the commit +# message's source. The hook's purpose is to edit the commit +# message file. If the hook fails with a non-zero status, +# the commit is aborted. +# +# To enable this hook, rename this file to "prepare-commit-msg". + +# This hook includes three examples. The first one removes the +# "# Please enter the commit message..." help message. +# +# The second includes the output of "git diff --name-status -r" +# into the message, just before the "git status" output. It is +# commented because it doesn't cope with --amend or with squashed +# commits. +# +# The third example adds a Signed-off-by line to the message, that can +# still be edited. This is rarely a good idea. + +COMMIT_MSG_FILE=$1 +COMMIT_SOURCE=$2 +SHA1=$3 + +/usr/bin/perl -i.bak -ne 'print unless(m/^. Please enter the commit message/..m/^#$/)' "$COMMIT_MSG_FILE" + +# case "$COMMIT_SOURCE,$SHA1" in +# ,|template,) +# /usr/bin/perl -i.bak -pe ' +# print "\n" . `git diff --cached --name-status -r` +# if /^#/ && $first++ == 0' "$COMMIT_MSG_FILE" ;; +# *) ;; +# esac + +# SOB=$(git var GIT_COMMITTER_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') +# git interpret-trailers --in-place --trailer "$SOB" "$COMMIT_MSG_FILE" +# if test -z "$COMMIT_SOURCE" +# then +# /usr/bin/perl -i.bak -pe 'print "\n" if !$first_line++' "$COMMIT_MSG_FILE" +# fi diff --git a/pr-preview/pr-25/bare_pr_preview/hooks/push-to-checkout.sample b/pr-preview/pr-25/bare_pr_preview/hooks/push-to-checkout.sample new file mode 100755 index 00000000..af5a0c00 --- /dev/null +++ b/pr-preview/pr-25/bare_pr_preview/hooks/push-to-checkout.sample @@ -0,0 +1,78 @@ +#!/bin/sh + +# An example hook script to update a checked-out tree on a git push. +# +# This hook is invoked by git-receive-pack(1) when it reacts to git +# push and updates reference(s) in its repository, and when the push +# tries to update the branch that is currently checked out and the +# receive.denyCurrentBranch configuration variable is set to +# updateInstead. +# +# By default, such a push is refused if the working tree and the index +# of the remote repository has any difference from the currently +# checked out commit; when both the working tree and the index match +# the current commit, they are updated to match the newly pushed tip +# of the branch. This hook is to be used to override the default +# behaviour; however the code below reimplements the default behaviour +# as a starting point for convenient modification. +# +# The hook receives the commit with which the tip of the current +# branch is going to be updated: +commit=$1 + +# It can exit with a non-zero status to refuse the push (when it does +# so, it must not modify the index or the working tree). +die () { + echo >&2 "$*" + exit 1 +} + +# Or it can make any necessary changes to the working tree and to the +# index to bring them to the desired state when the tip of the current +# branch is updated to the new commit, and exit with a zero status. +# +# For example, the hook can simply run git read-tree -u -m HEAD "$1" +# in order to emulate git fetch that is run in the reverse direction +# with git push, as the two-tree form of git read-tree -u -m is +# essentially the same as git switch or git checkout that switches +# branches while keeping the local changes in the working tree that do +# not interfere with the difference between the branches. + +# The below is a more-or-less exact translation to shell of the C code +# for the default behaviour for git's push-to-checkout hook defined in +# the push_to_deploy() function in builtin/receive-pack.c. +# +# Note that the hook will be executed from the repository directory, +# not from the working tree, so if you want to perform operations on +# the working tree, you will have to adapt your code accordingly, e.g. +# by adding "cd .." or using relative paths. + +if ! git update-index -q --ignore-submodules --refresh +then + die "Up-to-date check failed" +fi + +if ! git diff-files --quiet --ignore-submodules -- +then + die "Working directory has unstaged changes" +fi + +# This is a rough translation of: +# +# head_has_history() ? "HEAD" : EMPTY_TREE_SHA1_HEX +if git cat-file -e HEAD 2>/dev/null +then + head=HEAD +else + head=$(git hash-object -t tree --stdin &2 + exit 1 +} + +unset GIT_DIR GIT_WORK_TREE +cd "$worktree" && + +if grep -q "^diff --git " "$1" +then + validate_patch "$1" +else + validate_cover_letter "$1" +fi && + +if test "$GIT_SENDEMAIL_FILE_COUNTER" = "$GIT_SENDEMAIL_FILE_TOTAL" +then + git config --unset-all sendemail.validateWorktree && + trap 'git worktree remove -ff "$worktree"' EXIT && + validate_series +fi diff --git a/pr-preview/pr-25/bare_pr_preview/hooks/update.sample b/pr-preview/pr-25/bare_pr_preview/hooks/update.sample new file mode 100755 index 00000000..c4d426bc --- /dev/null +++ b/pr-preview/pr-25/bare_pr_preview/hooks/update.sample @@ -0,0 +1,128 @@ +#!/bin/sh +# +# An example hook script to block unannotated tags from entering. +# Called by "git receive-pack" with arguments: refname sha1-old sha1-new +# +# To enable this hook, rename this file to "update". +# +# Config +# ------ +# hooks.allowunannotated +# This boolean sets whether unannotated tags will be allowed into the +# repository. By default they won't be. +# hooks.allowdeletetag +# This boolean sets whether deleting tags will be allowed in the +# repository. By default they won't be. +# hooks.allowmodifytag +# This boolean sets whether a tag may be modified after creation. By default +# it won't be. +# hooks.allowdeletebranch +# This boolean sets whether deleting branches will be allowed in the +# repository. By default they won't be. +# hooks.denycreatebranch +# This boolean sets whether remotely creating branches will be denied +# in the repository. By default this is allowed. +# + +# --- Command line +refname="$1" +oldrev="$2" +newrev="$3" + +# --- Safety check +if [ -z "$GIT_DIR" ]; then + echo "Don't run this script from the command line." >&2 + echo " (if you want, you could supply GIT_DIR then run" >&2 + echo " $0 )" >&2 + exit 1 +fi + +if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then + echo "usage: $0 " >&2 + exit 1 +fi + +# --- Config +allowunannotated=$(git config --type=bool hooks.allowunannotated) +allowdeletebranch=$(git config --type=bool hooks.allowdeletebranch) +denycreatebranch=$(git config --type=bool hooks.denycreatebranch) +allowdeletetag=$(git config --type=bool hooks.allowdeletetag) +allowmodifytag=$(git config --type=bool hooks.allowmodifytag) + +# check for no description +projectdesc=$(sed -e '1q' "$GIT_DIR/description") +case "$projectdesc" in +"Unnamed repository"* | "") + echo "*** Project description file hasn't been set" >&2 + exit 1 + ;; +esac + +# --- Check types +# if $newrev is 0000...0000, it's a commit to delete a ref. +zero=$(git hash-object --stdin &2 + echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2 + exit 1 + fi + ;; + refs/tags/*,delete) + # delete tag + if [ "$allowdeletetag" != "true" ]; then + echo "*** Deleting a tag is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/tags/*,tag) + # annotated tag + if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1 + then + echo "*** Tag '$refname' already exists." >&2 + echo "*** Modifying a tag is not allowed in this repository." >&2 + exit 1 + fi + ;; + refs/heads/*,commit) + # branch + if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then + echo "*** Creating a branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/heads/*,delete) + # delete branch + if [ "$allowdeletebranch" != "true" ]; then + echo "*** Deleting a branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/remotes/*,commit) + # tracking branch + ;; + refs/remotes/*,delete) + # delete tracking branch + if [ "$allowdeletebranch" != "true" ]; then + echo "*** Deleting a tracking branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + *) + # Anything else (is there anything else?) + echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2 + exit 1 + ;; +esac + +# --- Finished +exit 0 diff --git a/pr-preview/pr-25/bare_pr_preview/info/exclude b/pr-preview/pr-25/bare_pr_preview/info/exclude new file mode 100755 index 00000000..a5196d1b --- /dev/null +++ b/pr-preview/pr-25/bare_pr_preview/info/exclude @@ -0,0 +1,6 @@ +# git ls-files --others --exclude-from=.git/info/exclude +# Lines that start with '#' are comments. +# For a project mostly in C, the following would be a good set of +# exclude patterns (uncomment them if you want to use them): +# *.[oa] +# *~ diff --git a/pr-preview/pr-25/bare_pr_preview/objects/pack/pack-378923358f7fe31a0e073b92765141e67fcb5579.idx b/pr-preview/pr-25/bare_pr_preview/objects/pack/pack-378923358f7fe31a0e073b92765141e67fcb5579.idx new file mode 100644 index 0000000000000000000000000000000000000000..064be2d538a3d6fb96008f0218b024c2c05a8dca GIT binary patch literal 12216 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 D<~*Af literal 0 HcmV?d00001 diff --git a/pr-preview/pr-25/bare_pr_preview/objects/pack/pack-378923358f7fe31a0e073b92765141e67fcb5579.pack b/pr-preview/pr-25/bare_pr_preview/objects/pack/pack-378923358f7fe31a0e073b92765141e67fcb5579.pack new file mode 100644 index 0000000000000000000000000000000000000000..d6654af6bc80a4d1411b130e4ba0aa931f56f6b9 GIT binary patch literal 151611 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%0AS^n=C|0$| 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

}MhvY)lBB@C%&Stuv_as^DO$ECshznq zsJe(E+_9M1uB?rfar;P1uz5bY0(`<$Omo7aSY8;dfLXRIf(5Deub;>CV^$GhH_uc0 zn?QM4W-_(ezj=bmf4G>>)GIwQ6D>r-kv0;HQRfbmp%AUXOvI4QwN4wBG9GVK*P@7$ zLZm{X@IGBn!kQ;fQ#}%_Ero@~s8~6kUW1HiNh+XCVN1S{7mk<$ecb*8 zz=gM~txSq6mFbN?W(=-ur*Pd!eU5)5?8C(HAaeTJoWgGv1macY`t@#55>QbDDh<2M zAmfp^l2`T!E;SlN0&Bk>y>6#tEA$(_2b3Ri3Gf#Qgy@6%LZAdL&siM+ zLWl|+Q=>Ru*2;7p@AriXgYHxRAS*j0CSkn3CGVN1RrW}{fjgvvo{N`Fy z?IRQtZ#$~s_u4+xxv!2=-eA@*E16Uq_sqyVf8#eUe>dp<8nf@r9=k+%|CCcBAZhHr z3yFP;$S7uWQ+-ca7;zsbW#D=`v&m~)b|qfYe}E;EPPbce`3R86TpHo}Y~c$wxjerq zD^NYLoMQUUXj>SCUD=#sroTUdpAD@B54XBT0y;wueZto1({=L;AeSiAz?-eQnDJK;WlUu>mb zS~+%h=QsaOc8G8<(>$kN?V0khK9I)oVJ{usb{SdJ5Ovo|q_urxgZ0Y16E*l+Tz6u5 zyB(=2KBEHesITFtt0|lV{VT+`UJ22)Dv(k@n{}F_F_|&W)rS-q^9OhtGcIafcZ-?#e| zy*x)InNK%f%H9~;+wtrWQUow@rbIe$AWv|)VaCD`Jc3}W1Ef9#L$q2(pp<8wO+>{gCQ2m{`7~!hVmp^2(n;R~mkH)AwPJ%#C3hX8xVDqhWze zyS%7d#omAMH5JHcWcpfp6VRpE`o+2YBWuzV4s(*}WPo9!s&U2>h;2#6Q?5Z(wk5W6 zj6sX(`hU3<#3nTP2hfU7G^iR%J*@^J@MbNj0VyjDf<((!MwUi z2{xE7v~IlM2JIWDa$Fu4eu|qM!$c^_g18 zO{$I;$t|AtmnHQJD!?bBula`+ZbNpr`8WAl>>v4mY9JEt53apDVu!O%elYA5L-iBM zO^ckyf9SL!1{E+rR*QueA?F~wcm3ncS~xkN*S0f25K5wtg$7kOFj*JLCHv^KmN#%a z`7kC;cU=qEL+Z(vwdZZkw-poz+V||=lUR4oRY%eHb`rW(n8=Y#*|IL|?}Xbtw}M?h zcDRTpbt1A&Q)8DK`40Ng>?_Mz2`g}EEea1 zAd2U{x>!`SdeeHEPxd%AoU+Ba!I{ZPFAfl@|6KqD6(ltAn?cMEQ@b6roeD^i!BC0WOq!Rmq&k;*s-|Sg)^|sc zo$ti|gGgqhguk2!Y0suG1vE=l%j!>C-Vn!iB;II@ZoEuliN6@TRrL8?K#;Rh6Y~y= z$2+$&^^|xwY-e10r^Y}4BLR;9P)}{2K->soe;(1*af6G!w@zdcaH-AJ=RH5no77p0 z9$cv&EtubJ)ley)^&{i7Rr|()!q*N1u~3ZNE@7As-{iKjpis#@d9r%yxE_MY&b)=4 z%)*`+f+~&w)ja5jJVB<|Hz2$@?>a@cvacmX#Z{^7f(wRks81LE?Ie*n>1-*-GKr^z z8n?=OPQG;-4$P&UzKQW%K1|eAR#)0))LtN zr@)_+oTVO@nw_MRFiu6P-?yDW==HC#lbx2HoDw%?H@};jWmFRPa`4g7 zFzNUY6Ek=qt#u5HDC7happ|&R0?YEG4Tr&(Y1L?Kj~A$9sA*TEWu#_+8X6TEsT>{V+}g`Y!YRT@!nKUc z-6`ILwQkDW&3{@S9vpAu>sml+DFF8#aJMY@2`&^qdNlC4@9Kk@vOs}k=QHWCXRLT6 z_mKyVXNHlnaj&+z;q8L+jT)UvWa19fJudL)CUSL(lUjv+e4;N2Bb|xPxkD#d1`>EY z2K1<*EarC&9xVr4hYmQmEaNB!gn^%q>*sVpRRCJ1qKf&*OdKvI=UJH3g5nb z_@PUJuImj?&;ard^&#A5KH?pPjdeI1-Jq7?-@dweI67|icsCF|mJmVr&yyLgAT9gT zH|;)ERpas(Vr{F(i3{O73}9v_u&-!Xv1}}sw$JkZ^xSg61|c4zkU4nG*-c!p7X^(} zRYS7Dz0pf)gpD@P^jIBRg*%DKU3mBlT*)_w&|O23FTDf0FFG(Lj}CBjuwFIWlcDkp zjVt|y-C}x2S4~yN%iPug2j0SiV^B*VBpRLQ0){}gG>`(=A7Bl3TGpq+tf_SNPC0O?;HU)|IF(amzR$x#H*(0 zXzCTl#%86D7r^K z=9K|zNJ7!#P80;3#2|AP_w?`Rt0VmIaicjjW7bf)5+PT{F9B_)2YOz-MDIfu;mS7f z4T3Qg;6m69B$8#0L^JY;gzW?_b7$dE5t^MTFwIq$p524@y;-fw7aQ9W$;XHD+9fXA zBecnHU`HW42`!|3z^`T5Gm4fES;E~{nGb%&6Q{(kV;_~PZ1fmDy}dq5_;AZg5S9O{ z@i#UlDPBD{Nj^TU??$7nQlapVztN7ub*;AKNU{{aT_qg=ATq5g1;9 zIe9!0)4Y$^zTjdxU5A|J!3+$9FM|tu4Hj_mgK@Mpv@p!jtB6lA)5|e4GBYsKH%PHa zOE9vqv5HH`Fv~KFGfTI~ure?)GcroDvSMUdiCP{S8tSt;fDRQvrZb2|y|TzYqU77YuF?5>u}YRD7!$O{j!Vo>fT_ zfr4PVIOr@6fxEPSa8KWY5G0rryjEZ~!ZT_?9lOc!6j}Qc#d3JU?8(3e_75eJ!z4L; zAp=^1bo_4(ip1oYuKR9AT-OfNYmHE?yd&c`ays_!)W;4v^$by3W?!3W@2bHK7VjJx z0&RK`Q7lj#yV$jJ<`s!s^&#WkBlr`6*?674kIGBbdv*ZN48W%*{#WS5PsVJ}qlLV>!$@v72`J*=oDxkd84?5m0S_3rRgK74 z8Hz!%Lxi}$FQ{xc|GW829iBI3J_TZcRNOU5bCiWzaY#RPi-HBKw>_N;%(;ePL##qw z{xstwrJrCoW<~VM;7W4uNp!?F;0Jfo3T;=1Jx>2c#V0q z6*GodB2g^%(%*SiG4rCos+LdP416;slBrWc=lGQ4irfRF3MtY?=hLWD8t+N9SB>DK|=f_x9+7Q?CTttP4WYV@#U z5MXGHW989vemSmQyS2G(4iW9*9krnDq_);CQHqCcbao*hMth6M$Vc&ZPk{tB75EUM zM?{EUI1TH`jXyTAMNf346GO$1{_cLjxwT))TtMbXn4nH{+=wDt9v^K1-;rvJT|vRO zNX)Gz#;W?%Hq-^5e^0TR1MwJqxC3&fGbyx>8r$048ZfI>cG0FgsgyDI*JIhCU6Nr= zC<@+OUq58+*69qi(^ksb?aYqV0mw{I-^f~Vn!`P&1um6L$4+TE*6vfot(nf!v8(s>{Jk=b%Cde_ZmgaiU_o-Tx2*)};{~Z3 z{J!^W7|`&{3{CQ$ual|bKGFOLgpvf@JP>$~T6C>gsUkZ{t) z(vnvJ!w8Y0qEx{zLJ}TkhGHSb-?*qHV(7#{dfyDoXetzzCo)_kx#{0fa&9 z^mzgMx;X?W<}kk_OboyYAKcIxl@XDa>4`!tgph=PsgP_$6dmblvckK`Hc}V6gX+8q z>bU)5nlaDtMx6MB^eZVqQB)-a0X=3|7@Srl1VGwQl2#+?L?$#+c78=E#y5TY8rY+= znZxPi7;@b>fwSH~T$S8RY~Z)d*y@6yoMCg-(M;lLq?md(QuDlD+gZ*|9|f#rkCb*B zZ=W77HE4eGX9bXN4=VxARGr$Uhq?4MsdBxn^|;_DanasJm$;{-H@6 zG^r$aN;YfdWUVeGbNRZvV#6-+Nr40x-S6LIZWA3%Vf-S)j|2E%P`^MkSV+!LRs2l9 zq38LyQ+k1L*`b`%e%>YP_{qc!KBUmwPjtm(Nd=XZ(kZ#-%njh^varYpwLdg)gM#kY zKoOtMgyP33JkI|vE(Kp#86<$k^|(`itMd~jlNTt-!~x`mGsxs3OKA~)lVA|lKx0*R zgy&8Mg~W@opp8fX_=|?npdX2)z=V~FlEoaPlxVLyt4#D#6RC^9?<_H%sf*#bQ{R$% zcD|=&i9djalm*2C3rhUc31C1(FB+ygZ3a}`O<$1RYAi%D5AHKgv{yuBQSWk_o5VM{ z!FPRsX2;dmcP$>Eqt6o~HLhyk;~ahdo|UM$hTDB>^V!n-a0AoqXPRl+Nng??ms}$i zkt+a5Pvq8>KaI7W)|+tA1&=v$c6(J&+^pMs1H|^8($Q+9F)Ia9MUmiDM3r^p`g9LR zZQ?tS%wX?xR?_2AGDqLzI~Bhn@tVl1)$4;#^^0*_OaGn}^FAYmjxpr5RhkxdY10PG zxZHMYwEigRIp*{_a=;NL3d3ZgR_nvmRKU}d#b3~ zD^{+{Tfe>)deM>Eb``$_Oat${(k1_5dpB9qmz{8C!gC;3IfN+b->C+rqD3wu6Mv;! zTOxKB(W`t`>V_XFHNP&UO4A*_ba3IoG6g+#1AyPk{o0u4vgTnjJBeP%W&yG8X3xEp z%KY|r-n6uRA9GGRhK1CDGQ@jbU0=}o+y$7T5l$vT{yn>(s^;liCB`>{?J0X`)lI0{ zip~0&K3XS;+ZO&byMCsRJ))?M%zz@Jq!Cy*a4WkoTWQxuz{Z}*{ln#G`ux^|&GS>T zl7ccB0MxvKOig-ph**vZjYAq$OgSM+8qQd1X=#8Wzk-%Ut{Ozqd9>;lIRu&!*&{)~(7cy#R@vRc_aNX-=^>v(_NUDMgDVT`{qh%d0F zkppIIA0MfHU^Ug!RzX+L0{*zvm3uPL<1;$ZkEl-&($qCj&slb zr&N=NW>^w@M=&};BRQQu%V*z3p~h9vyMKn-c3HWJsYk~H*dW6)j_sF-DDi^pZZ#`v zA$=-H?CMP}jCq)`v#plyCiHzfTjv=YK)M{BM&&qf!b$Jy17-jl+Kk=w(?wMe6C=3V zc-3G;LNSMTf?il$xrE8HmIDm^KaWLp&YEVg$TWjM==O$<#;$mdmAYqCJ{9A=|I+%u zmL<6^^v;-Up3g>$FJ?S_diq(bGfUgg@GW4XgP%JZ7FB49`1gW7V_lh;b)#`iYV|+t%iPTyerujrb$HH@$4T}F?bXJLQ??e-X@4odmSd5C@sS8Zk)=l|1ThA=rwvOG ziAe<11H}_ll8;zW+G$IP5BiZ4@bGJZ{4F%qF5 zvj`X^l+XvukyL;n$HbHW4uYaHEYi=3gj8ulbFE^*JpyhMhooA z3LcL2GuiFUSBsGir{K=a1DOcV9CUFXwO|#wSv~(4XOM`%_Y;b%_Wr!?kEBR zF?Z(tZ?PAJhp-q=gs{dD3Lb~xTxlBhk6$U4-z7uK7cjM+iw+p6XqX0hoHp{zEu<5g zA4>wO4I*t;A%%m$jX16b*+k-FDgpqR1UfMFCQY-0qtI`9q_Ss6(2(QLM@Jj!iehbU zObu2QR{VZ*_Y*$%))bRGYk9Wpzh1?XR$OoIf!V64MwNZ*ElOu zf1Yd3Nx+*Z5x7Ad?MjC_DF#hBmdUi|S|_b6pXe*fK7>O;kqyOGvv;DGO|sE0M#XBa zOu4H$y^Gfn#{no#Gp0j#5luqd?VH&zIgWK-2MXx?M7@AQhw}gqcac9@) zR}HMcNBr3`c2l-;XQf=RM<|wWkseg!kH% zIRYxIYW$k>3XfD0xcZoF5)Q~X(O=e6e`LbW3eygm^nk8Mw2brlLO)4=I>vb+excV;N1h`EUJ6jV`13v(Sm z+K>!6OM_A#+tj-4l@Ot3u3Nz zd;utH1!2nV#@)QWaGCAIE?DW@YErfLoDsWp6C~+O+R>$QIu^$p4lPc9l;wwSHwo^g zPYL|(YLv1%b6QGLkaM$}E-tno=Q{zVBu zTg~)%H03Do&n8Nb%-Du)M~qRAV&#%8m&NuEU#zHl_F~3q*V>hi>H{U#iv_d}nV_`c zcqm+PM$;Kh&+)d>rJUx5%e6e&LEltff^=S&^KD7q4YN+wIlrHpocH2)AJTWu6oTPZ zvJ5Qb&SX`8-HsH&qjG?5tF7|YJ&wHtdo3!(LGSp<(k|SaM1I7;HMJ=ckDoYM^|WmG zCTXj-aEOgI@c3V`ifTOOWcO)8xxosIHnGjnsWE?X#dG`wUcz|7PpuGg%N=|p6QZoA zN>UDGYj_15=(>vp6{k)E%`~$J=}B5j+)?(SczIiMp-V5|r%!@(K+d2Krw>wZK%9?W z-hr-P^-FG*8gQUrB_TZ~M&ef@KoU?mc4k|ZjxmoWRaamhB5{z9MHRvtRKk!jpkl-V zx>-dlh@d5KNNoh-g(`ce;2n@_j7@NCf)R1>SNb;PJk(^{q$a?awkS??JTqr1iG{--dNJ5Y#*Bu{f$7M6C^EIk)}d{gau5p&n-1x_#V${Ee|A8L$ePOG(M--93D%9j zTxRw-a<#q{VVN^~@j;29FdmnyCwnLpGzKsVbZD4|Xb~wg84D{sQLE~cKCSzaLsrye z7Rw)17@>{%b;J*9Wu62VjkhNeiYKCx_oG0sk6qdTnU4b4<6218gZ*Rot!D?nV09T6 zzNtGV=?Jjo{6nfL6$u7fgV?%}X6At~f;~hfP`K1v(nKZ6nn4SBD(9uKK0A$BELU5#R2JRa zcdu<3SaDWWnHO~I=zv(qb&FfbZ)N~PI*v)BH~uxPmzo z9=!Fo&TTAPZc8uV$bKE-?irK)cLtM!9~t(i@eggbZtTrruA6LYhP{jDUs~hcsc-uf zWuPR6h;7VfsBscN{Hvur(x2nMc%1>ADe)6_D=ja^!TPMy+>J>>#?02e1THf7jEq2gFp--;U+%8z)-}*wsQ0%RQGKhitCMIVz0zOE*#qG>tGP3#zkS zp1E+oWP!b6M4xEizenIr|M^JSZCDX3qdpzZxx)F^fRN}9j{(lfKR{6!w>p!Me|r6s z{4!vKNPP2uO3Pr)fXvBJ47UK$RJC$^(ujs^PH7kEXXm)6hekF{&}NonnAZX;tmqOrhB=HQet^Q!P(8)Gg6IP681Ftw zOWnI2%n(tV$8(I?M+xWlS#NKUL$cd|R=~atWc9N2D&@dG>_Fj1whC`5VmQtl} zT4u`P<5V}$bGz$9)EecOxlyTVpTwn|z2=F{oV`F3o=SY(0+p9s6t}G8s6R48^hhEf zSq2_xcWz&(l2FBaM24QE*iGRyqjd#`ILun{zw5wp{AxWs7Ct--A&#{kj7owEx*qwN zIg90(3YP=alV*r`5R-r1;ugS849BejEDiS18dMcu1l(W*>>D;9rP${zc~c>(aYiLO z2M+0`eyod*d6KVxEO{=kp>YSYJFMH*t*^8HrNhr^(H(nlW1fMhJgS-RgBB&jpY&FS zZj5aFwLZQSE3Y-qr6{pNCn0pOU>xUU)G??-E}S7v#6)msy!(27WB3GuAk$q*`j2F& zI9c;!BDD30-YpvLKf)~LSO_%2I--Zy((gL@@nzF@_k5U6-dUy4S+PKIo}}a!W=Oz? z@j#!aH^z@f?-_zQ@Ml<%vw&P9j38N#`N=%w?32)jKI|{h06<|H4nX-1YIFf|;fm>-uB3duME(TuGyzh27dK`rc?Vm*VdugGn2*~3fDu0f z-^*X(9RBsiE!E~cq4;}NR6%_D`lmZ6PRbFcuc6?u%;^TGh(J$a~X^YQQdmV zJF&;?Xvj4V7o*DHWmC(jxA|=A_f7yEk)e%Us^GWDInN*5Yv9 zhmOt23auSa9>Zro657=sDal_W8tQkuFqbA+BjcgdD0w2p+NPS&*-S>OD`EF@Q6x9J}Qtp_~I6^-E)HrmleY8cUm*Bqyo zrY$>0FPx?rhsd_IdRmdPiv$-EphUFJvDVd1l+ce=FQHq^-5oLUYQ2GHGgxEV(hT`* zDKA>ARHFG(#mgTtvx@z>3@P7Yhp6|eM0#7VIL5M#whz?bRvSLu%lJTd8YO8e!jGg4 zQ(6moy7AxzyF2Rw2dAW2Os(vKOZGIbFDCSU5a?ww{x7sAn|5=W(9gbL zqWEHk2;e`_*^c7dnF)#lTX`f**%&!v8)yfX(Yuk{{_1F^QTl{>Hm7a2t82Hw+nxI@)d#G_92o(K!d(q>JX(7DQU`qI78-saqYnp8cJ^*^AP-X`VeLU5dI;M77JitlB` ze=|Qww$(CYP2u$$wBhZJ(i7vb!I{ncq3x+gI~r_Z`JFUZ^g-@X4TcKL4;Jeg!p__w zmJU<2Fp%3nlOY4K3lv`XjV(J5zmIZU(R>yQxM&h-BgC7g>wF>{?w#=qPBWNXpS|)} zIr(`8nqEA(=&=n-HEU^QOJx0@ zDgVl-(z)EIZ+a|%Fm$%$OpJnaSsAK!N8g5OAB=RhA3sO04J@UzYJM8yzhq-0!4!e$ zYXA8aGt#Y$c~e$&Kd9E>fnDOCy@4AalS1O;uYA$v2+&_sKR2l1=~Uj_xOfxqxpJUGaa$+RoJoE~VRPl0Bouq#xYrDUlV>z1CH zmMAry9wx1A1TzS?Q%eh?adK~HjaavKlj}MOtt8|udyrklG zq!-A&MH4+o{O4a~qV{Zq2vW%G8+zu`TvHtg$n@rk@S7YTvXJnM-!?cNPcV40u5J$N zAInp{gmxy!-Em^fYX%61C?je~1px(rRX6YvB88;1K)Xf}oX`X`iXdGoDa_Zld;
+nixslgt(zZ7Q$T$w`u*bU?HI{ z0(&X$g|2J=T?EiJOl9SvXCR-a$-m3JJ|@muO1;I_Uu1qLWc)f9`Cuwr3R49u;Kgl_ zCj764AU@32v7Hx>OjKq(r2iaKoY&=y_Ev88BrW=^oQ5KhG5YkIz0e>7NK5Wlx8 zE?i10c2*iIR>OO*KXIe}nBxpv>XcVdj(3!5yqwE)MJWzb^oCjm{q0{@Glh^+E&5Y- z!t;09Z9QmsM!M+xqFoo`l~(WFhh2n*blow=!d^NS6(ft`kAfq9>(hhr7##gI%XJYX zp{%bacnGeRUMtPum&M(*7!ISUrS)ovjU2*?X}J(C%Jfo(t2NF3-rNJ+on1B$F|hmi zixLF6+@oB_KHn-`DZvoF$Gz5*+2M<1Oob7zlk|x3rrjgum@U^MGHv9LN(uw|+w4Ibc ze-f9-{$0ZDWj0-8v?}~GiZ{6?UVXHcMZNhwB^#pXygd^C3Jr?G8XYZ&y#5{|8dF6El73(>7tju|G9Q4r+3BUYU;l$;b<4b%n(Gkkp90 zlA;y*%q)$6bh(3@p@!ck=}U`hpWLZ2_!3-maq|$W(S5y@M=jE_mKvb~#>7d#7u)&I zCe1f(PIki=wI9bmSAQ;A8QkL&=bo>hE&)Vrcf~IXUHz;Y^Tm8q1+>#|lU}N$F4`CJ z&<~hm2jI_*_d_RaAdq#0L%OjGv`h5i%UUR~4(SDIsc{xh{-1Q5oGBFfG4$aUmQ>e( zK0zoHXSR-dW56_o19-0Tfm+|N8Gb(9OC@PL6lpBUXH%9J+5R|_6hsLdXWlDR5a>jy z%kQ;lbr{QGluD6~ai7pD(2F{o^-Y5@#)yLl6{VrN3nS4d2&W_)l1MAWU@itts*&us zKJ-3%y{nJFco8)^q?EuE=1J)(Oxbb2XDO-Wh^rBzlQYW-a{<-jirSGV3(NfpxE(C@ zhMSD-5-EEBZGPDc^qWC51(g>h^ICLiw0fL*ANb7ZJ;U&>+Z=LB`7$<3Y8dCAEcNX} z{L$WP?uL2CK9H(w|L`2{8D!4OWGN7M%6;4w!B#m^j_au*No7r$2W8;Q0yiwbJU>*f zlV?a>Wj0FWGG^CRroApE@b!9T1jt2lJz8lsOi>chqfe5o&a9w~niLIVUxC(>d9C>{M$?G2QVYQv2#%3;sll@yDY42^H7#YfE)ns8 z>B3Kp$nAl)<}sUrdxbj)@Q%1!V$xM(OZj9d2odHR$?4lw#WE
7?vW&P@J#hV9pK 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 literal 0 HcmV?d00001 diff --git a/pr-preview/pr-25/img/dmx_logo.png b/pr-preview/pr-25/img/dmx_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..3f89a3f6704dad37bfe47c63b46a4a5592b6a369 GIT binary patch literal 3826 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 B$MygK literal 0 HcmV?d00001 diff --git a/pr-preview/pr-25/index.html b/pr-preview/pr-25/index.html new file mode 100644 index 00000000..5a37f9ec --- /dev/null +++ b/pr-preview/pr-25/index.html @@ -0,0 +1,61 @@ + + + + + + + dmX + + + + + + + + +

+ +
+ Show PDG IDs + +
+ + + + + + + + \ No newline at end of file diff --git a/pr-preview/pr-25/input/.gitignore b/pr-preview/pr-25/input/.gitignore new file mode 100644 index 00000000..d6b7ef32 --- /dev/null +++ b/pr-preview/pr-25/input/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/pr-preview/pr-25/jest.config.js b/pr-preview/pr-25/jest.config.js new file mode 100644 index 00000000..16b6ab0f --- /dev/null +++ b/pr-preview/pr-25/jest.config.js @@ -0,0 +1,4 @@ +export default { + transform: {}, + testEnvironment: "jsdom", +}; diff --git a/pr-preview/pr-25/js/graphic-primitives.js b/pr-preview/pr-25/js/graphic-primitives.js new file mode 100644 index 00000000..e9aec198 --- /dev/null +++ b/pr-preview/pr-25/js/graphic-primitives.js @@ -0,0 +1,59 @@ +export function drawLine(ctx, startX, startY, endX, endY, color) { + ctx.save(); + ctx.strokeStyle = color; + ctx.beginPath(); + ctx.moveTo(startX, startY); + ctx.lineTo(endX, endY); + ctx.stroke(); + ctx.restore(); +} + +export function drawCross(ctx, x, y, color = "#F00") { + const crossLenght = 6; + ctx.save(); + ctx.strokeStyle = color; + ctx.beginPath(); + ctx.moveTo(x - crossLenght, y - crossLenght); + ctx.lineTo(x + crossLenght, y + crossLenght); + ctx.stroke(); + ctx.beginPath(); + ctx.moveTo(x + crossLenght, y - crossLenght); + ctx.lineTo(x - crossLenght, y + crossLenght); + ctx.stroke(); + ctx.restore(); +} + +export function drawRoundedRect(ctx, x, y, width, height, fillColor) { + ctx.save(); + + ctx.fillStyle = fillColor; + ctx.beginPath(); + ctx.roundRect(x, y, width, height, 15); + ctx.fill(); + + ctx.strokeStyle = "black"; + ctx.lineWidth = 2; + ctx.beginPath(); + ctx.roundRect(x, y, width, height, 15); + ctx.stroke(); + ctx.restore(); +} + +export function drawTex(ctx, x, y, texImg, maxWidth) { + let scale = (maxWidth * 0.9) / texImg.naturalWidth; + if (scale > 2) { + scale = 2; + } + const tempHeight = texImg.naturalHeight * scale; + const tempWidth = texImg.naturalWidth * scale; + + ctx.save(); + ctx.drawImage( + texImg, + x - tempWidth / 2, + y - tempHeight / 2, + tempWidth, + tempHeight + ); + ctx.restore(); +} diff --git a/pr-preview/pr-25/js/main.js b/pr-preview/pr-25/js/main.js new file mode 100644 index 00000000..f7dd8148 --- /dev/null +++ b/pr-preview/pr-25/js/main.js @@ -0,0 +1,342 @@ +import { errorMsg, loadMCParticles } from "./tools.js"; +import Toggle from "./menu/toggle.js"; + +const toggle = new Toggle(); + +const canvas = document.getElementById("canvas"); +const ctx = canvas.getContext("2d"); + +canvas.width = window.innerWidth; +canvas.height = window.innerHeight; + +let draggedInfoBox = -1; +let isDragging = false; +let prevMouseX = 0; +let prevMouseY = 0; + +let jsonData = {}; +const infoBoxes = []; +const parentLinks = []; +const childrenLinks = []; +let visibleBoxes = []; +let visibleParentLinks = []; +let visibleChildrenLinks = []; + +const mouseDown = function (event) { + event.preventDefault(); + + const boundigClientRect = canvas.getBoundingClientRect(); + const mouseX = parseInt(event.clientX - boundigClientRect.x); + const mouseY = parseInt(event.clientY - boundigClientRect.y); + + prevMouseX = mouseX; + prevMouseY = mouseY; + + for (let i = visibleBoxes.length - 1; i >= 0; i--) { + if (infoBoxes[visibleBoxes[i]].isHere(mouseX, mouseY)) { + draggedInfoBox = visibleBoxes[i]; + isDragging = true; + return; + } + } +}; + +const mouseUp = function (event) { + if (!isDragging) { + return; + } + + event.preventDefault(); + isDragging = false; + + // console.time("drawAll"); + drawAll(); + // console.timeEnd("drawAll"); +}; + +const mouseOut = function (event) { + if (!isDragging) { + return; + } + + event.preventDefault(); + isDragging = false; +}; + +const mouseMove = function (event) { + if (!isDragging) { + return; + } + event.preventDefault(); + + const boundigClientRect = canvas.getBoundingClientRect(); + const mouseX = parseInt(event.clientX - boundigClientRect.x); + const mouseY = parseInt(event.clientY - boundigClientRect.y); + + const dx = mouseX - prevMouseX; + const dy = mouseY - prevMouseY; + + const infoBox = infoBoxes[draggedInfoBox]; + infoBox.x += dx; + infoBox.y += dy; + + // console.time("drawVisible"); + drawVisible(); + // console.timeEnd("drawVisible"); + + prevMouseX = mouseX; + prevMouseY = mouseY; +}; + +const onScroll = function () { + getVisible(); +}; + +const getVisible = function () { + const boundigClientRect = canvas.getBoundingClientRect(); + + visibleBoxes = []; + visibleParentLinks = []; + visibleChildrenLinks = []; + + for (const box of infoBoxes) { + if ( + box.isVisible( + 0 - boundigClientRect.x, + 0 - boundigClientRect.y, + window.innerWidth, + window.innerHeight + ) + ) { + visibleBoxes.push(box.id); + } + } + + for (const boxId of visibleBoxes) { + for (const linkId of infoBoxes[boxId].parentLinks) { + visibleParentLinks.push(linkId); + } + for (const parentBoxId of infoBoxes[boxId].parents) { + for (const linkId of infoBoxes[parentBoxId].childrenLinks) { + visibleChildrenLinks.push(linkId); + } + } + } + for (const link of parentLinks) { + if ( + link.isVisible( + 0 - boundigClientRect.x, + 0 - boundigClientRect.y, + window.innerWidth, + window.innerHeight, + infoBoxes + ) + ) { + visibleParentLinks.push(link.id); + } + } + + for (const boxId of visibleBoxes) { + for (const linkId of infoBoxes[boxId].childrenLinks) { + visibleChildrenLinks.push(linkId); + } + for (const childrenBoxId of infoBoxes[boxId].children) { + for (const linkId of infoBoxes[childrenBoxId].parentLinks) { + visibleParentLinks.push(linkId); + } + } + } + for (const link of childrenLinks) { + if ( + link.isVisible( + 0 - boundigClientRect.x, + 0 - boundigClientRect.y, + window.innerWidth, + window.innerHeight, + infoBoxes + ) + ) { + visibleChildrenLinks.push(link.id); + } + } + + visibleParentLinks = [...new Set(visibleParentLinks)]; + visibleChildrenLinks = [...new Set(visibleChildrenLinks)]; + + /* + console.log("Visible boxes: ", visibleBoxes); + console.log("Visible parentLinks: ", visibleParentLinks); + console.log("Visible childrenLinks: ", visibleChildrenLinks); + */ +}; + +const drawVisible = function () { + const boundigClientRect = canvas.getBoundingClientRect(); + ctx.clearRect( + 0 - boundigClientRect.x, + 0 - boundigClientRect.y, + window.innerWidth, + window.innerHeight + ); + for (const linkId of visibleParentLinks) { + parentLinks[linkId].draw(ctx, infoBoxes); + } + for (const linkId of visibleChildrenLinks) { + childrenLinks[linkId].draw(ctx, infoBoxes); + } + for (const boxId of visibleBoxes) { + infoBoxes[boxId].draw(ctx); + } +}; + +const drawAll = function () { + ctx.clearRect(0, 0, canvas.width, canvas.height); + // console.time("drawParentLinks"); + for (const link of parentLinks) { + link.draw(ctx, infoBoxes); + } + // console.timeEnd("drawParentLinks"); + // console.time("drawChildrenLinks"); + for (const link of childrenLinks) { + link.draw(ctx, infoBoxes); + } + // console.timeEnd("drawChildrenLinks"); + // console.time("drawBoxes"); + for (const infoBox of infoBoxes) { + infoBox.draw(ctx); + } + // console.timeEnd("drawBoxes"); +}; + +function start() { + if (!infoBoxes) { + return; + } + + // Get How many rows + const rows = infoBoxes.map((obj) => { + return obj.row; + }); + const maxRow = Math.max(...rows); + + // Order infoBoxes into rows + const boxRows = []; + for (let i = 0; i <= maxRow; i++) { + boxRows.push([]); + } + for (const box of infoBoxes) { + boxRows[box.row].push(box.id); + } + const rowWidths = boxRows.map((obj) => { + return obj.length; + }); + const maxRowWidth = Math.max(...rowWidths); + + const boxWidth = infoBoxes[0].width; + const boxHeight = infoBoxes[0].height; + const horizontalGap = boxWidth * 0.4; + const verticalGap = boxHeight * 0.3; + + canvas.width = + boxWidth * (maxRowWidth + 1) + horizontalGap * (maxRowWidth + 1); + canvas.height = boxHeight * (maxRow + 1) + verticalGap * (maxRow + 2); + + for (const [i, row] of boxRows.entries()) { + for (const [j, boxId] of row.entries()) { + const box = infoBoxes[boxId]; + + if (row.length % 2 === 0) { + const distanceFromCenter = j - row.length / 2; + if (distanceFromCenter < 0) { + box.x = + canvas.width / 2 - + boxWidth - + horizontalGap / 2 + + (distanceFromCenter + 1) * boxWidth + + (distanceFromCenter + 1) * horizontalGap; + } else { + box.x = + canvas.width / 2 + + horizontalGap / 2 + + distanceFromCenter * boxWidth + + distanceFromCenter * horizontalGap; + } + } else { + const distanceFromCenter = j - row.length / 2; + box.x = + canvas.width / 2 - + boxWidth / 2 + + distanceFromCenter * boxWidth + + distanceFromCenter * horizontalGap; + } + box.y = i * verticalGap + verticalGap + i * boxHeight; + } + } + + drawAll(); + + getVisible(); +} + +canvas.onmousedown = mouseDown; +canvas.onmouseup = mouseUp; +canvas.onmouseout = mouseOut; +canvas.onmousemove = mouseMove; +window.onscroll = onScroll; + +/* +function showInputModal() { + const modal = document.getElementById("input-modal"); + + modal.style.display = "block"; +} +*/ + +function hideInputModal() { + const modal = document.getElementById("input-modal"); + + modal.style.display = "none"; +} + +document.getElementById("input-file").addEventListener("change", (event) => { + for (const file of event.target.files) { + if (!file.name.endsWith("edm4hep.json")) { + errorMsg("Provided file is not EDM4hep JSON!"); + } + + if (!file.type.endsWith("/json")) { + errorMsg("ERROR: Provided file is not EDM4hep JSON!"); + } + + const reader = new FileReader(); + reader.addEventListener("load", (event) => { + const fileText = event.target.result; + jsonData = JSON.parse(fileText); + + const eventNumberInput = document.getElementById("event-number"); + eventNumberInput.max = Object.keys(jsonData).length - 1; + document.getElementById("event-selector").style.display = "block"; + }); + reader.readAsText(file); + break; + } +}); + +document + .getElementById("visualize-button") + .addEventListener("click", (event) => { + event.preventDefault(); + const eventNum = document.getElementById("event-number").value; + loadMCParticles(jsonData, eventNum, infoBoxes, parentLinks, childrenLinks); + if (infoBoxes.length === 0) { + errorMsg("Provided file does not contain any MC particle tree!"); + return; + } + for (const eventNum in jsonData) { + delete jsonData[eventNum]; + } + start(); + hideInputModal(); + window.scroll((canvas.width - window.innerWidth) / 2, 0); + toggle.init(infoBoxes, drawAll); + }); diff --git a/pr-preview/pr-25/js/menu/toggle.js b/pr-preview/pr-25/js/menu/toggle.js new file mode 100644 index 00000000..c9c84c3a --- /dev/null +++ b/pr-preview/pr-25/js/menu/toggle.js @@ -0,0 +1,30 @@ +const toggle = document.getElementById("toggle"); +const slider = document.getElementsByClassName("slider")[0]; + +class Toggle { + constructor() { + this.isSliderActive = false; + } + + init(infoBoxes, drawAll) { + toggle.style.display = "flex"; + + slider.addEventListener("click", () => { + this.isSliderActive = !this.isSliderActive; + + if (this.isSliderActive) { + for (const infoBox of infoBoxes) { + infoBox.updateTexImg(`${infoBox.pdg}`); + } + } else { + for (const infoBox of infoBoxes) { + infoBox.updateTexImg(infoBox.name); + } + } + + drawAll(); + }); + } +} + +export default Toggle; diff --git a/pr-preview/pr-25/js/objects.js b/pr-preview/pr-25/js/objects.js new file mode 100644 index 00000000..7249e2b9 --- /dev/null +++ b/pr-preview/pr-25/js/objects.js @@ -0,0 +1,247 @@ +import { drawTex, drawRoundedRect } from "./graphic-primitives.js"; + +export class InfoBox { + constructor(id) { + this.id = parseInt(id); + + // Appearance + this.x = 0; + this.y = 0; + this.width = 120; + this.height = 240; + this.lineColor = "black"; + this.lineWidth = 2; + this.color = "white"; + this.row = -1; + + this.texImg = null; + + // Physics data + this.name = ""; + this.momentum = 0; // GeV + this.px = 0; // GeV + this.py = 0; // GeV + this.pz = 0; // GeV + this.vertex = 0; // mm, distance from 0, 0, 0 + this.vx = 0; // mm + this.vy = 0; // mm + this.vz = 0; // mm + this.time = 0; // ns + this.mass = 0; // GeV + this.charge = 0; // e + this.pdg = 0; + this.genStatus = 0; + this.simStatus = 0; + this.parents = []; + this.children = []; + + this.parentLinks = []; + this.childrenLinks = []; + } + + updateTexImg(text) { + let svg = MathJax.tex2svg(text).firstElementChild; + + this.texImg = document.createElement("img"); + this.texImg.src = + "data:image/svg+xml;base64," + + btoa( + '\n' + + svg.outerHTML + ); + } + + draw(ctx) { + // drawCross(ctx, this.x, this.y); + + const boxCenterX = this.x + this.width / 2; + + drawRoundedRect(ctx, this.x, this.y, this.width, this.height, "#f5f5f5"); + + if (this.texImg.complete) { + drawTex( + ctx, + boxCenterX, + this.y + this.height * 0.4, + this.texImg, + this.width + ); + } else { + this.texImg.onload = () => { + drawTex( + ctx, + boxCenterX, + this.y + this.height * 0.4, + this.texImg, + this.width + ); + }; + } + + const topY = this.y + 20; + const topLines = []; + topLines.push("ID: " + this.id); + topLines.push("Gen. stat.: " + this.genStatus); + topLines.push("Sim. stat.: " + this.simStatus); + + const bottomY = this.y + this.height * 0.6; + const bottomLines = []; + bottomLines.push("p = " + this.momentum + " GeV"); + bottomLines.push("d = " + this.vertex + " mm"); + bottomLines.push("t = " + this.time + " ns"); + bottomLines.push("m = " + this.mass + " GeV"); + if (Math.abs(this.charge) < 1.0 && this.charge != 0) { + if (Math.round(this.charge * 1000) === 667) { + bottomLines.push("q = 2/3 e"); + } + if (Math.round(this.charge * 1000) === -667) { + bottomLines.push("q = -2/3 e"); + } + if (Math.round(this.charge * 1000) === 333) { + bottomLines.push("q = 1/3 e"); + } + if (Math.round(this.charge * 1000) === -333) { + bottomLines.push("q = -1/3 e"); + } + } else { + bottomLines.push("q = " + this.charge + " e"); + } + + ctx.save(); + ctx.font = "16px sans-serif"; + for (const [i, lineText] of topLines.entries()) { + ctx.fillText( + lineText, + boxCenterX - ctx.measureText(lineText).width / 2, + topY + i * 23 + ); + } + + for (const [i, lineText] of bottomLines.entries()) { + ctx.fillText( + lineText, + boxCenterX - ctx.measureText(lineText).width / 2, + bottomY + i * 22 + ); + } + ctx.restore(); + } + + isHere(mouseX, mouseY) { + return ( + mouseX > this.x && + mouseX < this.x + this.width && + mouseY > this.y && + mouseY < this.y + this.height + ); + } + + isVisible(x, y, width, height) { + return ( + x + width > this.x && + x < this.x + this.width && + y + height > this.y && + y < this.y + this.height + ); + } +} + +export class Link { + constructor(id, boxFrom, boxTo) { + this.id = parseInt(id); + this.from = boxFrom; + this.to = boxTo; + this.color = "#A00"; + this.xShift = 0; + } + + draw(ctx, infoBoxes) { + const boxFrom = infoBoxes[this.from]; + const boxTo = infoBoxes[this.to]; + + const fromX = boxFrom.x + boxFrom.width / 2; + const fromY = boxFrom.y + boxFrom.height; + const toX = boxTo.x + boxTo.width / 2; + const toY = boxTo.y; + + if (toY > fromY) { + var cpFromY = (toY - fromY) / 2 + fromY; + var cpToY = cpFromY; + } else { + cpFromY = (fromY - toY) / 2 + fromY; + cpToY = toY - (fromY - toY) / 2; + } + + if (toX > fromX) { + var cpFromX = (toX - fromX) / 4 + fromX; + var cpToX = (3 * (toX - fromX)) / 4 + fromX; + } else { + cpFromX = (3 * (fromX - toX)) / 4 + toX; + cpToX = (fromX - toX) / 4 + toX; + } + + /* + drawCross(ctx, fromX, fromY, "blue"); + drawCross(ctx, toX, toY, "green"); + drawCross(ctx, cpFromX, cpFromY, "yellow"); + drawLine(ctx, fromX, fromY, cpFromX, cpFromY, "yellow") + drawCross(ctx, cpToX, cpToY, "orange"); + drawLine(ctx, toX, toY, cpToX, cpToY, "orange") + */ + + ctx.save(); + ctx.strokeStyle = this.color; + ctx.lineWidth = 2; + ctx.beginPath(); + ctx.moveTo(fromX + this.xShift, fromY); + ctx.bezierCurveTo( + cpFromX + this.xShift, + cpFromY, + cpToX + this.xShift, + cpToY, + toX + this.xShift, + toY + ); + ctx.stroke(); + ctx.restore(); + + /* + ctx.save(); + ctx.font = "14px sans-serif"; + ctx.fillStyle = this.color; + const idText = "ID: " + this.id; + ctx.fillText(idText, + cpToX, cpToY); + ctx.restore(); + */ + } + + isVisible(x, y, width, height, infoBoxes) { + const boxFrom = infoBoxes[this.from]; + const boxTo = infoBoxes[this.to]; + + const fromX = boxFrom.x + boxFrom.width / 2; + const fromY = boxFrom.y + boxFrom.height; + const toX = boxTo.x + boxTo.width / 2; + const toY = boxTo.y; + + const boxX = Math.min(fromX, toX); + const boxWidth = Math.abs(fromX - toX); + const boxY = Math.min(fromY, toY); + const boxHeight = Math.abs(fromY - toY); + + /* + console.log("boxX: ", this.boxX); + console.log("boxY: ", this.boxY); + console.log("boxWidth: ", this.boxWidth); + console.log("boxHeight: ", this.boxHeight); + */ + + return ( + x + width > boxX && + x < boxX + boxWidth && + y + height > boxY && + y < boxY + boxHeight + ); + } +} diff --git a/pr-preview/pr-25/js/tools.js b/pr-preview/pr-25/js/tools.js new file mode 100644 index 00000000..99e40a3a --- /dev/null +++ b/pr-preview/pr-25/js/tools.js @@ -0,0 +1,141 @@ +import { InfoBox, Link } from "./objects.js"; +import { mappings } from "../data/particles.js"; + +export function infoMsg(msg) { + const msgDiv = document.getElementById("input-message"); + msgDiv.classList.add("mb-20"); + msgDiv.style.color = "gray"; + msgDiv.innerHTML = "

INFO: " + msg + "

"; +} + +export function errorMsg(msg) { + const msgDiv = document.getElementById("input-message"); + msgDiv.classList.add("mb-20"); + msgDiv.style.color = "red"; + msgDiv.innerHTML = "

ERROR: " + msg + "

"; +} + +export function loadMCParticles( + jsonData, + eventNum, + infoBoxes, + parentLinks, + childrenLinks +) { + const eventData = jsonData["Event " + eventNum]; + try { + const mcParticles = Object.values(eventData).find( + (element) => element.collType == "edm4hep::MCParticleCollection" + ); + for (const [i, particle] of mcParticles.collection.entries()) { + const box = new InfoBox(i); + box.pdg = particle.PDG; + box.genStatus = particle.generatorStatus; + box.simStatus = particle.simulatorStatus; + box.momentum = Math.sqrt( + Math.pow(particle.momentum.x, 2) + + Math.pow(particle.momentum.y, 2) + + Math.pow(particle.momentum.z, 2) + ); + box.momentum = Math.round(box.momentum * 100) / 100; + box.vertex = Math.sqrt( + Math.pow(particle.vertex.x, 2) + + Math.pow(particle.vertex.y, 2) + + Math.pow(particle.vertex.z, 2) + ); + box.vertex = Math.round(box.vertex * 100) / 100; + box.px = Math.round(particle.momentum.x * 100) / 100; + box.py = Math.round(particle.momentum.y * 100) / 100; + box.pz = Math.round(particle.momentum.z * 100) / 100; + + box.vx = particle.vertex.x; + box.vy = particle.vertex.y; + box.vz = particle.vertex.z; + + box.charge = particle.charge; + box.time = Math.round(particle.time * 100) / 100; + box.mass = Math.round(particle.mass * 100) / 100; + + box.name = getName(particle.PDG); + box.updateTexImg(box.name); + + if (particle.parents.length === 0 && particle.daughters.length === 0) { + box.row = -1; + console.log("WARNING: Standalone particle!"); + } + + if (particle.parents.length === 0) { + box.row = 0; + } + + for (const j in particle.parents) { + const parentId = particle.parents[j].index; + box.parents.push(parentId); + const link = new Link(parseInt(parentLinks.length), parentId, i); + link.color = "#A00"; // Darkish red + link.xShift = 3; + parentLinks.push(link); + box.parentLinks.push(link.id); + } + + for (const j in particle.daughters) { + const childrenId = particle.daughters[j].index; + box.children.push(childrenId); + const link = new Link(parseInt(childrenLinks.length), i, childrenId); + link.color = "#0A0"; // Darkish green + link.xShift = -3; + childrenLinks.push(link); + box.childrenLinks.push(link.id); + } + + infoBoxes.push(box); + } + } catch (err) { + if (err instanceof TypeError) { + return; + } + } + + const getMaxRow = function (parentIds) { + let maxRow = -1; + for (const parentId of parentIds) { + if (infoBoxes[parentId].row === -1) { + return -1; + } + + if (infoBoxes[parentId].row > maxRow) { + maxRow = infoBoxes[parentId].row; + } + } + + return maxRow; + }; + + let repeat = true; + while (repeat) { + repeat = false; + for (const infoBox of infoBoxes) { + if (infoBox.row >= 0) { + continue; + } + const parentRow = getMaxRow(infoBox.parents); + if (parentRow >= 0) { + infoBox.row = parentRow + 1; + } else { + repeat = true; + } + } + } +} + +function getName(pdg) { + const particle = mappings[pdg]; + + if (particle !== undefined) { + console.log("Name: " + particle); + return particle; + } + + console.log("PDG: " + pdg.toString()); + return "PDG: " + pdg.toString(); +} diff --git a/pr-preview/pr-25/package-lock.json b/pr-preview/pr-25/package-lock.json new file mode 100644 index 00000000..aa9d0cc9 --- /dev/null +++ b/pr-preview/pr-25/package-lock.json @@ -0,0 +1,4069 @@ +{ + "name": "dmx", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "dmx", + "version": "1.0.0", + "license": "BSD-2-Clause", + "devDependencies": { + "jest": "^29.7.0", + "jest-environment-jsdom": "^29.7.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz", + "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.5.tgz", + "integrity": "sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.24.5", + "@babel/helpers": "^7.24.5", + "@babel/parser": "^7.24.5", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.5", + "@babel/types": "^7.24.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz", + "integrity": "sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.5", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz", + "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz", + "integrity": "sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.24.3", + "@babel/helper-simple-access": "^7.24.5", + "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/helper-validator-identifier": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz", + "integrity": "sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz", + "integrity": "sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz", + "integrity": "sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", + "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz", + "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.5.tgz", + "integrity": "sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==", + "dev": true, + "dependencies": { + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.5", + "@babel/types": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz", + "integrity": "sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.5", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz", + "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz", + "integrity": "sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz", + "integrity": "sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.5.tgz", + "integrity": "sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/parser": "^7.24.5", + "@babel/types": "^7.24.5", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.5.tgz", + "integrity": "sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.24.1", + "@babel/helper-validator-identifier": "^7.24.5", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", + "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jsdom": { + "version": "20.0.1", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", + "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/tough-cookie": "*", + "parse5": "^7.0.0" + } + }, + "node_modules/@types/node": { + "version": "20.12.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.12.tgz", + "integrity": "sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true + }, + "node_modules/@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", + "dev": true + }, + "node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "deprecated": "Use your platform's native atob() and btoa() methods instead", + "dev": true + }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", + "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", + "dev": true, + "dependencies": { + "acorn": "^8.1.0", + "acorn-walk": "^8.0.2" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", + "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "dev": true, + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001620", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001620.tgz", + "integrity": "sha512-WJvYsOjd1/BYUY6SNGUosK9DUidBPDTnOARHp3fSmFO1ekdxaY6nKRttEVrfMmYi80ctS0kz1wiWmm14fVc3ew==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz", + "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==", + "dev": true + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cssom": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", + "dev": true + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "node_modules/data-urls": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "dev": true, + "dependencies": { + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "dev": true + }, + "node_modules/dedent": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", + "dev": true, + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/domexception": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "deprecated": "Use your platform's native DOMException instead", + "dev": true, + "dependencies": { + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.774", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.774.tgz", + "integrity": "sha512-132O1XCd7zcTkzS3FgkAzKmnBuNJjK8WjcTtNuoylj7MYbqw5eXehjQ5OK91g0zm7OTKIPeaAG4CPoRfD9M1Mg==", + "dev": true + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "dependencies": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "dev": true, + "dependencies": { + "whatwg-encoding": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz", + "integrity": "sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "dev": true, + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "dev": true, + "dependencies": { + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "dev": true, + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-environment-jsdom": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", + "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/jsdom": "^20.0.0", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0", + "jsdom": "^20.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "dev": true, + "dependencies": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsdom": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", + "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", + "dev": true, + "dependencies": { + "abab": "^2.0.6", + "acorn": "^8.8.1", + "acorn-globals": "^7.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.2", + "decimal.js": "^10.4.2", + "domexception": "^4.0.0", + "escodegen": "^2.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.2", + "parse5": "^7.1.1", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.2", + "w3c-xmlserializer": "^4.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0", + "ws": "^8.11.0", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nwsapi": { + "version": "2.2.10", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.10.tgz", + "integrity": "sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ==", + "dev": true + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ] + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dev": true, + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "dev": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dev": true, + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", + "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/v8-to-istanbul": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", + "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", + "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", + "dev": true, + "dependencies": { + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dev": true, + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dev": true, + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/ws": { + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", + "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/pr-preview/pr-25/package.json b/pr-preview/pr-25/package.json new file mode 100644 index 00000000..ad23f1c0 --- /dev/null +++ b/pr-preview/pr-25/package.json @@ -0,0 +1,23 @@ +{ + "name": "dmx", + "type": "module", + "version": "1.0.0", + "scripts": { + "test": "node --experimental-vm-modules ./node_modules/jest/bin/jest.js" + }, + "devDependencies": { + "jest": "^29.7.0", + "jest-environment-jsdom": "^29.7.0" + }, + "repository": { + "type": "git", + "url": "https://github.com/key4hep/dmx.git" + }, + "keywords": [ + "dmx", + "HEP", + "key4hep" + ], + "license": "BSD-2-Clause", + "homepage": "https://key4hep.github.io/dmx/" +} diff --git a/pr-preview/pr-25/pnpm-lock.yaml b/pr-preview/pr-25/pnpm-lock.yaml new file mode 100644 index 00000000..a71c12fe --- /dev/null +++ b/pr-preview/pr-25/pnpm-lock.yaml @@ -0,0 +1,2614 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +devDependencies: + jest: + specifier: ^29.7.0 + version: 29.7.0 + jest-environment-jsdom: + specifier: ^29.7.0 + version: 29.7.0 + +packages: + + /@ampproject/remapping@2.3.0: + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + dev: true + + /@babel/code-frame@7.24.2: + resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.24.5 + picocolors: 1.0.1 + dev: true + + /@babel/compat-data@7.24.4: + resolution: {integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/core@7.24.5: + resolution: {integrity: sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.2 + '@babel/generator': 7.24.5 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) + '@babel/helpers': 7.24.5 + '@babel/parser': 7.24.5 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.5 + '@babel/types': 7.24.5 + convert-source-map: 2.0.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/generator@7.24.5: + resolution: {integrity: sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.5 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + dev: true + + /@babel/helper-compilation-targets@7.23.6: + resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.24.4 + '@babel/helper-validator-option': 7.23.5 + browserslist: 4.23.0 + lru-cache: 5.1.1 + semver: 6.3.1 + dev: true + + /@babel/helper-environment-visitor@7.22.20: + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-function-name@7.23.0: + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.24.0 + '@babel/types': 7.24.5 + dev: true + + /@babel/helper-hoist-variables@7.22.5: + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.5 + dev: true + + /@babel/helper-module-imports@7.24.3: + resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.5 + dev: true + + /@babel/helper-module-transforms@7.24.5(@babel/core@7.24.5): + resolution: {integrity: sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-simple-access': 7.24.5 + '@babel/helper-split-export-declaration': 7.24.5 + '@babel/helper-validator-identifier': 7.24.5 + dev: true + + /@babel/helper-plugin-utils@7.24.5: + resolution: {integrity: sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-simple-access@7.24.5: + resolution: {integrity: sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.5 + dev: true + + /@babel/helper-split-export-declaration@7.24.5: + resolution: {integrity: sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.5 + dev: true + + /@babel/helper-string-parser@7.24.1: + resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-identifier@7.24.5: + resolution: {integrity: sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-option@7.23.5: + resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helpers@7.24.5: + resolution: {integrity: sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.5 + '@babel/types': 7.24.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/highlight@7.24.5: + resolution: {integrity: sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.24.5 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.1 + dev: true + + /@babel/parser@7.24.5: + resolution: {integrity: sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.24.5 + dev: true + + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.5): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + dev: true + + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.5): + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + dev: true + + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.5): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + dev: true + + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.5): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + dev: true + + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.5): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + dev: true + + /@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + dev: true + + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.5): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + dev: true + + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.5): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + dev: true + + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.5): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + dev: true + + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.5): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + dev: true + + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.5): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + dev: true + + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.5): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + dev: true + + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.5): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + dev: true + + /@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + dev: true + + /@babel/template@7.24.0: + resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.24.2 + '@babel/parser': 7.24.5 + '@babel/types': 7.24.5 + dev: true + + /@babel/traverse@7.24.5: + resolution: {integrity: sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.24.2 + '@babel/generator': 7.24.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.24.5 + '@babel/parser': 7.24.5 + '@babel/types': 7.24.5 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types@7.24.5: + resolution: {integrity: sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.24.1 + '@babel/helper-validator-identifier': 7.24.5 + to-fast-properties: 2.0.0 + dev: true + + /@bcoe/v8-coverage@0.2.3: + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + dev: true + + /@istanbuljs/load-nyc-config@1.1.0: + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + dev: true + + /@istanbuljs/schema@0.1.3: + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + dev: true + + /@jest/console@29.7.0: + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 20.12.12 + chalk: 4.1.2 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + dev: true + + /@jest/core@29.7.0: + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.12.12 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@20.12.12) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.5 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /@jest/environment@29.7.0: + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.12.12 + jest-mock: 29.7.0 + dev: true + + /@jest/expect-utils@29.7.0: + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.6.3 + dev: true + + /@jest/expect@29.7.0: + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + expect: 29.7.0 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/fake-timers@29.7.0: + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 20.12.12 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + dev: true + + /@jest/globals@29.7.0: + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/types': 29.6.3 + jest-mock: 29.7.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/reporters@29.7.0: + resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.25 + '@types/node': 20.12.12 + chalk: 4.1.2 + collect-v8-coverage: 1.0.2 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-instrument: 6.0.2 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.7 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + jest-worker: 29.7.0 + slash: 3.0.0 + string-length: 4.0.2 + strip-ansi: 6.0.1 + v8-to-istanbul: 9.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.27.8 + dev: true + + /@jest/source-map@29.6.3: + resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + callsites: 3.1.0 + graceful-fs: 4.2.11 + dev: true + + /@jest/test-result@29.7.0: + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/console': 29.7.0 + '@jest/types': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + collect-v8-coverage: 1.0.2 + dev: true + + /@jest/test-sequencer@29.7.0: + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/test-result': 29.7.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + slash: 3.0.0 + dev: true + + /@jest/transform@29.7.0: + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.24.5 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.25 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + micromatch: 4.0.5 + pirates: 4.0.6 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/types@29.6.3: + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 20.12.12 + '@types/yargs': 17.0.32 + chalk: 4.1.2 + dev: true + + /@jridgewell/gen-mapping@0.3.5: + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.25 + dev: true + + /@jridgewell/resolve-uri@3.1.2: + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/set-array@1.2.1: + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true + + /@jridgewell/trace-mapping@0.3.25: + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: true + + /@sinonjs/commons@3.0.1: + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + dependencies: + type-detect: 4.0.8 + dev: true + + /@sinonjs/fake-timers@10.3.0: + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + dependencies: + '@sinonjs/commons': 3.0.1 + dev: true + + /@tootallnate/once@2.0.0: + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} + dev: true + + /@types/babel__core@7.20.5: + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + dependencies: + '@babel/parser': 7.24.5 + '@babel/types': 7.24.5 + '@types/babel__generator': 7.6.8 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.5 + dev: true + + /@types/babel__generator@7.6.8: + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + dependencies: + '@babel/types': 7.24.5 + dev: true + + /@types/babel__template@7.4.4: + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + dependencies: + '@babel/parser': 7.24.5 + '@babel/types': 7.24.5 + dev: true + + /@types/babel__traverse@7.20.5: + resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==} + dependencies: + '@babel/types': 7.24.5 + dev: true + + /@types/graceful-fs@4.1.9: + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + dependencies: + '@types/node': 20.12.12 + dev: true + + /@types/istanbul-lib-coverage@2.0.6: + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + dev: true + + /@types/istanbul-lib-report@3.0.3: + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + dev: true + + /@types/istanbul-reports@3.0.4: + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + dependencies: + '@types/istanbul-lib-report': 3.0.3 + dev: true + + /@types/jsdom@20.0.1: + resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} + dependencies: + '@types/node': 20.12.12 + '@types/tough-cookie': 4.0.5 + parse5: 7.1.2 + dev: true + + /@types/node@20.12.12: + resolution: {integrity: sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==} + dependencies: + undici-types: 5.26.5 + dev: true + + /@types/stack-utils@2.0.3: + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + dev: true + + /@types/tough-cookie@4.0.5: + resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} + dev: true + + /@types/yargs-parser@21.0.3: + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + dev: true + + /@types/yargs@17.0.32: + resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} + dependencies: + '@types/yargs-parser': 21.0.3 + dev: true + + /abab@2.0.6: + resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} + deprecated: Use your platform's native atob() and btoa() methods instead + dev: true + + /acorn-globals@7.0.1: + resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} + dependencies: + acorn: 8.11.3 + acorn-walk: 8.3.2 + dev: true + + /acorn-walk@8.3.2: + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} + engines: {node: '>=0.4.0'} + dev: true + + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.21.3 + dev: true + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: true + + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + dev: true + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: true + + /ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + dev: true + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + dev: true + + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: true + + /babel-jest@29.7.0(@babel/core@7.24.5): + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + dependencies: + '@babel/core': 7.24.5 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.6.3(@babel/core@7.24.5) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + dependencies: + '@babel/helper-plugin-utils': 7.24.5 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-jest-hoist@29.6.3: + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/template': 7.24.0 + '@babel/types': 7.24.5 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.20.5 + dev: true + + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.24.5): + resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.5 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.5) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.5) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.5) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.5) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.5) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.5) + dev: true + + /babel-preset-jest@29.6.3(@babel/core@7.24.5): + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.5 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.5) + dev: true + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + dev: true + + /browserslist@4.23.0: + resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001618 + electron-to-chromium: 1.4.770 + node-releases: 2.0.14 + update-browserslist-db: 1.0.16(browserslist@4.23.0) + dev: true + + /bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + dependencies: + node-int64: 0.4.0 + dev: true + + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: true + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true + + /camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + dev: true + + /camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + dev: true + + /caniuse-lite@1.0.30001618: + resolution: {integrity: sha512-p407+D1tIkDvsEAPS22lJxLQQaG8OTBEqo0KhzfABGk0TU4juBNDSfH0hyAp/HRyx+M8L17z/ltyhxh27FTfQg==} + dev: true + + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: true + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + dev: true + + /ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + dev: true + + /cjs-module-lexer@1.3.1: + resolution: {integrity: sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==} + dev: true + + /cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + dev: true + + /collect-v8-coverage@1.0.2: + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + dev: true + + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + dev: true + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: true + + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: true + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true + + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + dev: true + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + dev: true + + /create-jest@29.7.0: + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@20.12.12) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /cssom@0.3.8: + resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} + dev: true + + /cssom@0.5.0: + resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} + dev: true + + /cssstyle@2.3.0: + resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} + engines: {node: '>=8'} + dependencies: + cssom: 0.3.8 + dev: true + + /data-urls@3.0.2: + resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} + engines: {node: '>=12'} + dependencies: + abab: 2.0.6 + whatwg-mimetype: 3.0.0 + whatwg-url: 11.0.0 + dev: true + + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /decimal.js@10.4.3: + resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + dev: true + + /dedent@1.5.3: + resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + dev: true + + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + dev: true + + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: true + + /detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + dev: true + + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /domexception@4.0.0: + resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} + engines: {node: '>=12'} + deprecated: Use your platform's native DOMException instead + dependencies: + webidl-conversions: 7.0.0 + dev: true + + /electron-to-chromium@1.4.770: + resolution: {integrity: sha512-ONwOsDiVvV07CMsyH4+dEaZ9L79HMH/ODHnDS3GkIhgNqdDHJN2C18kFb0fBj0RXpQywsPJl6k2Pqg1IY4r1ig==} + dev: true + + /emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + dev: true + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: true + + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + dev: true + + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + dev: true + + /escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + engines: {node: '>=6'} + dev: true + + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: true + + /escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + dev: true + + /escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionalDependencies: + source-map: 0.6.1 + dev: true + + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true + + /execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + dev: true + + /expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/expect-utils': 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + dev: true + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + + /fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + dependencies: + bser: 2.1.1 + dev: true + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + dev: true + + /form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: true + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: true + + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + dev: true + + /get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: true + + /get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + dev: true + + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + dev: true + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + dev: true + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: true + + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: true + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true + + /hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + dev: true + + /html-encoding-sniffer@3.0.0: + resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} + engines: {node: '>=12'} + dependencies: + whatwg-encoding: 2.0.0 + dev: true + + /html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + dev: true + + /http-proxy-agent@5.0.0: + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} + dependencies: + '@tootallnate/once': 2.0.0 + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + dependencies: + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + dev: true + + /iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /import-local@3.1.0: + resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} + engines: {node: '>=8'} + hasBin: true + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + dev: true + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true + + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: true + + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + dependencies: + hasown: 2.0.2 + dev: true + + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + dev: true + + /is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + dev: true + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + dev: true + + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: true + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true + + /istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + dev: true + + /istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + dependencies: + '@babel/core': 7.24.5 + '@babel/parser': 7.24.5 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-instrument@6.0.2: + resolution: {integrity: sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==} + engines: {node: '>=10'} + dependencies: + '@babel/core': 7.24.5 + '@babel/parser': 7.24.5 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 7.6.2 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + dev: true + + /istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + dependencies: + debug: 4.3.4 + istanbul-lib-coverage: 3.2.2 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + engines: {node: '>=8'} + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + dev: true + + /jest-changed-files@29.7.0: + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + execa: 5.1.1 + jest-util: 29.7.0 + p-limit: 3.1.0 + dev: true + + /jest-circus@29.7.0: + resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.12.12 + chalk: 4.1.2 + co: 4.6.0 + dedent: 1.5.3 + is-generator-fn: 2.1.0 + jest-each: 29.7.0 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + p-limit: 3.1.0 + pretty-format: 29.7.0 + pure-rand: 6.1.0 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + dev: true + + /jest-cli@29.7.0: + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0 + exit: 0.1.2 + import-local: 3.1.0 + jest-config: 29.7.0(@types/node@20.12.12) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /jest-config@29.7.0(@types/node@20.12.12): + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.24.5 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.12.12 + babel-jest: 29.7.0(@babel/core@7.24.5) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + dev: true + + /jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + dev: true + + /jest-docblock@29.7.0: + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + detect-newline: 3.1.0 + dev: true + + /jest-each@29.7.0: + resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + jest-get-type: 29.6.3 + jest-util: 29.7.0 + pretty-format: 29.7.0 + dev: true + + /jest-environment-jsdom@29.7.0: + resolution: {integrity: sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/jsdom': 20.0.1 + '@types/node': 20.12.12 + jest-mock: 29.7.0 + jest-util: 29.7.0 + jsdom: 20.0.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.12.12 + jest-mock: 29.7.0 + jest-util: 29.7.0 + dev: true + + /jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/graceful-fs': 4.1.9 + '@types/node': 20.12.12 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + jest-worker: 29.7.0 + micromatch: 4.0.5 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /jest-leak-detector@29.7.0: + resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + dev: true + + /jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + dev: true + + /jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/code-frame': 7.24.2 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + pretty-format: 29.7.0 + slash: 3.0.0 + stack-utils: 2.0.6 + dev: true + + /jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 20.12.12 + jest-util: 29.7.0 + dev: true + + /jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + dependencies: + jest-resolve: 29.7.0 + dev: true + + /jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /jest-resolve-dependencies@29.7.0: + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-regex-util: 29.6.3 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-resolve@29.7.0: + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) + jest-util: 29.7.0 + jest-validate: 29.7.0 + resolve: 1.22.8 + resolve.exports: 2.0.2 + slash: 3.0.0 + dev: true + + /jest-runner@29.7.0: + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/console': 29.7.0 + '@jest/environment': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.12.12 + chalk: 4.1.2 + emittery: 0.13.1 + graceful-fs: 4.2.11 + jest-docblock: 29.7.0 + jest-environment-node: 29.7.0 + jest-haste-map: 29.7.0 + jest-leak-detector: 29.7.0 + jest-message-util: 29.7.0 + jest-resolve: 29.7.0 + jest-runtime: 29.7.0 + jest-util: 29.7.0 + jest-watcher: 29.7.0 + jest-worker: 29.7.0 + p-limit: 3.1.0 + source-map-support: 0.5.13 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-runtime@29.7.0: + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/globals': 29.7.0 + '@jest/source-map': 29.6.3 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.12.12 + chalk: 4.1.2 + cjs-module-lexer: 1.3.1 + collect-v8-coverage: 1.0.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-snapshot@29.7.0: + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.24.5 + '@babel/generator': 7.24.5 + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.5) + '@babel/types': 7.24.5 + '@jest/expect-utils': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.5) + chalk: 4.1.2 + expect: 29.7.0 + graceful-fs: 4.2.11 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + natural-compare: 1.4.0 + pretty-format: 29.7.0 + semver: 7.6.2 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 20.12.12 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + dev: true + + /jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.6.3 + leven: 3.1.0 + pretty-format: 29.7.0 + dev: true + + /jest-watcher@29.7.0: + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.12.12 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.13.1 + jest-util: 29.7.0 + string-length: 4.0.2 + dev: true + + /jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@types/node': 20.12.12 + jest-util: 29.7.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: true + + /jest@29.7.0: + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.7.0 + '@jest/types': 29.6.3 + import-local: 3.1.0 + jest-cli: 29.7.0 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: true + + /js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + dev: true + + /jsdom@20.0.3: + resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} + engines: {node: '>=14'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + dependencies: + abab: 2.0.6 + acorn: 8.11.3 + acorn-globals: 7.0.1 + cssom: 0.5.0 + cssstyle: 2.3.0 + data-urls: 3.0.2 + decimal.js: 10.4.3 + domexception: 4.0.0 + escodegen: 2.1.0 + form-data: 4.0.0 + html-encoding-sniffer: 3.0.0 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.10 + parse5: 7.1.2 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 4.1.4 + w3c-xmlserializer: 4.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 2.0.0 + whatwg-mimetype: 3.0.0 + whatwg-url: 11.0.0 + ws: 8.17.0 + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: true + + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + dev: true + + /kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + dev: true + + /leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + dev: true + + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: true + + /locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + dependencies: + p-locate: 4.1.0 + dev: true + + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + dev: true + + /make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + dependencies: + semver: 7.6.2 + dev: true + + /makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + dependencies: + tmpl: 1.0.5 + dev: true + + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: true + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: true + + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: true + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true + + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + + /node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + dev: true + + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + dev: true + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + dependencies: + path-key: 3.1.1 + dev: true + + /nwsapi@2.2.10: + resolution: {integrity: sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ==} + dev: true + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + dev: true + + /p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + dependencies: + p-try: 2.2.0 + dev: true + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + dependencies: + p-limit: 2.3.0 + dev: true + + /p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + dev: true + + /parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + dependencies: + '@babel/code-frame': 7.24.2 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + dev: true + + /parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + dependencies: + entities: 4.5.0 + dev: true + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: true + + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true + + /picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + dev: true + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + dev: true + + /pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + dev: true + + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.3.1 + dev: true + + /prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + dev: true + + /psl@1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + dev: true + + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + dev: true + + /pure-rand@6.1.0: + resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} + dev: true + + /querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + dev: true + + /react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + dev: true + + /require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + dev: true + + /requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + dev: true + + /resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + dependencies: + resolve-from: 5.0.0 + dev: true + + /resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + dev: true + + /resolve.exports@2.0.2: + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} + engines: {node: '>=10'} + dev: true + + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: true + + /saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + dependencies: + xmlchars: 2.2.0 + dev: true + + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + dev: true + + /semver@7.6.2: + resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} + engines: {node: '>=10'} + hasBin: true + dev: true + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: true + + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: true + + /sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + dev: true + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + + /source-map-support@0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: true + + /sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: true + + /stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + dependencies: + escape-string-regexp: 2.0.0 + dev: true + + /string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + dev: true + + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: true + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: true + + /strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + dev: true + + /strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + dev: true + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + dev: true + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + + /symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + dev: true + + /test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + dev: true + + /tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + dev: true + + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + dev: true + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true + + /tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} + engines: {node: '>=6'} + dependencies: + psl: 1.9.0 + punycode: 2.3.1 + universalify: 0.2.0 + url-parse: 1.5.10 + dev: true + + /tr46@3.0.0: + resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} + engines: {node: '>=12'} + dependencies: + punycode: 2.3.1 + dev: true + + /type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + dev: true + + /type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + dev: true + + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: true + + /universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + dev: true + + /update-browserslist-db@1.0.16(browserslist@4.23.0): + resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.23.0 + escalade: 3.1.2 + picocolors: 1.0.1 + dev: true + + /url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + dev: true + + /v8-to-istanbul@9.2.0: + resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==} + engines: {node: '>=10.12.0'} + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 2.0.0 + dev: true + + /w3c-xmlserializer@4.0.0: + resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} + engines: {node: '>=14'} + dependencies: + xml-name-validator: 4.0.0 + dev: true + + /walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + dependencies: + makeerror: 1.0.12 + dev: true + + /webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + dev: true + + /whatwg-encoding@2.0.0: + resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} + engines: {node: '>=12'} + dependencies: + iconv-lite: 0.6.3 + dev: true + + /whatwg-mimetype@3.0.0: + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} + engines: {node: '>=12'} + dev: true + + /whatwg-url@11.0.0: + resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} + engines: {node: '>=12'} + dependencies: + tr46: 3.0.0 + webidl-conversions: 7.0.0 + dev: true + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true + + /write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + dev: true + + /ws@8.17.0: + resolution: {integrity: sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + + /xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + dev: true + + /xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + dev: true + + /y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + dev: true + + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true + + /yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + dev: true + + /yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + dependencies: + cliui: 8.0.1 + escalade: 3.1.2 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + dev: true + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true diff --git a/pr-preview/pr-25/test/objects.test.js b/pr-preview/pr-25/test/objects.test.js new file mode 100644 index 00000000..52860261 --- /dev/null +++ b/pr-preview/pr-25/test/objects.test.js @@ -0,0 +1,154 @@ +import { InfoBox, Link } from "../js/objects"; + +describe("InfoBox", () => { + let infoBox; + + beforeEach(() => { + infoBox = new InfoBox(1); + }); + + afterEach(() => { + infoBox = null; + }); + + it("should initialize with correct values", () => { + expect(infoBox.id).toBe(1); + expect(infoBox.x).toBe(0); + expect(infoBox.y).toBe(0); + expect(infoBox.width).toBe(120); + expect(infoBox.height).toBe(240); + expect(infoBox.lineColor).toBe("black"); + expect(infoBox.lineWidth).toBe(2); + expect(infoBox.color).toBe("white"); + expect(infoBox.row).toBe(-1); + expect(infoBox.texImg).toBe(null); + expect(infoBox.name).toBe(""); + expect(infoBox.momentum).toBe(0); + expect(infoBox.px).toBe(0); + expect(infoBox.py).toBe(0); + expect(infoBox.pz).toBe(0); + expect(infoBox.vertex).toBe(0); + expect(infoBox.vx).toBe(0); + expect(infoBox.vy).toBe(0); + expect(infoBox.vz).toBe(0); + expect(infoBox.time).toBe(0); + expect(infoBox.mass).toBe(0); + expect(infoBox.charge).toBe(0); + expect(infoBox.pdg).toBe(0); + expect(infoBox.genStatus).toBe(0); + expect(infoBox.simStatus).toBe(0); + expect(infoBox.parents).toEqual([]); + expect(infoBox.children).toEqual([]); + expect(infoBox.parentLinks).toEqual([]); + expect(infoBox.childrenLinks).toEqual([]); + }); + + it("should return true if (x, y) coordinates are within the box", () => { + const x = 60; + const y = 120; + + expect(infoBox.isHere(x, y)).toBe(true); + }); + + it("should return false if x coordinate is outside the box", () => { + const x = 200; + const y = 120; + + expect(infoBox.isHere(x, y)).toBe(false); + }); + + it("should return false if y coordinate is outside the box", () => { + const x = 50; + const y = -1; + + expect(infoBox.isHere(x, y)).toBe(false); + }); + + it("should return true if box is visible within the given area", () => { + const x = 0; + const y = 0; + const width = 200; + const height = 200; + + expect(infoBox.isVisible(x, y, width, height)).toBe(true); + }); + + it("should return false if the box is to the right of the area", () => { + infoBox.x = 300; + const x = 0; + const y = 0; + const width = 200; + const height = 200; + + expect(infoBox.isVisible(x, y, width, height)).toBe(false); + }); + + it("should return false if the box is to the left of the area", () => { + infoBox.x = -300; + const x = 0; + const y = 0; + const width = 200; + const height = 200; + + expect(infoBox.isVisible(x, y, width, height)).toBe(false); + }); + + it("should return false if the box is below the area", () => { + infoBox.y = 300; + const x = 0; + const y = 0; + const width = 200; + const height = 200; + + expect(infoBox.isVisible(x, y, width, height)).toBe(false); + }); + + it("should return false if the box is above the area", () => { + infoBox.y = -300; + const x = 0; + const y = 0; + const width = 200; + const height = 200; + + expect(infoBox.isVisible(x, y, width, height)).toBe(false); + }); +}); + +describe("Link", () => { + let link; + + beforeEach(() => { + link = new Link(1, 0, 1); + }); + + afterEach(() => { + link = null; + }); + + it("should construct correctly", () => { + expect(link.id).toBe(1); + expect(link.from).toBe(0); + expect(link.to).toBe(1); + expect(link.color).toBe("#A00"); + expect(link.xShift).toBe(0); + }); + + let firstInfoBox, secondInfoBox, infoBoxes; + + beforeEach(() => { + firstInfoBox = new InfoBox(0); + secondInfoBox = new InfoBox(1); + infoBoxes = [firstInfoBox, secondInfoBox]; + }); + + it("should return true if the link is visible", () => { + secondInfoBox.x = 140; + secondInfoBox.y = 250; + + expect(link.isVisible(0, 0, 250, 250, infoBoxes)).toBe(true); + }); + + it("should return false if the link is not visible", () => { + expect(link.isVisible(10, 10, 50, 50, infoBoxes)).toBe(false); + }); +}); diff --git a/pr-preview/pr-25/test/primitives.test.js b/pr-preview/pr-25/test/primitives.test.js new file mode 100644 index 00000000..f58cb271 --- /dev/null +++ b/pr-preview/pr-25/test/primitives.test.js @@ -0,0 +1,72 @@ +import { jest } from "@jest/globals"; +import { drawRoundedRect, drawTex } from "../js/graphic-primitives.js"; + +let ctx; + +beforeEach(() => { + ctx = { + save: jest.fn(), + fillStyle: null, + beginPath: jest.fn(), + roundRect: jest.fn(), + fill: jest.fn(), + strokeStyle: null, + lineWidth: null, + stroke: jest.fn(), + restore: jest.fn(), + drawImage: jest.fn(), + }; +}); + +afterEach(() => { + ctx = null; +}); + +describe("drawRoundedRect", () => { + it("should draw a rounded rectangle with the correct properties", () => { + drawRoundedRect(ctx, 10, 20, 100, 200, "red"); + + expect(ctx.save).toHaveBeenCalled(); + expect(ctx.fillStyle).toBe("red"); + expect(ctx.beginPath).toHaveBeenCalledTimes(2); + expect(ctx.roundRect).toHaveBeenCalledTimes(2); + expect(ctx.roundRect).toHaveBeenNthCalledWith(1, 10, 20, 100, 200, 15); + expect(ctx.roundRect).toHaveBeenNthCalledWith(2, 10, 20, 100, 200, 15); + expect(ctx.fill).toHaveBeenCalled(); + expect(ctx.strokeStyle).toBe("black"); + expect(ctx.lineWidth).toBe(2); + expect(ctx.stroke).toHaveBeenCalled(); + expect(ctx.restore).toHaveBeenCalled(); + }); +}); + +describe("drawTex", () => { + let texImg; + + beforeEach(() => { + texImg = { + naturalWidth: 200, + naturalHeight: 100, + }; + }); + + afterEach(() => { + texImg = null; + }); + + it("should draw an image with the correct properties", () => { + drawTex(ctx, 10, 20, texImg, 50); + + expect(ctx.save).toHaveBeenCalled(); + expect(ctx.drawImage).toHaveBeenCalledWith(texImg, -12.5, 8.75, 45, 22.5); + expect(ctx.restore).toHaveBeenCalled(); + }); + + it("should draw an image scaled to 2 if the scale is greater than 2", () => { + drawTex(ctx, 10, 20, texImg, 500); + + expect(ctx.save).toHaveBeenCalled(); + expect(ctx.drawImage).toHaveBeenCalledWith(texImg, -190, -80, 400, 200); + expect(ctx.restore).toHaveBeenCalled(); + }); +}); diff --git a/pr-preview/pr-25/test/tools.test.js b/pr-preview/pr-25/test/tools.test.js new file mode 100644 index 00000000..84cdaa98 --- /dev/null +++ b/pr-preview/pr-25/test/tools.test.js @@ -0,0 +1,28 @@ +import { infoMsg, errorMsg } from "../js/tools"; + +let msgDiv; + +beforeEach(() => { + document.body.innerHTML = "
"; + msgDiv = document.getElementById("input-message"); +}); + +describe("infoMsg", () => { + it("should add a message to the input-message div", () => { + infoMsg("Test message"); + + expect(msgDiv.classList.contains("mb-20")).toBe(true); + expect(msgDiv.style.color).toBe("gray"); + expect(msgDiv.innerHTML).toBe("

INFO: Test message

"); + }); +}); + +describe("errorMsg", () => { + it("should add an error message to the input-message div", () => { + errorMsg("Test error message"); + + expect(msgDiv.classList.contains("mb-20")).toBe(true); + expect(msgDiv.style.color).toBe("red"); + expect(msgDiv.innerHTML).toBe("

ERROR: Test error message

"); + }); +});